cleanUrl: /MSA란-무엇인가-개념과-장단점-찍먹해보기
floatFirstTOC: rightMSA란 무엇인가요? MSA는 Micro Service Architecture 의 줄임말로, 하나의 큰 애플리케이션을 여러 개의 작은 서비스로 나누어 개발하고 배포하는 소프트웨어 아키텍처 스타일입니다. 각 마이크로서비스는 독립적으로 실행되며, 하나의 기능 또는 도메인에 집중하여 개발됩니다.
MSA와 모놀리식 아키텍처의 차이
기존의 모놀리식 아키텍처는 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태입니다. 사용자 인터페이스, 비즈니스 로직, 데이터 접근 계층 등이 하나의 애플리케이션 안에 묶여 있어, 개발 초기에는 구조가 단순하고 배포가 쉽다는 장점 이 있습니다.
하지만 일정 규모 이상의 서비스, 혹은 수백명 이상의 개발자가 투입되는 프로젝트에서 모놀리식 아키텍처는 다음과 같은 문제점 들이 나타나기 시작합니다.
장애 전파 위험 하나의 기능에서 장애가 발생하면 전체 시스템이 영향을 받을 수 있습니다. 개발 협업의 어려움 많은 개발자가 하나의 코드베이스를 수정하다 보니 충돌이 잦고 협업이 어렵습니다. 확장성 부족 트래픽이 몰리는 특정 기능만 확장하고 싶어도, 전체 애플리케이션을 확장해야 하는 비효율이 발생합니다. 유지보수가 어려움 코드베이스가 방대해지면서 작은 변경에도 다른 부분에 영향을 미칠 가능성이 커집니다. 배포가 어렵고 느림 하나의 기능을 수정하더라도 전체 애플리케이션을 다시 빌드하고 배포해야 합니다. 기술 스택의 제한 전체 시스템이 동일한 기술 스택을 사용해야 하므로, 새로운 언어나 프레임워크를 도입하기 어렵습니다.
이러한 문제를 해결하기 위해 등장한 것이 바로 MSA입니다. MSA는 각 기능을 작고 독립적인 서비스 로 분리하여, 서로 API를 통해 통신 하도록 구성합니다. 이를 통해 각각의 서비스는 독립적으로 개발, 배포, 확장 이 가능하며 변화에 유연하게 대응할 수 있습니다.
MSA의 특징 MSA는 API를 통해서만 다른 서비스와 상호작용 합니다. 각 서비스는 자신의 기능을 API 형태로 외부에 노출하고, 내부 로직, 기술 스택, 데이터베이스 등은 완전히 추상화 됩니다.
예를 들어, user-service 는 사용자 정보를 API로 제공하며, 그 내부가 어떤 언어로 구현되어 있는지는 다른 서비스가 알 필요가 없습니다.
이는 서비스 간의 결합도를 낮추고, 독립적인 개발과 배포를 가능하게 합니다. 즉, 한 서비스에서 내부 구현을 변경해도, API 규격이 유지되면 다른 서비스에는 영향을 주지 않습니다.
또한, MSA에서는 서비스 간 통신이 주로 REST API, gRPC, 메시지 큐 등을 통해 이루어지는데, 이 방식 덕분에 서로 다른 언어와 플랫폼으로 개발된 서비스들이 유연하게 연동될 수 있습니다.
MSA의 장점 1. 서비스 단위로 분리 각 마이크로서비스는 하나의 비즈니스 기능만을 담당하며, 다른 서비스와 느슨하게 연결되어 있습니다.
이로 인해 유지보수가 쉬워지고, 특정 서비스에 문제가 생겨도 전체 시스템에 영향이 가지 않도록 장애 격리 가 가능합니다.
2. 독립적인 배포 및 개발 서비스는 각자 독립적으로 개발·배포 할 수 있습니다. 로그인 기능만 수정해도 해당 마이크로서비스만 배포하면 되므로, 배포 속도와 유연성이 대폭 향상됩니다.
3. 다양한 기술 스택 사용 가능 각 서비스는 독립적인 프로젝트이기 때문에, Java, Python, Node.js 등 다양한 언어와 프레임워크 를 기능에 맞게 선택할 수 있습니다.
4. 기능별 확장성 확보 트래픽이 집중되는 특정 서비스만 선택적으로 수평 확장 할 수 있어, 자원을 효율적으로 사용할 수 있습니다.
MSA의 단점 1. 시스템 복잡도 증가 서비스가 많아질수록 시스템 전체 구조가 복잡해집니다. 서비스 간의 관계를 이해하고 관리하기가 어려워지고, 데이터 흐름과 호출 흐름을 추적 하기 어려워질 수 있습니다.
2. 통신 비용 증가 모놀리식 구조에서는 내부 메서드 호출로 끝났던 작업이, MSA에서는 네트워크 통신(API 호출) 을 통해 처리됩니다. 이로 인해 지연(latency) 이 생기고, 네트워크 장애 발생 가능성도 늘어납니다.
3. 데이터 일관성 유지 어려움 MSA는 각 서비스가 자신만의 데이터베이스를 가지는 것이 일반적 이기 때문에, 분산된 데이터 일관성 을 유지하는 것이 어렵습니다. 특히 트랜잭션이 여러 서비스에 걸쳐있을 경우, 분산 트랜잭션 관리 가 복잡해집니다.
4. 배포 및 운영 자동화 필요 각 서비스를 독립적으로 배포할 수 있는 만큼, CI/CD 파이프라인 구축 이 필수입니다. 서비스 수가 많아질수록, 모니터링, 로깅, 장애 대응 등 운영적인 부담이 증가합니다.
5. 초기에 높은 도입 비용 MSA를 처음 도입할 때는 아키텍처 설계, 인프라 구성, 팀 조직 방식 등 많은 초기 비용 이 발생합니다.
특히 작은 스타트업이나 프로젝트 초반에는 과도한 설계로 오히려 비효율적일 수 있습니다.
참고 자료 TISTORY [간단정리] MSA란?(등장배경, 특징, 장단점) [간단정리] MSA란?(등장배경, 특징, 장단점)
개요 MSA란 무엇인지 알아보자 MSA MircroService Architecture의 줄임말 마이크로서비스(microservice)는 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 *서비스 지향 아키텍처(SOA) 스타일의 일종인 소프트웨어 개발 기법이다. *서비스 지향 아키텍처(Service Oriented Architecture(SOA)) 애플리케이션 구성요소가 통신프로토콜을 통해 다른 구성요소에 서비스를 제공하는 아키텍처 접근 방식 대규모 컴퓨터 시스템을 구축할 때의 개념으로 업무상에 일 처리에 해당하는 소프트웨어 기능을 서비스로 판단하여 그 서비스를 네트워크상에 연동하여 시스템 전체를 구축해 나가는 방법론 여기서 '서비스'는 기능의 독립적 단위 MSA 등장배경 Monolithic A..
TISTORY [MSA] MSA란 무엇인가? 개념 이해하기 [MSA] MSA란 무엇인가? 개념 이해하기
MSA가 무엇인지 자세하게 알고싶어 개인적으로 정리하는 포스팅입니다. MSA? MicroService Architecture의 줄임말 👉🏻 마이크로서비스 아키텍처에 대한 정확한 정의는 없다. 하지만 마이크로서비스란 작고, 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크라고 할 수 있다. 마이크로서비스는 완전히 독립적으로 배포가 가능하고, 다른 기술 스택(개발 언어, 데이터베이스 등)이 사용 가능한 단일 사업 영역에 초점을 둔다. MSA의 등장배경 👉🏻 Monolithic Architecture는 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태이다. 웹 개발을 예로 들면 웹 프로그램을 개발하기 위해 모듈별로 개발을 하고, 개발이 완료된 웹 어플리케이션을 하나의 결과물..