SRE (Site Reliability Engineering)
사이트 안정성 엔지니어링(SRE, site Reliability Engineering)은 조직이 해당 시스템, 서비스 및 제품에서 “적절한” 수준의 안정성을 “지속적”으로 달성하도록 지원하는 엔지니어링 분야이다. 여기서 말하는 “적절한” 수준의 안정성은 무엇일까? IT 시스템이 발달할 수록, 더 나은 안정성을 추구 할수록, 안정성을 높이는 데 필요한 노력과 리소스(및 비용)는 빠른 속도로 증가하고 있다. 이를 다르게 표현한다면, 불필요한 안정성 추구는 시간과 돈의 낭비가 발생한다는 것이다. 결론적으로 안정성 수준은 비즈니스 수요에 적절하고 실용적이어야 하는 수준에서 트레이드오프를 해야한다. 예를 들어, 고객이 100% 안정적이지 않은 네트워크(시간의 90% 가동한다고 가정)를 통해 연결하는 경우 노력과 비용(돈)을 투자하여 서비스가 95% 안정적으로 되도록 하는 것은, 정의상 시간과 돈을 낭비하는것과 같다. “지속적인 달성”은 이러한 모든 상황에서 사용자가 해야 할 역할을 의미한다. SRE는 지속 가능한 운영방식을 만들고, 신뢰할 수 있는 시스템을 만든다. 개발자(시스템 사용자)는 서비스, 제품을 만든다. 시간이 지나도 지속되는 운영방식을 구현하여, 사람들(개발자, 사용자)들이 업무에 최선을 다할수 있도록 환경을 제공하는것이 정말 중요하다.
SRE의 역사는 2013년 Google에서 Benjamin Treynor이 7명의 소프트웨어 엔지니어로 구성된 팀을 이끌면서 프로덕션의 운영환경을 개선하기 위한 프로젝트를 진행하면서 시작되었다. 이 팀의 목표는 변화를 수용하면서, 동시에 우수한 품질을 최종 사용자에게 제공하는것이다. 구글은 현재 약 1500명 이상의 엔지니어들이 SRE 업무를 수행하고 있다. SRE 프로세스는 이제 Microsoft, Apple, Amazon, Facebook, Twitter 같은 대기업에서도 도입하여 사용하고 있다.
SRE 엔지니어는 “운영(OPS)” 관련된 작업을 수행하는데 최대 50%의 시간을 소비한다. SRE가 관리하는 소프트웨어 시스템은 고도로 자동화 되어 있으며, 자가치유 기능을 가지고 있어야 한다. 그래서 일반적으로 시스템의 자동화 작업에 50%의 시간을 소비하며 나머지 50%를 운영에 소비한다. 이상적인 SRE 후보자는 시스템 관려 경험을 가진 소프트웨어 엔지니어 및 코딩 및 자동화에 숙련된 시스템 관리자들이다.
기존의 DevOps와 SRE는 어떻게 다를까? 모니터링을 통한 문제 식별, 자동화라는 목표는 두 조직 모두 동일하지만, DevOps가 개발쪽에 조금 더 편향되어 있다면, SRE는 운영쪽에 조금 더 편향되어 있다.
DevOps는 개발과 운영조직 각각의 사일로 현상을(내부 이익만 추구하는 부서간 이기주의 현상) 해체하기 위한 문화적인 움직임으로, 하나의 문화로 인식된다. 그래서 역할을 정의할때도, “저는 DevOps를 하는 운영자, 또는 개발자 입니다.”라고 표현한다.
SRE는 안정성을 위한 엔지니어링으로 DevOps의 운영적인 부분을 보완한다. 그래서 SRE는 문화라기보다는 하나의 역할이며, 표현할 때에도 “저는 SRE 입니다” 라는 식으로 규범으로 인식한다.
[참고자료]
· IO116-Improving Reliability with Error Budgets, Metrics, and Tracing in Stackdriver : https://drive.google.com/file/d/1iOMaYIwlUBiGoG2mf8MFzl3EHy5xGJpq/view
· Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템) : https://www.slideshare.net/deview/216sresearchreliabilityengineering
· 네이버 검색의 SRE 시스템 : https://d2.naver.com/helloworld/2047663
· SRE(사이트 안정성 엔지니어링) 소개 : https://docs.microsoft.com/ko-kr/learn/modules/intro-to-site-reliability-engineering/
2020-05-10 / Sungwook Kang / http://sungwookkang.com
SRE, Site Reliability Engineering, DevOps, 사이트 안정성 엔지니어링
'SW Engineering > DevOps, SRE' 카테고리의 다른 글
Kubernetes 마스터 노드, 워커 노드 (0) | 2021.07.29 |
---|---|
SRE (Site Reliability Engineering) 역할 (0) | 2020.05.14 |
Docker Network (0) | 2019.03.27 |
Docker Compose-여러개의 컨테이너를 설정하고 생성하기 (0) | 2019.03.27 |
Docker build-Dockerfile을 이용해서 이미지 생성하기 (0) | 2019.03.27 |