본문 바로가기

소프트웨어,IT,컴퓨터공학 도서리뷰/마이크로서비스 아키텍처(MSA)

OREILLY : 마이크로서비스 도입 이렇게 한다. [ Monolith to Microservices ] [샘뉴먼][2021][박재호 옮김] [4/7]

모놀리스 시스템에서 마이크로 서비스 아키텍처로

 


추천도 : 4/7 [ 마지막 박재호님의 부록 C 글이 제일 좋았다.. ]

★★★

읽은 기간 📅 : 2021년 3월 9일 ~ 4월 30일

 

이 책을 추천하는 이들 👨‍👧

  • 마이크로서비스 아키텍처에 관심이 있는 사람들.
  • 모놀리스 아키텍처에서 MSA로 옮겨가야 하는 사람들.

 

난이도 🦈

중상 [ 적어도 모놀리스 아키텍처에 대한 경험이 필요해 보인다... ]

 

관련된 책들 📚

  1. 마이크로서비스 아키텍처 구축 ( 샘 뉴먼의 전작 )
  2. DDD관련 책들?

 

한 줄 평 ✍️

늘 그렇듯 은탄환은 없다. 시행착오에서 깨달은 내용들

 

MSA를 피할 수 없는 시대가 오고 있다. [ 나의 생각 ]

 

경량 컨테이너 기술의 발전.

 

이 컨테이너들을 지휘하는 오케스트레이션 소프트웨어 쿠버네티스의 발전.

 

클라우드 기술의 막강한 인프라 지원.

 

빠르게 변화하는 비즈니스와 개인 맞춤형 비즈니스

 

빠른 피드백

 

모놀리스가 설 자리가 점점 좁아지고 있다.

 

정치이념을 메타포로 들어보는 모놀리스와 마이크로서비스 비교

 

모놀리스를 보면 공산주의가 떠오른다.

 

정부 주도로 모든 것을 진행시키려는 시스템.

 

은행도, 부동산도, 여러 공기업들도...

 

삶에 커다란 영향을 주는 서비스를 담당하는 회사들이 정부에게 귀속되어 관리되면

 

정부라는 리스크를 짊어질 수밖에 없게 된다. 정부의 움직임은 매우 느리고 비대하다.

 

그리고 관료주의적이다.

 

이 책의 첫 장에서 밝히듯 모놀리스 아키텍처의 둔한 움직임은 조직 체계에서 나온다.

 

이에 대해선 콘웨이의 법칙과 사일로 현상으로 뒷받침한다.

 

다양하게 걸친 서비스가 한 프로그램에 존재하게 되면서 얽히고

 

설킨 서비스들 간의 균열들이 모놀리스라는 체계 아래에서 관리된다.

 

모놀리스 체계에서의 움직임은 둔할 수밖에 없다.

 

목표가 있고 일정이 있고 과정이 존재한다. 

 

자로 잰듯한 이 날카로운 스케줄과 일정 목표를 그대로 이행해나가야 하는 프로젝트들이 다분하다.

 

최종에 가서야 파국을 맞이하게 되는 죽음의 행진곡들은 모놀리스 시스템에서 자주 볼 수 있다.

 

왜냐하면 모놀리스 체계의 조직도는 각자의 역량만으로 무장한 팀들끼리 소통해야 하기 때문이다.

 

어디선가 소통이 막히면 전체 일정이 스탑 될 수 있다.

 

그리고 그 소통이 갈등으로 진화하면 전체 일정은 불안정해진다.

 

이렇게 프로젝트는 난이도가 아니라 갈등으로 진화할 소통의 빈도수가 증가할수록 불안정성이 커지게 된다.

 

모놀리스 아키텍처 자체로도 움직임이 둔한데, 소통 자체도 둔해져서 빠른 비즈니스에는 적합하지 않을 수 있다.

 

민주주의와 다양성을 닮은 마이크로서비스 아키텍처

 

MSA는 각자가 맡은 서비스에 대해서 각 팀이 운영한다.

 

팀은 모놀리스가 조직도로 갖추었던 여러 역량들을 갖춘 팀원들로 구성된다.

 

이 말은 MSA에 소속되는 팀은 모놀리스 체계의 조직에서의 타이거 팀이라 불릴 만큼의

 

꽤나 복잡한 역량을 갖춰야 한다는 뜻이다.

 

DB부터 네트워크, 기초적인 프로그래밍 언어 실력과, 프레임워크 숙련도, 클라우드 활용성, 테스트 코드를 통한 품질 보증 문서화, 의사소통, 디자인에 대한 약간의 감각 등등... 

 

소프트웨어 아키텍처의 역량이 중급 이상으로 중무장된 인원들로 구성되어야 한다.

 

여기에 꾸준한 자기 계발은 덤이다.

 

이렇게 구성된 MSA 팀이 만든 서비스들은 각기 서로 약속한 프로토콜에 맞게 소통한다.

 

그렇게 서로 집약된 서비스를 최대한 적게 결합하면서 모놀리스를 분해해 나간다.

 

