Site Reliability Engineering: 사이트 신뢰성 엔지니어링
책 좀 읽자

Site Reliability Engineering: 사이트 신뢰성 엔지니어링

본 포스팅은 UPF 2022SS를 통해 Jpub의 도서 'Site Reliability Engineering: 사이트 신뢰성 엔지니어링'을 무상제공받아 작성하였습니다.

Site Reliability Engineering: 사이트 신뢰성 엔지니어링

 

책을 읽기 전에 나는

백엔드 개발 직무로 취업을 준비하면서 여러 멘토분들, 이미 취업한 동기들로부터 많은 이야기를 들었다. 또, 시니어 개발자 분들이 많이 계시는 클럽하우스 내 '개발 노가리방' 이라는 곳과 블라인드 앱을 통해 많은 정보를 얻었다. 그와 함께 얻은 기술 키워드들을 구글링 해가며 개발 분야의 전반적 분위기와 구조를 이해해나갔다. 사실 전체적으로 개발 분야의 구조와 운영을 이해하긴 했어도, 현업에 참여해 일을 하진 못했기 때문에 정리되지 않은 상태였다. 그리고 '개발'에 대해서만 들어본 극히 편협적인 내용들이 내 머릿속에 엉켜있었다.

요즘 들어 취업 공고를 보다 보니 DevOps, SRE 라는 키워드가 많이 보였다. 어떤 직무인지 알려고 많이 찾아보았으나, 인터넷엔 여전히 정리되지 않은 정보가 많았다. 모두 하는 말이 다르다고 느껴졌다. 그렇게 많은 정보를 읽어보다 보니 대강 어떤 직무인지 감은 잡혔다. 하지만 여전히 명확하게 설명하라고 한다면 설명하지 못하는 상태였다. 그러다 마침 현재 UPF 2022SS Organizer로 활동하면서 제이펍으로부터 "Site Reliability Engineering: 사이트 신뢰성 엔지니어링" 도서를 지원받아 보게 되었다.

 

이런 책 구성은 신선한데

SRE라는 직무의 처음 시작은 구글이라고 한다. 그리고 이 도서의 부제는 "How Google Runs Production Systems(구글이 공개하는 서비스 개발과 운영 노하우)". 구글에서 시작된 직무인 만큼 근-본인 구글에게서 배우는 게 역시 맞겠다 싶었다.

우선 머리말부터 읽어보았다. 이 책의 구성은 처음부터 끝까지 쭉 내용이 이어지는 것이 아니라, 구글의 엔지니어들로부터 하나의 카테고리 혹은 소주제에 대해 컨퍼런스처럼 이야기를 풀어나가는 형식이었다. 때문에 목차를 보고 원하는 내용을 골라 읽어도 무관하다는 느낌을 받았다. 오히려 좋다! 내가 원하는 부분을 빨리 읽어볼 수 있으니! (사실 이렇게 이야기하긴 해도 아직 개린이(개발+어린이)인 나는 앞의 내용을 읽지 않으면 뒤의 내용에서 키워드를 놓쳐 이해할 수 없을 것이다...) 아무튼 그렇게 구글이 들려주는 서비스 개발과 운영 노하우에 대해 집중해보기로 했다.

 

아, 뒤늦게 알게 되었지만 이 도서는 구글이 공개하고 있는 영어 원서를 번역한 도서이다. 원서는 링크를 첨부해두겠다. https://sre.google/sre-book/table-of-contents/

 

 

SRE! 이런 거였어?

Chapter 1. 소개 부터 읽어나갔다. 소개는 벤자민 트레이노 슬로스님(구글 엔지니어링 부사장, 구글 SRE 조직의 설립자)이 풀어주는 SRE에 대한 내용이었다. 구글이 어떤 문제를 가지고 있었고, 이 문제를 해결하기 위해 SRE 조직을 만들게 된 배경, SRE가 맡은 일과 같은 SRE 조직의 전반적인 소개로 책이 시작되었다. 이 Chapter 1. 소개 부분을 정말 흥미롭게 읽었다. 회사가 서비스를 개발하고 운영하면서 어떻게 일하고 있으며, 어떤 문제를 직면하고 어떻게 해결하려고 노력하는지에 대한 과정이 있었기 때문이다. 나에게는 이런 이야기들이 정말로 신선하고 흥미롭게 다가왔다. 특히 흥미롭고 공감되는 부분은 아래와 같았다.

