메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

자바 마이크로서비스를 활용한 SRE

기업에서 신뢰할 수 있는 마이크로서비스를 위한 패턴

한빛미디어

번역서

판매중

  • 저자 : 조너선 슈나이더
  • 번역 : 정병열
  • 출간 : 2022-03-10
  • 페이지 : 348 쪽
  • ISBN : 9791162245286
  • 물류코드 :10528
  • 초급 초중급 중급 중고급 고급
4.6점 (19명)
좋아요 : 0

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

 

자바 마이크로서비스를 안정적으로 구축하고 배포하는 방법을 단계적으로 안내하는 실무 지침서다. 플랫폼 엔지니어가 고도로 탄력적인 자바 애플리케이션을 구축할 수 있도록 기술적·조직적으로 적용해야 하는 일련의 과정을 점진적으로 배워나간다. 또한 마이크로서비스 도입을 선도하는 여러 기업의 성공적인 SRE 모범 사례도 소개한다. 수많은 시행착오로 검증한 실전 대응 기법이 적용된 예제 코드로 마이크로서비스 도입의 핵심을 꿰뚫어보는 시각을 얻어 훌륭한 엔지니어로 거듭나기 바란다.

 

 

상세페이지_자바 마이크로서비스를 활용한 SRE_940px.jpg

조너선 슈나이더 저자

조너선 슈나이더

자동화된 소스 코드 변환과 자산 가시성을 통해 애플리케이션과 인프라를 현대화하는 Moderne의 CEO이자 공동 설립자. 이전에는 넷플릭스의 애플리케이션 모니터링 및 엔지니어링 도구를 다루는 스프링팀에서 근무했었다.

정병열 역자

정병열

학창 시절 접한 BASIC 언어를 계기로 프로그래밍에 입문했다. 일찍부터 직업 개발자로 다양한 프로젝트를 수행하며 스타트업과 대기업에 몸을 담았다. 시니어 개발자로 경력을 이어가는 한편 양질의 개발 서적 출간에 일조하고자 틈틈이 노력하는 중이다. 옮긴 책으로는 『Modern PHP』, 『자바 마이크로서비스를 활용한 SRE』 (이상 한빛미디어) 등이 있다.

CHAPTER 1 애플리케이션 플랫폼

1.1 플랫폼 엔지니어링 문화

1.2 모니터링

1.3 전달

1.4 트래픽 관리

1.5 다루지 않는 주제

1.6 캡슐화

1.7 마치며

 

CHAPTER 2 애플리케이션 메트릭

2.1 블랙박스 vs 화이트박스 모니터링

2.2 차원형 메트릭

2.3 계층형 메트릭

2.4 마이크로미터의 미터 레지스트리

2.5 미터 생성

2.6 메트릭명

2.7 미터 클래스

2.8 게이지

2.9 카운터

2.10 타이머

2.11 분포 요약

2.12 장기 작업 타이머

2.13 미터 타입 선정

2.14 비용 제어

2.15 조율된 누락

2.16 부하 테스트

2.17 미터 필터

2.18 플랫폼과 애플리케이션 메트릭 분리

2.19 모니터링 시스템에 따른 메트릭 분할

2.20 미터 바인더

2.21 마치며

 

CHAPTER 3 관찰 가능성과 디버깅

3.1. 관찰 가능성의 세 주축과 두 분류

3.2 분산 추적 컴포넌트

3.3 분산 추적 유형

3.4 샘플링

3.5 분산 추적과 모놀리스

3.6 원격 측정의 상관관계

3.7 추적 콘텍스트를 이용한 실패 주입 및 실험

3.8 마치며

 

CHAPTER 4 차트와 경고

4.1 모니터링 시스템의 차이

4.2 서비스 수준 지표의 효과적인 시각화

4.3 게이지

4.4 카운터

4.5 타이머

4.6 대시보드 생성을 중지해야 할 때

4.7 모든 자바 마이크로서비스에 통용되는 서비스 수준 지표

4.8 예측 경고 체계

4.9 마치며

 

CHAPTER 5 멀티 클라우드와 지속적 전달의 안정성

5.1 플랫폼 유형

5.2 자원 유형

5.3 전달 파이프라인

5.4 클라우드용 패키징

5.5 delete+none 배포

5.6 하이랜더

5.7 블루/그린 배포

5.8 카나리 분석 자동화

5.9 마치며

 

CHAPTER 6 소스 코드 관찰 가능성

6.1 스테이트풀 자산 인벤토리

6.2 릴리스 버전 관리

6.3 의존성 해소 메타데이터

6.4 소스 코드를 활용한 메서드 수준 정보 수집

6.5 의존성 관리

6.6 마치며

 

CHAPTER 7 트래픽 관리

7.1 잠재적 장애 요소가 많은 마이크로서비스

7.2 시스템의 동시성

7.3 플랫폼 로드 밸런싱

7.4 게이트웨이 로드 밸런싱

7.5 클라이언트 측 부하 분산

7.6 헤지 요청

7.7 호출 복원 패턴

7.8 마치며

구글과는 다른 넷플릭스의 SRE, 

그들의 애플리케이션 관리 노하우를 가득 담은 실전 입문서

 

SRE(사이트 신뢰성 엔지니어링)는 구글에서 사이트의 안정성을 유지하기 위해 개발한 방법론으로 SRE를 도입함으로써 개발과 운영의 분리로 인한 부작용을 피할 수 있다. 또한 세계 경제에 큰 타격을 준 코로나19 같은 사건이 발생해도, 신속하게 시스템을 원격 지원 체계로 전환할 수 있어 많은 기업에서 SRE를 도입하는 사례가 증가하고 있다.

 

이 책의 저자는 넷플릭스에서 근무하면서 얻은 인적 및 기술적 경험을 토대로 넷플릭스 SRE의 특장점을 가감 없이 소개한다. SRE 발원지인 구글과 다른 넷플릭스 특유의 조직 문화 속에서 발현된 개성적인 SRE의 일면을 엿볼 수 있다. 또한 가장 저변이 넓은 MSA 기술 스택과 자바 진영의 오픈 소스를 활용해 독자의 부담감을 낮추고, 스프링 프레임워크와 그레이들 분야에서 쌓은 업력으로 이를 탄탄하게 뒷받침한다. 기존에 접했던 SRE 관련 학습 자료들이 다소 피상적이라고 느껴졌다면 이 책을 통해 실제로 손에 잡히는 기술들을 습득함으로써 SRE를 추구하는 여정에 가시적인 첫걸음을 내딛을 수 있을 것이다.

 

소프트웨어 엔지니어에게는 서비스 장애 시간을 줄이고 성능 향상을 위해 다양한 관점에서 접근하는 방법을, IT 자산 관리자에게는 서비스를 안정적이고 신뢰성 있게 운영하는 방법을 안내한다. 기업에 신뢰할 수 있는 마이크로서비스를 성공적으로 도입할 수 있도록 이 책을 읽는 모든 이에게 훌륭한 안내서가 되어줄 것이다.

 

 

주요 내용

  • 애플리케이션 메트릭: 마이크로미터를 이용한 가용성 모니터링
  • 관찰 가능성과 디버깅: 로깅, 분산 추적, 실패 주입 테스트
  • 차트와 경보: 자바 마이크로서비스 핵심 지표 차트 구축
  • 안전한 멀티 클라우드 전달: 스피나커, 배포 전략, 카나리 분석 자동화
  • 소스 코드 관찰 가능성: 종속성 관리, API 활용, 엔드투엔드 자산 인벤토리
  • 트래픽 관리: 시스템 동시성, 플랫폼, 게이트웨이, 클라이언트 측 로드 밸런싱

 

추천사

IT 선도 기업들이 성취한 도전을 개념적으로 잘 정리해놓은 책이다. 이론적인 개념은 물론 실전 경험을 습득하고 싶은 모든 이에게 이 책을 추천한다.

