본문 바로가기
Spring Cloud

MSA (MicroServiceArchitecture) 개념 정리

by DarrenH 2023. 6. 22.
반응형

M - Micro

S - Service

A - Architecture

 

오늘은 MSA에 대해 개념을 적으려고 합니다.

 

일단 MSA를 알기 이전에 모놀리식부터 설명하려고 합니다. 모놀리식 아키텍처는 소프트웨어의 모든 구성 요소가 한 프로젝트에 통합되어있는 서비스입니다. 소규모에 적합한 아키텍처입니다. 

하지만 어느정도 규모가 커지면 이는 유지보수하는데 어려움이 생기며, 다음과 같은 문제점이 발생합니다. 

  • 부분 장애가 전체 서비스의 장애로 확대될 수 있음
  • 전체 시스템 구조 파악이 어려움
  • 서비스 변경이 어렵고, 수정 시 영향도 파악이 힘듦
  • 빌드 시간 및 테스트, 배포 시간 증가

이런 점을 보완 하고자 MSA가 등장 했습니다.

 

MSA는 느슨하게 결합된 서비스들의 모임입니다. 

서비스 지향 아키텍처의 일종입니다.

 

좌 - 모놀리식, 우 - MSA

좌측에 모놀리식은 한 프로젝트에 모든 구성요소가 들어있는 반면, 우측에 MSA의 경우는 서비스 별로 독립되어있는 걸 볼 수 있습니다. 

서비스끼리 통신도 가능합니다. 이는 모놀리식과 반대로 다음과 같은 특징이 있습니다.

  • 부분장애 발생 시, 다른 서비스 이용 가능
  • 서비스별로 프로젝트가 구성 되어있으므로 프로젝트 구조 파악이 쉬움
  • 유지보수가 쉽다.

하지만 모놀로식에 비해 단점도 존재합니다.

  • 설계가 어렵다.
  • 기존에 DB설계와 다르게 설계해야한다. (MSA에 맞게)
  • 여러대의 서버가 필요하다.(EKS 등등)
  • 통합테스트가 어렵다.

 

앞으로 실습으로 이해하겠지만, 서비스간 통신은 kafka를 주로 이용한다. 

또한, 서비스 별로 서로 다른 DB를 바라봐야한다. 

 

내가 MSA를 하면서 느낀점은 모놀로식도 경험해보고, MSA도 경험해보면서 서로의 장단점에 따라, 프로젝트에 따라 맞게 사용하면 좋을 것 같다.

 

참고 자료

https://hahahoho5915.tistory.com/71#:~:text=%2D%20%ED%8A%B9%EC%A0%95%20%EC%84%9C%EB%B9%84%EC%8A%A4%EC%97%90%20%EB%8C%80%ED%95%9C%20%ED%99%95%EC%9E%A5,%EC%84%9C%EB%B9%84%EC%8A%A4%20%EC%82%AC%EC%9A%A9%EC%97%90%20%EC%A0%81%ED%95%A9%ED%95%A9%EB%8B%88%EB%8B%A4.&text=%2D%20%EC%9D%BC%EB%B6%80%20%EC%9E%A5%EC%95%A0%EA%B0%80%20%EC%A0%84%EC%B2%B4%20%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A1%9C,%EB%8C%80%ED%95%9C%20%EA%B2%A9%EB%A6%AC%EA%B0%80%20%EC%88%98%EC%9B%94%ED%95%A9%EB%8B%88%EB%8B%A4.