MSA로 구축된 어플리케이션 관리를 단계적으로 안내하는 실전 가이드

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

  • 원제 : SRE with Java Microservices
  • 저자 : Jonathan Schneider
  • O'Reilly Media, 2020 / 한빛미디어, 2022

한국에서 MSA는 채용 시장에서 가장 핫한 주제다. MSA는 대용량 서비스를 안정적으로 운영하기 위해 느슨한 결합도, 무중단 배포, 기민한 릴리즈 대응, 탈중앙화에 부합해 탄생했다. 트래픽이 발생하기 전까지는 기존의 집중된 아키텍처로도 대응이 가능하지만 넷플릭스 같이 대규모 트래픽이 발생하고 복잡한 서비스는 어떤 아키텍처로 대응할까? 이 책에서는 넷플릭스의 경우를 예로 들어 MSA를 지탱하는 SRE 행위에 대해서 설명하고 있다. MSA는 느슨한 결합도에 의해 탈중앙화 되면서 모놀리식일 때 고려할 필요가 없었던 부분에 대해 고민이 필요해지고, 분산 시스템을 유지하는데 새로운 개념들을 요구한다. 국내에서도 대규모 트래픽을 견뎌야 하는 서비스들이 많이 등장했고, 최근 SRE를 위한 플랫폼 엔지니어에 대한 수요가 적지 않은 것으로 보인다.

책은 크게 4파트로 나눠져있다. 플랫폼 엔지니어링이란 무엇인지 개발팀을 어떻게 서포트하고 어떤 관점에서 이끌어야 하는지 잘 설명하는 어플리케이션 플랫폼 (1장). MSA 환경에서 분산 추적을 위한 개념과 방법론을 알려주는 어플리케이션 메트릭 (2장), 관찰 가능성과 디버깅 (3장), 차트와 경고 (4장). 그리고 지속적 전달과 전사적 코드 관리를 위한 내용이 담긴 멀티 클라우드와 지속적 전달의 안정성 (5장), 소스코드 관찰 가능성(6장). 마지막으로 분산 환경에서의 트래픽 관리(7장)에 대한 전략을 소개한다.

저자는 넷플릭스에서 근무하면서 겪은 SRE 이슈와 시행 착오에 대한 이야기를 알기 쉽게 소개하고 있다. 1장에서는 플랫폼 엔지니어가 개발 조직에서 SRE를 위해 어떻게 조직을 견인해야 하는가 잘 설명하고 있다. SLI, SLO, SLA, 레이턴시, 사용율, 포화도에 대한 개념들을 명확하게 설명하고 어떻게 목표를 새워야 하는지 예시를 들어 설명해준다.

2장 부터는 본격적으로 분산 추적에 대한 개념과 실제를 보여준다. 마이크로미터를 사용해 메트릭을 등록하고 어플리케이션에 탑제하는 방법을 알려준다. 추적시 관찰 가능한 범위, 수집하는 스키마에 대해서도 설명한다. 부하를 테스트 하는 방법으로 외부의 툴 대신 스프링에 내장된 WebClient와 Project Reactor를 사용해 넌블러킹 부하 테스트를 하는 법을 소개한다. 3장에서는 분산 추적의 전략을 어떻게 가져갈 것인가 보여준다. 에이전트를 사용할 것인다. 프레임워크 자체 기능을 사용할 것인가. 서비스 메시를 사용할것인가. 이들 특징을 잘 합쳐 혼성 추적을 할 수도 있다고 한다. 4장에서는 측정한 데이터를 시각화 하는 기준과 실제 대해 소개한다.

5장에 들어서면 분산 환경에서 배포와 전달 전략에 대해 집중적으로 소개한다. 서비스 운영 형태, 파이프라인, 패키징에 대해 고려해보고 상황에 맞게 운영이 필요하다고 한다. 배포 전략에 delete+none, 하이랜더, 블루/그린 배포를 소개한다. 6장은 전사적 코드 리펙토링 실제를 앞새워 지속적 통합에 대해서 설명한다. Open Rewrite를 사용해 코드를 자동으로 리팩토링 하는 부분도 소개한다.

마지막으로 7장에 들어서면 트래픽 관리에 대해 설명한다. SLO에 따라 로드밸런싱 전략을 어떻게 새울지, 과부하로 부터 복구 전략을 어떻게 새워야 하는지 비교한다. 비율 제한, 벌크헤드, 서킷 브레이커에 대해 설명하고 Resilence4J로 어떻게 구현하는지 설명한다.

이 책은 실제 추적을 위한 삽입 코드를 보여주고 측정이 어떻게 이뤄지며, 수집된 데이터를 통해 판단을 위한 지표를 새우는데 초점이 맞춰져있다. 내 수준에서 많은 부분에서 이해하기 어려웠지만, 대용량 서비스를 위한 SRE가 어떤 일을 하는지 정도는 알 수 있었다. 앞서 APM과 분산 환경에 대해서 좀 더 알고 봤다면 좋았겠다는 생각을 하며 이번달 서평을 마친다 (당연히 멀지 않은 미래에 재독서 대상이다.)

이 책을 추천하는 이유

이 책을 한번 보면 좋을 것 같은 사람들

  • 플랫폼 엔지니어링 또는 서비스 아키텍쳐 업무를 맡은 (또는 맡게될) 사람들
  • 대용량 서비스의 플랫폼 엔지니어의 역할과 SRE가 개발팀을 서포트하는 방법에 대해 알고싶은 사람들
  • 전국의 불철주야 애쓰시는 팀장님들

아직은 읽을 대상이 아닌 것 같은 사람들

  • 자바, 스프링 학습 중인 사람들.
  • 프로메테우스, 집킨, 이스티오, 스피나커가 무슨 말이지?
  • 분산 환경에 대한 이해가 필요한 사람들.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

Comments