본문 바로가기

엔지니어링(TA, AA, SA)

[SRE] 사이트 신뢰성 엔지니어링 목차

1. 소개

  서비스 관리를 위해 시스템 관리자를 활용하는 방법

  서비스 관리에 대한 구글의 해법: 사이트 신뢰성 엔지니어링

  SRE의 신조

 

2. SRE관점에서 바라본 구글의 프로덕션 환경

  하드웨어

  하드웨어를 '조율하는' 시스템 소프트웨어

  기타 시스템 소프트웨어

  소프트웨어 인프라스트럭처

  개발 환경

 


원리와 원칙들

 

3. 위험 요소 수용하기

  위험 요소 관리하기

  서비스 위험 측정하기

  서비스의 위험 수용도

  에러 예산 활용

 

4. 서비스 수준 목표

  서비스 수준 관련 용어

  지표 설정

  목표 설정에 대한 실습

  협약에 대한 실습

 

5. 삽질은 이제 그만

  삽질의 정의

  삽질이 줄어들면 좋은 이유

  엔지니어링에 해당하는 업무는?

  삽질은 무조건 나쁜 것일까?

  결론

 

6. 분산 시스템 모니터링

  정의

  왜 모니터링해야 하는가?

  모니터링에 대한 적절한 기대치 설정하기

  증상과 원인

  블랙박스와 화이트박스

  네가지 결정적인 지표

  마지막 요청(혹은 실행과 성능)에 대한 고려

  적당한 측정 방법 선택하기

  더욱 단순하게가 아니라 최대한 단순하게

  지금까지 살펴본 원리들을 결합하기

  장기적 모니터링

  결론

 

7. 구글의 발전된 자동화

  자동화의 가치

  구글 SRE의 가치

  자동화의 사례

  스스로를 이롭게 하라: 몽땅 자동화하자!

  신의 한수: 클러스터 턴업의 자동화

  보그: 창고 크기 컴퓨터의 탄생

  신뢰성은 근본적인 기능이다.

  추천 사항

 

8. 릴리즈 엔지니어링

  릴리즈 엔지니어의 역할

  릴리즈 엔지니어링의 철학

  지속적 빌드와 배포

  설정 관리 기법

  결론

 

9. 간결함

  시스템의 안정성 vs. 신속함

  지루함의 미덕

  내 코드는 절대 포기하지 않을거야!

  '부정적 영향을 미치는 코드'의 지표

  최소한의 API

  모듈화

  릴리즈의 간소화

  간결한 결론


사례

10. 시계열 데이터에 대한 실용적인 알림

  보그몬의 탄생

  애플리케이션의 조작

  내보낸 데이터의 수집

  시계열 데이터를 위한 저장소

  규칙의 평가

  알림

  모니터링 토폴로지의 샤딩

  블랙박스 모니터링

  설정의 유지보수

 

11. 비상대기

  비상 대기 엔지니어의 삶

  비상 대기 업무의 균형 맞추기

  안전에 대해 고려하기

  부적절한 운영 부하에서 벗어나기

 

12. 효과적인 장애조치

  부정적인 결과의 마법

  사례 연구

  조금 더 수월하게 장애를 조치하기

 

13. 긴급 대응

  시스템에 문제가 생기면 어떻게 해야 할까?

  테스트로 인한 장애

  변경으로 인한 장애

  절차에 의한 장애

  모든 문제가 해결되었다.

  지난 일로부터 배우기, 그리고 반복하지 않기

 

14. 장애 관리하기

  미흡한 장애 관리

  미흡한 장애 처리에 대한 자세한 분석

  장애 관리 절차의 기본 요소들

  적절하게 관리한 장애 조치

  언제 장애를 선언할 것인가?

 

15. 포스트모텀 문화: 실패로부터 배우기

  구글의 포스트모텀 철학

  협업과 지식의 공유

  포스트모텀 문화 도입하기

  결론 및 지속적인 개선

 

16. 시스템 중단 추적하기

  에스컬레이터

  아우터레이터

 

17. 신뢰성을 위한 테스트

  소프트웨어 테스트의 종류

  테스트 및 빌드 환경 구성하기

  대규모 환경에서의 테스트

 

18. SRE 조직의 소프트웨어 엔지니어링

  SRE 조직의 소프트웨어 엔지니어링 역량이 중요한 이유

  Auxon 사례 연구: 프로젝트 배경 및 문제가 발생한 부분

  의도 기반 수용량 계획

  SRE 조직에서 소프트웨어 엔지니어링을 육성하는 방법

 

