마이크로서비스 아키텍처란?
마이크로서비스 아키텍처(MicroService Architecture, MSA)는 단일 애플리케이션으로 이루어진 모놀리식 아키텍처와 달리 아주 작은 서비스 단위로 나눠 각 서비스에 독립적으로 서비스를 구성하는 소프트웨어 아키텍처 입니다.
마이크로서비스 아키텍처의 장점
- 유연한 확장성 : 각 마이크로서비스는 다른 서비스와 독립적으로 확장할 수 있기 때문에 유연합니다.
- 더 민첩한 배포 주기 : 코드 변경점이 생긴 서비스 영역만 배포할 수 있기 때문에 빠르게 배포할 수 있습니다.
- 유지 관리 안전성 : 여러 마이크로서비스로 분할하여, 특정 마이크로서비스가 중단되더라도 전체 어플리케이션에 영향을 미치기 않기 때문에 안정적이다
- 기술 유연성 높음 : 각 마이크로 서비스는 필요에 따라 독립적으로 기술적용이 가능하므로 기술 유연성이 높다.
마이크로서비스 아키텍처의 단점
- 복잡한 구조, 높은 구현 난이도 : 둘 이상의 마이크로서비스로 이루어진 복잡한 구조를 고려하여 개발해야되기 때문에 구현 난이도가 높습니다.
- 모니터링, 디버깅, 통합 테스트가 어려움 : 둘 이상의 마이크로서비스를 고려하여 모니터링, 디버깅, 통합 테스트를 하는것은 어렵습니다. (어플리케이션 실행도 어렵고, 문제가 발생하는 지점을 찾기어렵습니다.)
- 인프라 및 자원, 인력에 드는 막대한 비용: 마이크로서비스 아키텍처는 각각의 서비스를 독립적으로 배포하고 운영해야 하므로 인프라 및 자원, 인력에 드는 비용이 상대적으로 더 많이 들 수 있습니다.
- 까다로운 DB 트랜잭션 관리: 마이크로서비스 환경에서 여러 서비스 간의 데이터 일관성을 유지하려면 데이터베이스 트랜잭션을 관리하는 것이 복잡할 수 있습니다.
마이크로서비스는 언제 사용하면 좋을까?
- 기술 복잡도가 높은 대규모 프로젝트
- 다양한 기술 스택을 사용하고, 여러 비즈니스별 요구사항이 명확한 경우
- 장애를 줄이고, 시스템 전체의 가용성과 탄력성을 높혀야 할 때
참고
'소프트웨어 아키텍처' 카테고리의 다른 글
클린아키텍처 (0) | 2024.02.01 |
---|---|
레이어드 아키텍처 (0) | 2024.01.13 |
모놀리식 아키텍처 (0) | 2023.12.04 |