사이트 신뢰성 엔지니어링(SRE)이란?

사이트 신뢰성 엔지니어링은 운영 프로세스를 활용하는 프로세스로, 이를 소프트웨어 엔지니어링 팀에 적용하여 자동화 시스템을 구축합니다.

IT 팀은 끊임없이 SRE 방법론을 도입하고자 노력합니다. 사이트 신뢰성 엔지니어링 방식은 운영 프로세스를 활용하여 이를 사람이 하는 작업, 문제 해결 및 시스템 관리의 자동화를 위해 소프트웨어 엔지니어에게 전달하는 것입니다. SRE 팀은 변경 관리, 긴급 상황 대처, 모니터링, 가용성, 성과, 잠재성, 효율성 및 서비스 계획 용량(일반적으로 프로세스 자동화를 위한 소프트웨어 개발)을 담당합니다.

SRE는 소프트웨어 및 확장성의 신뢰도를 높이는 데 효과적인 자산입니다. 제품 및 기능의 신뢰성 확보와 새로운 제품 및 기능 릴리스 간 균형을 맞추기 위해 코드를 통해 시스템이 관리되기 때문입니다.

Google의 Ben Treynor Sloss가 ‘SRE’라는 용어를 사용

SRE라는 용어를 제대로 사용한 사람은 Google의 Ben Treynor Sloss로, 그는 SRE를 ‘소프트웨어 엔지니어에게 운영이라는 작업이 주어졌을 때 이루어지는 일’이라고 정의했습니다. 기능이 어떤 부분에 부정적 영향을 미치지 않거나 최종 사용자에게 불편을 주지 않도록 노력하는 운영 팀과 새로운 기능이 출시 준비를 마치자마자 이를 릴리스하기 원하는 개발 팀 간 분쟁을 조사한 뒤에 이러한 개념이 생겨났습니다. SRE는 이러한 두 팀 간의 조화를 의미합니다.

Google 엔지니어 팀이 SRE에 대한 책 출간

Google은 SRE에 대한 책을 온라인으로 무료 배포했습니다. 이 책에서는 SRE의 역할 및 권장되는 베스트 프랙티스에 대해 깊이 있게 설명합니다. 원칙과 사례를 다루는 2번째 및 3번째 파트에 주목할 만 합니다.

SRE 원칙: Google에 따르면 SRE의 핵심 원칙은 다음과 같습니다.

  • 위험 수용: 오류 예산을 사용하여 서비스 관리에 중립적 전략을 제공합니다.
  • 서비스 수준 목표: 계약과 관련되 지표에 대한 권장 사항을 제공하고 SRE가 해당 용어를 사용하는 방법을 조사합니다.
  • 불필요한 작업 제거: 가치가 전혀 없는 일상적이고 반복되는 작업을 제거합니다.
  • 분산된 시스템 모니터링: 신뢰성 확보를 위해 조직 내에서 일어나고 있는 일에 항상 관심을 기울입니다.
  • 엔지니어링 릴리스: 릴리스가 일관성 있으며 중단의 원인이 되지 않도록 릴리스를 세심하게 관리합니다.
  • 단순성: 시스템이 너무 복잡하면 신뢰성이 낮아지고, 단순했던 이전 단계로 돌아가기 어려워질 수 있습니다.

SRE 시행: SRE는 외부 또는 내부 사용자를 위한 관련 시스템을 실행하고 서비스에 대한 책임을 지닙니다. 서비스의 성공적인 운영에는 용량 계획, 중단의 근본 원인 해결, 모니터링 시스템 개발이 포함됩니다. Google의 신뢰도 높은 서비스의 체계는 다음과 같습니다.

  • 제품: 신뢰성 체계의 가장 높은 부분을 차지하는 요소로, 제품이 실행 가능하며 신뢰할 수 있음을 나타냅니다.
  • 개발: 회사 내 소프트웨어 엔지니어링과 시스템 디자인 작업입니다.
  • 용량 계획: 부하 분산을 통해 구축된 용량이 적절하게 사용될 수 있도록 합니다.
  • 테스트 및 릴리스 절차: 잘못되었던 부분에 대한 지식을 얻은 뒤 이를 적극적으로 방지합니다. 제품이 릴리스되기 전에 세심하게 테스트해야 합니다.
  • 사후/근본원인 분석: 실수를 비난하지 않는 문화를 조성하고 문제의 해결을 통해 인시던트가 반복적으로 발생하지 않도록 합니다.
  • 인시던트 응답: 당직을 통해 시스템에 항상 관심을 기울이고, 효과적으로 문제를 해결하고, 사전에 세심하게 계획합니다.
  • 모니터링: 최종 사용자가 발견하기 전에 문제를 인지합니다.
What-is-AIOps-1

효과적인 SRE에는 경험이 필요합니다

풍부한 소프트웨어 경험을 지닌 사람이 사이트 신뢰성 엔지니어의 역할을 가장 잘 수행할 수 있으며, 이는 신입 직원에게는 권장되지 않는 역할입니다. SRE를 적절히 시행하기 위해서는 소프트웨어 엔지니어링의 유연함과 대규모의 복잡한 시스템에 대한 이해가 필수적입니다.

