MSA 핵심원칙
: 마틸 파울러
(MSA의 대부)가 정의
Organized around Business Capabilites
(핵심)Product, Not Projects
Design for Failure
Organized around Business Capabilites
콘웨이 형님의 법칙
: 시스템이 설계
되면, 그 시스템의 구조
는 설계한 조직의 구조
와 유사
해진다.Business Capabilities
: 조직이 얼마나 빠르고 유연하게 대응할 수 있는지에 대한 능력
Business Capabilities - MSA
기존 모놀리스
방식
기능 조직
(초점)직무별 분리
+ 1개의 목표
를 다 같이 바라봄MSA
방식
목적 조직
(초점)파트별 분리
+ 각 파트별 목표
를 바라봄Project
에 집중
1번
만 만들면 됨(완성) -> 유지보수만 계속Developer(SI)
- Maintainer(고객사)
- Client(유저)
고객사
에서 분편한 부분을 느껴도 개발적 지식 없어서 유지보수 힘듬
Product
에 집중
Developer + Maintainer(고객사 및 개발)
- Client(유저)
고객사가 곧 개발자
이기 때문에 불편함을 느끼면 즉각적으로 대응 가능
Product에 집중하는 MSA
Smart endpoints
와 dumb pipes
RESTful
과 같은 단순한
방식의 프로토콜
사용Enterprise Service Bus(ESB)
is Smart Pipe
(routing, transformation, business rule...)관심의 분리
- Separation of Concerns
Smart Pipe
Decentralized
Data Management
/ Governance
데이터의 유연성, 탄력성의 확보
: Decentralized Data Management
비즈니스 필요성
에 따른 최적의 기술스택 사용
: Decentralized Governance
중앙집중 X
-> 유연성과 확장성 증가
필요에 따라 대용량 또는 소용량 변경 가능
Infrastructure Automation
인프라 자동화의 중요성
지속적인 통합, 배포
복잡한 아키텍처
-> 최대한 단순하게
사용 가능한 기술(Automation)들이 핵심
모놀리식
: CI/CD 중요도 낮음(=Business Capabilities 낮음)
MSA
: CI/CD 중요도 높음(=Business Capabilities 높음)
시스템은 언제든지 문제가 발생할 수 있다에 기반한 디자인을 만드는 것
감지
복구
의도치 않은 결과 방지
서비스 간의 영향도
결론
: 모든 원칙은 결국 Business Capabilities를 확보하기 위한 수단