19. 프론트엔드의 로드밸런싱

  모든일을 힘으로만 해결할수는 없는 법

  DNS를 이용한 로드밸런싱

  가상 IP 주소를 이용한 로드밸런싱

 

20. 데이터센터의 로드밸런싱

  이상적인 사례

  양호하지 않은 태스크 구별하기: 흐름 제어와 레임덕

  서브셋을 이용한 연결 풀 제한하기

  로드밸런싱 정책

 

21. 과부하 처리하기

  '초당 쿼리수'의 함정

  사용자별 제한

  클라이언트 측에서의 사용량 제한

  중요도

  활용도에 대한 신호들

  과부하 오류 처리하기

  연결에 대한 부하

 

22. 연속적 장애 다루기

  연속적 장애의 원인과 그 대책

  서버 과부하 방지하기

  느긋한 시작과 콜드 캐싱

  연속적 장애의 발생 요인

  연속적 장애 테스트하기

  연속적 장애를 처리하기 위한 즉각적인 대처

 

23. 치명적인 상태 관리하기: 신뢰성을 위한 분산에 대한 합의

  합의는 왜 필요할까: 분산 시스템 간 협업의 실패

  분산에 대한 합의가 동작하는 방식

  분산 합의를 위한 시스템 아키텍처 패턴

  분산 합의의 성능

  분산 합의 기반 시스템의 배포

  분산 합의 시스템 모니터링

 

24. 크론을 이용한 분산된 주기적 스케줄링

  크론

  크론 작업과 멱등성

  대용량 시스템 내에서의 크론

  구글에서 구현한 크론 서비스

 

25. 데이터 처리 파이프라인

  파이프라인 디자인 패턴의 기원

  단순한 파이프라인 패턴을 적용한 빅데이터의 기본적인 효과

  정기적 파이프라인 패턴의 과제

  작업의 불균형 분산으로 인해 발생하는 문제

  분산 환경에서 정기적 파이프라인의 단점

  구글 워크플로우 소개

  워크플로우의 실행단계들

  비즈니스의 지속성 보장하기

 

26. 데이터 무결성: 내가 기록한 그대로 읽을 수 있어야 한다.

  데이터 무결성의 중요한 조건

  데이터 무결성과 가용성을 윻지하기 위한 구글 SRE의 목표

  구글이 데이터 무결성의 문제를 해결하는 방법

  사례 연구

  데이터 무결성과 관련된 SRE의 일반 원리들

 

27. 대용량 환경에서의 신뢰할 수 있는 제품 출시

  출시 조율 엔지니어링

  출시 절차 마련하기

  출시 확인 목록 개발하기

  안정적인 출시를 위한 기법들

  LCE의 개발 역량


관리

28. 비상 대기를 넘어 SRE의 성장을 촉진하기

  새 SRE를 고용했다. 이제 뭘해야 하지?

  최초의 학습 경험: 혼란을 방지하기 위한 구조의 사례

  스타 리버스 엔지니어와 즉흥적 사상가로 키워내기

  포부가 큰 비상 대기 엔지니어를 위한 다섯가지 원칙

  비상 대기를 넘어서: 통과 의례와 지속적 학습의 관례

 

29. 방해 요소에 대한 대처

  운영 업무 부하 관리하기

  방해 요소의 관리 방법을 결정하기 위한 요소들

  불완전한 머신

 

30. SRE를 이용해 운영 업무의 부담에서 벗어나기

  1단계: 서비스에 대해 배우고 컨텍스트를 이해하기

  2단계: 컨텍스트의 공유

  3단계: 변화를 주도하기

 

31. SRE의 의사소통과 협업

  의사소통: 운영 환경 회의

  SRE와의 협업

  SRE의 협업에 대한 사례 연구: Viceroy

  SRE 외 조직과의 협업

  사례 연구

 

32. SRE 참여 모델의 개선

  SRE의 도입: 의미와 방법, 그리고 이유

  RRR 모델

  SRE 도입 모델

  운영 환경 준비 검토: 간단한 RRR 모델

  간단한 RRR 모델의 발전: 조기 참여

  서비스 개발의 개선: 프레임워크와 SRE 플랫폼

 

33. 다른 업계로부터의 교훈

  업계 전문가에 대한 소개

  준비와 재난 테스트

  포스트모텀 문화

  반복적인 업무와 운영 오버헤드를 자동화된 방식으로 제거하기

  구조화되고 합리적인 의사 결정