SRE (Site Reliability Engineering) 역할
SRE (Site Reliability Engineering) 역할
SRE(Site Reliability Engineering)은 조직이 해당 시스템, 서비스 및 제품에서 적절한 수준의 안정성을 달성하도록 지원하는 엔지니어링 분야로, 실패 비용을 줄임으로써, 신속하게 올바른 방향으로 이동할 수 있도록 지원한다. 이 과정에서 SRE는 자동화, 수치화, 프로세스화를 진행한다. 특히 SRE 관점은 “근본적인 문제는 소프트웨어의 문제”라고 정의하고 접근한다. SRE가 하는 일은 크게 5가지 정도로 나누어 볼 수 있다.
[Metric & Monitoring]
모니터링 지표를 정의하고, 정의된 지표를 모니터링 시스템으로 구성한다. 인사이트를 통해 시스템이 안정적인 상황과 또는 장애가 나는 지표는 무엇인지, 왜인지? 그리고 이러한 지표를 어떻게 개선할 수 있는지를 고민한다.기본적으로 SRE에서 가장 중요한 부분은 모든것을 데이타화하고, 의사결정을 데이타를 기반으로 한다는 것이다.
[Capacity Planning]
시스템을 운영하는데 필요한 하드웨어 리소스(서버, CPU,메모리,디스크,네트워크 등)을 확보하는 작업을 진행한다. 수집된 데이터를 통해 서비스 안정성에 필요한 하드웨어를 미리 예측하는 것이다. SRE 엔지니어는 자원 활용의 효율성 측면에서 소프트웨어의 성능을 그리고 안정성 측면에서 소프트웨어의 안정성을 함께 볼 수 있어야 한다.
[Change Management]
대부분의 시스템 장애의 원인은 대략 70%가 시스템에 변경을 주는 경우에 발생한다. SRE는 점진적인 배포와 변경을 관리한다.배포 또는 장애시 빠르고 정확하게 해당 문제를 찾아낼 수 있도록 해야하며 마지막으로 문제가 발생하였을때 빠르게 롤백할 수 있도록 해야한다.
[Emergency Response]
일반적으로 장애 복구 단계에서 사람이 직접 매뉴얼로 복구를 하게 되면 장애 복구 시간이 더 많이 소요된다. 사람이 컨트롤을 하되 가급적이면 각 단계는 자동화 되는게 좋으며, 사람이 해야 하는 일은 되도록이면 메뉴얼화 되어 있는 것이 좋다. SRE는 자동화 뿐만아니라 메뉴얼, 프로세스를 함께 제공한다.
[Culture]
운영에 필요한 작업뿐만 아니라 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-13 / Sungwook Kang / http://sungwookkang.com
SRE, Site Reliability Engineering, DevOps, 사이트안정성엔지니어링, 사이트신뢰성엔지니어링, 시스템운영, SiteReliability, 서비스운영, 모니터링자동화, 시스템운영자동화