Jump to section

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

URL 복사

사이트 신뢰성 엔지니어링(Site Reliability Engineering, SRE)은 IT 운영에 대한 소프트웨어 엔지니어링 접근 방식입니다. SRE 팀은 소프트웨어를 툴로 활용하여 시스템을 관리하고, 문제를 해결하고, 운영 태스크를 자동화합니다.

SRE 팀은 과거에 운영 팀이 종종 수동으로 수행하던 태스크를 받아 엔지니어나 운영 팀에 넘기고, 엔지니어 또는 운영 팀은 소프트웨어와 자동화를 사용해 문제를 해결하고 프로덕션 시스템을 관리합니다. 

SRE는 확장 가능하고 신뢰성 높은 소프트웨어 시스템을 생성할 때 유용한 방법입니다. 코드를 통해 대규모 시스템을 관리할 수 있으므로 수천 대에서 수십만 대에 이르는 머신을 관리하는 시스템 관리자에게 더 큰 확장성과 지속가능성을 제공합니다. 

사이트 신뢰성 엔지니어링은 Google 엔지니어링 팀의 Ben Treynor Sloss가 창안한 개념입니다. 

SRE를 활용하는 팀은 새 기능을 적기에 출시하고 사용자에게 신뢰성을 보장할 수 있습니다.

이와 관련해 표준화와 자동화는 SRE 모델에서 중요한 두 가지 구성 요소입니다. 따라서 사이트 신뢰성 엔지니어는 운영 태스크를 개선하고 자동화할 방법을 모색합니다.

이러한 방식으로 SRE는 현재, 그리고 시간 경과에 따른 성장 과정에서 시스템 신뢰성을 높일 수 있도록 지원합니다. 

SRE는 IT 운영을 기존 방식에서 클라우드 네이티브 방식으로 전환하는 팀을 지원합니다.

사이트 신뢰성 엔지니어(Site Reliability Engineer, SRE)는 시스템 관리자, 부가적인 운영 경험이 있는 소프트웨어 개발자, 또는 소프트웨어 개발 기술도 보유한 IT 운영자와 같은 경력이 요구되는 독특한 역할입니다. 

SRE 팀은 코드의 배포, 구성, 모니터링 방식뿐만 아니라 프로덕션 환경에서 서비스 가용성, 대기 시간, 변경 관리, 비상 대응 및 용량 관리를 담당합니다.

SRE 팀은 서비스 수준 계약(Service-Level Agreement, SLA)을 사용하여 서비스 수준 지표(Service-Level Indicator, SLI) 및 서비스 수준 목표(Service-Level Objective, SLO)를 통해 시스템에 요구되는 신뢰성을 정의함으로써 새로운 기능의 출시를 결정합니다. 

SLI는 제공되는 서비스 수준의 특정 측면을 측정합니다. 주요 SLI에는 요청 대기 시간, 가용성, 오류 발생률 및 시스템 처리량이 포함됩니다. SLO는 SLI에 기반하여 지정된 서비스 수준에 대한 대상 값 또는 범위를 기반으로 합니다.

그런 다음, 허용 가능한 것으로 결정된 다운타임에 기반하여 시스템 신뢰성 요구 사항에 대한 SLO가 결정됩니다. 이러한 다운타임 수준을 오차 할당이라고 하며, 오류 및 운영 중단에 허용되는 최대 임계값을 뜻합니다. 

SRE에서는 100% 신뢰성을 기대하지 않으며 장애에 대비해 계획을 마련하고 장애를 예상합니다.

설정된 오차 할당은 개발 팀이 새 기능을 출시할 때 '사용'할 수 있습니다. 팀은 SLO 및 오차 할당을 사용하여 가용 오차 할당에 근거해 제품 또는 서비스 출시 여부를 결정합니다.

