|
사이트 신뢰성 엔지니어(SRE) 라는 용어 자체도 생소했지만, 이런 기회를 준 한빛미디어에게 감사를 드린다. 그 이유는 개인적으로 처음부터 구매해서 읽지는 않을 것 같아서였다. ^^
하지만, 읽고 난 지금 반드시 구매를 해야할 책이며, 주위에 많이 소개를 해야 겠다는 판단이다. 프로그램을 개발하고 테스트, 배포한 이후 소프트웨어 라이프 사이클 동안 맞닥트리는 것은 프로그램의 신뢰성과 보안이다. 이를 대체할 수 있는 것은 없다.
프로그램의 신뢰성과 보안은 배포한 이후에 고려하면 비용이 엄청나게 많이 든다. 이 책은 시스템의 설계단계에서 부터 구현 단계, 테스트 단계, 배포 단계, 유지보수, 복구와 사후처리까지 고려해야 될 모든 부분을 담고 있다. 그것도 아주 자세히~~ 그리고 각 단계별로 구글의 사례를 인용하여 문제 발생 부터 해결법까지 나와 있어서 흥미롭다. 신뢰성과 보안은 개발자 혼자서 해결할 수 있는 부분이 아니다. 비용도 많이 들기도 하지만, 이해 관계자들의 컨센서스가 선행 되어야 하기 때문이다. 그래서 이 책의 마지막 파트에 조직과 문화를 다룬 부분은 상당히 인상적이다. 200% 공감하기 때문이다.
클라우드 기술이 보편화되고 RESTAPI로 서비스가 다양한 현재에서 SRE가 더욱 요구되는 시점이다. 이 책은 소프트웨어를 개발(중급이상)하거나 시스템 설계(아키텍처), 유지 관리 분야, 그리고 개인적으로는 정책 결정권자를 포함하여 모두 읽어야 될 책이다. 신뢰성과 보안을 위한 시스템 설계와 구축을 모두 커버하기 때문에 분량이 방대하고, 세부적으로 다루는 부분도 많아서 한번에 이해하기는 불가능하다는 판단이 든다. 그래서 곁에 두고 2~3번 읽어야 하며, 주기적으로 읽어야 될 책이다. 잊어 버리지 않게~
이 책은 전문가를 위한 책이다. 10년 이상 IT업계에 있으면서도 정말 쉽게 읽히지 않았다. 생소한 용어도 많았으며, 국내 환경과는 다른 부분도 있기 때문일 것이다. 하지만 이 책을 읽고 난 후 개발에 대한 인사이트가 훨씬 넓어졌으며, 풍성해진 느낌이다. 특히 프로젝트 수행중에 소홀히 하는 비기능 요구사항에 관심이 생기기 시작했다. 다만, 숙제가 더 늘어난 것 같기도 하다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." |
|
[나의 한줄 추천사] 요즘 IT 업계에서 유행하는 "SRE(Site Reliability Engineering) : 사이트 신뢰성 엔지니어링" 에 대한 개념 정리 및 시스템 적용 사례를 찾는 다면 이 책을 보라.
[책 추천 이유] 구글에서 신뢰성을 보장하기 위한 SRE 사례를 바탕으로 IT 전략 수립 및 프로세스 및 계획을 세워 큰 그림을 그릴 수 있는 방향성을 제시해준다.
[내가 찾고자 했던 질문들] 1. SRE(Site Reliability Engineering) : 사이트 신뢰성 엔지니어링 의 개념은 어떻게 되는가? - IT운영을 할때 스마트한 방식이 있을까? 이부분을 공학적으로 녹인 부분은 SRE 라고 할수 있겠다. 이 책에서는 운영시 발생할 수 있는 "보안" 적인 부분을 많이 강조하고 있으며, 운영시 발생할 수 있는 여러 문제점들을 해결할 수 있는 방법을 제시하고 있다.
2. SRE 어떻게 스마트하게 할것인가? - 시스템 설계 / 구현 / 유지보수 / 위기관리 / 조직문화 크게 5가지로 나눠서 SRE 적용해볼 수 있도록 책은 구성하고 있다. Devops 형태의 시스템을 운영하는 조직에게는 SRE 적용하기 딱 좋은 환경이라고 생각한다.기본적인 시스템의 life cylce 전반에 SRE 녹여서 의도치 않은 보안 문제나, 버그들을 사전에 잡는 방법 등을 직접 적용해볼 수 있는 환경이 이미 되어 있기 때문에 SRE 기본적인 개념과 지식이 꼭 필요하겠다.
3. 원서의 추가적인 정보를 알고 싶다면? - https://github.com/devops-md/www.devops.md/blob/master/pages/03.resources/books/section.en.md
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." |
|
한 줄 요약 : SRE 팀 선배의 업무 노트를 보는 듯한 노하우가 담긴 책
개발 관련 글, 채용 공고에서 'SRE'라는 단어가 자주 보인다. 찾아보니 RedHat 홈페이지에 SRE에 대해 정리된 글이 있었다. 사이트 신뢰성 엔지니어링(SRE)은 IT 운영에 대한 소프트웨어 엔지니어링 접근 방식입니다.
시스템 개발 초기에는 개발 분량도 적고, 범위도 적어서 소수의 인원으로 관리 및 유지보수가 가능하다. 하지만 서비스가 성장하고 그에 따라 시스템 확장, 개발 및 유지보수 인력 증가 등 더이상 소수의 인원이 관리하기가 힘든 상황을 마주하게 된다. 협업을 위한 관리 시스템을 도입하거나 만들지만 이것 역시 또다른 관리 대상이 되고만다. 이런 어려움 때문에 시스템 관리를 전담하는 SRE라는 직군이 생겨난 것이다.
그렇다면 SRE는 개발된 시스템을 관리만하면 끝일까? 그렇지 않다. 관리하면서도 시스템은 운영되고 있고, 외부로부터 공격, 재난상황 등 예상치 못한 상황에 대응해야한다. 상황을 하나씩 해결하며 경험을 쌓는다면 좋겠지만 장애가 자주 발생하는 서비스라면 사용자들의 재방문은 줄어들 것이 뻔하다.
초대형 기업인 구글에서는 이 어려움을 어떻게 극복했을까? 그에 대한 답이 이번에 리뷰하는 《SRE를 위한 시스템 설계와 구축》에 담겨있다. 저자들은 구글에서 근무하며 겪은 장애 및 극복 경험들을 소개하는데 읽으면서도 선배의 업무 노트를 보는 느낌이라 좋았다.
![]() ![]()
Part 1.부터 Part 5.까지의 구성 중 Part 4를 지나는 시점에서 든 생각은 《SRE를 위한 시스템 설계와 구축》은 일반적인 다른 기술서적들처럼 특정 기술을 소개하고, 사용법을 알려주는 책이 아니다. 예전에 읽은 《의사가 말하는 의사》, 《도와주세요! 팀장이 됐어요》 와 같은 정보와 경험담을 고르게 담고 있는 에세이에 가깝다. 저자도 쿡북 형식의 책이 아니며 배웠던 점을 공유하는 것임을 책의 구성에서 말하고 있다. ![]()
책은 크게 5개 부분으로 구성되어 있다.
Part 1. 들어가며 문제 상황을 대비해서 예방 및 대응 시스템을 만들었지만 관리 문제로 정작 필요할 때 대응하지 못했던 사례를 소개한다. 사례를 통해 왜 안전하고 신뢰할 수 있는 시스템이 필요한지, 위협의 종류와 그 대응 방법에 대해 정리되어 있다.
시스템은 상황에 맞게 잘 설계를 해야 한다. 보안과 신뢰성이 보장되는 시스템을 설계하기 위해 노력했던 이야기와 방법들을 소개한다.
Part 1 시스템이 왜 필요한지 알아보고, Part 2에서 시스템 설계를 설명했다. 앞 내용을 바탕으로 구현할 때 주의해야 할 부분은 무엇인지, 무엇을 추가로 고려해야하는지를 소개한다.
아무리 설계를 잘 하고, 구현을 완벽하게 했더라도 예기치 못한 상황은 발생한다. 우리가 할 수 있는 것은 예상되는 추가 예외 상황은 무엇인지 분석하고 실제로 상황이 발생한다면 어떻게 대응할지 계획을 세우는 것이다. Part 4에서는 재해시 대응 전략 및 복구, 후처리에 대해 소개한다.
Part 1부터 4까지는 기술적인 이야기가 많았다면 'Part 5. 조직과 문화'에서는 앞의 내용들을 팀에 적용했던 경험에 대해 들려준다. 그리고 팀에 적용한 것에 그치지 않고 앞으로 또 어떤 것들을 고민해야할지 같이 생각해본다.
앞에서 '일반적인 다른 기술서적들처럼 특정 기술을 소개하고, 사용법을 알려주는 책이 아니다.'라고 말한 이유는 아래 사진을 보면 이해할 수 있다. 실제 업무를 진행하며 발생했던 문제들을 해결하기위해 했던 것들을 잘 정리해둔 메모노트와 같다. 'A라는 상황에서 발생한 문제를 B를 적용했고, 그 결과 해결했다'는 일련의 과정이 상세하게 기록되어 있다. ![]() ![]() ![]() ![]()
그리고 '한 줄 요약'에서 'SRE 팀 선배의 업무 노트를 보는 듯한 노하우가 담긴 책'이라고 말한 이유가 있다. ![]() ![]()
아직 Part 5까지 읽지 못했지만 기대된다. 저자들이 팀 내부에서 그리고 외부에서 기술을 적용하고 문제상황들을 어떻게 극복했는지 궁금하기 때문이다. SRE가 아니더라도 시스템 개발, 유지보수와 관련되거나 접점이 있는 사람이라면 《SRE를 위한 시스템 설계와 구축》를 꼭 읽어보면 좋겠다.
![]()
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." 리뷰를 위해 한빛미디어에서 책을 제공받았지만 주관적인 생각을 그대로 적었습니다. |
|
[리뷰] SRE를 위한 시스템 설계와 구축
SRE(Site Reliability Enginners, 사이트 신뢰성 엔지니어)라는 말은 매우 매력적인 단어 인 듯 하다. 신뢰할 수 있는 사이트를 만들기 위한 시스템 설계와 구축이라니, 또한 구글에 있는 사람들이 만든 책이라니. 시작부터 매우 매력적인 책인 것은 틀림이 없었다. 책에 저자도 여러명이고, 내용 또한 매우 방대한 책(600쪽이 넘는다.)이다. 그런 만큼 여러가지 면에서 많은 내용들이 빼곡히 담겨 있는 책이다. IT업계에 들어온지 얼마되지 않는 사람들보다는 시스템 구축 및 운영에 대한 경험이 있고, 시스템에 대한 고민을 많이 하고 있는 분들이 보면 매우 좋은 책일 것이다. 시스템 설계와 구축단계에서 고민할 내용들이 매우 많이 있으며, 당연한 이야기 이겠지만 운영 중인 시스템에 대해서는 변화하기 란 매우 어려울 것이다. 현재 회사에서도 구축된 시스템에 대해서 좀 더 안전하고 효율적으로 변화를 하고 싶지만 그에 대한 영향도 파악이 어려운 관계로 거의 하지 못하고 있는 실정이다. 그런 측면에서 보면 코드, 테스트, 배포 들에 대한 내용은 도움이 많이 될 뜻 하다. 또한 현재 운영하고 있는 시스템도 장애가 종종 발생하고 있는데, 그에 따른 프로세스가 정립이 안되서 고생을 하는 중이다. 시스템 유지 보수 장을 보면서 많은 깨닭음과 고민이 생겼다. 현재에 적용하기에는 시간이 걸리겠지만, 그래도 앞으로의 발전을 위해서는 꼭 필요한 요소라고 하겠다. 이처럼 시스템을 구축하거나, 운영하는 데 부족한 부분이 있다면 이 책을 통해서 많은 깨닮음을 얻어가면 좋을 뜻 하다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." |
헤더 애드킨스, 벳시 바이어, 폴 블랭킨십, 피오트로 레반도프스키, 애나 오프레아, 애덤 스터블필드 지음 장현희 옮김
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
2022년 8월 2022 나는 리뷰어다 활동의 일곱 번째 리뷰
8월에 리뷰할 책은 "SRE를 위한 시스템 설계와 구축"이다.
우선 SRE란 무엇인가? SRE(Secure & Reliable Systems)은 IT 운영에 대한 소프트웨어 엔지니어링 접근 방식이다. SRE팀은 소프트웨어 툴을 활용하여 시스템을 관리하고, 문제를 해결하고, 운영 태스크를 자동화한다. 기존에 운영 팀이 수동으로 하는 경우가 많았던 태스크를 받아 엔지니어 또는 운영 팀에 넘기고, 엔지니어 또는 운영 팀은 소프트웨어 및 자동화를 사용해 문제를 해결하고 프로덕션 시스템을 관리한다.
간단히 SRE에 대해서 알아보았다.
이 책은 구글이라는 거대 IT 기업이 지금까지 수많은 서비스를 개발하고 운영해 오면서 터득한 보안과 신뢰성 관련 경험과 지식을 총망라한 책이다. 보안과 신뢰성은 서로 상충하는 부분도 있지만 궁극적으로는 안전하며 안심하고 사용할 수 있는 소프트웨어와 서비스를 제공하기 위해서는 반드시 고려해야 할 필수적인 요소이다.
보안과 신뢰성은 현대 소프트웨어 개발에서는 반드시 최우선으로 고려해야 할 요소이다. 이 책은 보안과 신뢰성에 어떤 문제가 발생할 수 있는지 그리고 이를 어떻게 예방하거나 대처할지에 대해 실용적이면서도 현실적인 조언을 제공한다.
구글은 거대 IT 기업이기 때문에 여러분들이 몸담고 있는 회사의 규모에 맞지 않는다고 느껴질 수도 있지만, 하나씩 천천히 도입해보면 보안과 신뢰성은 점점 더 견고해질 것이다.
책의 구성에 대해서 알아보자. 저자는 먼저 1장과 2장을 읽은 후 그 다음으로 관심이 가는 부분을 읽어보길 권한다. 이 책의 대부분의 장은 다음과 같은 내용으로 구성된 서문이나 실천적인 요약으로 시작한다. - 문제에 대한 정의 - 각 장이 소개하는 원리와 사례를 적용하기에 적합한 소프트웨어 개발 수명 주기 단계 - 신뢰성과 보안 사이의 교집합 또는 절충
이 책은 업계에서 권장 사례로 여기는 많은 도구와 기술을 추천한다. 하지만 모든 것이 독자 여러분의 상황에 적합하지는 않을 것이므로 진행 중인 프로젝트의 요구사항을 평가하고, 프로젝트의 위협 요소에 적합한 솔루션을 설계하기 바란다.
본문 중의 인상 깊었던 부분을 살펴보자.
전체 서비스를 마이크로서비스 같은 여러 컴포넌트로 나누는 방법을 예로 들고 있는데, 구축 과정에서 발생할 수 있거나 예상해야 하는 리스트에 대한 부분을 여러 컴포넌트로 나누고 있다. 이렇게 많은 설계 목표 간에 균형을 맞추는 일은 어렵다는 설명으로 SRE라는 것이 경험이 많이 필요한 영역이라는 것을 말하며, 그 경험에 대한 부분을 책에서 제공해주기 때문에 관련한 직무를 하고 있거나 하고자 하는 개발자라면 직접적인 도움이 될 책이라 생각된다.
아직, 본인에게는 조금 거리가 있는 영역이긴 하나 SRE라는 것을 알고 머릿속에 인지하면서 커리어를 쌓아간다면 목표점이 좀 더 명확해지지 않을까 하는 막연한 기대가 있다.
더 열심히 하자.
Love Yourself. |
|
도서명은 SRE를 위한 시스템 설계와 구축입니다.
![]()
이 책은 한 마디로, __ 입니다.SRE를 실천하려는 또는 SRE 조직을 구성하려는 사람들에게 SRE의 설계, 운영 원칙을 사례 기반으로 전달하는 책 이 책은 __ 인/한 사람들에게 추천하고 싶습니다.SRE(Site Reliability Engineering, 사이트 신뢰성 엔지니어링) 말만 들었지 대체 뭔데? 싶은 사람들 이 책을 통해 __(한) 정보를 얻어가실 수 있습니다.SRE 설계 원칙, 조직 구성, 운영 노하우를 구글의 사례를 통해 확인하실 수 있습니다. 총평DevOps 내지는 SRE 조직에서 보안과 안정성에 조금 더 신경 쓰고 싶을 때 읽어보면 좋은 책입니다.
이 서평은 한빛미디어 <나는 리뷰어다> 활동을 위해 책을 제공받아 작성된 서평입니다. |
![]()
Author: 헤더 애드킨스, 벳시 바이어, 폴 블랭킨십, 피오트로 레반도프스키, 애나 오프레아, 애덤 스터블필드 지음 / 장현희 옮김 출판사: 한빛미디어 Score /5: 5
시스템 엔지니어 및 개발자, 아키텍트등 다양한 이해관계자의 관점에서 시스템의 신뢰성이란 매우 중요한 요소중 하나입니다. 그 점에서 이 책은 구글 엔지니어의 관점 및 사례를 바탕으로 잘 정리된 케이스를 하나씩 풀어서 시스템의 신뢰성을 어떻게 확보해야 할지 일종의 가이드 라인을 제시합니다. 다만, 이 책을 읽을 독자분들에게 모든 부분을 적용하려고 노력하지 마시고 언제나 시스템은 Case by Case 이듯 적절한 절충점을 찾아 적용하시기 바랍니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." |
|
시스템 설계의 기본이 되는 신뢰성을 기반으로 어떻게 구글이 운영되는지 그 노하우를 담고 있다. 보안에 대해 지식이 좀 짧지만 SRE라는 단어를 만든 것이 구글이라는 것은 알고 있다.
저자 목록을 쭉 훑어보는데 엔지니어링뿐 아니라 테크니컬 라이터들도 다수 참여했다. 이 분야가 그만큼 여러 분야에 미치는 영향력이 커졌고 또 그렇기 때문에 보안을 넘어서 소프트웨어 개발에도 넓게 영역을 차지한다는 것을 새삼 느낄 수 있다. 그래서 그런지 책이 무지 두껍다. 저자도 이를 알아서 친절하게 구성을 설명하며 어떻게 읽어야 할 지 가이드를 내려준다. 1-2장 부터 읽고 흥미로운 분야 우선으로 읽되, 구글과 동일한 조직환경이 아닐 수 있으므로 감안해서 내용을 읽으라고 한다. 어떻게 보면 회사라는 것은 이래서 흥미롭다. 각 회사마다 동일 산업에 속하더라도 사용하는 평균 데이터 크기나 처리하는 데이터의 성질, 비즈니스의 속성 등에 따라서 벌어지는 일들이 제각각이다. 어떤 곳은 아주 빨리 대용량의 데이터를 실시간으로 처리하는 게 중점인데 반해 어떤 곳은 속도가 그닥 중요하지 않고 천천히 쌓이는 데이터를 잘 다듬어서 분석에 용이하게 만드는 게 더 비중이 크기도 하다. 이 두가지 모두다 중요한 큰 회사들도 있다. 구글의 힘은 이렇게 이전에 존재하지 않았던 새로운 시도를 해서 그걸 개념화하고 일반화하는 데에 장점이 있다고 생각한다. 물론 이 1개의 차별화를 위해 수많은 아이디어 무덤이 생기기도 한단다. 나도 가끔 구글 서비스를 이용하면서 이거 안전한 거 맞아? 라는 생각이 들 때가 있다. 주로 크롬을 사용하면서 궁금한 점이 생긴다. 다행히 책의 5부. 조직과 문화 에서 '사례 연구: 크롬 보안 팀' 챕터에서 궁금한 점을 어느 정도 해소할 수 있었다. 크롬의 보안팀이 커지게 된 배경을 읽고 나니 결국 어느 정도 경험이 쌓이거나 코드를 만지고 서비스를 키워보면 보안은 수강 필수과목이 되는 것 같다. 혼자서 뭔가를 만들어 세상에 내놓았는데 만약 운좋게 사람들의 관심을 받게 된다면 그 관심의 일부는 악용되어 취약한 보안을 공격할 수도 있다. 구글은 결국 모든 엔지니어가 일상적으로 보안을 고려한 개발을 하게 되었다고 말한다. 굉장히 좋은 업무방식인 것 같다. 그리고 이런 구글의 보안팀 운영에 있어서 중요하게 작용한 게 '어떻게 조직을 구성할 것인가' 였다. 집중 분야를 책임질 리드를 먼저 정하고 그 뒤에 관리자를 선정했다고 하며 '리드'의 경우는 종합적으로 보안 이슈를 체크하고 팀에게 정보를 정리해주며 프로젝트 협업 등 스케줄 또한 검토하는 훌륭한 PM...이 되어야 함을 설명한다. 굉장히 빡시겠다... 어떤 의미로는 정말 훌륭한 오케스트라 음악을 연주할 수 있는 지휘자 혹은 예술가 같다고 생각한다. 그리고 책을 읽으면서 이게 쿡북처럼 기술을 나열한 뒤 잘 연습하게 도와주기보다는 그냥 뭔가 경험담? 체험담처럼 쉽게 써있어서 술술 읽혔고 의외로 흥미로운 부분이 많았다. 그리고 맨 첫장부터 시작하는 구글의 보안 에피소드. 로드 밸런싱과 로드 셰딩이라는 신뢰성 측면과 시스템 보안을 위해 설계한 복잡한 과정이 합쳐져서 우여곡절 끝에 사태를 수습하게 된다. 이처럼 신뢰성과 보안은 중요한 두 축이지만 결이 조금은 다르다. 책은 이를 비교하면서 각각을 설계할 때 어떤 요소가 중요한지 설명한다. 그리고 2장에선 보안의 주적이 누군지를 설명한다. 1. 취미로 즐기는 사람 2. 취약점 연구원 3. 정부와 법 집행 기관 4. 운동가 5. 범죄자 6. 자동화와 인공지능 7. 내부자 이후 챕터들은 이런 공격자에게 비효율적이고 비경제적인 공격을 하도록 하여 포기하도록 유도하는 내용들이다. 구글에서 일단 일어난 일을 바탕으로 설명하기 때문에 참고할 때 도움이 되고 일을 수습하고 해결하는 과정에서 어떤 교훈을 얻었는지도 상세하게 설명해준다. 구글 내부에서 어떻게 신뢰성과 보안을 고려한 시스템 설계를 하는지 자세히 알 수 있고 동시에 어떤 상황이 공격에 취약한지도 학습할 수 있어서 유익했다. |
|
일하다 보면 복잡한 스펙과 빡빡한 일정 때문에 보안, 가용성, 성능, 안정성 등에는 관심을 두지 못하고 개발만 하게 되는 경우가 있습니다. 그러다 보면 자연스럽게 여러 기술 부채를 지게 됩니다. 이런 기술 부채는 단순히 코드의 개선점 수준이 아니라 장애 발생, 개인 정보 유출, 지나치게 많은 운영 비용 등 비즈니스에 위해를 가하는 치명적인 문제로 발현되기도 합니다. 보안, 안정성 등의 주제는 개발을 한참 진행하고 나서 개선하기가 만만치 않습니다. 개발 초기부터 목표와 설계에 포함하고 개발 업무 프로세스 전반에 걸쳐 반드시 필요한 프로세스로 내재화할 필요가 있습니다. 이 책은 개발자에게 이런 일들이 왜 중요한지에 대한 깊이 있는 통찰을 제공합니다. 서비스 설계 단계부터 개발, 배포, 운영, 장애 대응, 후속 조치와 이에 필요한 조직 문화에 이르기까지 우리가 실제로 고민하게 될 주제들을 폭넓게 이야기 하고있습니다. 이 책을 읽고 한 단계 더 좋은 개발자로 성장하는데 필요한 고민들을 해볼 수 있으면 좋겠습니다. |
|
구글은 (모든 IT인들이 그렇겠지만) 특히나 서버개발자에게 가장 선망의 대상이 되는 회사 중 한 곳이다. 구글급 사이즈의 전 세계에서 들어오는 엄청난 트래픽을 문제없이 소화하는 능력은 아무데서나 얻을 수 있는 능력이 아니기 때문이다. 그렇다고 구글의 장애율이 0%는 아니지만 문제에 대한 예방과 복구 프로세스 등이 잘 정립되어 있다. 그런 구글에서 많은 개발자, SRE, 보안전문가 등이 모여서 집필한 이 책은 수십 년간의 구글의 사례와 노하우들이 녹아들어 있다. 제목은 SRE를 위한다고 쓰여있지만 그렇지 않다. SRE 뿐만 아니라 서버개발자, 더 나아가 프론트개발자, 데이터 분석가 등 모든 개발자들에게도 도움이 되는 보편적이고 공통적인 내용들도 많이 있다.
허구한 날 비밀번호가 노출되었다고 연락이 오고 하루에도 몇 번씩 다운되는 서비스를 사용하고 싶은 사용자가 있을까? 사용자 입장에서도 안전하지 않고 신뢰성이 없는 서비스는 쓰고 싶지 않지만, 기업 입장에서도 이는 굉장한 영업 손실로 이어진다. 쉬운 예로 주말 저녁 피크타임에 배달앱이 몇 시간 동안 마비가 된다면 배달앱 업체뿐만 아니라 가게 사장님, 고객 들까지도 모두 손해를 보게 된다. 요새는 IT가 접목되지 않은 서비스가 사실상 없고 상당히 많은 부분들이 앱이나 웹 같은 서비스를 통해 이루어진다. 이런 상황이다 보니 서비스의 보안과 신뢰도는 더 이상 2순위가 아니게 되었다. 기능이 좋아 매우 많은 사용자를 끌어 모았다고 하더라도 보안 사고나 신뢰성 부분에 문제가 생긴다면 외면받는 것은 순간이다. SRE가 따로 없는 회사라 할지라도 SRE에 대한 투자와 강화는 항상 해야 하고 할 수밖에 없다.
서버개발자로 일하면서 무심코 지나갔던 부분들도 깨닫게 되었다. 예를 들어 서비스 다운 같은 것에 대비해 신뢰성을 높이기 위해 이중화라던지 메시지 큐 도입 등을 하면 보안 위험도가 증가하고 (개인정보 저장같은), 그것에 대비해 보안 위험도를 낮추면 또 이번에는 신뢰성이 낮아지게 되는 케이스도 있다고 한다. 변화(보안이든 코드든 모든 것에 대응이 가능해 보인다)에 대한 내용도 나온다. "변화는 증분적이어야 하고, 문서화되어 있어야 하고, 테스트를 거쳐야 하고, 격리되어야 하고, 검증되어야 하고, 단계적이어야 한다" (p.181) 개발로 인한 코드 변화가 해당 원칙들을 지키고 있는지도 다시 한번 돌아보아야겠다.
12장엔 코딩에 관한 보편적인 내용들도 나온다. 다중 중첩 방지, YAGNI 스멜 제거, 기술부채 해소, 리팩토링 등이 있다. 또한 기본적인 보안과 신뢰성을 지키기 위해 메모리 안전한 언어 사용을 권하고, 강력한 타입 및 정적 타입 검사 사용을 권하고 있다.
14장 코드 배포에 대한 내용 중에 다음 내용들이 눈에 들어왔다. 1. 코드 검토를 반드시 실행하자 4개 항목 어느 하나 소홀할 것이 없어 보인다. 코드 검토 (흔히들 코드 리뷰라고 부르는)를 코드의 퀄리티와 안정성을 보장해준다. 자동화는 사람의 실수를 방지해 준다. 결과물을 검증해야 배포자의 실수라던지 악의적인 사용자의 행위를 막을 수 있다. 쿠버네티스 같은 컨테이너 환경을 사용하면 설정을 코드로 이미 관리하고 있다고 한다.
![]() ![]()
그리고 아래 그림처럼 각 단계를 우회할 수 없어야 한다고 했는데 우리 시스템이 이런가 반성하게 되는 계기도 되었다.
15장 시스템 조사에서는 디버깅에 대해 명언을 찾을 수 있었다. 문제를 해결하고 수정하기 위해 마법을 불리 필요는 없다. 단지 느리지만 구조화된 조사 과정을 거치면 된다. (p. 420) 자칫 지루하고 따분한 일이 될 수 있는 게 디버깅이지만 중요하고 가치 있는 일이다. 디버깅을 잘하는 왕도는 없으며 끈기와 노력이 중요한 것 같다.
17장 사고 대응에 대한 내용에서는 아래의 도표가 눈에 들어왔다. 구글 같은 글로벌 서비스는 세계 각지에 직원들이 있고 사고를 24시간 계속해서 대응할 수 있다는 점이 놀라웠다.
책의 내용과 분량이 상당히 방대하고 다양하다. SRE뿐만 아니라 다른 개발자들도 읽어 보면 좋을 것 같다. 구글만큼 큰 서비스를 운영하고 있지 않더라도 분명 도움이 되는 내용이며, SRE가 따로 없는 우리 회사의 경우 내가 언제라도 SRE로서의 역할도 할 수 있게 관련 역량들을 계속 쌓아 나가고자 한다. |