Skip to content

Ch01 msa

들어가기

컴포넌트란 시스템을 이루는 기능적 단위를 말한다. 모든 시스템은 하나 이상의 컴포넌트로 구성되어 있다. 마이크로서비스 아키텍처란 분산 시스템 아키텍처의 일종으로 다량의 요청을 처리하고 애플리케이션 복잡도를 낮추어 주는 여러 장점이 있다.

모놀리식 아키텍처 Vs 마이크로서비스 아키텍처

모놀리식 아키텍처 특징/장점

  • 전반적으로 구조가 매우 간단하다.
  • 하나의 WAS 에서 모든 기능을 처리하도록 구성한다.
  • 하나의 데이터 저장소만을 가지며 데이터는 객체들 사이에서만 전달된다.
    • 네트워크로 인한 지연이나 데이터 유실을 걱정할 필요가 없다.
  • 시스템 장애나 버그의 원인을 파악하기 쉽다.
  • RDB 의 transaction 기능을 쉽게 사용할 수 있다.

모놀리식 아키텍처 단점

  • 서비스 고도화에 따라 코드가 복잡해질 가능성이 높다.
  • 복잡하게 얽힌 코드를 수정하는 일도 점차 힘들어진다. 개발속도나 생산성도 점차 낮아진다.
  • 스케일 아웃 (수평 확장)에 따라 합리적이지 않은 확장이 동반될 수 있다.
    • e.g.) 배달의 민족 이라면 사장님 요청보다 사용자의 요청이 훨씬 많을 것이다. 모놀리식 구조라면 사용자의 요청만을 위한 확장을 할 수 없다.

마이크로서비스 아키텍처 특징/장점

  • 독립성에서 오는 확장성, 비즈니스적 기민함을 가질 수 있다.
  • 기능 위주로 나뉜 여러 애플리케이션이 있고, 각각 독립된 데이터 저장소를 사용한다.
    • 데이터베이스가 단일 장애 지점이 될 수 없다!
    • 데이터 베이스가 분산되어 있기 때문에 대용량 데이터를 저장, 처리하는데에 비교적 자유롭다.
  • 배포주기가 빠르다.

마이크로서비스 아키텍처 단점

  • 개발하기 어렵다.
  • 운영하기 매우 어렵다.
  • 설계하기 어렵다.
  • 여러 자동화된 시스템이 필요하며 개발자의 높은 역량이 요구된다.

마이크로서비스 아키텍처 설계

마이크로서비스 아키텍처 설계의 핵심은 '잘 분리하는 것'

물론 정해진 법칙이나 왕도는 없다. 비즈니스 성격과 상황에 따라 '그때 그때 달라요' 가 정답이다.

하지만 일반적으로 활용되는 원칙과 이론은 존재한다!

  1. 서비스 세분화 법칙 - 비즈니스 기능/ 성능/ 메시지 크기/ 트랜잭션
  2. DDD 의 Bounded Context
    • 도메인은 비즈니스 전체나 조직이 해결해야 하는 문제를 일컫는다.
    • 도메인은 서로 다른 도메인과 상호작용하며 서브 도메인으로 구성되기도 한다.
    • 이때 다른 도메인 모델과 확연히 구분되는 명시적인 경계를 바운디드 컨텍스트라고 한다.
  3. SRP 를 잘 고려하자!
    • SRP 란 로버트 마틴이 제안한 클래스 설계 5원칙 (SOLID)중 하나이다.
    • 클래스는 한가지 책임을 가진다.
    • 클래스는 한가지 변경 사유만을 가진다.
    • Microservice 를 설계할 때에도 이 원칙을 고려하면 도움이 된다.

Last update: February 26, 2023
Created: December 13, 2022