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 기반 장애 복구 모의훈련
CultureError Budget– 특정 시스템이 일정 시간동안 허용되는 장애 시간
– 데이터 기반 의사결정, 비난 보다 장애 분석

나. SRE의 안정성 확보 활동

안정성 확보 활동세부 계획
조직의 SILO 최소화– 시스템 안정성에 대한 책임 공유
– 조직 간 효과적 협업을 위한 포스트모텀 문화
장애에 대한 반응– 서로 비난하지 않는 문화, 장애 발생 후 회고
– 가용성에 대한 적절한 관리위한 Error Budget 개념 도입
점진적 변화 수행– 빅뱅 방식 보다 분할과 정복 방식의 배포 수행
– MTTR 최소화를 위한 카나리 배포, 롤링 업데이트 적용
매뉴얼 기반 자동화– 자동화를 통해 사람이 운영에 직접 관여를 최소화
– 수동 작업량 측정 및 조절, Toil 기반 관리
지표화 관리– 측정 가능한 모든 지표를 정량적으로 관리하여 표현
– 시스템 지표 뿐 아니라 작업 시간, 장애 시간 등

 
[참고]

  • Microsoft Docs, “SRE(사이트 안정성 엔지니어링) 소개”
  • Google Next 2018, “Improving Reliability with Error”

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^