마이크로서비스패턴[0] — 읽기전에

Byungkyu Ju
byungkyu-ju
Published in
3 min readAug 13, 2020

부제: 모놀리식 지옥에서 벗어나자!

올해 상반기에 시작했던 스터디는 COVID-19로 인해 잠정 중단이 되었고, 결국 하반기 스터디는 온라인으로 진행이 되기로 정해졌다.

하반기 스터디에 참가하고자 하는 스터디원은 각자 1개 이상의 주제를 제안해야 했는데, 마침 신간? 이기도 하고 꾸준히 관심가지고 있던 마이크로서비스패턴이라는 책을 주제로 제안했다.
다행히 많은 사람들이 원하는 주제이기도 했고, 높은 득표율로 원하는 책을 공부할 수 있게 되었다.

부제도 참 마음에 들었다. 모놀리식 지옥에서 벗어나자!

이 책의 컨셉은 FTGO라는 가상의 회사에 CTO인 메리가 어떻게 Monolithic Architecture에서 마이크로서비스 아키텍쳐(MSA)로 변화시키는지를 얘기해주는것이다.

책을 정리하기전에 개념을 한번 다지고 시작하자.

mono·lith1.단일 암체; (특히 고대의) 거대한 돌 기둥2.(변화가 느리고 개개인에게 무관심한) 거대한 단일 조직
https://www.google.com/search?q=monolith

일반적으로 모놀리스(monolith)는 위와 같이 ‘거대한, 단 하나’의 의미를 가진다. 위 의미를 생각하면서 아래의 그림을 보자.

https://microservices.io/patterns/monolithic.html

Microservices.io 의 예시에 따르면, 하나의 WAR 파일로 구성된 어플리케이션, 또는 단일 디렉토리로 구성된 Ruby나 NodeJS 코드를 ‘전통적인 어플리케이션 아키텍처’. 즉 모놀리식 아키텍처로 구성되어 있다고 부른다.

위 이미지의 StoreFontUI, AccountingService, InventoryService 들은 각각 모듈화가 되어 있지만 모듈화된 어플리케이션들은 하나의 WAR로 패키징되어 Tomcat WAS에 올라가있는 상태이다.

전통적인 모놀리식 아키텍처는 다음과 같은 장점이 있다.

  • 개발이 간단하다.
    개발툴은 단일 어플리케이션 구축에 초점이 맞춰져있다.
  • 어플리케이션을 쉽게 변경할 수 있다.
    코드, DB 스키마등을 변경하고 빌드,배포가 용이하다.
  • 테스트하기 쉽다.
    어플리케이션을 구동하고 API를 호출하고, UI를 테스트하면 된다.
  • 배포하기 쉽다.
    프로젝트들을 WAR파일로 압축해서 톰캣 경로에 복사하면 된다.
  • 확장하기 쉽다.
    로드밸런서에 연동하여 어플리케이션 인스턴스를 여러개 실행할 수 있다.

위 내용만 보아도 개발에 용이한 아키텍처라는 것을 알 수 있다.

하지만 이런 장점이 있음에도 불구하고, 왜 마이크로서비스 아키텍처로 바꾸는 일을 하는지는 다음장부터 차근차근 보기로 한다.

--

--