본문 바로가기

컨퍼런스

MSA와 Monolithic Architecture

등장배경

1990~2000년 초 닷컴 버블 빔을 한번 처맞긴 했지만 끊임없이 성장 IT 업계와 시스템은 성장하고 있었습니다.

닷컴 버블 당시 차트(죠스 매매법)

 

그런데 기존 시스템이 대규모로 성장하다 보니 유지 관리 및 확장이 어려워져 개발 주기가 길어지고 다운타임이 증가하는 등의 문제가 생깁니다. 그래서 개발자들은 기존 애플리케이션을 더 작고 독립적인 서비스들로 분해하는 아키텍쳐를 연구합니다.

 

 

제임스 루위스 (James Lewis)

마이크로 서비스를 정의

 

“How big should an application be?” 

Most useful, is no bigger than my head.

애플리케이션은 얼마나 작아야 하는가?

내 머리보다 작아야 한다

→ 개발자가 애플리케이션에서 이해하지 못하는 부분이 없어야 한다

 

 

 

마틴 파울러 (Martin Fowler, 코딩왕)

개발자 필수 도서 리팩토링 저자 (나는 안읽어봄)

 

'마이크로'라는 논문에서 처음으로 MSA 개념을 정의

 

 

 

 

 

개념

 

Monolithic Architecture

하나의 애플리케이션에 모든 로직과 기능이 들어간 구조

 

하나의 기능을 업데이트시에도

전체를 빌드하고 배포해야함

 

특정 기능 라이브러리 업데이트 시

다른 기능에서 버전 오류 발생

 

서버 다운 시 모든 기능 마비

 

 

 

MSA: Micro Service Architecture

단일 애플리케이션을 여러 개의 작은 서비스로 분리하여 개발과 운영을 독립적으로 할 수 있게 만든 구조

 

API Gateway: 모든 API의 엔드포인트를 단일화 해주는 서버

인증 및 인가, 라우팅, 로드밸런싱, 서비스 오케스트레이션(공통 로직)

 

모놀리식 구조 또한 MSA가 아닌 것들을 일컫기 위해 만들어진 신조어

 

 

요청 처리 방식

MSA의 장점 

개발 용이성

 

수평 확장 용이성

수직 확장 (Scale-Up) :  서버의 성능 증가

수평 확장 (Scale-Out) : 동일한 서버의 개수 증가

AI 서비스에 트래픽이 몰리는 경우의 수평 확장

 

수평 확장 용이성 - 클라우드 환경

사용량만큼 요금이 계산되는 클라우드 환경의 특성상 MSA가 매우 유리

한 기능에만 트래픽이 집중될 경우의 모놀리식과 구조와 MSA 수평 확장

 

MSA의 단점

개발 관점의 단점

 

 

1. 설계난이도가 높다.

- 고려해야 할 상호작용 요소가 많음

 

2. 데이터 지연 혹은 유실

- 왼쪽에 그려진 화살표 뿐만 아니라 사용자와 API 게이트웨이,  서비스와 서비스 내에서도 데이터를 주고받아야 하기 때문

 

3. 버그 발생 시 디버깅이 힘듦

 - 예시) 결제쪽에서 문제가 터졌는데 사실은 회원관리쪽에서 준 데이터가 문제였다 

 

 

운영 관점의 단점

서비스가 많아지면 반강제적으로 도입해야 하는 솔루션들

 

MSA 도입 시점

마틴 파울러의 두가지 의견 번역