안정성 엔지니어링이란?

완료됨

SRE(사이트 안정성 엔지니어링)는 소프트웨어 개발자가 프로덕션 단계 애플리케이션의 지속적인 일상 운영을 제어할 수 있도록 합니다. 지속적으로 배송해야 하는 개발 팀과 프로덕션 환경의 안정성을 담당하는 운영 팀 간의 간극을 메꾸는 것이 목표입니다. 사이트 안정성 엔지니어링은 프로덕션 안정성의 책임을 개발 팀의 SRE에게 이전합니다.

사이트 안정성 엔지니어는 일반적으로 애플리케이션의 안정성을 유지하는 일상적인 작업에 최대 50%의 시간을 사용하고 남는 시간에는 소프트웨어를 개발합니다.

소프트웨어 안정성 엔지니어의 핵심 기술은 애플리케이션에 대한 심층적인 이해입니다. 여기에는 코드, 애플리케이션의 작동 방식, 구성 방식과 스케일링에 대한 지식이 포함됩니다.

사이트 안정성 엔지니어의 일반적인 책임은 다음과 같습니다.

  • 애플리케이션의 성능을 사전에 모니터링하고 검토합니다.
  • 대기 중인 지원 및 긴급 지원을 처리합니다.
  • 소프트웨어에 올바른 로깅 및 진단이 있는지 확인합니다.
  • 운영 Runbook을 만들고 유지 관리합니다.
  • 에스컬레이션된 지원 티켓의 심사를 지원합니다.
  • 기능 요청, 오류, 기타 개발 작업을 수행합니다.
  • 전체 제품 로드맵에 기여합니다.
  • 라이브 사이트를 검토하고 시스템 중단에 대한 피드백을 캡처합니다.

사이트 안정성 엔지니어링 및 DevOps

DevOps는 운영 직원과 개발 팀 간 건강한 작업 관계를 구축합니다. 이들 사이의 사일로(silo)를 분석하면 DevOps가 더 강력하고 신뢰할 수 있는 제품을 만듭니다.

SRE와 DevOps는 모두 프로덕션 환경을 관리하는 방법이 필요한 조직의 요구에 대응하는 방법론입니다. 이전 모듈에서 배웠듯이 DevOps 피드백 시스템은 문제를 식별하고 개발자에게 알려 개발자가 문제를 해결하도록 할 수 있습니다. SRE를 통해 개발 팀의 사용자는 매일 사이트 안정성 관련 문제를 확인하며 아마도 해당 문제를 해결하게 될 것입니다. DevOps 팀은 일반적으로 반드시 필요한 경우를 제외하면 프로덕션 환경을 그대로 유지하는 것을 선택하는 반면, SRE는 변경할 가능성이 큽니다.

사이트 안정성 엔지니어링 기술

필요한 기술 유형은 애플리케이션, 배포 방식 및 위치와 모니터링 방식에 따라 달라집니다. 예를 들어 서버리스 기술을 사용하는 조직에서는 Windows 또는 Linux 시스템 관리에 대한 심층적인 지식을 갖춘 사람을 필요로 하지 않습니다. 하지만 해당 기술은 배포를 위해 서버를 사용하는 팀에게는 매우 중요합니다.

좋은 SRE를 위한 다른 핵심 기술은 애플리케이션 모니터링 및 진단에 집중하는 것입니다. SRE는 Application Insights와 같은 애플리케이션 성능 관리 도구를 사용해야 합니다. 또한 애플리케이션 로깅 모범 사례 및 예외 처리를 이해해야 합니다.