사이트 신뢰성 엔지니어링(Site Reliability Engineering, SRE)은 소프트웨어 엔지니어링을 사용하여 시스템 관리자가 수작업으로 수행했던 IT 운영 작업(예: 프로덕션 시스템 관리, 변경 관리, 인시던트 대응, 심지어 긴급상황 대응도 포함)을 자동화합니다.
SRE의 원칙은 대규모 소프트웨어 시스템에 대한 감독을 자동화하기 위해 소프트웨어 코드를 사용하는 것이 수동 개입보다 더 확장 가능하고 지속 가능한 전략이라는 것입니다. 특히 이러한 시스템이 클라우드로 확장되거나 마이그레이션되는 경우 그러합니다.
또한 SRE는 계속적으로 새 소프트웨어 또는 업데이트된 소프트웨어를 프로덕션으로 릴리스하고자 하는 개발 팀과 운영 중단 또는 기타 운영 문제를 유발하지 않는다는 것이 확실하지 않으면 어떤 유형의 업데이트나 새 소프트웨어도 릴리스하려고 하지 않는 운영 팀 사이에서 자연적으로 발생하는 마찰의 많은 부분을 완화하거나 없앨 수 있습니다. 따라서 엄격히 말해 SRE는 DevOps에 필수적이지는 않지만, DevOps 원칙과 긴밀하게 관련되고 DevOps의 성공에 중요한 역할을 수행할 수 있습니다.
SRE의 개념은 "SRE는 소프트웨어 엔지니어에게 운영 팀 설계를 요청할 때 발생하는 것"이라는 유명한 글을 쓴 Google의 엔지니어링 부사장인 Ben Treynor Sloss가 만든 것입니다.
사이트 신뢰성 엔지니어는 IT 운영 경험이 있는 소프트웨어 개발자로, 코딩 방법을 알고 대규모 IT 환경에서 '운영을 유지'하는 방법도 이해합니다.
사이트 신뢰성 엔지니어는 수동 IT 운영 및 시스템 관리 작업(로그 분석, 성능 조정, 패치 적용, 프로덕션 환경 테스트, 사고 대응, 사후 분석 수행)을 수행하는 데 절반 이상의 시간을 사용하지 않고 나머지 시간은 이 작업을 자동화하는 코드를 개발하는 데 사용합니다. 목표는 시간이 흐름에 따라 전자에 사용하는 시간을 훨씬 더 줄이고 후자에 사용하는 시간을 훨씬 더 늘리는 것입니다.
개괄적으로 SRE 팀은 개발 팀과 운영 팀 사이의 다리 역할을 수행합니다. 즉, 개발 팀이 최대한 빨리 새 소프트웨어 또는 새 기능을 프로덕션 단계로 진행하고, 조직이 고객과 체결한 서비스 수준 계약(SLA)에 따라 IT 운영 성과와 오류 리스크가 합의된 적절한 수준에 이르도록 지원합니다. SRE 팀은 경험과 풍부한 운영 데이터를 기반으로 개발 팀과 운영 팀이 다음 사항을 고려할 수 있도록 돕습니다.
오류 예산은 SRE 팀이 회사의 서비스 신뢰성과 소프트웨어 개발 및 혁신 속도를 자동으로 조정하기 위해 사용하는 도구입니다.
회사의 SLA가 연간 99.99%의 가동 시간(일반적인 가용성 목표치)을 약속한다고 가정합니다. 이는 월간 오류 예산(특정 월에 계약을 위반하지 않은 상태로 허용되는 총 다운타임)이 약 4분 23초임을 의미합니다.
이제 개발팀이 시스템에 몇 가지 새로운 기능이나 개선 사항을 출시하려고 한다고 가정해 보겠습니다. 시스템이 오류 예산 아래에서 실행 중인 경우 팀은 새 기능을 제공할 수 있습니다. 그렇지 않을 경우 개발 팀은 운영 팀과 협력하여 이러한 오류 또는 운영 중단을 허용되는 수준으로 낮출 때까지 새 기능을 제공할 수 없습니다.
이러한 방식으로 오류 예산은 개발 팀과 운영 팀이 다음 사항을 수행할 수 있도록 돕습니다.
DevOps는 소프트웨어 제공 라이프사이클을 자동화하고, 개발 팀과 운영 팀이 책임을 더 많이 공유하고 서로의 업무에 대한 의견을 제시하도록 하여 고품질 애플리케이션을 더 빨리 제공하는 최신 방법입니다.
SRE와 마찬가지로 DevOps도 프로덕션 환경을 '중단'시키지 않아야 하는 필요성과 더 많은 애플리케이션과 변경 사항을 더 빨리 제공해야 하는 필요성 사이의 균형을 유지하여 비즈니스 민첩성을 향상합니다. SRE와 마찬가지로 DevOps는 허용되는 수준의 오류 리스크를 설정하여 이러한 균형을 유지하고자 합니다. 사실, SRE와 DevOps는 너무 비슷해 보이기 때문에 일부 전문가는 이 두 가지가 같은 것이라고 말합니다. 그러나, 대부분의 사람들은 SRE 관행이 DevOps 원칙을 구현하기 위한 탁월한 방법이라고 봅니다. 예를 들면 다음과 같습니다.
DevOps 원칙: 조직의 사일로를 줄이고, 툴링(tooling) 및 자동화 활용
SRE 관행: 개발자가 소프트웨어를 개발하고 향상하기 위해 사용하는 것과 같은 툴링을 사용하여 운영을 자동화 및 개선
DevOps 원칙: 실패를 당연한 것으로 받아들이고 점진적인 변화 실현
SRE 관행: 허용되는 수준 안에서 오류 예산에 따라 지속적으로 새 기능을 배포
DevOps 원칙: 모든 것을 측정
SRE 관행: SLA 지표에 따라 새로운 소프트웨어 릴리스 여부를 결정함
DevOps에 대한 자세한 내용은 아래 비디오에서 확인하세요(5:58).
사이트 신뢰성 엔지니어링은 DevOps의 성공을 지원할 뿐만 아니라 회사에 다음과 같은 장점을 제공할 수 있습니다.
기존 IT 및 온프레미스 데이터 센터에서 하이브리드 클라우드로의 마이그레이션은 매년 평균적인 엔터프라이즈가 생성하는 운영 데이터가 2~3배 증가하게 만든 주된 이유 중 하나입니다. 시스템 관리, 운영 및 인시던트 대응을 자동화하고, IT 환경이 더욱 복잡해지는 가운데 엔터프라이즈 신뢰성을 향상하기 위해 이러한 데이터를 활용하려면 SRE가 필수적이라고 보는 사람들이 더 많아지고 있습니다.
클라우드 네이티브 개발 접근법(특히, 애플리케이션을 마이크로서비스로 구축하고 이를 컨테이너에 배포하는 것)은 애플리케이션 개발, 배포, 확장을 간소화할 수 있습니다. 그러나 클라우드 네이티브 개발로 인해 관리와 운영을 복잡하게 하는 더욱 분산된 환경이 조성되기도 합니다. SRE 팀은 DevOps 팀에게 운영 압박을 가중시키지 않고 클라우드 네이티브 접근법으로 가능해지는 빠른 혁신 속도를 지원하고 시스템 신뢰성을 유지하거나 향상할 수 있습니다.
IBM Cloud Pak for Watson AIOps는 IT 운영자가 ITOps 툴체인의 핵심에 AI를 배치할 수 있도록 지원하는 IT 운영 관리 솔루션입니다.
인프라 비용을 33% 절감하고, 데이터 센터 교체 비용을 75% 절감하고, 보다 스마트한 리소스 관리를 통해 엔지니어링 시간을 30% 절약할 수 있습니다.
인시던트를 더 빠르게 해결하는 데 필요한 컨텍스트를 제공하도록 애플리케이션 성능 모니터링을 강화합니다.
AI와 자동화를 IT 운영에 적용하여 복원력이 뛰어나고 견고한 엔터프라이즈 애플리케이션을 제공하고, 가치 있는 시간과 인재를 아껴 혁신을 지원하도록 SRE를 어떻게 도울 수 있는지 살펴봅니다.
IBM이 제공하는 전문 교육 및 인증을 통해 SRE가 되기 위해 필요한 기술과 능력을 갖출 수 있습니다. IBM Cloud 환경 및 툴을 사용하여 학습하고 가상 랩에서 실습이 가능합니다.
DevOps는 소프트웨어 개발 및 IT 운영 팀의 작업을 결합하고 자동화함으로써 고품질의 소프트웨어를 보다 빠르게 제공합니다.
클라우드 네이티브 애플리케이션은 마이크로서비스로 구성되어 있으며, 컨테이너로 패키지화되고 배포되며, 어느 클라우드 환경에서나 실행되도록 설계됩니다.
Kubernetes는 애플리케이션의 배치, 관리 및 확장을 자동화하는 오픈 소스 컨테이너 오케스트레이션 플랫폼입니다.