[마이크로서비스 패턴 쉽게 개발] WHY 마이크로서비스 패턴 ?
마이크로 서비스는 우리의 서비스가 시장변화에 Speedy하게 적시 대응하고, 일시적 장애에도 Service Always를 보장하며, 자원관리를 효율적으로 하여 Save Cost할 수 있는 좋은 서비스가 되기 위해 반드시 필요합니다.
WHY 마이크로서비스 : SSS 1. Speedy -> Time to maket 작은 단위의 서비스는 비즈니스 요구사항을 수용하기 더 쉽고 빠릅니다. 또한, 다른 서비스와 느슨하게 결합되어 있기 때문에 배포도 더 자주 더 빠르게 할 수 있습니다. 2. Service Always -> Earning More 서비스가 비동기로 느슨하게 결합되어 있고 고유의 DB를 갖고 있기 때문에 특정 서비스의 장애로 인해 전체 서비스가 중단되지 않습니다. 3. Save Cost -> Cost Effective 1) 수평 Scaling 서비스가 분할되어 있으므로, 사용량이 많은 서비스는 자원(CPU, Mem, Disk)을 늘리고, 사용량이 적은 서비스는 자원을 줄이는게 가능합니다. 따라서 전체적인 비용을 절감할 수 있습니다. 또한 사용량이 급증하는 서비스의 자원을 자동으로 늘림으로써 서비스 장애도 방지할 수 있습니다. 2) 수직 Scaling 서비스를 컨테이너화 한다면 각 서비스에 기본 자원을 배정하고 사용량에 따라 자원을 늘이고 줄일 수 있습니다. 이는 기존에 사용량 최대치를 추정하여 초기 할당량을 배정함으로써 생기는 불필요한 자원 낭비를 줄일 수 있습니다. |
하지만, 모든 것이 양면성이 있듯이 마이크로서비스를 개발/운영하는데에는 여러가지 문제점도 있습니다.
요약하면 CCOP(Complex, Consistency, Operation overhead, Performance)라는 4가지 큰 문제점이 있습니다.
문제 | 설명 | 해결안 |
---|---|---|
Complex | 마이크로서비스가 많아지면 많아질 수록 서로를 연결하고 네트워킹을 통제하기가 점점 힘들어집니다. | Service Mesh(istio, spring cloud)툴 |
Consistency | 각 마이크로서비스가 갖고 있는 DB간에 정합성을 보장하기 힘듭니다. 예를 들어 주문, 결제, 배달서비스가 분리되어 있을 때 결제 실패한 주문이 배달될 수도 있습니다. | Saga패턴, Event Sourcing패턴 |
Operation overhead | 각 마이크로서비스는 개발기술과 조직이 다를 수 있습니다. 따라서 테스트, 배포, 버전관리, 장애관리 등이 기존보다 더 복잡하고 힘듭니다. 또한, 마이크로서비스는 여러 복수의 물리머신에 배치되고, 서비스 간 호출도 많기 때문에 장애관리도 더 힘들어 집니다. | DevOps문화, CI/CD Pipeline, Test 자동화, 통합 로깅 및 모니터링 |
Performance | 각 마이크로서비스는 물리적으로 다른 HOST 또는 VM에 있기 때문에 기존에 한 HOST/VM에 있을 때보다 네트워크 트래픽이 훨씬 많이 증가합니다. 네트워크 장애 또는 지연으로 인해 성능이 감소할 수 있습니다. | API Composition패턴, CQRS 패턴, BFF(Backend for Frontend)계층 분리, 캐싱 |
위 표에서 알 수 있듯이 마이크로서비스 패턴은 각 마이크로서비스의 DB간 정합성을 보장하고 성능 향상을 위해 필요합니다.
이렇게 중요하지만 마이크로서비스 패턴에 대한 실용적 도움이 되는 자료는 많지 않습니다.
대부분 이론적으로만 설명하지 실제 프로그램으로 어떻게 구현되는지 친절하게 알려주는 글이나 책을 찾기 어렵습니다.
저 또한 개념적으로만 마이크로서비스 패턴을 이해하고 교육을 해왔고, 언젠가는 실제 예제 프로그램을 만들어서 공유해야 겠다는 생각만 해오고 있었습니다.
그러다가 최근에 모 은행 BootCamp를 끝내고 드디어 미뤄왔던 숙제를 하게 되었고 이제 그 결과물을 여러분과 공유하고자 합니다.
[마이크로서비스 패턴 쉽게 개발] 시리즈는 총 13편으로 올릴 계획입니다.
예제 서비스는 온라인 쇼핑몰 서비스이고 주문(Order), 결제(Payment), 배송(Delivery), 조회 레포트(Report), 상품재고(Inventory)의 5개 마이크로서비스로 구성되어 있습니다.
Agenda는 아래와 같습니다.
마이크로서비스 패턴 쉽게 개발하기 목차
- 마이크로서비스 패턴 이해: Saga, Event Sourcing, API Composition, CQRS 이해
- 실습환경 준비
- 주문 서비스 테스트
- Axon Framework 이해
아래 주제들은 '마이크로서비스패턴 쉽게 개발하기'라는 제 책에서 만나실 수 있습니다.
- 멀티 모듈 프로젝트 작성
- 신규 주문 정상처리 프로세스 구현
- 배송 상태 변경 및 재고 증감 처리
- 신규 주문 보상처리 프로세스 구현
- 주문 수정 정상처리 프로세스 구현
- 주문 수정 보상처리 프로세스 구현
- 주문 삭제 정상처리 프로세스 구현
- 주문 삭제 보상처리 프로세스 구현
- API Composition 패턴과 CQRS 패턴
책 한번 내겠다는 평소의 꿈을 실현하기 위해 이번에 전자책을 내게 되었습니다.
제 꿈을 응원하신다는 마음으로 전체 내용을 공유하지 않는것을 양해해 주시고
구매까지 해 주시면 더욱 감사하겠습니다.
https://happycloud-lee.tistory.com/notice/291
그럼 마이크로서비스를 공부하거나 개발하시는 분들에게 도움 되시기를 희망하며 시리즈를 시작 하겠습니다.