2024. 9. 9. 09:30ㆍMSA
2024/09/06
※ MSA 개요
💡 MSA의 핵심 원리와 기술을 배우고 실제로 적용해보면서, 마이크로서비스 아키텍처를 깊게 이해 하고, 실제 상황에서 필요한 해결책을 찾을 수 있는 것이 이번 목표다❗
▶ MSA란?
● Microservices Architecture의 약자
○ MSA는 하나의 애플리케이션을 여러 개의 독립적인 서비스로 분리하여 개발, 배포, 유지보수를 용이하게 하는 소프트웨어 아키텍처 스타일
○ 각 서비스는 특정 비즈니스 기능을 수행하며, 서로 독립적으로 배포되고 확장될 수 있음
○ 서비스 간의 통신은 주로 HTTP/HTTPS, 메시지 큐 등을 통해 이루어짐
● 주요 특징
○ 독립적인 배포 가능성 : 각 서비스는 독립적으로 배포할 수 있으며, 다른 서비스에 영향을 주지 않고 업데이트할 수 있음
○ 작은 팀 구성 : 각 서비스는 작은 팀이 독립적으로 개발하고 관리할 수 있음
○ 기술 스택의 다양성 : 각 서비스는 적절한 기술 스택을 자유롭게 선택할 수 있음
▶ 모놀리틱 아키텍처와의 비교
● 모놀리틱 아키텍처
📍 정의
○ 모놀리틱 아키텍처는 하나의 큰 코드베이스로 구성된 애플리케이션
○ 모든 기능이 하나의 애플리케이션 내에 포함
📍 장점
○ 간단한 배포 : 모든 코드가 하나의 코드베이스에 포함되어 있어 배포가 단순
○ 단일 데이터베이스 : 하나의 데이터베이스를 사용하여 데이터 일관성을 쉽게 유지할 수 있음
📍 단점
○ 확장성 부족 : 특정 기능을 확장하려면 전체 애플리케이션을 확장해야함
○ 긴 개발 주기 : 작은 변경 사항도 전체 애플리케이션을 다시 배포해야함
○ 유연성 부족 : 새로운 기술 도입이 어렵고, 특정 모듈에 종속적임
● MSA
📍 정의
○ MSA는 여러 개의 독립적인 서비스로 구성된 애플리케이션
○ 각 서비스는 특정 비즈니스 기능을 수행
📍 장점
○ 확장성 : 특정 서비스만 확장하여 성능을 최적화할 수 있음
○ 독립적 배포 : 개별 서비스의 변경 사항을 독립적으로 배포할 수 있음
○ 유연성 : 서비스별로 적합한 기술 스택을 선택할 수 있음
📍 단점
○ 복잡성 증가 : 서비스 간 통신, 데이터 일관성 유지 등의 복잡성이 증가
○ 운영비용 증가 : 각 서비스의 모니터링, 로깅 등을 개별적으로 관리해야 함
▶ MSA의 장단점
● 장점
○ 확장성 : 각 서비스는 독립적으로 확장 가능, 특정 기능에 대한 성능 최적화가 용이
○ 유연성 : 다양한 기술 스택을 사용하여 서비스별 최적화 가능
○ 독립적 배포 : 서비스별로 독립적 배포가 가능하여 배포 주기를 단축
○ 작은 팀 구성 : 서비스별 작은 팀으로 구성되어 민첩한 개발 가능
● 단점
○ 복잡성 : 서비스 간 통신, 데이터 일관성 유지, 트랜잭션 관리 등의 복잡성이 증가
○ 운영비용 : 각 서비스의 모니터링, 로깅, 장애 대응 등을 개별적으로 관리해야 하므로 운영 비용이 증가
○ 데이터 관리 : 분산된 데이터베이스로 인해 데이터 일관성 유지가 어려울 수 있음
○ 네트워크 지연 : 서비스 간의 통신이 네트워크를 통해 이루어지므로 지연 시간이 발생할 수 있음
※ 위 이미지들은 스파르타코딩클럽에 저작권이 있으므로 무단 도용 금지 및 상업 목적으로 사용할 수 없습니다.
'MSA' 카테고리의 다른 글
이벤트 드리븐 아키텍처와 스트림 처리 (1) | 2024.09.24 |
---|---|
분산 추적(Spring Cloud Sleuth) 및 로깅(Zipkin) (2) | 2024.09.24 |
MSA 보안 구성 - OAuth2 + JWT (0) | 2024.09.23 |
MSA - 서킷 브레이커 (10) | 2024.09.12 |
클라이언트 사이드 로드 밸런싱 - FeignClient와 Ribbon (0) | 2024.09.11 |