MSA(Micro Service Architecture) 정리

kineqwer·2020년 8월 21일
0

🔍MSA(Micro Service Architecture)

  • MSAMicro Service Architecture의 약자로 규모가 큰 어플리케이션을 여러개의 작은 어플리케이션으로 나눠놓는 아키택쳐이다.

  • 다시 말하자면 전체 어플리케이션을 특정 목적을 가진 작은 어플리케이션의 단위로 나누는 것이다. 나누어진 어플리케이션끼리는 약한 결합도와 강한 응집도를 가져야한다.

🔍장점과 단점

  • 우선 MSA의 장단점을 편하게 설명하기 위해서 반대되는 개념인 Monolithic Architecture와 비교해서 정리하겠다.

  • 여기서 Monolithic Architecture란, 소프트웨어의 모든 구성요소가 하나의 소프트웨어에 모여있는 방식이다.

🔍 Monolithic Architecture

  • 장점
    • 로컬 환경에서 개발이 편리하다.
    • 통합 시나리오 테스트 진행이 수월하다.
    • 배포가 쉽다.
  • 단점
    • 코드의 유지보수가 힘들다.
    • 프로젝트의 규모가 커지면 전체 시스템 구조를 파악하기 어렵다.
    • 부분적인 장애가 발생하면 서비스 전체의 장애로 이어지는 경우가 발생할 수 있다.
    • scale out 이 불가능하다

🔍 Micro Service Architecture

  • 장점

    • scale out 이 가능하다.
    • 서비스간의 연관성이 낮기 때문에 부분적인 장애가 발생하더라도 서비스 전체가 영향을 받을 가능성이 적다.
    • 유연한 기술을 적용 할 수 있다. 예를 들면 채팅서버는 node.js를 사용하고 auth 서버는 django를 사용하는 방식으로 각 서버의 언어나 프레임워크를 유연하게 선택할 수 있다.
    • 서비스 별 개별 배포가 가능하기 때문에 배포 시 전체 서비스의 중단이 없고 요구사항을 신속하게 반영하여 배포할 수 있다.
  • 단점

    • 성능문제가 발생할 수 있다.
      • Monolithic Architecture같은 경우 다른 기능을 쉽게 호출할 수 있어서 속도가 빠르다. 하지만 MSA의 경우 서비스 간에 네트워크 통신을 주고 받아야한다.
        그로인한 통신비용이나 Latency가 늘어나게 된다.
    • 트랜잭션 문제가 발생할 수 있다.
      • 만약 나뉘어진 서버 간의 트랜잭션 처리가 필요할 경우 트랜잭션을 위한 추가적인 로직이 필요해지고 트랜잭션의 복잡도가 증가한다.
    • 데이터 관리가 어려울 수 있다.
      • 데이터가 여러 서버에 분산되어 있기 때문에 데이터의 정합성을 관리하기 어렵다.

🔍 MSA 대표적인 적용 사례

MSA의 대표적인 사례로는 우버가 있다. 우버는 원래 Monolithic Architecture로 만들어졌다. 처음에는 하나의 프로젝트로 개발하는 것이 편했고 여러가지 이슈가 발생하더라도 쉽게 처리할 수 있었지만 점점 프로젝트의 규모가 커지면서 확장성과 지속적인 연동 문제에 직면하게 됐다.

그래서 우버는 MSA 를 도입하게 됐다.

  • API 게이트웨이를 만들어서 승객관리, 운전자관리, 운행관리 등 모든 내부 요쳥을 연결했다.

  • 각각의 서비스를 분리시켜 배포 가능하고 독립적으로 기능을 수행한다.

    • 예를 들어, 다른 서비스보다 차량을 찾는 기능을 사용하는 사용자들이 훨씬 많기 때문에 차량 조회 서비스를 따로 분리하였고 이 서비스의 서버 프로세스의 개수를 더 늘림으로써 성능을 효율적으로 향상시켰다.

참고자료

profile
어제보다 더 나은 코딩을 하는 개발자가 되고 싶습니다.

0개의 댓글