마이크로서비스 아키텍쳐 ?
- 애플리케이션을 작은 독립적인 서비스로 분해하는 접근 방식을 채택
- 각 서비스는 특정 비즈니스 기능을 담당
- 서로 통신하여 전체 애플리케이션 형성
- 애플리케이션을 더 작고 유연하며 확장 가능하게 만들 수 있음
- 서비스 , 프로젝트가 크고 복잡하고 , 장기적으로 운영될 수록 MSA의 장점이 더욱 드러남
즉 하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍쳐
모놀리식 아키텍쳐 (Monolithic Architecture) ?
- 전통적인 소프트웨어 개발 방식
- 모든 기능과 서비스를 하나의 코드 베이스에 통합하여 구현하며 , 단일 데이터베이스에 모든 데이터를 저장함
- 코드 베이스가 커질수록 개발 및 배포에 복잡성이 증가
- 간단한 아키텍쳐이고 , 유지보수가 용이하기 때문에 소규모 프로젝트에 적합
모놀리식 아키텍쳐의 한계점
- 부분 장애가 전체 서비스의 장애로 확대될 수 있음
- 부분적인 Scale-Out(여러 서버로 나누어 일을 처리하는 방식)이 어려움
- 서비스의 변경이 어렵고 , 수정 시 장애의 영향도 파악이 힘듬
- 배포 시간이 오래 걸림
- 한 Framework와 언어에 종속적
MSA의 특징
- API를 통해서만 상호작용 가능
- 서비스의 end-point를 API 형태로 외부에 노출하고 , 실질적인 세부 사항은 모두 추상화
- 내부 구현 로직 , 아키텍처 , 프로그래밍 언어 , 데이터베이스 , 품질 유지 체계와 같은 기술적인 사항들은 서비스 API에 의해 철저하게 가려짐
MSA의 장점
- 서비스가 커지면서 생겼던 모놀리식 아키텍쳐의 문제점들을 어느정도 보완 가능
- 서비스 간 독립성으로 인해 확장성과 유연성이 높아짐
- 일부 서비스가 실패하더라도 전체 시스템에 큰 영향을 미치지 않음
MSA의 단점
- 서비스 간 통신이 필요하며 , 서로 간 연결 구축 및 관리의 복잡성 증가
- 초기 개발 및 통신 등에 시간이 소요됨
즉 대규모 복잡한 프로젝트 , 시스템을 독립적으로 개발하고 확장해야 하는 경우 MSA가 적합하다
참고
[MSA] MSA란 무엇인가? 개념 이해하기
MSA 제대로 이해하기 -(1) MSA의 기본 개념
[MSA] 마이크로서비스 아키텍처(MSA)란 뭘까?