본문 바로가기
IT

Microservice Pattern 정의, 특징, 설명, 구현 방법, 장점과 단점

by 파이프라인만들기 2023. 2. 9.

Software Oriented Architecture(SOA)를 이어서 트렌드로 자리 잡은 소프트웨어 아키텍처는 Microservice Architecture(MSA)입니다. 이를 구현하는 방법인 Microservice Pattern에 대해서 정의와 특징, 설명, 구현 순서와 방법, 장점과 단점에 대해서 정리했습니다.

 

글의 순서는 다음과 같습니다.

  • Microservice Pattern의 정의와 특징
  • Microservice Pattern 적용 Context, Problem, Solution
  • Microservice Pattern 구현 순서 및 방법 그리고 Case Study
  • Microservice Pattern의 장점과 단점

Microservice Architecture
Microservice Architecture

 

Microservice Pattern의 정의와 특징

Microservice Pattern은 대형 소프트웨어의 기능들을 작고 독립적이며 느슨하게 결합된(Loosely Coupled) 모듈로 분해해서 서비스를 제공하는 아키텍처 설계 패턴입니다.

 

Microservice는 분산 환경 아키텍처의 일종이며, 도메인 주도 설계(Domain-Driven Design DDD)의 영향을 받습니다. 주요 특징은 다음과 같습니다.

  • Bounded Context 개념에 결정적인 영향을 받음
  • Bounded Context의 논리적 개념을 기반으로 고도의 디커플링을 추구
  • 각 서비스들이 작고 독립적이며 느슨하게 결합
    : 소규모 개발팀이 서비스를 관리하고, 개별 팀의 서비스마다 별도의 코드베이스로 구성
  • 서비스가 독립적으로 배포 가능
    : 팀은 전체 애플리케이션을 빌드/배포할 필요 없이 기존 서비스 업데이트 가능
  • 서비스는 자체 데이터 또는 외부 상태를 유지할 책임이 있음
    : 기존 모델에서 데이터를 관리하는 별도 티어가 있던 것과 다른 부분
  • 서비스는 잘 정의된 API를 사용해 서로 통신 가능
    : 각 서비스의 세부 정보는 다른 서비스에 노출되지 않음
  • 서비스는 동일한 기술 스택, 라이브러리, 프레임워크를 공유할 필요가 없음

작고 독립적이며 느슨한 결합의 서비스
작고 독립적이며 느슨한 결합의 서비스

 

Microservice Pattern 적용 Context, Problem, Solution

Microservice Architecture가 적합한 경우에 Microservice Pattern을 적용할 수 있습니다. 

 

1. Microservice Pattern Context : Microservice Pattern을 적용하기에 적합한 상황

대표적으로는 서버 측면의 엔터프라이즈 애플리케이션을 개발하면서 클라이언트가 웹브라우저, 모바일 앱 등 다양한 형태로 존재하고, 다른 앱과 연동하는 경우에 적합합니다.

 

또는 클라이언트의 요청을 처리하고, 데이터 베이스 접근과 다른 시스템과의 메시지 교환/응답을 HTML/JSON/XML 형태로 할 경우에 적합합니다.

 

2. Microservice Pattern을 적용할 때 Problem 또는 요구사항

Microservice 형태로 구조를 가져갈 때에는 애플리케이션의 배포 구조를 어떻게 가져갈 것인지를 고민해야 합니다. MSA 구조에서는 팀들이 각각 배포할 수 있어야 하고, 애플리케이션 수정하기에 용이해야 합니다.

 

또한 지속적인 배포(Continuous Deployment)와 여러 개의 인스턴스를 수행할 수 있어야 합니다. 

 

3. Solution : Microservice Pattern 도입 시 효과

Microservice Architecture 구현을 위해 Microservice Pattern을 적용하면, 하나의 애플리케이션을 서비스 집합으로 구성할 수 있습니다. 코드 커필링이 해소되고, 병렬 개발이 가능해집니다. 또한 아웃소싱이 용이해지고, 확장성이 강화됩니다.

 

 

 

Microservice Pattern 구현 순서 및 방법, Case Study

Microserise Pattern의 기본적인 구현 순서와 방법은 아래와 같습니다.

  1. 개념 설계
    1) 마이크로 서비스 식별 : 서비스 대상의 경계 기준으로 나눔
    2) 업무별 관계 분석 및 화면 설계
    3) 마이크로 서비스 설계
    4) 마이크로 서비스를 위한 데이터 설계
    5) 메시지 전송 방식 설계
  2. 구조 설계
    1) 마이크로서비스 프로젝트 구조 설계
    2) 마이크로서비스 패키지 구조 설계
  3. 마이크로서비스 아키텍처 구성

 

