본문 바로가기

개발/SRE - 사이트 신뢰성 엔지니어링

SRE 18장 - SRE 조직의 소프트웨어 엔지니어링 누군가에게 구글의 소프트웨어 엔지니어링 중 가장 많은 비중을 차지하는 제품이 무엇이냐고 묻는다면, 대부분 지메일이나 지도 같은 사용자 서비스라고 답할 것이다. 하지만, 사실 최종 사용자에게는 드러나지 않는 소프트웨어 엔지니어링의 비중도 엄청나다. 이들 중 상당 부분은 SRE 조직에서 개발한 것이다. SRE는 복잡한 프로덕션 환경을 직접 경험하고, 내부의 문제를 해결하기 위한 적절한 도구를 개발하며, 프로덕션 환경을 지속적이고 안정적으로 운영할 수 있는 다양한 활용 사례들을 만들어내고 있다. 바이너리 배포 메커니즘, 모니터링 또는 동적 서버 조합(dynamic server composition)을 기반으로 한 개발 환경의 구축 등 SRE 조직의 소프트웨어 엔지니어링 역량이 중요한 이유 SRE가 효율적으로 .. 더보기
SRE 11장 - 비상대기 비상 대기는 많은 운영팀 및 엔지니어링팀이 서비스의 신뢰성과 가용성을 위해 반드시 수행해야 할 중요한 임무다. 그러나 교대로 수행하는 과정 속에는 많은 어려움이 도사리고 있다. 소개 구글의 여러 주요 서비스팀, 예를 들면 검색, 광고 및 지메일 등은 이 서비스들의 성능과 신뢰성을 책임지는 전담 SRE팀이 있다. 그래서 SRE들이 서비스를 위한 비상 대기 업무를 수행한다. SRE팀은 순수한 운영팀과는 사뭇 달라서 문제를 해결하기 위한 엔지니어링적 접근법을 강조한다. (가장 큰 차이점이다. 항상 엔지니어링을 생각하자) 이 문제들은 대부분 운영과 관련된 것들이지만 스케일링과 관련해서 소프트웨어 엔지니어링 솔루션 없이는 다루기 어려운 것들이다. 이런 종류들의 문제를 해결하기 위해 구글은 시스템과 소프트웨어 엔지.. 더보기
SRE 7장 - 구글의 발전된 자동화 SRE에게 자동화는 만병통치약이 아니라 주어진 방향으로 힘을 더하는 것과 같다. 목표는 결국 고수준의 시스템, 즉 자율 시스템을 디자인하는 것이다. 자동화의 가치 자동화의 진정한 가치는 무엇일까? 일관성 시스템이 스케일(scale) 조정은 자동화를 채택하는 주된 이유이기는 하지만, 그 외에도 많은 이유들이 존재한다. 기본적으로 한 사람 또는 수백 명의 사람이 수행하는 모든 작업들은 매번 같은 방식으로 수행되는 것들이 아니다. 아무리 노력하더라도 사람이 기계처럼 일관성을 가지기란 불가능에 가깝다. 이처럼 예상치 못한 일정하지 못한 방식은 실수와 간과로 인해 데이터 품질의 문제를 유발하며, 결국 신뢰성의 문제로 발전하게 된다. 정확하게 정의된 업무 범위와 정해진 절차를 수행하는 데 있어 일관성의 가치는 다양.. 더보기
SRE 5장 - 삽질은 이제 그만! 평범하게 운영 중인 당신의 시스템에 운영자가 손을 대야 한다면 그 시스템에 버그가 있다는 뜻이다. - 칼라 가이저, 구글 SRE 이 장에서는 운영 업무라는 단어의 의미가 사람에 따라 다르게 해석될 수 있으므로 삽질이라고 표현하기로 하겠다. 삽질의 정의 단순히 '하고 싶지 않은 일'을 의미하지만은 않는다. 그렇다고 관리를 위한 허드렛일이나 지저분한 일을 의미하는 것도 아니다. 반드시 수행해야 하며 삽질로 분류해서는 안 되는 업무들도 있다. 이런 업무들이 바로 부하를 일으킨다. 팀 회의나, 둘러앉아 목표를 결정하는 일, 업무 보고, 그리고 구인을 위한 서류 작업 같은 업무들을 포함한다. 지저분한 일은 간혹 장기적으로는 가치가 있을 수도 있다. 그런 경우에는 삽질로 분류해서는 안 된다. 시스템에서 경고와 관련.. 더보기
SRE 4장 - 서비스 수준 목표 서비스를 운영하는 데 있어 가장 중요한 지표들과 이 지표들을 측정하고 평가하는 방법에 대한 올바른 이해 없이는 서비스를 올바르게, 알아서 잘 돌아가도록 관리한다는 것은 불가능하다. 그래서 여기서는 사용자에게 필요한 서비스의 적정 수준을 정의하고 제공하는 방법에 대해 이야기하고자 한다. 이 내용은 우리 저자들의 직감과 경험(오... 직감과 경험...), 그리고 사용자가 서비스 수준 척도(SLI), 서비스 수준 목표(SLO), 서비스 수준 협약(SLA) 등을 어떻게 정의하고 있는지에 대한 이해를 바탕으로 하고 있다. 이 세 가지를 살펴보면 주요 지표들의 기본 속성과 각 지표들의 적정 값, 그리고 기대했던 수준의 서비스를 제공하지 못했을 때의 대처 방안 등을 알 수 있다. 결국 어딘가에 문제가 발생했을 때 올.. 더보기
SRE 1장 - 소개 시스템이 스스로 작동하지 않는다는 것은 이미 널리 알려진 사실이다. 그렇다면 대용량 작업을 수행하는 복잡한 컴퓨팅 시스템은 어떻게 운영되어야 할까? 서비스 관리를 위해 시스템 관리자를 활용하는 방법 기존에는, 시스템 관리자들을 채용했었다. 이 시스템 관리자들은 소프트웨어 컴포넌트들을 모아 배포함으로써 서비스를 구축해 나간다. 이벤트와 업데이트에 대응하는데, 시스템의 복잡도와 트래픽이 증가할수록 감당하기 위해 시스템 관리팀의 규모 역시 커지게 된다. 시스템 관리자를 두면 장점이 몇 가지 있다. 상대적으로 쉽게 서비스를 운영할 수 있다. 수많은 예시가 존재하기 때문이다. 전문 인력들도 이미 풍부하다. 도움이 되는 다양한 도구와 컴포넌트, 그리고 시스템 통합을 업으로 삼는 회사들도 많아서 조금 미숙하더라도 충.. 더보기