1. MSA 개발 12 Factors

클라우드 네이티브 애플리케이션이 갖추어야 할 12가지 설계 원칙이다.

  1. 코드베이스 (Codebase):
  2. 종속성 (Dependencies):
  3. 설정 (Config):
  4. 백엔드 서비스 (Backing Services):
  5. 빌드, 릴리즈, 실행:
  6. 무상태 프로세스 (Stateless Processes):
  7. 포트 바인딩 (Port Binding):
  8. 동시성 (Concurrency):
  9. 폐기 가능성 (Disposability):
  10. 환경 일치 (Dev/prod parity):
  11. 로그 (Logs):
  12. Admin 프로세스:

2. CRUD와 MSA의 연계성

MSA 아키텍처에서 조회(Read)와 쓰기(Write)를 분리해야 하는 6가지 이유

  1. Read와 Write는 성격의 차이가 있다. 조회는 트래픽이 많아 속도와 확장성이 중요하고, 쓰기는 데이터 정합성과 정확성이 우선임.
  2. CRUD를 한 곳에 모으면 서비스가 거대해져 유지보수와 확장이 어려워지는 모놀리식화가 발생하여 여러 가지 장애가 발생할 수 있음.
  3. 정책 변화가 잦은 쓰기 로직과 데이터 형태가 고정적인 조회 로직을 분리하여 안정성을 높임.
  4. 확장 방식의 차이: 조회는 Scale-out이 쉽지만 쓰기는 트랜잭션 일관성 때문에 확장에 제약이 있어 각각의 특성에 맞는 전략이 필요