1. 애자일과 클라우드 네이티브의 핵심은 ‘빠른 피드백’
Amazon, Google, Netflix… 이들 기업은 하루 수천 번씩 배포합니다.
왜냐하면, 사용자의 요구를 빠르게 반영할 수 있기 때문이죠.
기업일일 배포 수배포 지연고객 요구 반영
Amazon | 23,000건 | 몇 분 | 빠름 |
일반 기업 | 9개월 | 수 주~분기 | 느림 |
애자일이란 단순한 빠른 개발이 아닙니다.
실패를 빠르게 경험하고, 빠르게 고치는 환경을 만드는 것이 핵심입니다.
2. 모놀리식 vs 마이크로서비스 – 무엇이 다른가요?
기존 방식: 모놀리식 아키텍처
- 하나의 거대한 코드베이스
- 배포 시 전체 재빌드 필요
- 특정 기능만 수정해도 전체 시스템 영향을 받음
고객관리 + 주문 + 결제 + 배송 → 한 덩어리로 되어 있음
개선된 방식: 마이크로서비스 아키텍처
- 각 기능은 독립된 서비스로 구성
- 서비스별 독립 배포 가능
- 서로 다른 기술 스택도 혼합 가능
3. 제프 베조스의 MSA 선언문
아마존의 마이크로서비스 문화는 다음의 선언으로 시작되었습니다:
“팀 간의 모든 통신은 반드시 네트워크 API로 이루어질 것.
직접 데이터베이스 접근, 백도어 사용은 금지.”
이 말은 결국, 모든 팀이 API를 ‘공개 가능’한 수준으로 설계하라는 뜻입니다.
4. 🛠️ MSA의 장단점은?
장점
- 장애 격리 및 탄력성 우수
- 빠른 배포 가능
- 다양한 기술 사용 용이
단점
- 서비스 간 통신 복잡
- 테스트/배포 환경 구성 어려움 (→ Kubernetes 등 필요)
- 데이터 일관성 관리 필요
5. 조직 전환 사례: 12번가 쇼핑몰
기존 구조
- 모든 기능(주문, 배송, 마케팅 등)을 한 팀이 처리
- 기능 간 의존성 과다
점진적 전환
- 도메인별 팀 분리 (주문팀, 배송팀 등)
- 각 팀은 자율성과 KPI 책임
- API 기반의 협업 구조로 전환
6. DDD: 도메인에 집중하라
도메인 주도 설계란?
→ 소프트웨어 설계가 도메인 지식을 기반으로 이루어져야 한다는 철학입니다.
DDD 3단계
단계설명
전략적 설계 | 도메인, 서브도메인, 바운디드 컨텍스트 도출 |
전술적 설계 | 엔티티, 밸류오브젝트, 어그리거트 모델링 |
이벤트스토밍 | 협업 기반 도메인 이벤트 기반 분석 |
7. 이벤트스토밍: Sticky Note 기반 도메인 분석법
기존의 다이어그램보다 빠르고 시각적인 방식입니다.
핵심 구성 요소
색상의미
주황 | 도메인 이벤트 (OrderPlaced) |
하늘 | 커맨드 (PlaceOrder) |
노랑 | Aggregate (OrderAggregate) |
초록 | Read Model (주문 내역 조회) |
핑크 | 외부 시스템 (결제 API 등) |
보라 | 정책 (재고확인, 추천알고리즘 등) |
8. 바운디드 컨텍스트 분해 전략
하나의 도메인이 아닌 여러 서브도메인으로 나누는 것이 핵심입니다.
서브도메인 유형설명예시
Core | 핵심 비즈니스 | 주문, 결제 |
Supporting | 지원 역할 | 배송, 재고 |
Generic | 범용 기능 | 결제 게이트웨이, 알림 |
이 중 Core는 가장 많은 리소스를 들여야 하며, DDD도 이 영역에 집중됩니다.
9. 실습 예시 – 보험사 시스템 분해
기능 중심 | 클레임/계약/결제/고객관리 등 |
조직 중심 | 청약팀/보상팀/고객센터 등 |
ACID 기준 | 트랜잭션 단위로 어그리거트 설계 |
10. 실습 도구 추천
모델링 | MSAEZ |
코드 생성 | Vlingo Designer |
협업 | Miro |
프레임워크 | Axon Framework, Spring Cloud |
마무리.
지금까지 배포를 해본적이 없어서 이번 교육과정에서 처음 진행해보았는데 너무 어려웠던 것 같습니다.
전체적인 흐름을 이해하고 어느정도 네트워크 지식이 있어야 이해가 더 쉬울 거라고 생각합니다.
간단한 사이드프로젝트를 만들어서 천천히 배포해보시는걸 추천드립니다
'KT에이블스쿨 7기' 카테고리의 다른 글
[KT AIVLE School 7기] CI/CD (1) | 2025.07.29 |
---|---|
[KT AIVLE School 7기] Spring Framework(4) (0) | 2025.06.24 |
[KT AIVLE School 7기] Spring Framework(3) (0) | 2025.06.24 |
[KT AIVLE School 7기] Spring Framework(2) (0) | 2025.06.24 |
[KT AIVLE School 7기] Spring Framework (0) | 2025.06.24 |