배민찬(https://www.baeminchan.com) 서비스의 백엔드 시스템 중 일부가 지난 1년간 어떤 고민과 아이디어, 결과물을 만들어냈는지 공유하려고 합니다. 발표 중 언급되는 용어나 도구에 대해 일반적인 정의나 간단한 설명은 언급되나 자세히 다루지 않습니다. 사용된 도구들로 어떻게 이벤트 기반 분산 시스템을 만들었는지에 대한 이야기가 중심입니다.
21. LOGISTICS
ADAPTER
✔ 새로운 기능을 추가하기 위해 기존 코드를 수정해야 함
✔ 모듈간 상호 참조 등으로 순환 의존성이 생기는 등에 부작용
✔ 즉, 모듈간 강결합으로 단일 모듈에 경계가 무너지는 현상
DeliveryService
----------------------
+createInvoice(Order)
PurchaseService
----------------------
+createOrder(Order)
WarehousingManagement
-------------------------
+process(OrderComplated)
InventoryService
----------------------
+adjustStock(Order)
36. ✔ 최소 1회 이상 메시지 전달 보장, 최대 14일 유지
✔ 무제한 확장 가능, 빠른 읽기 처리량
✔ 메시지 풀링 방식, 단일 소비자(경쟁 소비자)
✔ 메시지 순서를 보장하지 않음
✔ 최대 256KB 데이터 전달
✔ AWS SDK 기반 쉬운 API 제공
1) 최소한의 운영 비용으로 사용 할 수 있는가?
2) 메시지 전달 신뢰성을 가지고 있는가?
3) 단일 메시지가 여러 소비자에게 전달될 수 있는가?
4) 수평 확장성을 가지고 있는가?
5) 사용하기 쉬운가?
6) 모니터링 할 수 있는가?
37. 1) 최소한의 운영 비용으로 사용 할 수 있는가?
2) 메시지 전달 신뢰성을 가지고 있는가?
3) 단일 메시지가 여러 소비자에게 전달될 수 있는가?
4) 수평 확장성을 가지고 있는가?
5) 사용하기 쉬운가?
6) 모니터링 할 수 있는가?
✔ 발행/구독 모델 지원(1:1, 1:n)
✔ 무제한 확장 가능
✔ 소비자 유형별 메시지 전달 보장
✔ 메시지 전달 보장을 위해 SQS 사용 권장
✔ 그외 소비자 유형에 대해서는 보장 못함
✔ AWS SDK 기반 쉬운 API 제공
38. 1) 최소한의 운영 비용으로 사용 할 수 있는가?
2) 메시지 전달 신뢰성을 가지고 있는가?
3) 단일 메시지가 여러 소비자에게 전달될 수 있는가?
4) 수평 확장성을 가지고 있는가?
5) 사용하기 쉬운가?
6) 모니터링 할 수 있는가?
✔ 메시지 전달 및 순서를 보장
✔ 이벤트 스트리밍 지원(중복 이벤트 제어 필요)
✔ 샤드(Shard) 개념을 통해 무제한 확장 가능
✔ 자동화된 확장이 아닌, 수동 제어
✔ 3개 리전에 복제, 최대 7시간 동안 데이터 유지
✔ 초당 5회 읽기 제한(샤드 당)
✔ 최대 1MB 데이터 전달
39. 1) 최소한의 운영 비용으로 사용 할 수 있는가?
2) 메시지 전달 신뢰성을 가지고 있는가?
3) 단일 메시지가 여러 소비자에게 전달될 수 있는가?
4) 수평 확장성을 가지고 있는가?
5) 사용하기 쉬운가?
6) 모니터링 할 수 있는가?
✔ 메시지 전달 및 순서를 보장
✔ 점대점, 발행/구독 방식 메시지 기능 지원
✔ 인스턴스 기반 확장 가능
✔ 높은 가용성 및 메시지 안정성
✔ 업계 표준 API 및 프로토콜 호환
✔ AMQP, MQTT, OpenWire, STOMP 지원
✔ JMS(Java Message Service) 지원