반응형
먼저 우리가 배울 실시간성 아키텍쳐가 왜 중요한지 예시를 통해 알아보자
실시간성의 중요성과 아키텍처 진화
1. 전통적인 모놀리식 아키텍처

이미지 처럼 하나의 서비스에서 주문, 결제, 배송 기능이 있고, 이는 하나의 DB를 참조하는 구조
단점
- 서비스간 높은 결합도: 한 서비스의 변경이 다른 서비스에 즉각적인 영향을 준다. (장애도 마찬가지)
- 확장성 한계 : 서비스에 다른 기능 추가시 기존 주문 서비스 코드를 수정해야해서 확장성이 좋지 않다.
- 주문 > 결제 > 제고 > 배송 같은 동기 API 호출 체인에서 응답이 느려지고 장애 전파가 쉽다.
2. 배치 처리 중심의 아키텍처

단점
- 높은 지연 시간: 배치 주기를 기다려야함 (실시간 데이터 확인 어려움)
“결제가 완료돼도 재고 정보가 다음 배치 때까지 안 맞는” 상황이 자주 발생.
- 배치 실패: 전체 재처리 과정 필요
- 특정 시간대 부하 집중 (DB 부하 핸들링 필요)
3. MSA (Microservice Architecture)
현대 시스템은 주문, 결제, 재고, 배송 서비스가 각각의 독립된 DB 를 가집니다.
이를 코어 MSA 구조라고 합니다.
단점
- 데이터 불일치: 각 서비스마다 DB를 따로 관리하기때문에 모든 서비스에 반영해야하는 불편함이 있음
- 시스템간 의존성 증가: 결제 완료 이벤트를 재고 서비스가 "즉시" 알아야 함
4. 공유 DB 기반의 MSA (Microservice Architecture)

단점
- DB 성능 병목: 모든 서비스가 한 DB에 접근 하다보니 성능이 좋지않음
- 확장성 한계: 수평 스케일링이 어려움 (하드웨어 용량 모자람 등)
- 단일 장애지점 (SPOF)
- DB 락 경쟁 증가
4. 이벤트 기반 EDA (Event-Driven Architecture)

EDA의 핵심
- 메시지 전달이 아니라 "상태의 히스토리 자체를 이벤트로 관리"
- 서비스간에 공유되는 자원은 카프카 메세지 뿐 (느슨한 결합)
- 이벤트 소싱이 존재함
- 모든 상태 변경 (주문 생성, 결제 완료, 배송시작)을 이벤트로 기록할 수 있음
- 시스템이 재시작 되더라도 이벤트 로그를 적용해 복구 가능
- 이벤트 활용해 감사 추적가능 (어떤 이벤트가 어떤 시간에...등)
- CQRS 패턴 구현 가능 (쓰기, 읽기를 분리한다)
참고 블로그
반응형
'프로그래밍 > 대용량 시스템에 대한 이해' 카테고리의 다른 글
| Temporal을 활용한 워커플로우 패턴 (0) | 2025.11.06 |
|---|---|
| Kafka + Debezium을 활용한 CDC 활용 패턴 (0) | 2025.11.05 |
| 완화전략 - Backpressure, Throttling 이란? (0) | 2023.12.01 |
| kafka란? - 카프카 기초 다지기 1 (1) | 2023.02.19 |
| Kafka 설치 및 구동 방법 (0) | 2023.02.18 |