[Server] MSA란?

YUZAMONG·2025년 1월 4일

CS

목록 보기
4/6

Monolithic Architecture

소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어있는 형태를 모놀리식 아키텍처라고 한다.
간단하며 유지보수가 용이하기 때문에 소규모 프로젝트나 프로토타입 제작에 적합하다.

하지만 일정 규모 이상의 서비스에서 모놀리틱 아키텍처는 한계가 있다.

  • 부분의 장애가 전체 서비스의 장애로 이어지는 경우가 발생함
  • 수정 시의 영향도(사이드 이펙트 등) 파악이 어려움
  • 전체 시스템 구조 파악이 어려움
  • 빌드 시간 및 테스트 시간, 배포 시간이 오래 걸림
  • 서비스를 부분적으로 *scale-out 하기 힘듦
    🔗 scale-up과 scale-out
  • 한 프레임워크와 언어에 종속적임
  • 일부 기능을 수정하거나 업데이트 하려면 전체 애플리케이션을 재배포해야 함

MSA(Micro Service Architecture)

MSA는 작고 독립적인 서비스들의 집합으로 구성된 애플리케이션 구조를 의미한다.
*서비스 지향 아키텍처의 일종인 소프트웨어 개발 기법이다.
하나의 큰 어플리케이션을 여러 개의 작은 서비스로 구성하여 변경과 조합이 가능하다.
서비스나 프로젝트가 크고 복잡하고 장기적으로 운영될수록 MSA의 장점이 드러난다.

서비스 지향 아키텍처(Service Oriented Architecture, SOA)

  • 애플리케이션 구성 요소가 통신 프로토콜을 통해 다른 구성 요소에 서비스를 제공하는 접근 방식
  • 업무상 일 처리에 해당하는 소프트웨어 기능을 서비스로 판단하고, 그 서비스를 네트워크상에 연동하여 시스템 전체를 구축함

특징

1. 독립성과 추상화

각각의 서비스는 자체 프로세스에서 실행이 되고 느슨한 구조로 연결된다.
API를 통해서만 상호작용하며, 서비스의 end-point(접근점)를 API 형태로 외부에 노출한다.
내부의 구현 로직, 아키텍처, 프로그래밍 언어, 데이터베이스와 같은 기술적인 세부 사항은 서비스 API로 철저하게 추상화한다.

2. 기술 중립성과 통신 방식

애플리케이션은 기술 중립적인 방식을 사용해 서로 데이터를 주고 받으며, 서비스 구현 기술과 독립적이기 때문에 다양한 언어와 기술로 구축될 수 있다.
주로 HTTP, REST, gRPC 등 가벼운 통신 아키텍처 또는 Kafka와 같은 메시지 스트림을 주로 사용한다.

3. 비즈니스와 기능 단위 설계

제대로 설계된 마이크로 서비스는 하나의 비즈니스 범위에 맞춰 만들어진다.
하나의 기능만 수행하며, 여러 어플리케이션에서 재사용할 수 있어야 한다.

4. Database Per Service

분산된 서비스마다 독립된 DB를 가진다.

장점

  • 서비스 별로 독립적인 개발과 배포가 가능하여 배포 시 전체 서비스의 중단이 없음
  • 특정 서비스만 별도의 기술 또는 언어로 구현이 가능하여 신기술의 적용이 유연함
  • 특정 서비스의 요구사항만을 반영하여 빠르게 배포가 가능함
  • 부분적 장애에 대한 격리가 수월하여 장애가 전체 서비스로 확장될 가능성이 적음
  • 특정 서비스에 대한 확장(scale-out)이 용이함

단점

  • 모놀리틱 아키텍처에 비해 설계가 복잡하고, 리소스 사용량이 증가하여 더 많은 비용이 발생할 수 있음
  • 서비스가 분산되어 있기 때문에, 내부 시스템 간 통신 통신 방법을 명확히 정의해야 함
  • 통신 장애나 서버 부하가 발생할 경우, 트랜잭션을 어떻게 유지할지 결정하고 구현해야 함
  • 요청에 응답하지 않을 경우에 대비한 방어 코드 작성이 필요함
  • 서비스 간 API 호출 시 통신 비용과 대기 시간(Latency)이 증가하며, API 버전에 대한 의존성이 생김
  • 통합 테스트와 트랜잭션 유지가 어려움
  • 데이터가 여러 서비스에 걸쳐 분산되기 때문에 한 번에 조회하기 어렵고, 데이터의 무결성과 정합성을 유지하기 어려움

활용

넷플릭스의 마이크로서비스 전환 성공 사례와 넷플릭스 OSS(Open Source Software)라고 불리는 오픈소스 기반의 프레임워크가 좋은 레퍼런스가 되면서 많은 기업이 모놀리식 아키텍처에서 MSA로 전환을 시도하고 있다.
아마존, 이베이와 같은 글로벌 서비스 기업들이 사용할 만큼 강력한 아키텍처이다.

클라우드 기반 환경에 적합한 클라우드 네이티브 특성으로, 도커나 쿠버네티스 등과 같은 컨테이너 기반 플랫폼과 조합이 잘 맞아 함께 발전하고 있다.


Reference

https://velog.io/@tedigom/MSA-제대로-이해하기-1-MSA의-기본-개념-3sk28yrv0e
https://hahahoho5915.tistory.com/
https://mozzi-devlog.tistory.com/34
https://www.samsungsds.com/kr/insights/msa_architecture_edm.html
https://velog.io/@mrcocoball2/MSA-알아보기-1.-MSA란-무엇인가

profile
유자맛 찹쌀유과

0개의 댓글