MSA 란?
MSA는 Microservices Architecture(마이크로서비스 아키텍처)의 약자로, 소프트웨어 개발에서 사용되는 아키텍처 스타일 중 하나입니다. MSA는 애플리케이션을 여러 개의 독립적인 서비스로 분리하여 설계하는 방법을 의미합니다. 각 서비스는 특정 비즈니스 기능을 담당하며 독립적으로 배포, 개발, 확장, 유지보수가 가능합니다.
MSA의 주요 특징
독립적인 서비스:
각 마이크로서비스는 독립적으로 실행되며, 서로 느슨하게 결합되어 있습니다. 즉, 하나의 서비스에 문제가 발생해도 다른 서비스에는 영향을 주지 않습니다.
작고 자율적:
각각의 서비스는 단일 비즈니스 기능을 중심으로 설계되며, 이를 독립적으로 배포 및 운영할 수 있습니다.
분산 시스템:
네트워크를 통해 서비스 간 통신이 이루어지며, 주로 REST API, 메시지 큐 또는 gRPC 같은 통신 방법이 사용됩니다.
다양한 기술 스택 허용:
각 서비스는 필요에 따라 다른 언어, 데이터베이스, 프레임워크를 사용할 수 있습니다.
DevOps 및 CI/CD 친화적:
지속적인 통합과 배포(CI/CD)를 지원하며, 자동화된 테스트와 모니터링으로 운영 효율성을 높입니다.
MSA의 장점
유연성: 특정 서비스만 독립적으로 수정 및 배포 가능.
확장성: 각 서비스가 별도로 확장될 수 있어 자원을 효율적으로 사용할 수 있음.
장애 격리: 문제 발생 시 해당 서비스만 영향을 받음.
효율적인 팀 조직: 각 팀이 개별 서비스를 관리 및 개발 가능.
MSA의 단점
복잡성 증가: 서비스 간 통신, 데이터 일관성 유지, 트랜잭션 관리 등 고려해야 할 점이 많아짐.
운영 비용 증가: 여러 서비스가 독립적으로 배포되므로 추가적인 모니터링 및 관리가 필요.
테스트 및 디버깅 어려움: 분산 환경에서 문제를 추적하는 데 어려움이 있을 수 있음.
Monolithic(모놀리식) vs. Microservice 의 차이
| 설계 방식 | 모든 기능을 하나의 애플리케이션으로 통합 | 독립적인 서비스로 기능 분리 |
| 확장성 | 전체 애플리케이션 확장 | 개별 서비스 단위로 확장 가능 |
| 복잡성 | 상대적으로 단순 | 복잡성 증가 |
| 배포 | 전체 애플리케이션을 재배포해야 함 | 필요한 서비스만 재배포 가능 |

MSA 와 SOA 의 차이
MSA(Microservices Architecture)와 SOA(Service-Oriented Architecture)는 모두 서비스 중심의 아키텍처라는 공통점이 있지만, 설계 철학과 구현 방식에서 여러 차이가 있습니다. 두 아키텍처는 서로 상호 관련이 있지만, 특정 요구 사항과 환경에 따라 사용 목적과 방식이 다릅니다.
MSA와 SOA의 주요 차이점
특징MSA (마이크로서비스 아키텍처)SOA (서비스 지향 아키텍처)
| 서비스 크기 | 작은 단위의 독립적인 서비스 (마이크로서비스) | 보다 큰 단위의 서비스로 구성 |
| 서비스 간 통신 | 주로 REST API 또는 경량화된 통신 프로토콜 사용 | ESB(Enterprise Service Bus) 같은 중앙 허브 사용 |
| 중앙 집중화 여부 | 비중앙화된 설계, 서비스 간 느슨한 결합 | ESB로 통합 관리, 중앙화된 통신 방식 |
| 목적 | 민첩성과 독립적 배포를 중시 | 대규모 엔터프라이즈 시스템 통합을 목표로 설계 |
| 데이터 관리 | 각 서비스가 자체 데이터 저장소를 관리 (분산 데이터베이스) | 통합된 데이터 저장소를 선호하는 경우가 많음 |
| 기술적 다양성 | 각 서비스별로 다른 기술 스택, 언어, 데이터베이스 사용 가능 | 표준화된 기술 스택을 권장 |
| 복잡성 | 서비스 분리로 인해 초기 구현 및 운영 복잡성이 높음 | 상대적으로 통합 관점에서 설계가 단순화될 수 있음 |
| 트랜잭션 처리 | 분산 트랜잭션(Coordinated)을 피하고, 보상 트랜잭션 사용 | 전통적인 ACID 트랜잭션 지원 |
| 적용 사례 | 민첩성이 중요한 클라우드 기반, 확장성이 필요한 애플리케이션 | 기존 레거시 시스템과의 통합이 필요한 대규모 엔터프라이즈 |
MSA의 특징
- MSA는 각 서비스가 독립적으로 배포되고 실행되며, 특정 비즈니스 도메인에 초점을 맞춥니다.
- REST API 또는 메시지 큐 같은 경량화된 프로토콜을 사용하여 서비스를 통신합니다.
- Netflix, Amazon, Google 같은 클라우드 기반의 대규모 시스템에서 자주 사용됩니다.
- DevOps와 CI/CD와 잘 결합되어 빠른 배포와 반복적인 개발에 적합합니다.
SOA의 특징
- SOA는 주로 기존 시스템(레거시 시스템)을 통합하고 재사용 가능하도록 설계합니다.
- 서비스 간 통합을 위해 ESB(Enterprise Service Bus)와 같은 중앙 통제 방식의 미들웨어를 사용합니다.
- 기업 내부에서 사용하는 ERP, CRM, 금융 시스템 등 대규모 엔터프라이즈 애플리케이션에 적합합니다.
- 기존 시스템과의 호환성 및 데이터 일관성 유지가 중요한 경우에 선호됩니다.
MSA와 SOA의 관계
- SOA는 MSA의 전신으로 간주될 수 있습니다. MSA는 SOA의 개념에서 영감을 받아 더 경량화되고 클라우드 환경에 적합하게 진화한 형태입니다.
- SOA는 보다 거시적이고 통합적인 접근 방식을 제공하며, MSA는 이를 분산 시스템 및 클라우드 환경에 최적화한 접근 방식이라고 볼 수 있습니다.
정리
- MSA는 소규모 서비스의 독립성과 민첩성을 중시하며 클라우드 및 현대적 애플리케이션에 적합합니다.
- SOA는 대규모 조직과 기존 시스템의 통합에 초점이 맞춰져 있어 안정성과 표준화를 우선합니다.
MSA 구현을 위한 아키텍처
빨강: 서로 다른 디바이스에서 서비스요청
노랑: 모든 요청은 단일 Gateway 로 들어옴
Gateway 에서 Service 정보를 담고 있는 Service Discovery (= Netflix 의 Eureka Server) 에 Service 위치 요청
Service 위치 정보를 받고
Load Balancing 에 의해 Service 에 전달
파랑: 같은 일을 하는 Service 가 물리적 다른 machine 에서 복수개의 instance 로 존재함.

'SI 업무 > MSA관련' 카테고리의 다른 글
| 5. Gateway with (lb://) (2) | 2024.12.25 |
|---|---|
| 6. 1~5까지 학습 내용 정리 (1) | 2024.12.25 |
| (작성중)4. Gateway-filter (Custom filter, Global filter) (1) | 2024.12.25 |
| 3. Gateway & Routing 구현 (without no registry to Eureka Server) (0) | 2024.12.24 |
| 2. Discovery Service ( netflix 의 Eureka) (1) | 2024.12.24 |