MSA란?
작고, 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 아키텍처.
각 서비스별 소스 코드 수정이 쉽고, 수정한 서비스만 배포 가능하다.
장애 시 해당 서비스에만 한정되고, 전체 장애로 확장될 가능성이 적다.
스케일 아웃이 필요한 경우에는 해당 서비스만 추가하여 리소스의 효율적 사용이 가능하다.
MSA 장점
독립적인 개발과 배포
확장성 → 스케일 아웃을 통한 수평 확장이 용이하고 각 서비스별 독립적으로 확장 가능
장애 격리 → 장애가 발생할 서비스만 문제
MSA 단점
복잡한 서비스 관리
배포 및 테스트의 복잡성 → CI/CD 파이프라인을 잘 구성하지 않으면 배포와 테스트가 매우 힘들어질 수 있다.
데이터 일관성 유지 → 각 서비스가 독립적으로 데이터를 가지므로 데이터의 일관성을 유지하는 것이 어려울 수 있다.
MSA 도입 과정