[Full] 전자정부 표준 프레임워크 기반의 클라우드 네이티브 애플리케이션 설계 Part 1. DDD와 이벤트스토밍
밑에 사진들은 전부 저 영상에서 캡쳐한 것,,,
복잡한 소프트웨어 시스템을 설계하는 접근 방식
소프트웨어의 복잡성을 관리하는 전략적 도구
복잡하고 큰 모델을 바운디드 컨텍스트(한정된 맥락)로 쪼개기
특성 | 모놀리식 아키텍처 | 마이크로서비스 아키텍처 |
---|---|---|
구성 방식 | 하나의 큰 코드베이스로 구성 | 여러 개의 독립적인 서비스로 구성 |
배포 단위 | 단일 배포 단위 | 개별 서비스별로 독립 배포 |
데이터베이스 | 일반적으로 하나의 공유 데이터베이스 사용 | 각 서비스별로 독립적인 데이터베이스 사용 |
통신 방식 | 프로세스 내 호출 (함수 호출) | 네트워크 통신 (HTTP/REST, gRPC 등) |
개발 및 배포 | 단순, 초기 개발과 배포가 쉬움 | 복잡, 독립적인 배포 및 다양한 기술 스택 가능 |
유지보수 | 애플리케이션이 커질수록 유지보수가 어려워짐 | 서비스별로 독립 유지보수가 가능 |
확장성 | 특정 기능만 확장하는 것이 어려움 | 개별 서비스별로 독립 확장이 가능 |
의존성 관리 | 모든 기능이 강하게 결합됨 | 서비스 간의 느슨한 결합 |
장애 영향 범위 | 하나의 기능 장애가 전체 시스템에 영향을 줄 수 있음 | 개별 서비스 장애가 전체 시스템에 미치는 영향이 적음 |
기술 스택 | 단일 기술 스택 사용 | 서비스별로 서로 다른 기술 스택 사용 가능 |
성능 | 네트워크 오버헤드가 없고 빠름 | 네트워크 통신으로 인한 오버헤드 존재 |
테스트 | 통합 테스트가 쉽지만, 전체 테스트 시간 증가 | 서비스별로 독립적인 테스트 가능, 통합 테스트가 복잡 |
주문 발생(이벤트) -> 배송 시작됨(이벤트)
=> Pub : 주문(command) -> Sub : 배송 시작(자동화된 시스템 -> 주문에 대한 반응)