_트로이 게인스, Shelter Insurance 정보 서비스 디렉터

같은 서비스를 전세계의 사람들이 사용하면서 트래픽이 늘어남에 따라 우리는 안정성있게 제공되는 서비스에 대해서 주목하게 되었다. 수 많은 사람들이 사용하는 서비스에서 문제가 발생하고 빠르게 조치가 취해지지 않으면 모두가 혼란에 빠질 수 있는데 이런 상황을 빠르게 대처할 수 있게 하는 것이 SRE이다. SRE는 소프트웨어를 툴로 활용하여 시스템을 관리, 문제를 해결하고 운영 태스크를 자동화하는 접근 방식이다. SRE를 담당하는 팀은 장애를 예측하여 예방하고, 발생한 장애를 빠르게 탐지하고, 빠른 복구를 위한 지원을 제공한다. 또한 발생했던 장애가 다시 일어나지 않도록 조치한다.

 

 

이 책은 SRE의 필요성을 느낀 저자가 엔지니어링 팀의 행동 걍령과 이것을 실현하기 위한 방법을 소개하고 있다. 규모가 작은 소프트웨어 개발 회사부터 큰 개발 회사(넷플릭스)까지 다양한 환경에서 경험을 쌓아온 저자가 그동안의 경험을 통해서 얻은 지식을 공유한다. 

 

솔직히 아직 개발자라고 하긴 어려운 내 수준에서 이 책은 어려웠다. 두 번 정도 읽었는데 아직은 완전히 와닿지 않는 개념도 있었다. 하지만 어렵게 이해해가는 와중에도 이 기술은 알아야 하는 기술이기에 내가 개발 지식을 좀 더 많이 쌓고 나면 꼭 다시 한 번 읽어야할 책이라고 생각되었다. 이 책을 읽고 나면 내가 서버를 담당하는 개발자가 되었을 때 나의 기술력을 한 단계 높이고자 할 때 이떤 면을 고민해야할지 방향성을 잡을 수 있다. 그래서 다시 한 번 읽고 싶은 책이다. 

또한 처음보는 용어가 수두룩했음에도 끝까지 읽을 수 있게 전개되었다. 글이 많아 부담스러울 수 있지만 막상 읽어보면 그렇게 불친절한 책이 아니라는 이야기다. 저자가 넷플릭스에서 근무한 경험을 바탕으로 썼기때문에 대규모의 서비스를 제공하는 회사에서는 개발할 때 어떤 것을 고민하는지 간접 경험할 수 있는 기회가 될 것도 같다. 

* 대규모 트래픽을 감당해야하는 서비스를 제공하는 기업에서는 장애를 예방하기 위해 집중적으로 관리하고, 발생한 장애를 빠르게 처리할 수 있는 방법을 계속해서 원하기 때문에 특히 서버를 담당하거나, 혹은 팀을 이끌어가는 사람이라면 SRE에 대해서 꼭 공부해야한다고 생각한다. 

 

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

 

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

 

 

20220331-230230-6242-LR84.jpg

 

한국에서 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가 개발팀을 서포트하는 방법에 대해 알고싶은 사람들
  • 전국의 불철주야 애쓰시는 팀장님들

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

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

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

 

[BOOK] 자바 마이크로서비스를 활용한 SRE - 조너선 슈나이더 지음 / 정병열 옮김
 

2022-03-31 22.31.05.jpg

 

부제: "기업에서 신뢰할 수 있는 마이크로서비스를 위한 패턴"
 
 
어떤 기술이던 장점과 단점을 가지고 있다. 애플리케이션을 개발할 때 장점과 단점을 고려하여 최적의 기술을 선택하여 적용한다.
애플리케이션의 요구사항에 따라 모놀리식(monolithic)으로 개발하는 것이 유리할 수도 있고, 마이크로서비스(microservice)가 적합할 수도 있다.
마이크로서비스는 개발과 배포에 편리한 장점이 있는 만큼 장애 대응과 운영에 어려움이 존재한다.
 
 
마이크로서비스 관리의 어려움은 2020년 12월 구글의 서비스 장애를 통해 경험했다.
아마 SRE(Site Reliability Engineering, 사이트 신뢰성 공학)라는 용어가 알려지기 시작한 것도 그 때가 아니었을까?
이 책은 구글의 SRE를 소개하는 책들과는 다르게 플랫폼 엔지니어링을 기반으로 하는 넷플릭스의 SRE를 소개한다.
 
 
시스템의 구조는 필연적으로 그 시스템을 설계하는 조직의 커뮤니케이션 구조를 닮는다. - 콘웨이의 법칙
 
구글과 넷플릭스의 조직구조와 문화가 다른 만큼 SRE 적용 방법도 다르다.
현재 자신의 조직 상황에 맞는 SRE가 무엇일지 판단해보고 책을 선택하는 것도 방법이다.
(넷플릭스와 유사하다면 이 책, 구글과 비슷하다면 이 책에 소개된 구글에 대한 책을 선택)
우리가 제공하는 것은 관문이 아니라 가드레일이다. - 다이앤 마시, 넷플릭스
 
넷플릭스의 조직과 문화를 고려한 플랫폼 엔지니어링 기반의 SRE를 간단히 소개하고, 이 책에서 다루는 주요 키워드를 짚어준다.
그리고 아래 소개된 주제로 도구를 소개하고, 활용 방법에 대해서 설명한다.
 
  1. 서비스 가용성을 측정하고 모니터링한다.
  2. 디버그 가능성 신호를 추가하고 장애 기간에 대한 정보를 파악한다.
  3. 소프트웨어 전달 파이프라인을 개선하고 장애 확산을 방지한다.
  4. 배포 자산의 상태를 소스 코드 수준까지 관찰할 수 있는 기능을 구축한다.
  5. 트래픽 관리 기능을 통해 서비스 가용성을 원하는 수준까지 향상시킨다.
 
MSA로 구성된 서비스를 효율적으로 관리하기 위한 방법들이 적절한 수준으로 소개되어 있다.
"마이크로서비스를 어떻게 구현하지?"에 대한 책을 읽어본 경험이 있다면 이 책을 통해 "마이크로서비스는 어떻게 운영하지?"에 대한 궁금증을 풀 수 있을 것 같다.
그리고 그래프, 대시보드, 소스코드를 다양한 색상으로 인쇄한 것이 정말 마음에 든다.
 
 
"한빛미디어 [나는 리뷰어다] 활동을 위해서 책을 제공받아 작성된 서평입니다."

 개발자로 살아오면서 계속 자바만을 활용해서 개발했었다. 처음부터 Spring을 활용해서 개발을 하였고, 시간이 흐름에 따라 자연스럽게 Cloud에 올라가는 시스템을 개발하다보니 SpringBoot를 사용하게 되었다. 처음에는 SpringBoot를 잘 몰라서 헤매고 있다가 사용하면 할 수록 많은 부분이 편리해졌고, 특히 메트릭을 간단한 설정을 통해서 수집할 수 있도록 해준다는 사실이 신기했었다.

 그런데 그 메트릭 개발을 하신분이 직접 만든 책이라고 하여서 관심이 많이 갔던 책이다. 또한 SRE(사이트 신뢰성 엔지니어링)에 대한 평소에 관심도도 많은 편이었다. 대부분 SRE이라고 하면 아는게 구글에서 먼가했다는 정도 였다. 하지만 이 책은 구글이 아니고 넷플릭스에서의 경험이 녹아져 있는 책이다.

 구글은 SRE부서나 조직 등 전담인력이 있지만 넷플릭스에서는 그렇지 않고 같이 병행하는 문화였다고 한다. 대부분은 넷플릭스와 같이 SRE전담 일력은 없을 뜻 하다. 현재 지금 내가 있는 조직도 마찬가지이다.

 부서에서 SRE를 맡아야 하는 사람들이나 SRE에 관심이 있는 사람들이라면 또는 SpringBoot에 대한 거부감이 없는 분들이라면 재미있게 읽어 볼 만한 책이라 생각된다. 

 

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

