본문 바로가기
SI 업무/MSA관련

1. MSA 개념

by 새로운걸 배우는게 너무 싫은 IT 복붙러 2024. 12. 24.
728x90

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 로 존재함.

728x90