운영팀과 그에 맞대응하는 제품 개발팀 간에는 충돌이 종종 발생하며, 대부분 소프트웨어를 얼마나 빨리 프로덕션 환경에 릴리즈할 것인가로 인해 충돌이 발생한다. 기본적으로 개발팀은 새로운 기능들을 구현하고 사용자들이 이 기능들을 사용하는 것을 보고 싶어 한다. 반면, 운영팀은 서비스를 좀 더 안정적으로 운영하기를 선호한다. 대부분의 문제는 어떤 변화(새로운 설정, 새로운 기능 또한 새로운 유형의 사용자 트래픽 등)에 의해 발생하므로 이 두 팀의 목표는 본질적으로 팽팽한 긴장 관계에 있다.
 - Site Reliability Engineering: 사이트 신뢰성 엔지니어링, Chapter 1. 소개 (벤자민 트레이노 슬로스 지음)​

 

개발팀 입장에서는 여러 새로운 기능을 마구 개발하고 싶을 것이고, 운영팀 입장에서는 새로운 기능으로 인해 돌아올 사용자 트래픽과 서비스의 불안정한 운영을 막고 싶을 것이다. 두 팀의 입장이 모두 이해가 되는 터라, '이걸 구글에서는 어떻게 해결할까?'라는 의문이 계속 들었고, 이 의문이 책을 계속 흥미롭게 읽을 수 있게 하는 원동력이 되었다. 결국 구글은 이에 대한 해법을 '사이트 신뢰성 엔지니어링'으로 풀어냈다. 구글에서 정의하는 '사이트 신뢰성 엔지니어링'이란, 간단하게 설명해서 '운영팀을 위한 소프트웨어 엔지니어'이다. 기본적으로 SRE팀은 엔지니어링에 초점을 맞춘다는 것이 중요하며, 끊임없이 엔지니어링을 추구하지 않으면 업무 부담이 증가하여 그 부담을 나누기 위해 더 많은 인력이 필요하게 된다는 것이 핵심이다. 이 책에서는 수개월간 DevOps, SRE에 대해 추상적인 개념을 봐오며 제대로 이해하지 못했던 나에게 명확한 정의를 내려주었다.

 

더 많고 풍부한 구글의 노하우가 나를 기다리고 있다니

필자는 아직 Chapter 4까지밖에 읽지 못했다. 위험 요소 수용과 서비스 수준 목표들에 대해 읽었는데, 이 내용 역시 굉장히 흥미로웠다. 구글에서 서비스를 운영할 때 위험의 수용도와 가용성을 측정하는 방법과 공식, 서비스 수준 척도에 대해 들어볼 수 있었다. SRE팀이 전체 업무량 중 얼마큼을 운영 업무에 쏟아야 하고, 서비스 운영에 있어 안정적인 수준을 유지하기 위해 항상 생각해야 하는 정량적 목표 설정에 대해 도서를 읽으며 점점 이해해나갔다. 읽으면 읽을수록, 개발 분야에 대한 시야가 넓어지는 느낌이었다. 내가 개발자로 취업을 한 후에도 바로 앞에 처리해야 하는 나의 태스크만 바라보는 것이 아니라, 기업이 도달하고자 하는 목표와 사용자들에게 선사해야 하는 경험의 안정적 운영에 대해서도 고민해보아야 한다는 것을 깨달았다. 요즘 하루에 한 Chapter씩 읽고 있는데, 다음엔 어떤 내용이 기다리고 있을까 항상 기대가 되는 책임을 느꼈다. 물론, 읽으면서 모두 내용을 완벽히 이해했던 것은 아니다. 개인적으로 노션에 궁금한 점을 기록해가며 읽는 중인데, SRE팀에서 일하고 있는 지인이 있어 물어보면서 개발 분야에 대해 이야기할 생각을 하니 벌써부터 즐겁다.

 

필자는 여러 IT 동아리와 커뮤니티 활동을 하면서 백엔드 개발자를 희망하게 되었지만, 그 과정에서 항상 어렵지만 즐거웠던 작업은 서비스 배포였다. 서비스의 배포와 안정적인 운영에 관심이 있던 나에게 이 도서는 좋은 공부 거리를 가져다주었다. 미래에 DevOps나 SRE의 직무를 하게 될 수도 있을 나에게 미리 주는 선물이라는 생각이 들었다. 이 도서를 5년 후에 다시 읽어본다면 어떤 생각이 들까? 그리고 그때는 또 어떤 분야가 나를 기다리고 있을까?

다음 Chapter에는 어떤 내용이 날 맞이할지 기대가 된다.