9. MSA 의 9가지 특징
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
10. MSA 의 9가지 특징
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
대형 시스템을 개발할 때
기술적 계층에 따라 조직을 구성하는
것에 비해,
MSA에서의 접근 방식은
“비즈니스 수행 능력”에 따라 구분된
서비스 단위로
조직을 구성함
11. Any organization that designs a system (defined broadly) will produce a design whose structure is a copy
of the organization's communication structure.
-- Melvyn Conway, 1967
18. MSA 의 9가지 특징
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
단일 플랫폼에 의한 표준화를 통한
중앙통제모델이 아닌,
각 서비스팀에서 독자적인
거버넌스를 수행하도록 함
19. 플랫폼에 의한 표준화를 통해
전문성을 확보하고
사람"에의 의존성을 제거
Monolithic Architecture 의 장점
모니터링이 쉽다
SPOF
26. Any JVM language can be supported so each team can use the
language best suited to them.
The Groovy JVM language was chosen as our first supported
language. The existence of first-class functions (closures),
list/dictionary syntax, performance and debugability were all aspects
of our decision. Moreover, Groovy provides syntax comfortable to a
wide range of developers, which helps to reduce the learning curve for
the first language on the platform.
27. MSA 의 9가지 특징
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
각 서비스 영역에서
자신이 제공하는 서비스의 context에
따라
도메인 영역을 분리(논리적 분리)하고,
데이터의 성격에 맞는 적정한 DB를
선택함(물리적 분리)
31. 회원은 주소를 여러 개 가질 수 있고,
주소가 같은 다른 회원이 존재할 수 있으므로
주소는 회원의 부가정보다.(도메인 핵심 정보
회원 주소 배송
32. 하나의 배송 정보는 반드시 하나의 주소를 가
배송 한건에 여러 개의 주소를 가질 수 없음.
배송은 주소로 식별이 가능한 도메인 핵심정
회원 주소 배송
33. 회원의 주소가 변경된다면 회원 정보는 즉시 반영(FK)되어야 하지
과거 배송 이력 정보가 변경이 되면 안됨
34.
35. 상품 주문배송
- 재고 - 결제
결제가 실패하면 재고가 하나 줄어 들었던 transaction을 rollback 해야 하는
36. 서비스간 트랜잭션 처리
• 서비스 context 의 영역을 아주 잘 정의 해서 사용한다
• XA를 사용한다
• compensation transaction 을 사용한다
37. 문을 열고, 코끼리를 넣고, 문을 닫는다
코끼리 보다 큰 냉장고를 만들어서 코끼리를 넣는다
코끼리를 미분해서 냉장고에 넣고, 냉장고 속에서 적분
38.
39. 실패를 통해서 경험을 축적해 나가야 하는데,
어느 정도의 사소한 장애를 감수하더라도,
지속적으로 시스템을 개선해 나갈 수 있는
권한을 보장 받는 것이 사실상 불가능
40. 서비스간 트랜잭션 처리
• 서비스 context 의 영역을 아주 잘 정의 해서 사용한다
• XA를 사용한다
• compensation transaction 을 사용
API 를 조합하는 주체는 어디?
41. MSA 는 서비스 간의 협조를 중요하게 생각합니다.
M.F 는 여러 개의 간단한 기능(function)이 모여 하나의 서비스를 구성
여러 개의 기능을 모으는 녀석을 따로 모아 추상화를 할 수 있다면
밖에서 보이는 그림은 아주 깔끔한 모습이 될 수 있습니다.
성능
SPOF
복잡성 증가
47. MSA 의 9가지 특징
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
장애 없는 시스템은 없다!
불규칙하며 혼란스러워 보이는 현상을 배후에서 지배하는 규칙도 찾아낼 수 있다. 복잡성의 과학은 이제까지의 과학이 이해하지 못했던 불규칙적인 자연의 복잡성을 연구하여 그 안의 숨은 질서를 찾아내는 학문으로, 복잡성의 과학을 대표하는 혼돈 이론에도 프랙털로 표현될 수 있는 질서가 나타난다.