요약 정보
카카오엔터테인먼트 카카오웹툰 백엔드 개발팀 디노(Dino)입니다.
미국 라스베이거스에서 열린 AWS re:Invent 2021에서 참여하면서 인상 깊었던 세션을 소개하고자 합니다.
참여한 세션의 주요 내용을 요약해서 설명드리고, 카카오웹툰에서 활용할 방안도 함께 공유합니다.
세션 기본 정보
- Title : Reliable scalability: How Amazon.com scales in the cloud
- Location : CAESARS FORUM Summit 218
- Speaker :
- Kieran Kavanagh
- Seth Eliot
- Related AWS Services
- Amazon Cloud Watch
- Amazon SQS
- AWS CloudFormation
- Level : 200 - Intermediate
- Track : Architecture
세션 요약
- 아마존의 히스토리와 아마존이 왜 확장성이 필요했는지를 설명합니다.
- 안정적인 확장성을 갖춘 서비스를 유지하기 위한 아마존의 메커니즘을 공유합니다.
Details
amazon의 초기 모습
- 아마존의 초창기 모델은 굉장히 단순했습니다.
- 유저는 Obidos라는 웹서버를 통해 아마존 책을 주문합니다.
- 주문한 내역은 ACB라고 하는 아마존닷컴의 책 관리 Storage 에 저장되었습니다.
- 주문 내역을 바탕으로 유통센터에서 책을 준비하고 결제를 처리합니다.
- 그리고 책을 배송하면 됩니다, 간단한 모델입니다.
첫번째 확장 모델
- 아마존닷컴은 급격하게 커졌고 확장성을 고려하기 시작했습니다.
- DB를 확장하기 시작했습니다.
- 유통센터에서 사용하는 DB를 별도로 구성했습니다.
- 웹에서 사용하는 Order DB를 ACB와 분리 복사해서 사용했습니다.
두 번째 확장 모델
- Distribution Center 서비스를 별도로 분리해 ACB로 데이터를 전송하도록 변경했습니다.
- SOA 모델이었습니다.
- ACB를 공통 모델로 쓰고 WEB, 유통센터 등을 쪼개서 공유하면서 사용한 방식이었습니다.
- 그럼 현재의 모델은 어떨까요?
최신 아키텍처
- 마치, 스타워즈의 데스 스타와 같은 MSA 네트워크를 이루고 있습니다.
아키텍처는 다음과 같이 진화해 왔습니다.
- SOA는 각 레이어의 통신방법을 중시하며, 재사용을 위해 공통 레이어를 공유합니다.
- MSA는 배포와 업무 조직단위부터 서비스 Repository 자체가 분리됩니다.
서비스 내에 동일 로직이 생길 수 있으며, 각 서비스가 책임집니다. - MSA에서는 서비스 오케스트레이션 영역에 투자하기보다는, 유지보수와 빠른 배포에 포커싱을 합니다.
- SOA는 “서비스는 여러가지 중 어떤 것을 수행하고 작은 단위의 변화와 영향을 끼치는 기준”이라면
- MSA는 “한 가지 서비스만 수행하면 최소한의 효과 최소한의 변화를 추구” 합니다.
그럼 현재 아마존은 어떻게 움직이고 있을까?
- 1년간 약 1억 5천만 건의 배포가 일어나고 있습니다.
- 하나의 디테일 페이지를 표현하기 위해서 약 100개의 마이크로 서비스 AP를 Call 하고 있습니다.
- 하나의 예시를 추가로 살펴볼까요?
- 구독 박스 모델이 있다고 해봤을 때, 이 모델은 3명의 엔지니어가 개발하는 마이크로 서비스입니다.
- 일별로 약 100만 건의 이벤트를 처리하고 있습니다.
이런 서비스를 유지하기 위해서 어떤 과정이 필요할까요?
Review And Test
- 아마존은 리뷰와 테스트를 하는 과정에 있어서 메커니즘을 중시합니다.
- 멤버의 좋은 의도보다는 시스템을 만들고 시스템을 이용한 진행을 중시합니다.
- 툴을 기반으로 리뷰와 테스트를 진행하고 점검하고 이 사이클을 통해 아웃풋을 도출합니다.
아마존의 4가지 테스트 타입
- 아마존은 4가지 종류의 테스트를 진행합니다.
- Load Testing
- 서비스가 현실적으로 예상되는 부하를 감당할 수 있는지 테스트합니다.
- 주로 긍정적인 지표를 기반으로 테스트합니다.
- Production에서 이루어지는 실질적인 행동 기반으로 테스트합니다.
- Performance Testing
- 부하가 성능에 어떤 영향을 미치는지 테스트합니다.
- Latency, Errors, Throughput 지표를 기반으로 테스트합니다.
- Stress Testing
- 서비스의 한계점을 찾는 테스트입니다.
- 시스템이 멈추는 포인트를 찾습니다.
- Production에서 흔히 하지 않는 행동들을 찾습니다.
- Chaos Testing
- 서비스가 장애를 어떻게 처리하는지 테스트합니다.
- 네트워크 지연 상황
- CPU 또는 Memory 가 풀 찬 상황에서의 대응이 가능한지 테스트
- 종속성이 있는 서비스의 이슈 발생 시 대응 테스트
테스트 원칙
- 각 테스트를 진행하는 데 있어서 서비스에서 진행하는 QA나 다른 테스트가 영향을 받지 않아야 합니다.
- 각 테스트를 진행할 때는 그 테스트에 맞는 환경을 구성하는 게 중요합니다.
Test Summary
- 리뷰와 테스트를 통해 배포를 진행하는 과정을 설명합니다.
- 일반적인 부하 테스트를 진행합니다. (Unit Test와 리뷰도 같이 진행합니다)
- 엔지니어링 브런치로 따로 분리합니다.
- 4가지 종류의 주요 테스트를 수행합니다.
- 토론을 하고, 최종 배포합니다.
Understanding services in production
- 서비스의 이해가 필요합니다.
- 서비스를 이해하고 어떻게 확장을 할지 결정을 해야 합니다.
- 예를 들어, 특정 서비스가 패턴을 유지하다가 확 늘어나는 포인트가 있다면 그 포인트를 대비해야 합니다.
Example for service in Production
- Ring 서비스의 오토 스케일링 구조입니다
- S3 → SQS로 이벤트가 들어오면 큐 메트릭을 CloudWatch로 모니터링합니다.
- Step Function에서 판단 후 Scale up / down을 결정합니다.
참고 사항
- Global Architecture도 공유해줬습니다. 참고하면 좋을 것 같습니다.
Result
- 확장성을 위해서는 SOA 또는 MSA로 설계하는 것을 추천합니다.
- 시스템을 구성하고 리뷰와 테스트를 통해 안정적인 확장성을 추구합니다.
- 서비스를 이해하고 서비스에 맞는 확장 계획을 세웁니다.
- 카카오웹툰 서비스를 개발하고 운영하는 관점에서 가장 인상 깊은 내용은 테스트 부분입니다. 그리고 이 테스트와 리뷰를 사람에게 의존하기보다 시스템을 만들고 메커니즘을 기반으로 동작하는 형태가 가장 배울 부분이 많다고 생각합니다.
- 차츰 체계적인 테스트 시스템을 도입하고 좀 더 안정적인 MSA를 구성할 가이드 또는 컨벤션을 만들어 볼 예정입니다.
- MSA를 운영하고 설계하는 데 있어 좋은 레퍼런스용 세션이었습니다.
Reference
- 촬영한 추가 세션 사진들 공유합니다.
'Events > AWS re:Invent 2021' 카테고리의 다른 글
AWS re:invent 2021 참관기 및 세션 리뷰 by Matilda (0) | 2021.12.27 |
---|---|
AWS re:Invent 2021 참관기 및 세션 리뷰 by Ayaan (0) | 2021.12.27 |
AWS re:Invent 2021 탐방기 by Sherlock (0) | 2021.12.27 |
AWS re:Invent 2021 참관기 및 세션 리뷰(AWS Amplify) by Ibra (0) | 2021.12.27 |
인재 영입 담당자가 바라본 'AWS re:Invent 2021' (0) | 2021.12.27 |