Case Study로는 API-Gateway Architecture Pattern, Server-side Service Discovery Pattern 그리고 많은 사람들에게 유명한 Netflix가 있습니다. 여기서는 API Gateway Architecture Pattern과 Server-side Service Discovery Pattern을 살펴보겠습니다.

 

API Gateway Architecture Pattern에서는 API Gateway가 시스템의 진입점으로 역할을 수행합니다. 요청을 적절한 마이크로 서비스로 라우팅 하고, 여러 마이크로 서비스를 호출하는 구조입니다.

Case Study : API Gateway Architecture Pattern

 

Server-side Service Discovery Pattern은 API 게이트웨이를 사용해서 구현되는 서버 측 서비스 검색에 활용됩니다. API 게이트웨이는 인스턴스 검색을 처리하고, 이에 따라 클라이언트 요청을 이 인스턴스로 라우팅 합니다.

Case Study : Server side service Discovery Pattern
Case Study : Server side service Discovery Pattern

 

 

Microservice Pattern의 장점과 단점

Microservice Pattern으로 아키텍처를 구성하면 확장성, 탄력성, 진화성 등의 장점이 있습니다. 반면에, 성능과 단순성, 비용에서 단점이 있습니다.

 

장점 : 확장성, 탄력성, 진화성

  • 복잡한 애플리케이션의 지속적인 배포 가능
  • 마이크로서비스는 상대적으로 규모가 작아서 이해하기 쉽고 생산적
  • 오류의 고립 가능(Fault Isolation) : ex. 만약 메모리 릭이 있으면 해당 문제의 서비스만 진행을 멈추고 다른 서비스는 지속
  • 하나의 기술에 대한 지속적인 유지 필요성이 없음 : 새로운 기술을 도입하고 적용하기 용이

 

단점 : 성능, 단순성, 비용

  • 개발자는 분산 시스템에서 나오는 추가적인 문제들을 다뤄야 한다.
  • 여러 서비스를 배치하는 것이 복잡해짐
  • 메모리 사용량 증가(ex. 각 서비스가 각자 VM을 사용할 경우)

 


※ 함께 보면 좋은 글

 

1. 소프트웨어 아키텍처 패턴 알아보고, 아키텍처 스타일과 비교하기

 

 

소프트웨어 아키텍처 패턴 알아보고 아키텍처 스타일과 비교하기

소프트웨어 아키텍처 패턴은 특정 문제에 대한 해법을 추상화하고, 해법 내의 공통된 요인을 추출해 정형화한 것입니다. 아키텍처 패턴의 개념과 스키마, 대표적인 패턴과 자주 사용되는 패턴

mmp2022.tistory.com

 

2. Dispatcher Pattern 알아보기

 

 

Dispatcher Pattern(Client - Dispatcher - Server 패턴) 정의, 설명, 구성요소, 구현 순서, 장점, 단점

소프트웨어 아키텍처 패턴 중 하나인 Dispatcher Pattern은 Client와 Server 사이에 중간 레이어인 Dispathcer를 도입하는 Client-Dispatcher-Server 패턴입니다. 정의와 설명, 구성요소(Component), 구현 순서, 장점과

mmp2022.tistory.com

 

3. Publish and Subscribe Pattern 알아보기

 

 

Publish and Subscribe Pattern의 정의, 설명, 구성요소, 구현 방법 및 코드, 장단점

소프트웨어 아키텍처 패턴인 Publisher and Subscriber Pattern은 하나의 게시를 하는 Component와 다수의 구독하는 Component로 구성되는 패턴입니다. Pub-Sub 패턴의 정의, 예시와 설명, 구성요소(Component)와 구

mmp2022.tistory.com

 

4. Broker Pattern 알아보기

 

 

Broker Pattern 정의, 구성요소, 구현과 코드, 장점과 단점

Broker Pattern은 서버와 클라이언트 사이에 Broker, Bridge, Server-side Proxy, Client-side Proxy 등을 둬서 서버와 클라이언트를 효과적으로 분리/분산시키는 설계 기법입니다. Broker Pattern의 정의와 설명, 구성

mmp2022.tistory.com

 

댓글