슈퍼앱을 개발하는 회사들이 서비스 운영을 모놀리식에서 마이크로서비스로 넘어가는 케이스들이 점차 늘어나고 있습니다.


계기점은 '구글의 로그인 인증' 이슈 입니다.


로그인 인증이 필요한 구글 서비스들이 한 순간에 작동이 되지 않았는데요.

유튜브 등 로그인이 필요 없는 서비스만 이용할 수 있었습니다.


그 후로 서비스 방식을 대부분 이동했다고 봐도 무방합니다. 

큰 이유는 모놀리식의 특징 때문이죠.


하나의 거대한 똥들이 쌓이게 되면 서로 영향을 받기 때문에 한 개만 잘못되도 다 영향을 받습니다. 


유니콘 기업들은 이러한 영향을 받지 않기 위해 '마이크로서비스'로 전향을 하게 되고 컨테이너 기술들이 덩달아 기술의 발전을 함으로써 큰 부담 없이 바꾸고 있는 추세입니다. 


이러한 가운데 서비스를 보다 더 안정적으로 운영하기 위해서 SRE에 대한 관심이 커지게 됐는데요. 


자바 기반의 마이크로서비스를 이용한 개발자들에게 단비 같은 책이 나왔습니다. 


바로 '자바 마이크로서비스를 활용한 SRE' 이 책에 대해서 2가지로 요약해보도록 하겠습니다.


1) 경험을 바탕으로 쓴 책

이 책의 저자는 넷플릭스, 스프링, 그레이들 등 스타트업 및 테크기업까지 여러 회사에서 경험을 쌓았습니다.


맡은 업무는 서버 관리를 주로 했는데요. 

운영을 하면서 메트릭 정보를 활용해 모니터링 시스템을 만든 경험이 있습니다.


전반적인 SRE 대규모 트래픽을 받고 대응 하는 경험을 이 책에 녹여서 썼습니다.


2) 모니터링의 중요성

메트릭, 로그, 분산 추적 등은 서비스 가용성을 측정 할 때 관찰할 수 있는 요소 입니다.


서비스의 가용성은 시스템의 상태와 정상적으로 작동 되는지 측정할 수 있도록 정량화 하는 개념인데요. 


예를 들어 서버의 시스템 장비의 상태와 초당 비디오 스트리밍 용량을 등을 확인 할 수 있습니다.


또한 모니터링은 시스템을 개발할 때 장애를 발생한 곳을 찾는 용도로 사용되는데요.

해당 곳을 찾은 후 디버깅을 통해서 장애를 해결합니다.


PS

국내 테크기업들은 SRE의 개념이 근 1~2년 사이로 자리를 잡을 것이라고 생각이 되는데요. 

대부분이 기존의 데브옵스 업무에서 전향하거나 백엔드 개발자들이 전향할 것으로 보여집니다. 


이 책은 SRE에 대한 용어 설명이 세세하게 되어 있으며, 각 상황별 어떤 식으로 해결 했고 대응을 했는지 경험이 잘 녹여진 책입니다.


자바 마이크로서비스에 관심 있는 분이나 SRE에 관련된 업무를 맡을 분들에게는 개념 잡는데 큰 도움이 됩니다.

[책 리뷰] 자바 마이크로서비스를 활용한 SRE

image-20220331191409641

책이 확실히 중급이라 어렵다. 한번 읽어서는 이해가 되지 않는 구문이 많다. 또한 중급책이지만 흑백이 아니고 컬러책인데, 아무래도 그래프가 많고 해당 그래프들을 한눈에 알아보기 쉽게 하기 위해서인듯 하다.

MSA를 기반으로 한 플랫폼 개념을 알려주는 책이라 아키텍처 위주의 설명으로 구성되어 있다. 그리고 모니터링에 대한 부분에 대해 깊게 설명해주고 있다. 즉, 대략 어플리케이션 운영에 대한 부분에 포커스를 맞춘 책이다.

하지만 백엔드 개발자라면 어플리케이션의 모니터링 부분이 정말 중요하기 때문에 플랫폼 엔지니어뿐만이 아니라 일반 백엔드 개발자가 보기에도 좋은 책이다.

이 책은 초반에는 구글, 넷플릭스 조직을 설명하며 개발문화를 기반으로 SRE를 통한 시스템을 설명한다. 이후 모니터링을 하기 위한 툴들을 소개해주며, 이후 해당 툴들을 통해 얻은 데이터를 시각화 등으로 표현하여 효과적으로 이용하는 방식을 알려준다. 그리고 마지막으로 트래픽을 관리하는 부분으로 마무리 된다.

사실 모두 이해하지는 못했다. 또한 확 와닿았던 부분도 조금 적었다. 차후에 연차가 좀 더 쌓이고 본다면 다르게 느낄 수 있는 책이지 않을까 생각이 든다.

한줄평 : Java 어플리케이션 운영 및 모니터링에 대한 가이드 책

이런분께 추천 :

  1. 애플리케이션 모니터링에 관심이 있으신 분.

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

 

 

 

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

 

 

 

이 책은 뭔가 따라하면서 m.s.a (예를 들면 A 서비스, B 서비스, C 서비스) 만들어서 상호간에 이벤트를 주고 받는 것을 보여주는 류의 책은 아닙니다.

 

시중에 그런 실습서들이 있으니 만약 그런 책을 찾으신다면 이 책은 아닙니다.

 

 

그럼에도 이 책으로부터 M.S.A 로 서비스를 운영할 때 염두해 둘 키워드 들을 접할 수 있다는 점에서 의미가 있습니다.

 

이 책은 특히, 데브옵스 직군의 개발자들에게 도움이 될 것 같습니다.

 

 

- 실패주입 테스트 쪽도 흥미로웠습니다.

 

- 책 예제만으로는 직접 테스트해보긴 어렵고, 관련 검색어로 구글링해서 사이드프로젝트 간단하게 만들어서 돌려볼 예정입니다.

 

- 4장이 챕터들 중에서 흥미로웠습니다.

 

- 레이턴시, GC 관련된 주제들은 시간이 날 때마다 다시 정독해서 봐야 할 거 같습니다. 한번에 읽히진 않았습니다.

- 로컬에서 visual VM, AWS 의 지표로만 matrices 로 봤었는데 책에서 소개한 메트릭 수집 sw 들도 기회가 되면 한번 사용해 봐야겠습니다.

 

KakaoTalk_Photo_2022-03-31-15-51-09.jpeg

 

 

 

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

 

개발하면서 가장 신경써야 할 부분이 어플리케이션의 모니터링부분이다. 이 책은  그런 모니터링에 대한 부분에 대해서 설명해 주고 있는 책인데, 특히나 모니터링 도구들을 사용하기 보다 어플리케이션에 직접적인 (화이트박스) 모니터링을 중점적으로 설명해준다.

 

책에서는 실제 코드를 제시하면서 설명하기는 하지만 핸즈온 실습처럼 하나의 어플리케이션을 구축해가면서 모니터링을 설명하는 것이 아니라 특정 모니터링에 대한 개념을 설명하고 이를 자바로 구축한다면 특정 방식으로 구축할 수 있다는 점을 보여준다. 그래서 개인적으로 자바를 주 언어로 사용하고 있지 않은 작성자같은 경우에도 비슷한 방식으로 모니터링 시스템을 구축할 수 있겠다 하는 생각이 들었었다.

 

