ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MSA] MSA란? 개념과 특징
    IT/CS지식 2023. 1. 25. 10:41

     

     

    📑 MSA란?

     

    MicroService Architecture의 줄임말이다.

    마이크로서비스는 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 서비스지향 아키텍쳐(SOA) 스타일의 일종인 소프트웨어 개발 기법이다. 

     

    더보기

    서비스 지향 아키텍처(Service Oriented Architecture(SOA)) 란?

    - 애플리케이션 구성요소가 통신 프로토콜을 통해 다른 구성요소에 서비스를 제공하는 아키텍처 접근 방식

    - 대규모 컴퓨터 시스템을 구축할 때의 개념으로 업무상에 일 처리에 해당하는 소프트웨어 기능을 서비스로 판단하여 그 서비스를 네티워크 상에 연동하여 시스템 전체를 구축해 나가는 방법론

    - 여기서 서비스는 기능의 독립적 단위이다. 

     

     

     

    📑 MSA 등장 배경

     

     

     

    Monolithic Architecture는 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태이다. 웹 개발을 예로 들자면 웹 프로그램을 개발하기 위해 모듈별로 개발을 하고, 개발이 완료된 웹 어플리케이션을 하나의 결과물로 패키징하여 배포되는 형태를 말한다. 이런 어플리케이션을 모놀리식 어플리케이션이라 하며, 웹의 경우 WAR 파일로 빌드되어  WAS에 배포하는 형태를 말한다. 주로 소규모 프로젝트에서 사용된다.

     

    하지만 일정 규모 이상의 서비스, 혹은 수백명 이상의 개발자가 투입되는 프로젝트에서 Monolithic Architecture은 한계를 보인다. 그 한계는 다음과 같다. 

     

    1. 부분 장애가 전체 서비스의 장애로 확대될 수 있다.
    2. 부분적인 Sclae-out (여러  server로 나누어 일을 처리하는 방식)이 어렵다.
    3. 서비스의 변경이 어렵고, 수정 시 장애의 영향도 파악하기 힘들다. (여러 컴포넌트가 강하게 결합되어 있기 떄문)
    4. 배포 시간이 오래 걸린다. 
    : 최근 어플리케이션 개발 방법은 CI/CD를 통한 개발부터 배포까지 빠르게 반영하는 추세이다. 그러나 규모가 커짐에 따라 작은 변경에도 높은 수준의 테스트 비용이 발생하기도 하며, 만흥ㄴ 사람이 하나의 시스템을 개발하여 배포하기 떄문에 영향을 줄 수 밖에 없다. 
    5. 한 Framework와 언어에 종속적이다. 

     

    이러한 문제점들을 보완하기 위해 MSA가 등장하게 되었다. 

     

     

     

    📑 MSA 특징

     

    MSA는 API를 통해서만 상호작용할 수 있다. 즉) 마이크로 서비스는 서비스의 end-point(접근점)을  API 형태로 외부에 노출하고, 실질적인 세부사항은 모두 추상화한다. 내부의 구현 로직, 아키텍처와 프로그래밍언어, 데이터베이스, 품질 유지 체계와 같은 기술적인 사항들은 서비스 API에 의해 철저하게 가려진다. 

     

    🎈 제대로 설계된 마이크로서비스는 하나의 비즈니스 범위에 맞춰 만들어지므로 하나의 기능만 수행한다. 즉) 어플리케이션 출시처럼 하나의 목표를 향해 일하지만 자기가 개발하는 서비스만 책임진다. 그리고 어플리케이션에서 재사용할 수 있어야 한다.

     

    🎈 어플리케이션은 항상 기술 중립적 프로토콜을 사용해 통신하므로 서비스 구현 기술과는 무관하다. 따라서 마이크로서비스 기반의 어플리케이션을 다양한 언어와 기술로 구축할 수 있다는 것을 의미한다.

     

    🎈 마이크로서비스는 SOA에서 사용되는 집중화된 관리 체계를 사용하지 않는다. 마이크로서비스 구현체의 공통적인 특징 중 하나는 ESB(Enterprise Service Bus)와 같은 무거운 제품에 의존하지 않는다. REST 등 가벼운 통신 아키텍쳐, 또는 kafka등을 이용한  message stream을 주로 사용한다. 

     

     

    반응형

    댓글

Designed by Tistory.