Computer Science/Tech

[Tech] MSA(Microservice Architecture)란?

ooeunz 2019. 11. 13. 13:17
반응형

Monolithic Architecture

MSA에 대해 이해하기 위해서는 먼저 그에 상반된 모놀리틱 아키텍처에 관해 이해할 필요가 있다. 모놀리틱 아키텍처란 전통적인 소프트웨어 아키텍처 스타일로써 하나의 서버에 UI와 비즈니스 로직, 그리고 데이터베이스까지 베포 되는 것으로 하나의 서비스 또는 에플리케이션이 하나의 거대한 아키텍처로 구성되는 것을 의미한다. Monolithic 스타일로 아키텍처를 구성하면 하나의 중앙 관리적인 구조로써 통합된 서비스를 구축하기 때문에 통제가 편리하고, 단순한 아키텍처 구조로 인해 초기 개발의 용이성이 있지만 아키텍처의 크기가 커짐에 따라서 확장성에 대한 복잡성이 심각하게 증가한다.

 

 


Microservice Architecture

MSA(Microservice Architecture)는 모놀리틱 아키텍처와 반대로 비즈니스 기능마다 서버와 데이터베이스 서버를 분리하는 방식을 의미한다. 이런 식으로 개발을 하게 될 경우 초기 개발 속도에 있어서는 모놀리틱 아키텍처에 비해 느리지만 이후 아키텍처의 크기가 커짐에 따라 확장성이 용이하다는 장점이 있다. (정확한 비유는 아니지만 프로그래밍 랭귀지에 절차 지향적인 c언어, 객체지향적인 c++와 같이 이와 같은 개념이 아키텍처의 개념에 적용된다고 생각하면 이해하기 쉽다.)

 

MSA로 개발하게 될경우 Monolitic과 비교하여 몇 가지 장점이 있는데,

  1. 하나의 서비스를 여러 조직이 만들게 될 경우 각각의 조직에 기획, 개발, 운영에 독립적인 권한을 부여할 수 있으므로, 다른 서비스에 대한 의존성이 사라지게 된다.
  2. 만약 지속적으로 관리되는 서비스가 있다면, 버전이 올라감에 따라, 확장성의 중요도가 올라간다. 이럴 경우 MSA의 경우 새로운 기능을 독립적으로 개발해서 기존의 아키텍처에 연결시켜줌으로써 쉽게 관리할 수 있다.

    예를 들어 서버 하나에 client가 web과 mobile이 있다고 생각해보자. 만약 web에 보안상의 이슈가 발생하였고, 그를 수정해야 하는 상황에 놓였다면, 모놀리틱 아키텍처의 경우 하나의 서버로 이루어져 있기 때문에 web을 수정하기 위해서 moblie, server까지 모두 작동이 중단되는 일이 벌어진다.

    하지만 마이크로서비스 아키텍처라면 web에서 이슈가 있다면 web만, mobile에 문제가 있다면 mobile만 따로 서버에서 내려서 이슈를 해결할 수 있다. 이런 방법이 가능한 것은 각각의 기능들이 독립적으로 구성되어 있기 때문이다.

 

반응형