SRE (Site Reliablity Engineering)
그동안 DevOps 담당자라고 부르짖던 사람들의 Role이 인프라 담당자인지 플랫폼 담당자인지 아니면 개발하는 운영자인지 헷갈릴때가 많았다.
갑자기 국내에서도 SRE 채용 공고가 많아지는것을 보면서 내 자신도 한번 정리를 하고 가야할것 같은 생각이 들었다.
https://docs.microsoft.com/ko-kr/learn/modules/intro-to-site-reliability-engineering/
개념정리 측면에서 위 MS Azure의 온라인 교육내용을 정리해봤다.
SRE
SRE(사이트 안정성 엔지니어링)란 조직이 해당 시스템, 서비스 및 제품에서 적절한 수준의 안정성을 달성하도록 지원하는 엔지니어링 분야이다.
출처 : https://landing.google.com/sre/sre-book/chapters/introduction/
기본적으로 운영경험이 있는 sysadmin, IT전문가, DevOps실행 담당자 등이 대상이 될 수 있다.
적절한 수준의 안정성
가장 핵심이 되는 단어는 안정성이다. 조직에서 만든 애플리케이션이 안정성이 부족하여 작동하지 않거나 불안정한 경우 실제 비즈니스에 피해를 줄 수 있다는건 누구나 알고 있는 당연한 이야기이지만 100%의 안정적인 시스템은 존재하지 않으므로 적절한 수준(정량적으로 측정하긴 어렵지만 이해관계자들이 납들할만한 수준)의 안정성을 달성하기 위한 일련의 작업들을 수행하는 것이 SRE의 기본 속성이라고 볼수 있다.
SRE는 Google에서 2003년부터 7명의 소프트웨어 엔지니어로 구성된 팀에서 시작된 이후 (자세한 내용은 위 링크 ebook 참조) Google 사내에 널리 확산되고 내부적인 문화로 조성되는 중에 밖에서는 DevOps라고 하는 문화가 동시에 확산되었다 한다. 결국 동일한 문제를 해결하기 위한 측면에서 두개의 방법론은 다르다고 봐야한다.
차이점
- SRE - 안정성을 위한 엔지니어링, DevOps - 개발과 운영조직 각각의 사일로를 해체하기 위한 문화적인 움직임
- SRE - 저는 SRE 입니다, DevOps - 저는 DevOps를 하는 운영자 또는 개발자 입니다.
- SRE - 규범으로 인식, DevOps - 문화로 인식
공통점
- 모니터링/식별 가능, 자동화
주요 SRE원칙 : 선순환
새로운 서비스의 상태의 지표는 어떻게 정의할까? 보통은 무엇을 SLI(서비스 수준 지표)로 사용할지를 정하는것으로 본다. 일반적으로 성공 및 실패 측정값(200 OK,500 Error), 응답시간(ms), 처리량 등의 조합으로 결정될 수 있다. 보통 카나리아 분석을 통해 Scoring을 한 SLI를 200 OK와 500 또는 에러코드의 비율로 결정하는 방법을 사용하는 경우가 많다.
서비스 상태를 식별하는 지표를 정하고 나면 고객이나 우리가 원하는 안정성 수준을 결정해야 한다. 개발팀과 운영팀이 같이 만든 원하는 안전성 수준을 SLO(서비스 수준 목표)라고 말하면 된다.
SLO는 Prometheus나 Datadog과 같은 모니터링 시스템을 활용하여 정확하게 측정하고 표시해야 한다. 서비스의 안정성에 대해서 명확하게 이해할수 있는 목표이기도 하다. 반드시 SLO를 만족하는지 못하는지 명확한 측정값으로 데이터가 존재해야 하고 SLO를 충족하지 못하면 문제가 있는것으로 판단하고 문제를 해결해야 한다.