본문 바로가기

Archived(IT)/MSA

Monolithic vs Microservice(MSA)

1. Monolithic Architecture

Monolithic이란 하나의 구조로 단단히 이루어진 이라는 뜻을 지니고 있다.

즉, 프로젝트가 하나의 아키텍쳐로 묶여져 이루어진 구조를 뜻한다.

위의 사진에서처럼, Business Logic과 Data Access Layer와 UI가 한 번에 묶여 제공된다.

 

장점

  • 작은 규모의 프로젝트 개발 효율
  • 배포가 간편, 테스트도 수월(하나의 패키지로 묶여 있으므로)

단점

  • 대형 시스템 개발 시 확장성 문제
  • 하나의 서비스가 다른 서비스에 문제 야기

2. Microservice Architecture(MSA)

MSA란 Monolithic과 반대되는 개념으로 작은 단위의 서비스로 나누어 이루어진 구조를 뜻한다.

하나의 어플리케이션을 기능별(그 외의 다양한 기준)로 패키징하여 여러개의 작은 어플리케이션으로 나누어 서비스를 담당하도록 설계하는 구조이다.

 

 

장점

  • 뛰어난 재사용성(분산 환경, 기능 확장성, 생산성, 효율성)
  • 개별 서비스 단위의 배포 가능
  • 요구사항의 잦은 변경에 대처 용이(동적 대응)
  • 새로운 기술 적용 용이

단점

  • 로그 추적 등 문제 해결이 쉽지 않음
  • 유지보수 대상 항목이 늘어남(생각치 못한 분산 환경에 대한)
  • API 호출을 통한 통신 구조 상 N/W에 의한 성능 이슈 발생
  • 트랜잭션 처리 성능 향상에 대한 비용
  • 테스팅 과정이 복잡해짐

즉, MSA의 핵심방향성은

Application을 나눈다
클라우드 환경에서 운영한다
확장(Scale Out)이 용이한 구조로 설계한다