본문 바로가기
Programming/Etc

[MSA] Microservices Architecture: 마이크로서비스란

by guru_k 2021. 11. 4.
728x90
반응형

MSA (Microservices Architecture) 란 기존 모노리틱(Monolithic) 구조와는 다르게 하나의 서비스를 작은 컴포넌트 단위로 나누어 관리하고 개발하는 것을 말한다.

기존 모노리틱 구조는 전체 애플리케이션이 하나로 되어있어 개발 환경설정이 간단한 편입니다. 하나의 애플리케이션으로 구성되어 있기 때문에 운영관리가 편한편이지만 애플리케이션 볼륨이 커질 경우 관리가 취약해질 수 있으며 모노리틱 구조상 하나의 애플리케이션으로 구성되어 있기 때문에 해당 애플리케이션이 문제가 생길 경우 전체 시스템에 영향을 미칠 수 있는 단점이 있습니다.

모노리틱 구조를 간단하게 아래와 같이 요약할 수 있습니다.

  •  운영과 개발 환경설정이 간편하나 선택적으로 확장이 불가능 합니다.
  • 애플리케이션에 문제가 생길 경우 전체 시스템에 영향을 미칠 수 있습니다.

이런 모노리틱 구조와는 다르게 MSA는 작은 컴포넌트 단위로 애플리케이션을 분리합니다.

MSA 구조를 사용하게 되면 애플리케이션마다 다른 개발 환경을 설정할 수 있고 확장이 용이하며 하나의 애플리케이션에 장애가 생겼을 때 전체 서비스에 영향을 주지 않아서 유연한 서비스를 제공할 수 있습니다.

하지만 모노리틱 구조는 하나의 애플리케이션으로 구성이 되어있어 트랙잭션이나 서비스 호출이 함수단위로 이뤄지기 때문에 성능이 좀더 좋지만 MSA는 서비스간 호출이 이뤄지기 때문에 복잡도가 증가하고 트랙잭션 처리가 힘든 점이 있습니다.

MSA 의 장점

  • 애플리케이션마다 별도의 개발 환경을 설정 할 수 있다.
  • 하나의 애플리케이션을 여러개의 컴포넌트 단위로 분리하여 스케일아웃 시 확장이 용이하다.
  • 하나의 애플리케이션에 문제가 생겼을 때 전체 시스템에 영향을 주지 않아 유연한 서비스를 제공할 수 있다.

MSA 의 단점

  • 모노리틱 구조와는 다르게 여러개의 애플리케이션으로 구성되어 있어 트랙잭션 처리가 힘듭니다.
  • 서비스 호출이 함수단위로 이뤄지던 기존 구조와는 달리 서비스간 별도의 호출이 이뤄지기 때문에 복잡도가 증가합니다.
  • 하나의 애플리케이션을 여러 컴포넌트 단위로 쪼개다보니 관리 유지 비용이 모노리틱 구조에 비해 많이 듭니다.

데이터 베이스

데이터 베이스 역시 MSA 구조에 맞게 여러개의 데이터 베이스로 구성하여 사용할 수 있습니다. 애플리케이션 별로 별도의 데이터 베이스를 구성하여 사용할 수 있으며 마찬가지로 다른 서비스에 의존성 없이 독립적으로 구성하여 배포 운영이 가능합니다. 허나, 하나의 데이터베이스로 구성되어있는것처럼 데이터베이스별 조인이 매우 힘들고 트랜잭션 처리하는데 어려움이 있습니다.

MSA 패턴

MSA 패턴 중 하나는 API Gateway가 있습니다. MSA는 다양한 애플리케이션으로 구성되어 있으며 다양한 서버에 분리되어 배포 될 수 있습니다. 이처럼 클라이언트에서는 각기 서비스들에 접근을 해야하는데 이때 다양한 URL이 존재 할 수 있으며 이는 클라이언트 접근을 다소 힘들게 할 수 있습니다. 이때 별도의 API Gateway를 구성하여 모든 end-point를 묶어서 gateway를 통하여 client가 접근하는 방식을 제공합니다. 이때 API Gateway가 인증이나 라우팅, 로드밸런싱과 같은 역할을 수행하기도 합니다.

 

이처럼 모노리틱 구조나 MSA 구조나 각기 장점과 단점이 존재합니다. 팀 구조가 크지 않은 곳에서 MSA 구조를 채택할 경우 여러개로 분리된 애플리케이션으로 인해 배포 및 운영에 더욱 많은 비용이 들어갈 수 도 있습니다. 이처럼 팀구조나 환경에 따라 적절한 패턴을 사용하여 애플리케이션을 개발하고 배포할 수 있어야 할 것입니다.

 

728x90
반응형

댓글