MSA
MSA
- Microservice Architechture의 줄임말. Microservices 라고도 함
- 하나의 애플리케이션을 다수의 독립적인 서비스들의 집합으로 구성하는 아키텍처 디자인 패턴
- 여러 서비스를 서로 독립적으로 배포한 후, 필요할 때만 호출하는 형태로 애플리케이션 구성
- 각 서비스는 별도의 프로세스에서 실행됨
- HTTP API 등을 이용해 애플리케이션은 서비스들과 가볍게 통신하게 됨
- 각 서비스는 각 비즈니스 기능을 담당
- 하나의 코드와 통합된 DB를 사용하는 monolithic architecture과 대조됨
Monolithic Architecture, MSA 장단점
- Monotlihic architecture
- 초기 설계는 쉬울 수 있음
- 그러나 결합도가 높기 때문에 한 기능에서 장애가 생길 경우 다른 기능들에도 장애가 발생 가능
- 또한 코드가 한 곳에 모여 있기 때문에 배포되려면 전체 시스템을 빌드하고 배포해야 함
- 작은 수정에도 빌드 / 배포 시간이 오래 걸림
- Scale-out을 하기 위해 전체 시스템을 변경해야 함
- 그럼에도 운영이 쉽고, 성능이 빠르며, 트랜잭션 관리가 용이함
- MSA
- 작은 서비스 단위로 구성되어, 확장이 용이함
- 배포할 때 서비스 단위로 배포하면 되므로 시간이 적게 걸리고, 새로운 시도를 하기 쉬움
- 빠른 IT 기술의 변화에 대응하기가 더 쉬움
- 서비스끼리 다른 언어 및 기술을 사용 가능
- Amazon, Netflix 및 국내 여러 대기업에서 사용하는 등 대규모 애플리케이션 개발에 좋음
- 서비스 경계를 잘 설정해야 하며, 운영의 복잡성이 증가할 수 있음
References
- https://siahn95.tistory.com/55
- https://siahn95.tistory.com/58