서비스가 오차 할당 범위 내에서 실행 중이라면 개발 팀은 원할 때 언제든지 출시할 수 있습니다. 하지만 현재 시스템에 오류가 너무 많거나 허용되는 오차 할당보다 더 오랫동안 중단되는 경우에는 오류가 오차 할당 범위 이내로 줄어들 때까지 신규 출시가 이루어질 수 없습니다.   

개발 팀은 자동화된 오퍼레이션 테스트를 수행하여 신뢰성을 증명합니다. 

사이트 신뢰성 엔지니어는 운영 태스크 시간과 프로젝트 작업 시간을 구분합니다. Google의 SRE 모범 사례에 따르면, 사이트 신뢰성 엔지니어는 자기 시간의 최대 50%만 운영에 사용할 수 있으며 모니터링을 통해 이 시간을 초과하지 않도록 해야 합니다.  

나머지 시간은 새 기능 생성, 시스템 스케일링, 자동화 구현 등의 개발 태스크에 사용해야 합니다.

이 시간을 초과하는 운영 작업과 성능이 저하된 서비스는 사이트 신뢰성 엔지니어가 애플리케이션 또는 서비스 운영에 너무 많은 시간을 할애하지 않도록 개발 팀으로 다시 리디렉션될 수 있습니다. 

자동화는 사이트 신뢰성 엔지니어의 역할에서 중요한 부분을 차지합니다. 사이트 신뢰성 엔지니어가 만약 반복적으로 특정 문제를 처리하고 있다면 솔루션을 자동화하고자 할 것입니다. 

운영과 개발 작업 간의 균형을 유지하는 것이 SRE의 핵심입니다. 

DevOps는 신속한 고품질 서비스 제공을 통해 비즈니스 가치와 대응 능력을 향상시키기 위한 문화, 자동화, 플랫폼 설계에 대한 접근 방식입니다. SRE는 DevOps의 구현으로 간주될 수 있습니다.

DevOps와 마찬가지로 SRE는 팀 문화 및 관계에 관한 것입니다. SRE와 DevOps 모두 개발 팀과 운영 팀 사이의 간극을 메우고 서비스를 더 빠르게 제공하는 데 도움이 됩니다. 

DevOps와 SRE 모두 더 빠른 애플리케이션 개발 라이프사이클, 서비스 품질 및 신뢰성 개선, 개발되는 애플리케이션당 소요되는 IT 시간 단축 등의 혜택을 달성할 수 있습니다.

하지만 SRE는 커뮤니케이션 및 워크플로우 문제를 해결할 때 운영 관련 경력도 보유한 개발 팀의 사이트 신뢰성 엔지니어에 의존한다는 점에서 DevOps와 다릅니다.

사이트 신뢰성 엔지니어 역할 자체에는 서로 중첩되는 책임이 요구되므로 개발 팀과 운영 팀의 기술이 결합됩니다. 

DevOps 팀에서 개발자의 운영 태스크 부담이 과도하고 더 전문화된 운영 기술을 보유한 사람이 필요한 경우 SRE가 도움이 될 수 있습니다. 

새 기능을 코딩하고 빌드할 때 DevOps는 개발 파이프라인을 효율적으로 거치는 데 중점을 두는 반면, SRE는 사이트 신뢰성과 새로운 기능 개발 간 균형을 맞추는 데 중점을 둡니다. 

컨테이너 기술, 쿠버네티스 및 마이크로서비스에 기반을 둔 현대적인 애플리케이션 플랫폼은 DevOps 사례에 매우 중요하며, 보안과 혁신적인 소프트웨어 서비스를 제공하는 데 도움이 됩니다.

Red Hat Developer에서 DevOps에 대해 자세히 알아보기

플랫폼 엔지니어링과 사이트 신뢰성 엔지니어링의 공통 분모는 시스템을 개발하고 유지 관리한다는 것입니다. 두 개념의 차이점은 각 사례가 강조하는 부분이 다르다는 데 있습니다. SRE는 IT 운영 팀이 중심이 되어 시스템 관리, 문제 해결, 운영 태스크 자동화 작업을 수행하는 툴로 소프트웨어를 사용하도록 지원합니다.

