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

» dev

마이크로 서비스 아키텍쳐 “작고 독립적인 서비스들이 모여 구성된 어플리케이션 구조” 위 MSA가 왜 나타났고 사용하는지 설명하기 전에 우리는 어떻게 개발을 진행했는지 알아볼 필요가 있다.

모놀리틱 아키텍쳐 (Monolithic Architecture)

모놀리틱 아키텍쳐란 하나의 어플리케이션에 모든 서비스와 기능들을 가지고 있는것을 말한다. 아직까지 많이 사용하고 있는 방법이지만 소규모 프로젝트에 적합하다.
그러나, 서비스가 방대해지고 하나의 서비스를 운영하는데 있어 수 많은 사람들이 투입하게 됨으로서 서비스의 규모는 더욱 커지게 되고 한명의 개발자가 작업을 수행 후 서버를 재기동 시 많은 부하를 일으키며 만일 그 부분이 에러가 나타날 경우 다른 부분들까지 모두 문제가 발생하게 되는 경우가 발생하게 된다.
또한, 서비스 규모가 커질수록 전체 시스템을 분석하고 파악하는데 어려움이 생겨 유지보수가 힘들어진다.

모몰리틱 아키텍쳐의 문제점

  • 서비스가 커질수록 전체 시스템 구조 파악에 어려움이 발생
  • 빌드 및 테스트 시간과 배포 시간이 기하급수적으로 늘아나게 됨
  • 부분의 장애가 전체 서비스의 장애로 이어지는 경우가 발생

Micro Service Architecture (MSA)

하나의 큰 서비스에서 위와 같은 문제점들이 발생하여 여러개의 작은 서비스로 구성되어 독립적으로 개발하고 배포하기 구조를 만들기 위해 생겨났다.
하나의 서비스에 하나의 기능만을 집중하여 수행하고 문제가 발생하였을 때 전체 서비스에 문제가 없도록 한다.
또한 서로의 서비스에 대해서 API를 통해 기능들을 추상화 하며, 새로운 서비스가 생겨났을 때 확장성유지관리가 용이해진다.

장점

  • 독립적인 서비스들을 가지며 개별의 배포가 가능 (전체 서비스의 중단이 없다)
  • 특정 서비스의 확장성이 용이하다.
  • 장애가 전체 서비스에 큰 영향을 미치지 않는다.

단점

  • 서비스간 통신이 필요하여, 서로간의 연결 구축 및 관리의 복잡성이 증가
  • 설계의 어려움
  • 데이터가 여러 서비스에 분산되어 있어 조회하고 관리하기 어렵다.