Coming Soon
Development, Arcitecture, MSA
마이크로서비스 패턴 (Microservice Pattern) 리뷰
직접 경험했던 MSA와 책으로 접한 MSA는 어떻게 달랐을까
2020년 12월 15일 작성
마이크로서비스 패턴 (Microservice Pattern)
크리스 리처드슨 저/이일웅 역 | 길벗
에어프레미아에서 항공권 예약 시스템을 개발했을때, MSA에 대한 완벽한 이해는 하고 있지 못한채로 프로젝트에 참여했었다. (미리 말하자면 이 프로젝트는 완전한 MSA 는 아니고, MSA를 지향하고 있었다. 몇 가지 구성요소가 존재하지 않았었기 때문.) 팀장님과 시니어분의 리드아래 그 개념을 어느정도 체득하면서 개발을 했었지만, 그럴 때 마다 완벽히 내것이 되지 못했다는 느낌을 많이 받았어서 이 책을 다시 읽어보게 되었다.
이 책은 어떤 책인가?
이 책은 MSA(마이크로서비스 아키텍처)에 대한 이해를 돕기 위해 기존의 모놀리식 아키텍처의 단점을 파악하고, 그에 대응한 MSA의 장점과 동작원리 등을 세세하게 설명하고 있는 책입니다.
또한 미국 온라인 음식 배달 서비스인 FTGO(푸드투고) 서비스의 사례를 통해서 실제로 일어날 수 있는 모놀리식 아키텍처의 여러 문제를 확인하고, MSA가 적용되면 어떤 식으로 개선되어가는지를 학습할 수 있습니다.
MSA 의 장단점 뿐만 아니라 분산된 데이터는 어떻게 관리할지, 분산된 서비스들이 어떻게 테스트 되어야할지, 배포는 어떻게 되어야할지 모놀리식 -> MSA 리팩터링 전략 등의 세부적인 내용을 학습할 수 있습니다.
MSA를 처음 학습하는 사람들부터, 이미 현업에서 사용하고 있는 분들까지도 바이블로 활용할 수 있는 책이라고 생각합니다.
알게된 것 / 느낀 점
MSA의 단점
- 딱 맞는 서비스를 찾기 쉽지 않다.
- 잘못했다간 분산 모놀리틱(Distributed Monolythic)이 될 수 있다.
- 복잡해서 개발, 테스트, 배포가 어렵다.
- 서비스간 통신이 단순 메서드 호출보다는 당연히 복잡하고 사용 불능, 지연, 부분 실패를 처리할 수 있어야 한다.
- 서비스마다 DB가 따로 있기 때문에 다중 DB에 접속하여 조회하고 트랜잭션을 구현하는 일이 어렵다 -> Saga Pattern 필요
- 여러 서비스에 걸친 기능을 배포할 때에는 잘 조정해야 한다.
- 서비스 간 디펜던시에 따라 서비스 배포 계획이 빈틈 없이 나와야 한다.
- MSA 도입 시점을 결정하기가 어렵다.
마이크로서비스 아키텍처 패턴 언어
- 애플리케이션을 여러 서비스로 분해하는 패턴
- 통신 패턴
- 트랜잭션 관리를 위한 데이터 일관성 패턴
- 데이터 쿼리 패턴
- API 조합 패턴
- CQRS
- 서비스 배포 패턴
- 관측성 패턴
- 서비스 테스트 자동화 패턴
- 횡단 관심사 처리 패턴
- 보안 패턴
총평 / 마무리
GitHub에 로그인 하시면 댓글을 다실 수 있어요 :)