처음에는 구글의 신뢰성엔지니어링과 비교하면서 저자의 경우에는 다른 방식이 더 나았다는 말을 하게 된다. 즉, 본인이 속해있는 회사의 비즈니스에 맞는 방식을 선택해야 한다는 것을 의미한다. 그러면서 모니터링의 중요성에 대해 설명해준다. 2장부터는 실제로 어플리케이션 메트릭에 대한 설명을 자세하게 해준다. 메트릭은 어떤 종류가 존재하고, 이 중에 어떤 메트릭을 수집해야 하는지 등에 대한 설명을 한다. 그러면서 자바로 어떻게 구현할 수 있는지에 대해 설명한다. 3장에서는 Observability 에 대해서 설명하면서 분산추적과 샘플링에 대한 설명을 한다. 4장에서는 이제 차트에 대해서 설명하면서 어떤 차트를 어떻게 사용하면 좋을지 이야기해준다. 5장은 CI/CD 에 대한 이야기로 가장 인상 깊었던 내용은 CI 의 경계를 지정하라는 부분이다. 개인적으로도 개발할 때 CI/CD 의 경계가 모호하다는 생각을 자주 하곤 했어서 그런 것 같다. 6장은 린트와 라이브러리 버전 등에 관한 이야기를 하고 있다. 7장에서는 배포시에 어떤 전략을 쓰는지 설명한다.

 

요즘 모니터링에 대해서 관심이 많아서 그런지 책 자체의 내용은 흥미로웠다. 단순히 도구(프로메테우스 등) 사용법만을 이야기하는 것이 아니라, 어떤 방식으로 어플리케이션을 모니터링해야하는지, 어떤 점이 중요한지 등을 알 수 있어서 좋았었던 것 같다. 자바로 개발하는데 모니터링에 대해서 아직 접하지 않은 개발자라면 이 책을 읽어보길 추천한다. 

