개발지식

MSA(MicroService Architecture) 란 무엇일까?!

우루쾅 2024. 2. 28. 21:14
728x90
반응형
SMALL

MSA 란

MicroService Architecture의 줄임말로 작고 독립적으로 배포가 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크라고 할 수 있습니다. 마이크로 서비스는 완전히 독립적으로 배포가 가능하고, 다른 기술 스택(개발언어, 데이터베이스 등)이 사용 가능한 단일 사업 영역에 초점을 둡니다.

 

MSA의 등장 배경

모놀리식 아키텍처(Monolithic Architecture)는 전통적인 개발 방식으로 하나의 프로젝트에 모든 기능을 함께 포함하는 아키텍처입니다. 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어있는 형태로 웹 개발을 예로 들면 웹 프로그램을 개발하기 위해 모듈별로 개발을 하고, 개발이 완료된 웹 어플리케이션을 하나의 결과물로 패키징하여 배포되는 형태를 말합니다.

 

주로 소규모 프로젝트에서 사용되었지만 해당 프로젝트가 일정 규모 이상으로 확장이 되면 모놀리식 아키텍처는 한계를 보였고, 이를 대체하기 위해 사용된 것이 바로 MSA 입니다!

구분 모놀리식 아키텍쳐(Monolithic Architecture) Microservices Architecture (MSA)
정의 하나의 애플리케이션을 하나의 단일 코드베이스로 개발하는 방식 하나의 애플리케이션을 여러 서비스로 나누어 개발하는 방식
서비스 구조 하나의 큰 서비스로 구성 작은 서비스들이 모여 큰 서비스를 이룸
개발 및 배포 전체 코드를 한번에 개발하고 배포 각각의 서비스를 독립적으로 개발하고 배포 가능
확장성 전체 애플리케이션을 확장 필요한 서비스만 확장 가능
장애 영향도 하나의 서비스에 문제가 생기면 전체 시스템에 영향 하나의 서비스에 문제가 생겨도 다른 서비스에는 영향이 미치지 않음
기술 스택 일관된 기술 스택 사용 서비스마다 다른 기술 스택을 사용할 수 있음

 

또한 과거에는 하드웨어 리소스가 한정적이여서 효율적으로 사용하기 위해 모놀리식 아키텍처가 주로 사용되어왔지만 클라우드 기술의 발전과 데이터 처리 능력의 향상 등의 이유로 더 복잡하고 큰 시스템을 개발하고 운영할 수 있게 되었습니다. 이런 변화에 따라, 시스템을 더 작은 단위로 나누어 개발하고 관리하는 MSA 가 등장하게 되었습니다.

 

MSA의 각 서비스간의 통신

모놀리식 아키텍처와 다르게 MSA는 각각의 서비스들로 분리되어있기 때문에

대부분의 마이크로 서비스에서는 메시지 큐를 활용한 비동기 패턴을 사용하는 것을 볼 수 있습니다.

(RESTful API 호출을 하여 통신도 가능)

 

Message Queue(MQ)

메시지 큐(Message Queue)란 프로세스 간 데이터를 교환할 때 통신하는 방법 중 하나로, 메시지 지향 미들웨어를 구현한 것을 말합니다. 미들웨어는 애플리케이션을 연결하여 서로 데이터를 교환할 수 있도록 하는 소프트웨어를 의미합니다.

 

출처) Wonit - https://wonit.tistory.com/491

 

메시지 큐잉 서비스를 한 줄로 정리하자면

 

마이크로 서비스 구조에서 인스턴스가 확장되더라도 분산 시스템 및 데이터의 동기화 문제를 간단하게 해결할 수 있도록 하는 메시지 대기열 미들웨어라고 할 수 있습니다.

 

주로 아파치 Kafka, 래빗엠큐(Rabbit MQ), AWS SNS, SQS 와 같은 메시지 브로커를 사용하여 메시지를 구현합니다. 

 

 

 

 

MSA 간단한 한줄 정리

작고 독립적으로 배포가 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크이며, 각각의 서비스는 메시지 큐나 API 호출 등의 방법을 통해서 데이터를 주고 받으며 통신을 하고 있습니다!

 

 

 

 

 

 

 

출처

tedigom.loghttps://velog.io/@tedigom/MSA-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-1-MSA%EC%9D%98-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-3sk28yrv0e

Wonit - https://wonit.tistory.com/506 , https://wonit.tistory.com/491

 

[개발개발 울었다:티스토리] - https://wooaoe.tistory.com/57

728x90
반응형
LIST