[MSA] MSA(Microservice Architecture)란 무엇일까?

tngus2sh·2024년 3월 25일
0

Architecture

목록 보기
1/1

MSA는 마이크로서비스 아키텍처로서 각각의 서비스들을 독립적으로 개발하고 배포하는 구조입니다.

이번 글에서는 MSA에 대해서 알아보고자 합니다. 더불어 모놀리틱 구조에 대해서도 알아보며 두 아키텍처의 차이점이 무엇이 있을지에 대해서도 알아보겠습니다.

출처 : https://www.openlegacy.com/hs-fs/hubfs/Picture1.webp?width=889&height=478&name=Picture1.webp


모놀리식 아키텍처(Monolithic Architecture)

백엔드 개발을 처음 시작하다보면 제일 처음에 많이 사용하는 구조가 아닐까 합니다. 그만큼 처음 프로젝트를 시작하고 만들기가 편한면이 있습니다.
이와 같이 모놀리식 아키텍처는 전통적인 개발 방식으로 하나의 프로젝트에 모든 기능을 함께 포함합니다. 하지만 점차 프로젝트의 규모가 커지고 기능을 포함하게 될수록 개발 및 배포에서 복잡성이 커지게 됩니다.

출처 : https://mozzi-devlog.tistory.com/34

장점

  • 초기 개발에 유리하며 빠르게 프로토타입을 개발할 수 있다.
  • 필요한 모든 기능을 한 번만 호출하기 때문에 복잡한 통신 없이 직접 사용할 수 있다.

단점

  • 프로젝트의 규모가 클수록 복잡해지고 유지관리 및 확장이 어려워진다.
  • 일부 기능을 수정하거나 업데이트 해야한다면 전체 애플리케이션을 재배포해야 한다.
  • 부분 장애가 서비스 전체 장애로 확대 될 수 있다.



마이크로서비스 아키텍처(Microservice Architecture)

여러 개의 서비스를 빠르게 개발하고, 다양한 요구사항에 대응하기 위해서는 MSA의 도입이 유리합니다. 현재 넷플릭스, 우버, 우아한 형제들 등 많은 회사에서 MSA를 적용하여 개발을 하고 있습니다.

MSA는 서비스의 end-point(접근점)을 API 형태로 외부에 노출하고, 실질적인 세부 사항은 모두 추상화합니다. 내부의 구현 로직, 아키텍처와 프로그래밍 언어, 데이터베이스, 품질 유지 체계와 같은 기술적인 사항들은 서비스 API에 의해 가려지게 됩니다.

또한, 집중화된 관리 체계를 사용하지 않기 때문에 REST 등 가벼운 통신 아키텍처나 Kafka 등을 이용한 message stream을 주로 이용합니다.

출처 : https://mozzi-devlog.tistory.com/34

장점

  • 각각 하나의 작고 독립적인 서비스로서 동작이 하기 때문에 하나의 서비스에서 문제가 발생 시 전체 시스템에 큰 영향을 미치지 않는다.
  • 서비스별 개별 배포가 가능하다.
  • 새로운 기술을 적용하기가 유연하다. (전체 서비스가 아닌 특정 서비스만 별도의 기술 또는 언어로 구현 가능)

단점

  • 각각 개별의 서비스들을 만들어야 하기 때문에 초기에 개발 및 통신에 시간이 많이 소요된다. 그래서 프로젝트의 규모가 큰 서비스에 조금 더 적합하다.
  • 각각의 서비스가 분리되어 있기 때문에 DB도 각각 서비스마다 분리가 되어 있어 트랜잭션을 유지하는게 어렵다는 점이다.
  • 데이터가 여러 서비스에 분산되어 있어 조회하기가 어렵다.
  • 데이터를 관리하기가 어렵다.
  • 서비스 간 호출 시 API를 이용하므로 통신 비용이나 Latency에 대한 이슈가 존재한다.

참고

https://hahahoho5915.tistory.com/71

profile
백엔드 개발자

0개의 댓글