1. 기본 개념 및 원칙
마이크로서비스 아키텍처 (MSA)는 단일 애플리케이션을 느슨하게 결합된 서비스들의 모음으로 구성하는 소프트웨어 개발 접근 방식입니다. 각 서비스는 독립적으로 배포, 확장 및 관리될 수 있습니다.
1.1. MSA란 무엇인가?
MSA는 작고, 독립적으로 배포 가능한 서비스들로 애플리케이션을 구축하는 방식입니다. 각 서비스는 특정 비즈니스 기능에 집중하며, 자체 데이터베이스와 통신 메커니즘을 가질 수 있습니다.
1.2. 모놀리식 아키텍처와의 비교
모놀리식(Monolithic) 아키텍처는 모든 컴포넌트가 하나의 단위로 묶여 배포되는 반면, MSA는 각 서비스를 개별적으로 개발하고 배포할 수 있어 유연성이 높습니다.
// 모놀리식 아키텍처 예시 (단일 애플리케이션)
class MonolithicApplication {
constructor() {
this.userModule = new UserModule();
this.productModule = new ProductModule();
this.orderModule = new OrderModule();
}
start() {
console.log("모든 모듈이 단일 애플리케이션으로 시작됩니다.");
}
}
// 마이크로서비스 아키텍처 예시 (독립적인 서비스)
// User Service, Product Service, Order Service 각각 독립적으로 배포 및 실행
1.3. MSA의 핵심 원칙
- 분산된 거버넌스: 각 팀은 서비스 스택 및 개발 방식에 대한 자율성을 가집니다.
- 느슨한 결합: 서비스는 서로 독립적으로 변경될 수 있도록 최소한의 의존성을 유지합니다.
- 독립적인 배포: 각 서비스는 전체 시스템에 영향을 주지 않고 독립적으로 배포될 수 있습니다.
- 데이터 중심 아키텍처: 각 서비스는 자체 데이터 저장소를 소유하며, 다른 서비스와 데이터를 직접 공유하지 않습니다.