SRE는 철학과도 같습니다

사이트 신뢰성 엔지니어에게는 이 역할을 위해 알맞은 마음가짐이 필요합니다. 기술적 능력이 필수적이지만 운영에 대한 개념적 이해도 반드시 필요합니다. SRE가 기존의 소프트웨어 개발 프로세스를 기반으로 진행되어야 하지만, 회사 프로세스를 전체적으로 이해하고 신뢰도 높은 시스템을 발전시키는 것 또한 굉장히 중요합니다.

SRE가 변화의 기폭제가 되어야 합니다

조직 내 모든 사람들이 최대한 신뢰도 높게 행동할 의무가 있으므로 SRE의 중요한 원칙이 적용됩니다. 각 팀에 신뢰성 모델을 적용하고 신뢰성이 각 팀에 어떻게 적용되고 팀원들에게 어떤 영향을 미쳤는지에 관해 이야기를 나누어 보세요.

사이트 신뢰성 엔지니어(SRE)의 역할 및 책임

현재 제품의 성능을 기반으로 새로운 출시를 진행할지가 결정됩니다. 일반적으로 애플리케이션은 완전하지 않습니다. SRE 팀은 서비스 수준 계약을 작성하여 시스템을 정의하고 최종 사용자를 위해 이를 어떻게 사용할지 결정합니다. 서비스 수준 계약의 보편적인 부분은 오류 예산 또는 중단 및 오류에 대한 임계치의 최대 양입니다.

코딩도 할 수 있는 SRE

개발 팀과 SRE 팀은 직원을 공유합니다. 즉, SRE에 팀원이 추가되면 개발자가 한 명 줄어들게 되며, 그 반대의 경우도 마찬가지입니다. 이 시스템은 개발자와 SRE 간 팀원 충원 문제로 분쟁이 일어나는 것을 스스로 규제합니다. SRE 팀원은 코딩과 개발을 동시에 할 줄 알기 때문에, 개발 팀과 함께 효과적으로 일을 진행할 수 있습니다.

SRE 팀원은 여러 프로젝트를 자유롭게 오갈 수 있습니다. SRE는 강한 동기 부여를 통해 팀원이 자신의 개인적 목표 추구에도 전념할 수 있도록 지원합니다.

사이트 신뢰성 엔지니어의 일반적인 역할 및 책임

  • 소프트웨어를 개발하여 운영 및 팀을 지원
  • 에스컬레이션 문제 해결
  • 당직 프로세스 최적화
  • 팀의 지식 문서화
  • 사후 인시던트 검토 시행

SRE는 IT 운영, 소프트웨어 엔지니어링 및 지원의 핵심 부분에 잘 적용되어 팀들 간 관계와 기반을 강화함으로써 피드백 루프, 협업 및 신뢰성에 도움을 줍니다.

사이트 신뢰성 전문가의 SRE 맞춤 설정

SRE는 종합적인 관점을 제공하여 여러 다른 팀들이 하나의 목표를 바라볼 수 있게 합니다.

자동화는 SRE의 기초입니다

SRE 역할의 상당 부분은 비효율성을 제거하고 쉽게 자동화할 수 있는 요소를 파악하는 것입니다. 시간이 오래 걸리는 작업을 제거하여 많은 수작업 없이도 효율성을 증대할 수 있습니다.

SRE는 기술 회사에만 필요한 것이 아닙니다

SRE는 기술 업계에만 적용되지 않습니다. 사이트 신뢰성 엔지니어링 문화는 전자상거래, 고객 서비스 및 제조 분야에도 적용될 수 있습니다.

DevOps는 좋은 소프트웨어를 개발 및 출시하는 방식으로, 운영과 개발의 역할을 조합하기 위해 소프트웨어 개발과 운영을 결합합니다. 반면에 SRE는 DevOps의 운영적 측면보다는 개발 부분에 집중하는 경향이 있습니다.

DevOps 자세히 알아보기
DevOps 및 SRE 팀을 위한 최신 운영의 제공

Linux 컨테이너는 클라우드 기반 개발에 필요한 기술을 제공하며 통합, 자동화, 개발 및 출시를 위한 환경 통합을 지원합니다. Kubernetes가 필수 Linux 컨테이너를 자동화할 수 있습니다.

SRE를 위한 하나의 균일한 도구 세트는 없습니다. 하지만 회사 내에서 확장성 및 반복성을 위한 자동화와 함께 SRE 기능을 구축하는 것이 중요합니다.

ServiceNow는 여러 팀에 걸친 작업 연결, 마이크로서비스 등록, 옵저버블 데이터의 상관관계 형성, 간편하게 메트릭에 신뢰성 제공, 변경 자동화, 실패 예측 등을 통해 높은 가치를 제공합니다. 기존 도구에는 전혀 영향을 주지 않고 이 모든 것이 가능합니다.

비즈니스에 따라 확장되는 역량

ServiceNow를 통해 SRE 혁신 계획을 세워보십시오.