2021년 1월 21일
SRE (Site Reliability Engineering)
I. 효과적인 DevOps 적용 기술, SRE의 개요
가. SRE(Site Reliability Engineering)의 개념
- 시스템, 서비스 및 제품에서 적절한 수준의 안정성을 지속적으로 달성할 수 있도록 지원하는 소프트웨어 엔지니어링 기술
- DevOps 적용에 따라 개발팀은 속도를, 운영팀은 안정성을 중요시 하므로 이를 적절히 중재, 관리하기 위하여 SRE가 등장
나. SRE의 목적
적절한 안정성 달성 | – 시스템 및 서비스 장애로 인해 발생하는 기업이나 조직의 신뢰도 하락, 금전적 피해 등 비즈니스 악영향을 최소화 |
지속가능한 운영방식 수립 | – 시간이 지나도 지속되는 운영 방식을 구현하여 사람들이 업무에 최선을 다할 수 있도록 지원 |
- 항공, 의료 등 생명과 직결과는 분야는 예외로 하며, 이 분야들은 DO-178C, ISO 62304 등 표준 기반 안정성이 필요
다. SRE의 수행 원칙
- 가용성에 대한 명확한 정의
- 가용성 목표 정의
- 장애 대응 계획
II. SRE의 핵심 요소와 안정성 확보 활동
가. SRE의 핵심 요소와 주요 기법
핵심 요소 | 주요 기법 | 구현 방안 |
---|---|---|
Metric & Monitoring | SLI (Indicator) SLO (Objective) | – 정량적 모니터링 지표 정의 – 안정성 목표를 SLO로 정의 |
Capacity Planning | 수요 기반 예측 및 성능 튜닝 | – 운영을 위한 충분한 H/W 리소스 파악 – 자원 활용 효율성 측면 안정성 최대화 |
Change Management | 카나리 배포 롤링 업데이트 | – 소프트웨어 배포와 업데이트, 변경 관리 – 점진적 배포, 장애 시 빠른 파악 및 롤백 |
Emergency Response | MTTF, MTTR Playbook | – 장애 시 빠른 복구로 장애 시간 최소화 – Playbook 기반 장애 복구 모의훈련 |
Culture | Error Budget | – 특정 시스템이 일정 시간동안 허용되는 장애 시간 – 데이터 기반 의사결정, 비난 보다 장애 분석 |
나. SRE의 안정성 확보 활동
안정성 확보 활동 | 세부 계획 |
---|---|
조직의 SILO 최소화 | – 시스템 안정성에 대한 책임 공유 – 조직 간 효과적 협업을 위한 포스트모텀 문화 |
장애에 대한 반응 | – 서로 비난하지 않는 문화, 장애 발생 후 회고 – 가용성에 대한 적절한 관리위한 Error Budget 개념 도입 |
점진적 변화 수행 | – 빅뱅 방식 보다 분할과 정복 방식의 배포 수행 – MTTR 최소화를 위한 카나리 배포, 롤링 업데이트 적용 |
매뉴얼 기반 자동화 | – 자동화를 통해 사람이 운영에 직접 관여를 최소화 – 수동 작업량 측정 및 조절, Toil 기반 관리 |
지표화 관리 | – 측정 가능한 모든 지표를 정량적으로 관리하여 표현 – 시스템 지표 뿐 아니라 작업 시간, 장애 시간 등 |
[참고]
- Microsoft Docs, “SRE(사이트 안정성 엔지니어링) 소개”
- Google Next 2018, “Improving Reliability with Error”