공산주의의 단점이 너무 큰 시스템을 한 곳에서 통제하지 못하는 것이라면

 

민주주의 단점은 너무 많아진 작은 서비스들을 한 곳에서 통제할 수 없다는 점이다.

 

MSA가 가지는 집중된 서비스와 기민한 움직임 그리고 네트워크를 통한 소통 메커니즘은 현대의 비즈니스의 니즈를 빠르게 반영하는데 큰 도움을 준다.

 

여기에 인프라의 지원은 덤이다. 이제는 MSA 자체를 빠르게 프로토타입으로 만들어서 반응을 보고 폐기해나갈 수 있다.

 

민주주의와 공산주의 둘 다 정답은 없다.

 

저자는 MSA로 시작하는 것을 권하지 않는다.

 

DDD의 철학에 맞게 혹은 유닉스 철학에 맞게. 한 번의 설계로 성공하려 하기보다는 여러 번 바꾸고 수정해나가면서 새로운 설계도를 구축해보라는 것이다.

 

모놀리스는 그 점에서 좋은 시작점이 될 수 있다. MSA로 시작하기 위해선 폭포수 설계처럼 모든 서비스를 분석해놔야 가능하니 말이다.

 

모놀리스로 시작한 후 부분적으로 커져가는 서비스를 MSA로 뽑아내서 분리해나가는 것이다.

 

세포분열처럼 말이다. 우리의 세포도 하나의 세포로 시작했지만 기능에 맞춰 그 크기에 맞춰 개체에 맞춰서 분열해나가면서 각자의 모습을 갖추었다.

 

이는 역사의 정치과정과도 비슷해 보인다.

 

신권으로 시작해 왕권으로 그리고 시민의 선택에 기반한 법치로

 

애플리케이션의 역사도 그렇게 시작되었으면 한다.

 

작은 모놀리스에 시작해서 여러 서비스가 잘 어울리는 마이크로서비스 아키텍처로..

 

큰 규모의 서비스들은 자연스럽게 MSA를 택할 것이라 생각한다.

 

현대의 비즈니스는 빠른 움직임을 원한다. ( 물론 느리지만 확실한 서비스를 필요로 하는 서비스도 존재한다. ) 

 

여러 비즈니스마다 다르겠으나 주를 이루는 비즈니스들은 빠른 움직임과 빠른 피드백을 통해서 다른 서비스들과 차별성을 두고자 하고 있다.

 

전체적인 환경에서 MSA는 현대의 니즈를 향해 손을 뻗어나가고 있다.

 

이 책은 MSA에 대한 모놀리스 시스템 분해를 경험했던 저자의 패턴 정리집이다.

 

전체적인 내용은 두 가지 측면에서의 모놀리스 시스템 분해이다.

 

하나는 서비스 (모듈급 기능들)

 

하나는 데이터베이스

 

하지만 결국엔 데이터베이스였다.

 

데이터베이스야 말로 본질적으로 제공하는 서비스들의 생명력을 공급하는 세포들의 집합이기 때문이다.

 

서비스들은 세포들로 만드는 재밌는 기능들이다. 

 

데이터베이스 변경이 정말 지옥 같을 수 있다고 저자는 계속 말해준다. [ 정말 어렵고 치명적인 부분이다. ]

 

서비스랑은 다르게 데이터베이스 변경은 어디에 어떤 영향을 끼칠지 아무도 모른다. 백업도 힘들다

 

수정했어도 문제가 발생한 경우 다시 통합하는 길도 어렵다

 

거기에 DB만이 가지는 특유의 복잡합 처리를 네트워크 너머로 보장해야 한다.

 

그것에 대해서 저자는 메타포를 통한 패턴들로 마이그레이션 과정을 설명해준다.

 

하지만 많이 아쉬운 부분들이 남는다.

 

마이크로 서비스 아키텍처의 모니터링 과정, 테스트 과정, 조직도의 개념, 마이그레이션 과정에서 생기는 여러 가지 현실적인 충돌들. (책에서 나온 문제점들은... 그리 크게 공감되지 않았다.)

 

샘 뉴먼은 마이크로 서비스 아키텍처에 대한 큰 짐을 짊어지고 있는 개발자이다.

 

그 무게가 급박하게 느껴졌던 책이다.

 

설계와 실제 현장을 다루는 훌륭한 책이 나오는 것은 정말 어렵고... 내 생각에는 불가능에 가깝지 않나 하는 생각이 든다.

 

많이 아쉬웠던 책.. 실제로 마이크로 서비스 도입을 시도해야 하는 사람들에게 큰 도움이 될는지는 모르겠다.

 

역자인 박재호 님이 써주신 부록 C는 2~3번 읽을 만큼 내용이 좋았다.

 

딱 단단한 내용들로 마이크로서비스 아키텍처에 대한 허와 실을 언급해준 듯하다.

 

MSA를 공부할 때 드는 생각은... 컴퓨터공학과를 6년 과정 + 2년 실무 경험으로 커리큘럼을 짜야하는 게 아닌가 하는 생각이 든다..

 

이상으로 리뷰를 마쳐본다. 

반응형