시스템을 여러개의 "독립된 서비스"로 나눠서, 이 "서비스를 조합"함으로서 "기능을 제공"하는 아키텍처 디자인 패턴
- 조대협
1. 모든 팀은 서비스 인터페이스를 제공해야 한다.
2. 팀 간의 커뮤니케이션은 서비스 인터페이스로만 한다.
3. 서비스들을 직접 연결하거나, 다른 팀의 데이터를 직접 접근하거나, 데이터를 공유하는 방식을 사용하면 안된다.
4. 어떤 기술을 사용하는가는 각 팀이 알아서 한다.
5. 이러한 규칙을 어기면 해고될 것이다.
- 제프 베조스
API와 MSA의 전설ㅎ
클라우드 도입 시, MSA 아키텍처로 분리.
모바일 등 채널부분에 클라우드 도입해왔으나, 핵심(기간계)영역도 클라우드 도입 가능? (신한은행, 국민은행 사례 검색)
- 클라우드 도입의 장벽,
고객 계좌 및 거래 데이터는 통합되어야 하고, 기존 시스템 규모가 매우 크다.
금융 규제를 따라야 한다.
- 니즈
시스템 확장성과 시스템 사용량에 따른 IT비용 최적화
클라우드 네이티브 환경을 갖추어야 새로운 서비스를 빠르게 출시할 수 있다. (클라우드 운영환경 + MSA 도입)
MSA의 특징
1. 데이터를 통합하지 안흔ㄴ다.
2. 변화는 바로 적용한다.
3. 서비스의 상호의존성을 완전히 배제한다.
관계형데이터베이스: 데이터 독립성(물리적 구조, 논리적 설계와 별개로 데이터가 정의되어야 한다.)과 데이터 무결성(비즈니스 규칙에 위배되는 데이터는 CRUD가 일어나면 안됨) 추구(데이터를 한곳에 한번만 저장하기 위한 설계기법 for Business)
통합데이터를 설계하기 위해 거대하 ㄴ엔티티 관계도를 그리게 되고, 전체 관게도를 한사람이 이해하기 어려워지므로, 변경이 누적되면 통합된 데이터를 유지하기가 어렵다.
변경 시, 파급효과를 엄청나게 분석해야 하기 때문에 하나의 통합된 데이터 방식은 변화에 빠르게 적용하기가 어렵다.
↓
파괴적 혁신 상태에서는 성장이 지지부진해지는 "혁신의 딜레마": 혁신을 시도할 수도, 안할수도 없는 상황