MSA란 무엇인가요?
MSA(MicroService Architecture)는 소프트웨어 개발에서 사용되는 아키텍쳐 스타일을 나타냅니다. 애플리케이션을 작은 서비스 단위로 분할하여 개발하고, 이러한 서비스들이 독립적으로 배포, 운영 및 확장될 수 있도록 하는 접근 방식입니다.
기존의 모놀리식 아키텍처는 하나의 애플리케이션으로 구성되어 독립적으로 서비스를 운영할 수 없지만, MSA는 독립적인 기능 단위인 마이크로 서비스,로 분리하여 각각의 독자적인 데이터베이스, 매커니즘을 가지며 독립적으로 동작할 수 있습니다.
MSA의 장점?
- 확장성 : 마이크로 서비스는 독립적으로 배포되고 운영될 수 있어 확장성이 용이합니다.
- 다양성 : 서로 다른 기술 스택을 이용하여 각각의 서비스를 개발할 수 있습니다.
- 유지 보수 : 각각의 서비스가 다른 서비스에 영향을 주지 않기 때문에 빠른 수정과 배포가 가능합니다.
MSA의 예
인터넷 쇼핑몰 웹 애플리케이션을 가정한다면 다음과 같은 서비스가 있습니다.
- 사용자 관리
- 상품 관리
- 주문 처리
- 배송 관리
- 리뷰 및 평점
MSA를 사용한다면 위와 같은 서비스들은 독립적으로 작동하고 필요에 따라 다른 기술 스택을 사용할 수 있습니다. 변경이나 업데이트가 필요한 경우 해당 서비스만 수정하면 되어서 복잡성을 줄일 수 있습니다.
MSA의 단점?
- 복잡성 : 여러 마이크로 서비스로 구성되기 때문에 전체적인 이해, 통신, 데이터관리, 모니터링, 로깅등의 복잡성이 증가할 수 있습니다.
- 서비스 통신 문제 : 서로 다른 마이크로 서비스 간의 네트워크 문제를 야기할 수 있습니다. 이러한 문제를 해결하기 위해선 추가적인 기술과 설계가 필요합니다.
- 테스트와 디버깅 어려움 : 각각의 서비스가 독립적으로 개발, 운영 되기에 전체 시스템의 테스트와 디버깅이 어려울 수 있습니다.
- 초기 구축의 어려움 : 처음 도입하는 경우 초기 설정과 학습이 어려울 수 있습니다. 초기 단계의 비용과 시간이 필요할 수 있습니다.
'개발 상식' 카테고리의 다른 글
[개발상식] HTML의 doctype, 표준모드(standards mode)와 쿽스모드(quirks mode) (0) | 2023.09.12 |
---|---|
[개발 상식] 오버로딩과 오버라이딩(Overloading & Overriding) (0) | 2023.09.11 |
[개발 상식] Ajax, Axios, Fetch API가 무엇일까? (0) | 2023.08.13 |
[개발 상식] 메세지 큐란? (0) | 2023.07.28 |
[개발 상식] 선언적 프로그래밍과 명령적 프로그래밍, React.js와 선언적 프로그래밍 (0) | 2023.07.27 |