마이크로서비스(microservice)라는 용어는 마틴 파울러와 제임스 루이스가 최초로 제안했으며, 블로그(https://oreil.ly/ejm5V)에 다음과 같이 아키텍처를 정의했다.

"마이크로서비스는 소프트웨어 애플리케이션을 독립적으로 배포 가능한 서비스군으로 설계하는 특정한 방식이다. 이러한 아키텍처 스타일을 명확하게 정의 할 수는 없으나 비즈니스 수행에 따른 조직, 자동화된 배포, 엔드포인트 인텔리전스, 프로그래밍 언어와 데이터 제어의 탈중앙화 등 다양한 면에서 공통적으로 보이는 뚜렷한 특성을 지닌다."

이 책은 자바 마이크로서비스를 안정적으로 구축하고 배포하는 방법을 단계적으로 설명합니다.

마이크로 서비스를 도입하면 애플리케이션은 여러 컴포넌트로 분리되고 각기 다른 팀이 독립적으로 개발하고 배포 할 수 있습니다. 소프트웨어 개발 속도는 빨라지지만 대규모 릴리스 일정을 수립하고 조율할 필요성은 감소하게 됩니다.

각 마이크로서비스를 담당하는 팀은 서로 독립적이며 자신의 고객에게 필요한 비즈니스 요건에 대응합니다. 마이크로서비스는 각기 다른 클라우드 리소스에 수평적으로 조절된 규모로 다중 배포되며 네트워크 상의 다양한 프로토콜을 이용해 서로 통신을 합니다. 

마이크로 서비스 아키텍처는 기존의 모놀리식 애플리케이션에서 볼 수 없었던 많은 제약들을 가능하게 해줍니다. 

그러면 이 책에 대해서 좀 살펴보겠습니다.

1장은 엔지니어링 관리자의 행동 강령을 다룹니다. 이들은 신뢰성 높은 애플리케이션 플랫폼을 구축하고 플랫폼 엔지니어링팀의 효율성을 높이는 것입니다.

2장은 메트릭과 관측에 대해 소개합니다.  분산 시스템의 성능을 측정하고 사전에 위험을 알리는 방법에 주목하며 현업에서 모범 사례로 채택된 몇 가지 기법들에 대해서 알아봅니다.

3장 관찰 가능성과 디버깅, 관찰 가능성 신호는 신호가 지닌 가치에 따라 가용성에 기여하는 부류와 디버그 가능성을 높이는 부류로 나뉩니다. 

4장에서는 모든 자바 마이크로서비스에서 모니터링해야 할 가용성 신호와 관찰 도구에 대해서 살펴봅니다. 스프링부트 같은 자바 프레임워크는 유용한 가용성 신호들을 내장합니다. 

5장 멀티클라우트와 지속적 전달의 안전성, 클라우드와 핵심 개념, 플랫폼의 종류, 각각의 고유한 패턴을 소개합니다. 

6장은 자신의 코드베이스와 의존성을 이해하는 데 사용할 수 있는 프레임워크와 특수한 솔루션을 제공합니다. 

7장에서는 프로덕션 환경에 배포된 서비스의 상호작용을 살펴봅니다. 서비스 상호작용과 아키텍처 역학에 관한 모든 주제에 대해서 다룹니다.

마치며

- 이 책은 자바 마이크로서비스를 안정적으로 구축하고 배포하는 방법을 단계적으로 안내하는 실무 지침서입니다. 

특히 자바 마이크로 서비스 구축시 애플리케이션이나 소스 코드의 모니터링에 대해서 생각해 본적이 없었는데  이 책을 통해서 좀 더 폭넓게 다가 갈 수 있는 시간이 되었던 같습니다. 

 

 

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

 

 

한빛_SRE 표지 20220330_193458.jpg

 

 

 

백엔드 서비스 개발 시, 마이크로서비스 아키텍처 도입을 많이들 고려한다. 

때로는 다시 모노리틱으로 회귀하기도 하고 무늬만 마이크로서비스인 경우도 많다.

 

 

 

다양한 이유가 있겠지만 개발의 어려움보다는 운영과 유지보수의 난해함 때문도 분명 있을 것이다. 

기존보다 더 복잡해진 모니터링 이슈가 대표적일 것이라고 생각한다.

 

 

 

코드 몇 줄이면 유용한 오픈소스를 손쉽게 사용할 수 있지만 막상 도입해도 어떻게 활용해야하는지 잘 모르는 경우도 많다. 

나 또한 마이크로서비스를 위해 많이들 추천하는 툴을 사용해봤지만 정작 그 데이터가 의미하는 것을 정확히 모르는 경우가 많았다.

 

 

 

이 책은 어렵고 지루하다. 하지만 앞서 설명한 문제를 경험해 보았거나 어떤 식으로 시작해야할 지 아예 감이 없다면 큰 도움이 되는 것 같다. 분명한 건, 백엔드 개발자라면 반드시 한 번 읽어보아야 할 내용이라고 생각한다.

 

 

 

기업이라면 상용 모니터링 툴을 사용하거나 모니터링을 전담하는 조직이 있을 수도 있다. 

이 책에서 언급하는 구글이나 넷플릭스와 같이 SRE를 전담하는 조직이 아닌, 개발팀의 백엔드 개발자가 굳이 이런 내용을 다 알아야 할까 싶지만 내 생각에는 한 번쯤 봐두면 좋고 흥미가 생긴다면 좀 더 딥다이브를 해보기를 권한다. 

난 필요는 느꼈지만 흥미는 느끼지 못해서 지식 습득 차원에서 읽기만 했다.

 

 

 

백엔드 개발을 한다면 분명 언젠가 한 번은 당면하게 되는 문제일 것이다. 특히 기존의 모노리틱과 다르게 마이크로서비스 아키텍처를 조직이 택하게 된다면 반드시 맞닥드릴 문제라고 생각한다.

 

 

 

한국에서 백엔드 개발 대부분을 자바 스프링으로 하는 만큼 이 책에서 예시로 하는 스프링 코드는 감을 잡는데 매우 좋을 것이다.

그러나 쿡북이나 워크북 개념은 아니기 때문에 즉시 활용한다기 보다는 가이드를 제공한다는 것이 더 맞을 것 같다. 

모니터링이라는 영역의 실전형 이론서 같은 느낌이라 생각한다. 구글링으로 개발하는 시대에 가이드만 어느 정도 알아도 어떻게든 목적지에는 도달할 수 있다. 

 

가이드 자체 감을 못잡는 것이 문제다. 

이 책은 분명 최소한 그 정도는 해주며 좀 더 심도 있게 읽으면 더 많은 것을 배울 수 있다고 생각한다.

 

마이크로서비스를 기준으로 하기 때문에 컨테이너 배포에 대해서는 어느 정도 경험이 있으면 책을 더 잘 활용할 수 있을 것이고, 저자가 넷플릭스 출신이라 그런지 스피네커 등 넷플릭스의 오픈소스 도구를 기준으로 설명하기 때문에 이러한 부분도 간접적으로 경험하고 공부할 수 있다.

 

 

마이크로서비스는 백엔드 개발자라면 분명 언젠가는 개발하게 될 것이다. 

컨테이너, 클라우드가 당연시 되고 있는 요즘이라면 업계 표준이 되는 것도 시간 문제라고 생각한다. 

그리고 그런 상황이라면 마이크로서비스의 모니터링에 대해서 많은 요구가 있을 것이고 거기에 이 책은 충분히 초석을 다져줄 것이다.

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

KakaoTalk_20220329_111945748.jpg

 

이번 책은 안정적인 자바 마이크로서비스를 구축하고 배포하는 방법에 대해 단계적으로 배울 수 있는 책이다.
서비스를 구축하면서 여러 시행착오를 거치게 된다.
이 과정에서 여러 경험을 쌓고, 이를 위한 대응 방법을 배우게 된다.
이 책은 저자가 넷플릭스에서 근무하면서 얻은 여러 경험을 토대로 내용을 소개한다.
 
이 책은 총 7장으로 구성되어 있다.
첫번째 장에서는 이 책의 내용에 본격적으로 들어가기에 앞서 알아야할 여러 기본 용어들과 기본 개념을 소개한다.
두번째 장에서는 애플리케이션 메트릭에 관련한 주제로 메트릭과 관련된 개념과 설정, 사용방법 및 이를 통해 어떤 내용을 분석할 수 있는지 단계별로 알아본다.
세번째 장에서는 분산 추적과 기법, 로깅을 통해 마이크로서비스를 관찰하는 방법을 알아본다.
네번째 장에서는 메트릭 정보를 시각화하고 경고(알림)을 구축하는 방법을 배우는데, 대시보드를 통해 시스템의 안정성을 모니터링하여 서비스들이 어떤 방식으로 작동하는지 이해할 수 있다.
다섯번째 장에서는 클라우드의 개념과 플랫폼 종류 및 여러 패턴에 대해 배울 수 있는데, 이를 활용한 안정적인 배포 시나리오를 설계할 수 있도록 도와준다.
여섯번째 장에서는 소스 코드의 의존성을 관리하는 방법을 알아본다.
일곱번째 장에서는 MSA 환경에서 장애와 성능 저하를 관찰하고 대비하는 방법으로 로드밸런싱과 여러 전략 패턴을 통해 대비하는 방법을 알아본다.
 
이 책을 모두 읽어보니, 점점 대규모로 커지는 서비스들을 어떻게 안정적으로 운영할 수 있는지에 대해 생각해볼 수 있었다.
최근 진행한 프로젝트에서 안정적인 배포를 위해 블루그린 배포와 롤링 배포 방식을 적용하였었다.
내가 알고 있었던 배포 패턴들을 좀 더 깊이 있게 공부해볼 수 있어서 도움이 되었고, 잘 모르고 있던 여러 전략과 기법들을 단계적으로 공부해볼 수 있었다.
특히 실무에서 접해보거나 들어보았을 여러 용어들도 이 책에서 소개하기 때문에 어려움없이 공부해볼 수 있다.
안정적인 MSA로 구축된 애플리케이션을 구축하고 운영하는 방법을 알아가보고 싶은 분들에게 추천한다.

SRE의 본원지는 구글이지만, 넷플릭스에서 그들의 독창적인 조직 문화와 추구하는 지향점을 녹여낸 독특한 SRE 활용법을 다룬 도서가 세상에 빛을 보게 되었다. '자바 마이크로서비스를 활용한 SRE'라는 책이 바로 오늘의 주인공이다. 넷플릭스는 AWS로 모든 인프라를 마이그레이션 하고 나서 혹독한 대가를 치르는 과정을 거쳤다. 그것도 클라우드 플랫폼에 인프라를 그냥 이전한 것이 아니라 MSA 구조로 근본적인 변화를 가하고 쇄신을 꾀하는 절차가 포함되었다. 그러나, 클라우드 환경에 모든 자원이 이관되었다고 해서 예상한대로 애플리케이션이 동작한다고 생각하면 큰 오산이다. 예기치 못한 숱한 변수와 난관이 도처에 도사리고 있으니, 클라우드 세계에 존재하는 애플리케이션은 잘 운영되면 천국을 맞이하지만 그렇지 못한 경우에는 지옥을 맛보게 되는 극한 상황에 내몰릴 수 밖에 없는 숙명을 갖게된다. 

 

 

 

이러한 현실 속에서 넷플릭스는 애플리케이션의 강건함을 보장하는 다양한 방법을 모색했고, 이른바 '카오스 엔지니어링' 기법을 활용하여 인프라의 가용성과 신뢰성을 보증하기 위한 패러다임의 변화를 주도했다. 거기에 더하여 넷플릭스 조직의 독특한 문화에 기반한 SRE를 활용하여 다양한 장애를 사전에 대비하고 여럿 이슈에 대응하며 트러블슈팅할 수 있는 시스템을 갖추게 되었다. 

 

이 책에서 꽤 많은 분량으로 다뤄진 주제는 바로 '애플리케이션 메트릭'이다. 애플리케이션의 상태를 다양한 각도와 여러 관점에서 바라보며 애플리케이션이 장애를 맞이하거나 이슈를 토해내는 지점을 명확하게 파악할 수 있는 노하우를 자연스레 터득하게 된다. 자바 애플리케이션을 기반으로 하기 때문에 자바 소스 코드를 이해할 수 있는 기본적인 역량이 필요하지만, 수많은 예시와 실질적인 지침들은 독자들에게 명쾌한 애플리케이션 운영의 첩경으로 인도하게 된다. 프로메테우스 같은 애플리케이션 모니터링에 익숙하지 않은 경우엔, 내용 자체가 다소 무겁게 다가올 수 있으나 어떠한 메트릭을 통해 애플리케이션의 상태를 가늠할 수 있는지에 대한 감을 익히는 것만으로도 큰 도움이 되지 않을까 생각한다. 

 

이윽고 차트의 중요성에 대해 이 책은 서술하고 있으며 차트라는 유용한 도구를 통해 어떻게 하면 좀더 효율적인 결과를 획득할 수 있는지에 대한 유용한 팁을 얻을 수 있게 된다. 계속해서 클라우드 환경에서의 CI를 보다 안정적으로 활용할 수 있는 내용을 함께 다루며, 소스코드에 대한 관찰 가능성, 트래픽 관리 등을 통해 SRE가 지향하는 가치를 온전히 실현하고 실천할 수 있는, 둘도 없는 중요한 가이드를 여실히 제공 받게 된다.  

 

전반적으로 내용 자체가 꽤 무겁게 느껴질 수 있지만, 인내심을 갖고 끝까지 책을 읽어 나간다면 분명 적지 않은 소득을 얻을 수 있는 도서임엔 틀림 없다고 생각한다. SRE에 관심이 있거나, 클라우드 환경에서 자바 애플리케이션을 운영하고 있는 개발자, 운영자들에게 이 책을 적극 추천한다. 

 

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


 

 

한 줄 요약 : 서비스 출시 후 발생 가능한 문제와 자바 기반 시스템에서의 대응 노하우를 모아놓은 책

 

 


시간과 노력을 들여 서비스를 개발한 뒤 고민이 생기게 된다. 내부, 외부적인 요인에 의해 발생되는 서비스 불능(장애) 상황을 만나게 되기 때문이다. 완벽한 시스템이란 불가능에 가깝다. '미니멈의 법칙'처럼 약점이 있기 마련이다.

 

이런 상황에서 개발자/관리자는 발생 가능한 장애 상황을 내다보고 예방하거나, 이미 문제 상황이 발생한 뒤라면 같은 상황을 피하기위해 수정해야 한다. 어떻게하면 예방할 수 있을까? 경험이 많은 담당자라면 과거에 겪었던 비슷한 경우를 떠올려서 조치할 수 있다. 하지만 경험한 적 없던 문제라면? 또는 그럴만한 경험이 없다면 어떻게 해야 할까?

 

그런 고민에 대한 도움을 얻을 수 있는 책이 '자바 마이크로서비스를 활용한 SRE'다.

자바 마이크로서비스를 활용한 SRE

일반적인 예방법은 문제 상황과 관련된 지표들을 대시보드로 구성해서 관찰하고 대응하는 것이 일반적이다. 그렇다면 대시보드를 어떻게 구성하는게 좋을까? 정답은 없다. 구성원의 상황, 회사 내부의 상황, 담당자의 성향에 따라 모두 다르기 때문이다. '자바 마이크로서비스를 활용한 SRE'에서는 여러 상황을 가정하고 장점은 무엇인지, 단점은 무엇인지 설명을 하며 본문을 시작한다.

 

 

그리고 어떤 상황에서 어떤 타입의 지표를 설정해야하는지 소개하고 있다. 같은 데이터라도 담당자에게 알려주는 방법에 따라 그 전달 효율이 크게 달라지기 떄문이다. 책 제목에서처럼 '자바 마이크로서비스' 환경을 기준으로 하고 있지만 JVM(Java Virtual Machine), 자바 언어에 종속적인 기술을 걷어내고 보더라도 크게 문제는 없을것 같다. 인프라는 한정된 자원을 언제 어떻게 배치하고 운용할지에 대한 방법론이라고 생각하기 때문이다.

 

단일 서비스라고 하더라도 그 서비스를 운영하기 위해 지원하는 시스템들이 많다. 여러 모듈이 긴밀하게 동작하기때문에 이 환경을 구성하는것 자체가 서비스보다 더 복잡한 상황이 생기기도 한다. 저자도 같은 경험을 한 것인지 책의 '7장 트래픽 관리'에서 그에 대한 내용을 다루고 있다. 책을 읽어보며 이 장이 책에서 가장 알짜처럼 느껴졌다. 트래픽으로 인한 장애는 서비스가 일정규모 커지지 않는 이상 경험해보기 어렵기 때문이다. 책을 통해서라도 어떤 부분을 고려해야 하는지 힌트를 얻을 수 있었다.

 

7장 트래픽 관리

 

세상엔 다양한 개발 방법론이 생겨나고 사라지고 있다. '자바 마이크로서비스를 활용한 SRE' 책을 활용하는 가장 좋은 방법은 저자가 이야기하는 방법론(노하우)이 왜 만들어지고 사용하게 되었는지 고민해보며 읽는 것이다. 물론 개발중인 서비스에 테스트해보고 적용한다면 더 없이 좋을 것 같다.


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

리뷰를 위해 한빛미디어에서 책을 제공받았지만 주관적인 생각을 그대로 적었습니다.


이 글은 2022년 3월 한빛미디어에서 진행하는 <나는 리뷰어다> 프로그램에 참여하게 되어 책을 제공받아 글을 작성하였습니다.


2022년 현재 많은 기업은 MSA라고 불리는 아키텍처 스타일로 서비스를 구축하거나 모노리틱 아키텍처 구조에서 MSA로 전환하는 과정에 있다. 그렇다면 MSA는 과연 어떠한 장점이 있어서 많은 기업들이 전환을 하거나 해당 아키텍처 스타일로 서비스를 만드는 것일까?


이유는 간단하다. 서비스가 커지면서 다양한 도메인이 나오게 될 것이며 개발팀, 기획팀으로 나누어지던 팀 단위가 각각의 도메인 별 혹은 서비스 별로 나누어지면서 관리를 하게 될 것이다. 그 과정에 있어서 모놀리틱 아키텍처 구조를 사용하여 서비스 개발을 하게 된다면, 다른 팀과 협업을 하는 일이 엄청나게 많아질뿐더러 다른 서비스 기능의 장애로 인해 소속된 팀의 서비스가 장애가 일어날 수 있다.

그렇기 때문에 많은 회사들이 현재 모놀리틱 아키텍처 구조에서 MSA로 전환하고 있다.


그렇다고 MSA 구조에 장점만 있는 것은 아니다.  MSA형태로 전환하기 위해서는 해당 도메인을 정말 잘 알고 있는 전문가가 있어야하며, 유지보수의 난이도가 증가한다.


이 책에서는 자바 마이크로서비스를 활용하여 서비스를 배포, 운영한 기업의 사례들을 소개하면서, 서비스를 안정적으로 관리하는 방법에 대해서 소개한다.

 

책 소개


자바 마이크로서비스를 활용한 SRE(출처: 한빛 미디어)

이 책은 자바를 사용하여 MSA를 안정적으로 서비스를 구축 및 배포, 운영을 할 수 있도록 단계적으로 안내하는 책으로써, MSA를 사용하는 는 기업의 SRE 사례들도 소개하고 있다.

예상 독자


이 책은 Java을 사용하여 서비스를 운영하는 팀 전체가 읽으면 아주 좋은 책이다.

물론 완전한 주니어가 읽기에는 다소 어려운 책인 거 같지만, 배포 경험이 있고 자바 경험이 있다면, 한번씩은 읽으면 좋을 책이다.

1. Java 개발자
2. MSA로 전환 예정인 Java 개발자
3. Java MSA로 구축한 서비스를 적용하고 싶은 엔지니어

 

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

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

 

 이 책에서는 SRE(Site Reliability Engineering, 사이트 신뢰성 공학)를 운영이라 불리던 작업을 소프트웨어 엔지니어가 맡으면 발생하는 일이라고 표현을 하고 있습니다. 스프링부트 프레임워크를 사용하여 어떻게 배포하고 프로덕션을 어떻게 모니터링 하는지에 대해 자세하게 설명합니다. 스프링부트는 마이크로미터 메트릭, .jar 배포, 액추에이터 엔드포인트 관리, 애플리케이션 라이프 사이클 이벤트, 12팩터 스타일 설정 등을 손쉽게 통합할 수 있습니다. 스프링 클라우드는 스프링부트 마이크로서비스 아키텍처를 지원하기 위해 고안된 확장들의 집합입니다. 스프링부트는 컨테이너 네이티브여서 우아한 종료, 헬스 그룹, 활성, 준비성 프로브, 도커 이미지 생성 등을 모두 지원합니다. 이 책의 저자인 조너선은 차원형 메트릭 프레임워크인 마이크로미터 프로젝트를 창시했고 이는 다양한 메트릭과 모니터링 플랫폼을 지원한다고 말합니다. 또한 스프링부트의 액추에이터 모듈과 더불어 수많은 서드 파티 오픈 소스 프로젝트에 쉽게 통합됨을 알려주고 있습니다. 

 

 SpringBoot 프레임워크를 활용해서 코드 수준에서 SRE가 가능한지 처음 알았습니다. 회사에 인프라나, 컨테이너 수준의 모니터링은 구축되어 있지만, 애플리케이션, 코드 수준의 모니터링의 구성에 대해서도 한번 생각해볼 수 있는 책입니다. 

 


[도서 소개]

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


자바 마이크로서비스를 안정적으로 구축하고 배포하는 방법을 단계적으로 안내하는 실무 지침서다. 플랫폼 엔지니어가 고도로 탄력적인 자바 애플리케이션을 구축할 수 있도록 기술적·조직적으로 적용해야 하는 일련의 과정을 점진적으로 배워나간다. 또한 마이크로서비스 도입을 선도하는 여러 기업의 성공적인 SRE 모범 사례도 소개한다. 수많은 시행착오로 검증한 실전 대응 기법이 적용된 예제 코드로 마이크로서비스 도입의 핵심을 꿰뚫어보는 시각을 얻어 훌륭한 엔지니어로 거듭나기 바란다.


[대상 독자]

- 마이크로서비스 아키텍처

- 소프트프트웨어 엔지니어

- 자바 마이크로서비스로 구축한 서비스를 안정적이고 신뢰성 있게 적용하고 싶은 엔지니어


[주요 내용]

-  애플리케이션 메트릭: 마이크로미터를 이용한 가용성 모니터링

- 관찰 가능성과 디버깅: 로깅, 분산 추적, 실패 주입 테스트

- 차트와 경보: 자바 마이크로서비스 핵심 지표 차트 구축

- 안전한 멀티 클라우드 전달: 스피나커, 배포 전략, 카나리 분석 자동화

- 소스 코드 관찰 가능성: 종속성 관리, API 활용, 엔드투엔드 자산 인벤토리

- 트래픽 관리: 시스템 동시성, 플랫폼, 게이트웨이, 클라이언트 측 로드 밸런싱


[이 책의 특징]

- 넷플릭스의 SRE 특징 및 장점부터 모니터링, 관찰 기능성까지 모두 담았다.

- 넷플릭스만이 가진 SRE특징을 친절하고 상세한 추가 설명으로 원서 내용을 부족함 없이 가득 채웠다.

- 이해를 높이기 위해 직관적인 그림과 다양한 색으로 구분된 코드를 제공한다.


[서평]

이 책은 자바 마이크로서비스를 안정적으로 구축하고 배포하는 방법을 단계적으로 상세하게 설명하고 있다. 매 장마다 설명은 기능 순서대로 하고 이전 장에서 배운 내용을 바탕으로 다시 내용이 추가되면서 진행이 된다. 전체적으로 크게 5단계로 구분 된다.


  1. 서비스 가용성을 측정하고 모니터링한다.

  2. 디버그 가능성 신호를 추가하고 장애 기간에 대한 정보를 파악한다.

  3. 소프트웨어 전달 파이프라인을 개선하고 장애 확산을 방지한다.

  4. 배포 자산의 상태를 소스 코드 수준까지 관찰할 수 있는 기능을 구축한다.

  5. 트래픽 관리 기능을 서비스 가용성을 원하는 수준까지 향상 시킨다.


완벽한 시스템을 구축하거나 장애를 완전히 제거하는 것이 아니지만, 시스템의 신뢰성을 고도화 시키는 동시에 수확 체감 영역에서 허비되지 않도록 방지하는 것이다. 


수확 체감 방지는 효과적인 측정 및 모니터링을 구현하는 핵심 목표이다. 여러 원리 중 가장 먼저 설명하는 이유가 여기에 있다. 


1장은 엔지니어링 관리자의 행동 강령을 다룬다. 이들의 사명은 신뢰성 높은 애플리케이션 플랫폼을 구축하고 플랫폼 엔지니어링팀의 효율성을 높이는 것이다. 이 책을 제대로 읽기 위한 사고의 틀을 갖출 수 있다.


2장은 메트릭과 관측에 대해서 소개한다. 2장의 개념이 명료하게 표현될 수 있었던 것은 조너선 슈나이더가 마이크로미터의 창시자이기 때문이다. 2장부터 4장까지 읽다 보면 어떻게 시간이 지나가는지 모르게 몰입할 수 있게 설명하고 있다. 


5장은 클라우드와 핵심 개념, 플랫폼의 종류, 각각의 고유한 패턴에 대해서 소개하고 있다. 5장은 지속적 전달(CD), 카나리 분석 등에 대한 혁신적인 내용으로 발전하면서 배포 스크린트에서 결과가 완성이될것이다. 


6장은 자신의 코드베이스와 의존성을 이해하는데 사용할 수 있는 프레임워크와 특수한 솔루션을 소개한다. 이러한 모든 관심사를 종합적으로 표현한 프레임워크를 경험 할수 있다.


7장은 프로덕션 환경에서 배포된 서비스의 상호작용을 살펴보면서 책을 마무리 한다. 여기까지 오면 소프트웨어를 프로덕션으로 가져오는 방법과 서비스 및 해당 소스코드를 관찰하는 방법을 배울 수 있다. 7장은 서비스 상호작용과 아키텍처 부하의 역학에 관한 모든 주제를 다루고 있다.


각장마다 새로운 주제에 대해서 배웠다. 이 책은 엔지니어를 대상으로 1장의 행동 강령을 실현하기 위한 청사진을 제시한다. 상세한 기법과 조언을 제공하기 위해 이 책이 다루는 영역은 자바 마이크로서비스에 한정된다. 검증된 측정 기법, 코드 예제, 자바 가상 머신 특유의 의존성 관리 등을 설명한다. 

 

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


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

 

제목 : SRE with Java Microservices, 자바 마이크로서비스를 활용한 SRE


리뷰 요약

개발을 넘어 운영에 대해 조금 더 지식을 얻고싶다면,

지금은 아니더라도 운영을 마주하게 된 먼 미래의 내가 걱정된다면,

대기업은 어떤식으로 운영을 하는지 궁금하다면

이 책을 읽어보자!


이 서적의 핵심

 

1. SRE,

상당한 스케일링이 가능하고

상당히 신뢰할만한 소프트웨어 시스템을 만드는 것

을 목적으로 하는 공학

 

- 간단하게 좋은 소프트웨어(또는 시스템)을 만들 때

어떻게 운영하는가에 대해 말하는 학문으로 '운영을 배우기 위한' 사람 뿐 아니라

'운영에 관심이 있는' 사람들이 읽어도 충분히 재미를 느낄 수 있다고 생각됨.

 

 

2. 전문적인 용어(카오스 엔지니어링, 코드형 설정, 서비스 메시 등)이 많이 나오지만

필요없는 내용이라면 간략하게 언급 후 넘어가고 필요한 내용이면 간단한 설명 후

내용을 이용가는 자연스러운 방식

 

- 컴퓨터 공학에 관련된 정보들을 어느정도 얕고 넓게 알고있다 생각했지만

전문적인 공학책을 볼 때마다 '우물 안 개구리'라는 것을 느끼게 하는 전문적인 용어 사용과

'이정도는 알고 있겠지?'라는 듯한 분위기로 서술된 서적들이 많았지만 이 책은 모르는 용어를

어느정도 이해할 수 있을만큼 설명하고 점점 살을 붙여 재미를 부여하는 방식이기에

가볍고 재미나게 읽어나갈 수 있었음.

 

 

3. 2~3장은 다양한 형태의 '모니터링' 도구에 대해,

4~5장은 경고와 시각화를 통한 촉진된 데이터를 효과적으로 이용한는 방안에 대해,

6장은 전체적인 코드 관찰 방법에 대해 이야기 함.

7장(마지막 장)은 프로젝트 단위로 설명하는 코드가 많아

앞 장까지 설명했던 내용을 지침삼아 따라갈 수 있도록 구성되어 있음

 

- 7장 전까진 코드 단위, 특정 기법 단위로 설명하기 때문에

읽고싶은 부분만 읽어도 상관없지만

마지막장은 앞장을 읽어봤다는 전제 하에

프로젝트 단위로 설명하는 코드로 구성되어있음

 

 

4. 플랫폼 엔지니어링팀의 공통 관심사는 이 책에서 다루지 않음

 

- 테스트 자동화, 카오스 엔지니어링과 지속적 검증, 코드형 설정 등

이미 오픈 소스가 확고히 자리 잡은 분야이고 투자대비 수익이 날 가능성이 높지 않기 때문이라고 함



5. With Java


- Java에서 가장 많이 활용되는 Spring 코드를 예로 들기 때문에

Spring을 활용해본 Java 개발자라면 코드에 크게 거리낌이 없음.


마무리

 

'운영' 또는 '서비스'에 관심이 없다면 처음 들어봤을 용어들에 대해 설명하지만 확실히 와닿지는 않는다.

'메트릭'과 같은 주요 용어지만 처음 접한다면 지속적으로 들어도 확 와닿지 않는 용어들이 있어 이해가 어렵고

'로그', '디버깅' 과 같은 반가운 언어들이 등장할 땐 전체적인 문맥이 어려워 확 와닿지 않는다.

하지만 스프링에서 사용되는 코드를 예로 들거나 차트, 그림을 활용해 최대한 쉽게 설명하려고 하기 때문에 필요한 부분을 반복적으로 읽거나 특정 주요 용어에 대해 확실하게 학습한다면 내용의 전체적인 이해 난이도도 낮아질것 같다고 생각된다.

'구글에서 시작한 SRE가 저자가 근무했던 넷플릭스에선 어떤식으로 적용 되었는가?'라는 내용으로 진행되는데 '구글', '넷플릭스' 라는 대기업들도 서로 다른 운영방식으로 구성하기 때문에 이 서적을 읽는 다른 기업들도 필요한 부분을 적용하고, 만약을 대비해 읽어두면 좋을 내용들로 구성된 것 같다.


사실 운영을 맡게 되는 관리자가 아닌 이상에야 관심을 가지지 못하는것은 사실이고, 누군가가 '이건 왜 안쓰나요?' 라고 물어봤을 때 '잘 돌아가면 됐지 이런게 꼭 필요한가?'라고 생각하는게 당연할 수 있다고 생각한다.

하지만 '꼭' 필요한 것은 아니어도 만약을 대비해,

알 수 없는 미래에 대비해 한번쯤은 읽어보면 좋을 서적이 아닐까 싶다.



 

KakaoTalk_20220323_220612594.jpg

 

 

이 책은 자바 언어를 사용하여 개발한 애플리케이션을 개발하고 운영한 사례를 소개하면서 이 서비스를 안정적으로 관리하는 방법을 소개합니다.

개발과 운영까지의 프로세스를 100으로 본다면, 개발 단계는 20, 운영 단계가 80 정도의 비중을 차지합니다.

그만큼 운영에 소요되는 비용이 많고 신경써야할 부분이 많다는 것입니다.

 

아무리 잘 만든 애플리케이션이라도 관리가 적절하게 진행되지 않는다면 좋은 서비스 수준을 제공하지 못합니다.

특히 서비스의 규모가 커지고 연동되는 모듈이 많아질수록 그렇습니다.

 

이 책에서는 그런 문제들을 해소하는 방법이 아닌 예방하는 방법을 소개하고 있습니다.

'이런 문제들을 예방하기 위해 이런 방법들을 적용하는 것이 좋다'의 나열이며, 의외로 구체적인 솔루션까지 제안하는 경우가 있습니다.

하지만 애플리케이션의 특성에 따라 적용해야 하는 방법은 다르기 때문에 좀 더 범용적인 사례들을 소개하고 있으며, '어떻게'는 독자가 연구해야 합니다.

당연한 부분이기 때문에 제시된 가이드 만으로도 큰 도움이 된다고 생각합니다.

 

이 책에서는 크게 5가지의 내용을 소개하고 있습니다.

- 모니터링

- 디버깅

- CI/CD 파이프라인

- 코드 수준 관찰

- 트래픽 및 서비스 가용성

 

큰 틀에서는 모두 연관된 내용이며, 모두 신뢰성 공학(SRE)을 기반으로 하고 있습니다.

 

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


 


 

이 책은 한 마디로, __ 입니다.

Java 기반의 애플리케이션을 운영하는 팀을 위한 AtoZ 가이드북입니다.

이 책은 __ 인/한 사람들에게 추천하고 싶습니다.

이 책은, 책의 타깃이 SRE activities이다 보니 기본적으로 엔터프라이즈 레벨의 Java 애플리케이션을 개발 및 운영하는
개발팀을 위한 책입니다. 하지만, 저 개인적으로는 모든 Java 개발자가 읽어 보아도 좋을 것이라 생각합니다.
애플리케이션이 "정상인 상태"를 어떻게 정의하는지를 확인하는 과정에서, Java 애플리케이션의 특성에 대해
이해하는 기회를 제공하기 때문입니다.  CPU, Memory, healthcheck 200으로만 상태를 확인하는 과거의 망령은 물러나라!

이 책을 통해 __ (한) 정보를 얻어가실 수 있습니다.

이 책의 독자께서는, Java 애플리케이션에 특화된(하지만 많은 내용이 Java에 한정되지 않습니다) SRE activities의 개념과
실천에 대한 지식을 얻어 가실 수 있겠습니다. 개인적으로는 소규모의 개발팀이 다같이 읽기에 정말 좋은 책이 될 거라 생각하는데요,
그 이유는 소규모 개발단에서 놓치기 쉬운, 서비스가 죽기 전 보내는 징조들을 소개해 주고 있기 때문입니다.
과거의 저도 마찬가지이고, 지금도 많은 회사들에서 일정 시간마다 REST endpoint로 healthcheck 요청을 날리고,
200 OK가 떨어지면 아무런 관찰을 하지 않습니다. 시계열 모니터링도 CPU utilization이 전부인 곳도 정말 많습니다.
전자나 후자나 뭔가 이상하다는 낌새가 느껴지고, 급하게 랩탑을 열 때 쯤이면
서버가 죽었거나, 응답이 밀릴 대로 밀린 상태가 되어 있습니다.

그런 가슴아픈 상황을 방지하고자 이 책에서는 "그 외"의 metric들과 이를 수집하는 방법
(Java 애플리케이션 및 인프라 환경에 맞는 메트릭용 태그를 안내한다든가)을 상세하게 가이드합니다.
그리고 장애상황을 설계단에서부터 방지할 수 있는 트래픽 분산형 아키텍쳐도 함께 제시합니다(이 부분이 엄청 상세하지는 않음)
읽으면서 저도 jvm을 겉핥기도 아니고 겉 블루투스 정도로만 써 왔다는 걸 잘 알게 되었습니다^^

총평

장시간의 전면 장애를 겪어 보면 SRE 활동이 얼마나 중요한지 깨닫게 됩니다.
장애 회고를 하면서 재발방지를 하자고 다짐을 하게 됩니다.
"뭘, 어떻게 모니터링할건데?"
회의실에 침묵이 찾아옵니다.
...라는 상황의 팀이라면 강력 추천합니다. 

이미 SRE 조직이 갖추어져 있고, 인력이 있다면 굳이 읽으실 필요는 없습니다.
다만, SRE에 대한 개념 자체가 흐릿한 경우라면 저 "뭘, 어떻게" 에 대한 기본 가이드라인을 제시해 줄 수 있는 책입니다.

이 서평은 한빛미디어 <나는 리뷰어다> 활동을 위해 책을 제공받아 작성된 서평입니다.
(도서는 제공받았으나 저자와는 어떠한 관계도 없으며, 서평의 내용은 모두 개인의 의견으로 작성되었습니다.)


결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
자바 마이크로서비스를 활용한 SRE
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
자바 마이크로서비스를 활용한 SRE
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
자바 마이크로서비스를 활용한 SRE
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실