IT STUDY LOG
[SECTION3] <마이크로서비스> 프로젝트 개요 본문
# 프로젝트 개요
Achievement Goals
- AWS 클라우드 환경을 기반으로 하는 느슨하게 연결된(loosely coupled) 애플리케이션 아키택처에 대한 이해
Bare minimum
- Serverless를 이용한 메시지 대기열 활용 이해 및 구현
- 요구사항에 따른 애플리케이션과 인프라 구현
- 문제사항 해결을 위한 추가 리소스 생성 → DLQ, Legacy 시스템 성능문제 해결, SES
- 아키택처 다이어그램 제작
Advanced
- 인프라 관리와 재사용성을 위한 IaC 활용 → Terraform을 통한 리소스생성
# 프로젝트 요구사항 및 시나리오
<자동 재고 확보 시스템>을 위한 MSA
시나리오
<도넛-스테이츠>는 온라인으로 도넛을 판매합니다. 웹사이트를 통해서 주문 버튼을 누르는 것으로 구매(Sales API)가 가능합니다. 창고에 재고가 있다면 재고가 감소하고 구매가 완료됩니다. 유튜브스타 hoyong.LEE가 도넛-스테이츠의 도넛이 맛있다고 영상을 올렸습니다. 그를 따르는 데브옵스 수강생들이 몰려듭니다. 주문이 급등합니다. 창고에 재고가 없기 때문에 구매가 불가능한 경우가 발생합니다. 창고의 도넛의 재고가 다 떨어지면 제조 공장에 알려서 다시 창고를 채우는 시스템을 구축해야 합니다. 제조 공장인 <팩토리-스테이츠>에 주문을 요청(Leagcy Factory API)할 수 있습니다. 주문이 요청되면 일정 시간이 지난 후 창고에 재고가 증가합니다.
구성 요소
- Sales API
- Factory API
- 프론트엔드(웹사이트) : cURL / postman / k6 등을 통한 API 호출로만 구현
- Sales API를 통해 백엔드에 요청
- 백엔드(서버) : 구매 시 창고에서 재고 확인 후 재고 감소 로직 구현
- 재고가 부족할 경우 Factory API를 통해 재고 확보 요청
- 데이터베이스(창고) : RDS에 mysql db 구성
- 요청에 따른 재고 상태 변경
상황
비효율적인 레거시 시스템 때문에 고객의 불만사항이 접수되고 있습니다. 제품별 재고부족 요청이 빈번하게 발생되고 있지만 전달 과정에서 지연과 누락 등 문제 상황이 발생하고 있습니다. 안정적으로 요청이 전달될 수 있도록 시스템을 개선해야 합니다. 비정상적으로 처리된 요청의 경우 운영팀에 상황을 알려야 합니다.
요구사항 1 : 재고부족으로 인한 구매실패에 대한 조치
- Sales API 를 통해 요청을 받은 서버가 데이터베이스에서 재고 상황을 확인합니다.
- 재고가 있다면 감소시키고 응답으로 판매완료 내용을 전달합니다.
- 재고가 없는 경우 공장에 주문을 진행합니다
- 재고가 없다는 내용을 담은 메세지 페이로드와 함께 SNS topic이 생성됩니다.
- 메시지가 SQS로 구현된 stock_queue에 수신됩니다.
요구사항 2 : 메시지 누락 상황에 대한 조치
- 빈번한 요청으로 메시지 누락이 발생합니다.
- SQS에서 처리완료되지 않은 메시지들을 체계적으로 관리할 dead_letter_queue를 생성해야합니다.
- stock_queue와 dead_letter_queue를 연결합니다.
요구사항 3 : Legacy 시스템(Factory → Warehouse) 성능문제에 대한 조치
- 안정적으로 이벤트가 전달 될 수 있는 시스템을 구축해야합니다.
- stock_queue 의 메시지를 소비하는 stock_lambda에 의해 Factory API가 호출됩니다.
- Factory의 생산 완료 메시지를 수신한 stock_inc_lambda가 DB에 상품 재고를 증가시킵니다.
'devops bootcamp 4 > project log' 카테고리의 다른 글
[SECTION3] <마이크로서비스> DAY 2 LOG (0) | 2023.05.25 |
---|---|
[SECTION3] <마이크로서비스> DAY 1 LOG (0) | 2023.05.24 |
[SECTION2] <AWS 배포 자동화> DAY 4 LOG (0) | 2023.05.02 |
[SECTION2] <AWS 배포 자동화> DAY 3 LOG (0) | 2023.05.01 |
[SECTION2] <AWS 배포 자동화> DAY 2 LOG (0) | 2023.04.28 |