Skip to main content

Cloud SW 아키텍처 패턴:Deployment and Production Testing Patterns

Deployment and Production Testing Patterns

5.배포 및 프로덕션 테스트 아키텍처 패턴 - Deployment and Production Testing Patterns

배포에 관련된 사항은 k8s 에서 더 자세하게 다루는게 좋을것 같다.

  • k8s 컴포넌트 개념과 함께 여러 배포 전략들을 이어서 학습.

Rolling

  • Rolling Deployment benefits:

    • No downtime
    • No additional cost for hardware
    • We can rollback quickly if something goes wrong
  • Downsides:

    • Potential for Cascading Failures
    • 2 versions in production at the same time

Blue-Green

Canary A/B

Both Canary Release and A/B Deployment Patterns allow us

  • to dedicate a small portion of servers for a different version of software

During a Canary Release:

  • We monitor for:
    • Performance
    • Functionality
  • Limit to internal users or beta testers

Chaos Engineering Pattern

Chaos Engineering - Motivation

• We won't know about those issues until they actually happen • When they do happen it may be too late
• Those issues are very rare
• The results of those issue can be catastrophic
• Solution of Chaos Engineering : Embracing the inherent chaos in a cloud-based Distributed System

Chaos Monkey (2011) by Netflix
• Responsible for randomly terminating cloud servers in production

  • Chaos Engineering Pattern:

    • Increases confidence
    • Protects production against critical failures
  • Allows finding:

    • Single Points of Failure
    • Scalability issues
    • Performance bottlenecks
  • Ensures that real failures are dealt with gracefully

학습 회고

1.시스템 레벨의 이해에 도움이 많이 되는 강의 였다.

사내 시스템에 다양한 아키텍처들이 존재한다.
시스템 아키텍처들을 보면 매번 새롭고 좋아보였다.

아키텍처 패턴을 이해하고 보니, 사실상 모든 시스템들이 Best Practice는 아닌 경우가 보인다.

오버엔지니어링을 한 경우, 일정에 쫒겨서 더 좋은 구조로 갈 수 있으나 타협한 경우 등등

  • 이벤트 아키텍처로, 메시지 브로커를 도입할 만큼 중요한 기능임에도
  • Time Based Sync로 컴포넌트간 데이터 동기화 플로우로 채워가는 경우도 있었다.
  • 그러면 비록 짧은 시간일지라도 '일관성'이 깨질 수 있다.

예를들어 Youbube처럼 광고 영상을 올리는 기능이다.

  • 광고 정책에 이슈가 있는 콘텐츠는 사전에 체크해야 한다.
  • 하지만 우선 광고 영상이 공개되고, 그 이후 Audit 하는 로직이 돌아간다.
  • 최대 30분정도 잠재적 위험이 있는 광고 영상이 공개되는 것이다.

사내 시스템에 대해서 스터디를 하자.!

2.메시지 브로커 (카프카)가 정말 다양한 패턴에 쓰인다.

  • 로드밸런싱, 코레오그래피, CQRS 패턴 등
  • 시스템에서 비동기라는 작업은 정말 많고, 그래서 카프카가 중요하구나.

카프카에 대해서 얇팍하게 알아보자.!

3.경험의 중요성을 알게되었다.

사실상 지금까지 배운 아키텍처 패턴은 이론에 불과하다.

  • 실제 비즈니스 로직을 담고 돈으로 벌어봐야 그 복장성과 현실 타협점들을 알게 된다.
  • 기본 베이스 지식들을 알고, 현실에서 마주할 수 있는 수많은 애러들을 핸들링 하며
  • 큰 규모의 시스템을 성공적으로 이끄는 경험이 소중할것 같다.
  • 개발씬 은퇴까지 2~3개의 대규모 시스템을 구축해보는것도 어려울 수 있다는 생각.
  • 초기 스타트업, 신사업부 같은 경우라면 기회가 더 많을지도?

사이드프로젝트 혹은 기회가 되면 시스템 설계를 하자.!

4.FE개발에도 큰 도움이 된다.

아키텍처 패턴 강의를 들으면서 FE개발 관련된 부분은 하나의 파트밖에 없었다.

  • BFF 패턴밖에서 없어서 아쉬웠다.
  • 마이크로 프론트 엔드 등 아키텍처를 고려할 부분들이 있긴 하다.
  • 그럼에도 FE지식과 지금가지 배운 패턴들을 조합해서 시스템을 구축해볼 수 있을것 같다.

예) Static Site Generator + CQRS Pattern.

SSR 기능이 탑재된 Next.js, Nuxt.js 에는 정적사이트를 생성할 수 있는 기능들이 있다.
사용자들의 포스팅, 뉴스기사 등을 발행을 한다.
사용자들이 만들어둔 콘텐츠를 바탕으로 미리미리 정적사이트들을 생성해야 한다.
여러가지 방법이 있다.

  • 주기적으로 정적사이트를 만드는 방법
  • 사용자의 요청이 들어올때 정적사이트를 만들어 주고 캐싱하는 방법
  • CQRS 패턴을 이용하면, 사용자가 콘텐츠를 업데이트 할 때 이를 구독하고 정적사이트를 만들어볼 수 있다. !

FE에 적용시키면 좋을 시스템 설계를 공부하자.!