본문 바로가기

엔지니어가 되자/데이터엔지니어링

[개발지식] MSA(Micro Service Architecture)란?

 

MSA 개념에 대해 간단하게 정리를 합니다.

 


MSA(Micro Service Architecture)란?

  • Micro Service Architecture(이하 MSA)란 한 웹서버 내에서 서로 다른 환경에서 구동되는 웹 어플리케이션 서버(WAS)가 혼재되어 구성되어있는 서버 아키텍쳐를 의미한다.
  • MSA가 왜 각광받고 있는지를 이해하기 위해서는 그 이전에 개발환경을 살펴볼 필요가 있다. 
    • Monolithic Architecture라고 부르는 구조는 MSA 이전에 주로 활용되어 오던 구조로..
    • 웹 애플리케이션 서비스를 동일한 개발환경 (Ex; 개발언어, 프레임워크 등..)하에서 개발하고 각 기능의 애플리케이션 별(Ex; 회원가입, 상품등록 등..) 구조를 한 묶음으로 관리하던 개발 아키텍쳐를 의미한다.
    • 하지만 최근의 서비스 구조가 규모가 커지고 복잡해짐에 따라 아래와 같은 단점이 보이기 시작
      • 빌드/테스트 시간의 증가: 이에 따라 간단한 기능의 수정 및 배포 과정에서도 전체 기능의 테스트가 이루어져 무거워지는 단점이 보이기 시작했다.
      • Scale-Out의 어려움: 또한 서비스의 트래픽 증가로 이를 스케일업 해야할 경우 전체 서비스 프로젝트를 확장해야만 하는 단점도 존재
      • 한 언어와 프레임워크에 종속적: 개별 언어와 프레임워크에 종속적이므로 새로운 환경하에서 프로젝트를 진행하기 위해서는 프로젝트 전체를 갈아 엎어야 하는 상황.
  • 위의 단점을 보완하기 위해 등장한 MSA는 아래와 같은 특징을 가진다
    • API를 통한 상호작용: 개별 서비스 라인별로 나뉜 애플리케이션 환경을 지닌 MSA 환경에서는 이전처럼 한 서버에서 모든 기능이 구동되는 것이 아닌 개별 애플리케이션별 서버 구동환경으로 변하며, 각 서버/애플리케이션별 통신은 철저히 API를 통해 각 End-Point별로 이루어지게 된다. (다만, 그렇기 때문에 개별 개발자들은 인프라와 네트워크에 대한 좀 더 많은 지식을 요구받게 된다.)
    • 각 애플리케이션별 상호 독립적인 개발환경: 각 애플리케이션별 통신은 HTTP 기반으로 이루어지며 이는 기술중립적인 프로토콜로 각 애플리케이션별로 구현되는 언어 및 개발 프레임워크 등은 완전히 독립적이게 된다. 회원인증 기능은 Python/Django로 개발된 반면, 제품관리 기능은 Java/Spring으로 구성될 수 있다는 것과 같은 의미이다.
    • 분산된 트래픽과 장애 가능성: 기존 Monolithic Architecture에서 만약 마더 서버가 트래픽 과다로 뻗어버렸다면 서비스 기능 전체가 장애를 일으켰다. 반면 MSA 환경에서는 개별 애플리케이션은 분리된 서버 환경에서 구동되므로 한 서비스 라인이 장애를 일으키더라도 서비스 전체가 장애를 일으키지는 않게 된다.

 

 

느낀점

  • 이러한 IT 업계의 개념들을 추적하고, 공부하면서 느끼는 점은 다른 분야 처럼 잘 정리된 지식을 흡수하는 것 보다는 왜 이런 개념이 등장하고 업계에서 어떻게 변화해가는지에 대한 히스토리 트래킹의 맥락 위에서 이해하는 것이 중요하다고 느꼈다.
    • MSA만 해도 그 이전의 개발 형태였던 Monolithic Architecture에 대한 이해와 한계점에 대한 이해 없이는 반쪽 짜리 개념 이해가 될 수 밖에 없기 때문
  • 데이터 엔지니어링을 하는 관점에서도 MSA는 중요하다고 생각된다.. 이전 처럼 하나의 중앙 DB에서 모든 데이터가 관리되기 보다는 분산된 DB환경이 나타나기 시작했기 때문인데, 이렇게 파편화된 데이터 엔드포인트 등을 하나로 평소 잘 모아주는 파이프라인의 필요성, 그 과정에서의 효율적인 ETL 그리고 그 전체 과정을 도와주는 인프라 관리 등이 하나의 포인트로 떠올랐다고 생각하기 때문이다.
    • 현재 재직중인 회사의 서비스 역시, 각 서비스 라인별로 WAS 환경이 상이한데 이 때문에 어떤 서비스는 DB를  RDB를 사용하는 반면 어떤 서비스에서는 NoSQL 기반의 (Ex; 몽고DB) DB를 사용해서 이를 하나로 연결해주는 파이프라인을 개발하고 있다.
    • 대규모 데이터의 핸들링이라는 경험을 하기에는 어려운 측면이 있지만 분산된 DB 환경을 정리해주는 파이프를 개발하는 과정을 경험해볼 수 있다는 장점이 있는 것 같다.

 

 


레퍼런스 (참고한 글)

 

마이크로서비스 아키텍처(MSA) 개념 소개 - CLIPSOFT

작성자 : 이응호 과장   마이크로서비스 아키텍처(MSA) 개념 소개   프리랜서로 일하고 있는 지인이 최근 구직을 하고 있었습니다. 그러면서 하는 말이 요즘 IT업계 구직시장에서 최고의 화두가 M

clipsoft.co.kr

 

 

[MSA] MSA란 무엇인가? 개념 이해하기

MSA가 무엇인지 자세하게 알고싶어 개인적으로 정리하는 포스팅입니다. MSA? MicroService Architecture의 줄임말 👉🏻 마이크로서비스 아키텍처에 대한 정확한 정의는 없다. 하지만 마이크로서비스란

wooaoe.tistory.com

 

반응형