플랫폼 엔지니어는 개발 팀을 중심으로 시스템 관리, 문제 해결, 개발 태스크 자동화 등을 위한 플랫폼을 개발하도록 돕습니다. 

SRE는 애플리케이션 라이프사이클 전반에서 일상적인 운영 태스크의 자동화와 표준화를 사용합니다. Red Hat® Ansible® Automation Platform은 SRE 팀이 속도, 협업, 성장을 위해 자동화를 추진하도록 지원하는 포괄적인 통합 플랫폼으로서, 기업의 기술, 운영, 재무 기능 전반에 걸쳐 보안 및 지원을 제공합니다. 

특히 Ansible Automation Platform는 다음 사항을 제공합니다. 

  • 클라우드 및 온프레미스에서 인스턴스, 라우팅, 부하 분산, 방화벽 등을 위한 인프라 오케스트레이션 
  • 적절한 크기의 클라우드 리소스와 필요에 따라 중앙 처리 장치(CPU), 랜덤 액세스 메모리(RAM)와 같은 리소스 추가 또는 제거를 포함하는 인프라 최적화 
  • 지속적 통합/지속적 제공(CI/CD) 파이프라인을 이용한 애플리케이션 배포, 운영 체제 패치 적용, 유지 관리를 포함하는 클라우드 운영
  • 클라우드에서 리소스 이동 및 복사, 백업을 위한 정책 생성 및 관리, 운영 중단 및 장애 관리를 포함하는 비즈니스 연속성

SRE는 클라우드 네이티브 개발 스타일에 맞게 설계된 기반도 활용합니다. Linux® 컨테이너는 개발, 제공, 통합, 자동화를 위한 통합 환경을 지원합니다.

또한 쿠버네티스는 Linux 컨테이너 운영을 자동화할 수 있는 현대적인 방법입니다. 팀은 쿠버네티스를 활용해 퍼블릭, 프라이빗 또는 하이브리드 클라우드 전반에서 Linux 컨테이너를 실행 중인 클러스터를 더 효율적으로 관리할 수 있습니다.

SRE 이니셔티브를 지원하는 엔터프라이즈 수준의 쿠버네티스 플랫폼인 Red Hat® OpenShift®를 통해 팀은 IT 인프라를 현대화하고 조직이 고객에게 더 나은 서비스를 제공하고 비즈니스 목표를 달성할 수 있는 유리한 입지를 확보하게 하는 문화 및 프로세스 트랜스포메이션을 구현할 수 있습니다. 

추가 자료

문서

DevSecOps란?

DevOps의 민첩성과 대응 능력을 최대한 활용하려면 IT 보안 팀이 애플리케이션의 전체 라이프사이클에서 주요 역할을 해야 합니다.

문서

CI/CD(지속적 통합/지속적 제공): 개념, 방법, 장점, 구현 과정

CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공합니다.

문서

DevOps 엔지니어는 어떤 사람일까요?

DevOps 엔지니어는 조직 내 협업, 혁신, 문화적인 변화를 지원하는 기술 및 전문성을 두루 갖추고 있습니다.  

DevOps에 대한 자세한 내용

제품

Red Hat 전문가가 참여하는 집중적인 전문 레지던스 환경에서 애자일 방법론과 오픈소스 툴로 기업의 비즈니스 문제를 해결하는 방법을 학습합니다.

다양한 시각으로 고객의 상황을 파악하고 이를 바탕으로 고객의 과제를 분석하여 종합적이고 비용 효율적인 솔루션을 통해 문제를 해결하도록 돕는 전략적인 조언자입니다.

리소스

체크리스트

DevOps 방법론을 활용한 엔터프라이즈 자동화

백서

Red Hat Ansible Automation Platform으로 CI/CD 파이프라인 간소화

자세히 알아보기