[리뷰] SRE책
예전에 읽었는데 내용을 거의 다 잊어버려서 Introduction, Principles 파트를 다시 읽고 리뷰해 봤습니다.
요약이야 여기저기 좋은 자료가 있으니, 어떤 느낌의 책인지 리뷰를 공유합니다.
제품을 릴리즈하고 운영단계에서 애를 먹고 있으신 분들, SM으로 일하시는 분들, 또는 구글같은 큰 회사의 인프라와 엔지니어링 조직이 어떻게 운영되는지 궁금하신 분들이 읽어보시면 좋을 것 같아요.
—————————-
SRE 는 소프트웨어 생명주기에서 운영 및 개선에 대한 엔지니어링이다.
기존 SysAdmin 방식과는 다르게, SRE 는 소프트웨어 엔지니어에게 시스템 운영을 설계하려고 했을때 나타나는 방식으로 비유할 수 있다.
소프트웨어 엔지니어는 소프트웨어를 통해서 자동화 하는 방식으로 시스템을 운영하려고 한다.
효과적으로 의사소통하고 관리하고 개선하려면 데이터가 필요하다. SLI, SLO 를 정의한다.
리스크를 수용하고 신뢰성과 혁신 사이에 균형을 잡는다. 다시, 이것을 명시적으로 하기 위해서 에러 버짓이라는 개념을 도입한다.
시스템을 지속적으로 개선 하기 위해서 운영작업에는 최대 50%의 시간만을 쓰도록 제한한다.
이러한 SLI, SLO, 에러버짓 및 운영시간 제한 등의 장치를 통해서, 모든 활동이 시스템을 신뢰성있고 확장가능하며 효율적이도록 하는 SRE의 목적에 정렬되도록 인센티브를 설정할 수 있다.
SRE는 운영과 개선을 동시에 맡아, 운영 과정에서 얻은 지식을 다시 개선에 활용하는 되먹임 고리를 만든다.
SRE의 경험은 코드를 통해서 체계화 되고 프러덕트가 되었고, 거대해지는 인프라를 효율적으로 다룰 수 있게 되었다.
SRE가 사용하는 소프트웨어와 엔지니어의 활동이 높은 추상화 단계로 나아가는 동안, 책임과 관심사는 변하지 않았다.
리스크를 수용해야한다.
SLI, SLO 의 정의가 중요하다. 목적 없이는 평가도 관리도 할 수 없다. 이것으로 인센티브가 설계된다.
엔지니어링과 운영업무는 반반이어야 한다. 이를 통해 SREs 를 유치할 수 있고 SREs 를 통해 확장성의 레버리지를 달성 할 수 있다.
시스템의 규모와 인력이 상관관계를 가지면 안된다. 복잡도가 증가할 때만 인력이 증가해야 한다.
공통되는 문제(중복되는 엔지니어링 노력을)를 식별해 내고 이를 해결하기 위한 추상화된 소프트웨어를 제공하는 것으로 확장성을 달성해야 한다. (generic solutions, reproducible!)
감상
총 Introduction, Principles, Practices, Management 네가지 파트로 구성되어있다.
Introduction, Principles 는 추상적인 개념에 대한 소개, Practices, Management 조금 더 구체적인 실천사례를 다룬다.
전체 분량이 상당하다. Introduction, Principles 만으로도 핵심적인 개념을 알 수 있어서 분량이 부담된다면 이 파트만 읽어도 좋을 것 같다.
물론 뒤의 구체적인 실천 사례를 전부 읽은 후에 Introduction, Principles 를 다시 읽었을 때, 비로서 함의를 파악할 수 있다.
각 챕터별로 저자가 달라서 사용하는 용어와 문체가 미묘하게 달라서, 영어로 읽는게 조금 부담스러울 수 있다. (번역본 이라고 해도 문체를 통일시키지는 않았을 것 같다.)
여러 프로세스에 대해서 구체적으로 설명해줘서 (인원 구성방법, 템플릿), 여기서 얻을 수 있는 통찰이 있다.
조직과 프러덕트가 발전해 나가는 과정을 볼 수 있는데(GCP 와 쿠버네티스가 어떻게 탄생 했는지 상당해 볼 수 있다.),
일반적으로 소프트웨어가 발전해 나가는 방향에 더해서 엔지니어들의 행동의 인센티브를 설정하기 위한 전략들이 흥미롭다.