사이트 신뢰성 엔지니어링이란 무엇인가요?

사이트 신뢰성 엔지니어링 (SRE) 은 소프트웨어 도구를 사용하여 시스템 관리 및 애플리케이션 모니터링과 같은 IT 인프라 작업을 자동화하는 관행입니다. 조직은 SRE를 사용하여 개발 팀의 빈번한 업데이트 중에도 소프트웨어 응용 프로그램의 안정성을 유지합니다. SRE는 특히 소프트웨어를 사용하여 대규모 시스템을 관리하는 것이 수백 대의 기계를 수동으로 관리하는 것보다 지속 가능하기 때문에 확장 가능한 소프트웨어 시스템의 신뢰성을 향상시킵니다. 

사이트 신뢰성 엔지니어링이 중요한 이유는 무엇인가요?

사이트 신뢰성은 최종 사용자가 사용할 수 있게 된 후 애플리케이션이 제공하는 서비스의 신뢰성과 품질을 나타냅니다. 기술적 문제가 감지되지 않으면 소프트웨어 유지 관리가 소프트웨어 신뢰성에 영향을 주는 경우가 있습니다. 예를 들어, 개발자가 새로운 변경을 수행할 때 실수로 기존 애플리케이션에 영향을 주어 특정 사용 사례에서 충돌이 발생할 수 있습니다.

다음은 사이트 신뢰성 엔지니어링(SRE) 방식의 몇 가지 이점입니다.

팀 간

SRE는 개발 팀과 운영 팀 간의 협업을 강화합니다. 개발자는 종종 새로운 기능을 출시하거나 치명적인 버그를 수정하기 위해 애플리케이션을 빠르게 변경해야 합니다. 한편 운영 팀은 원활한 서비스 제공을 보장해야 합니다. 따라서 운영 팀은 SRE 방식을 사용하여 모든 업데이트를 면밀히 모니터링하고 변경으로 인해 발생하는 모든 문제에 즉시 대응합니다.

향상된 고객 경험

조직은 SRE 모델을 사용하여 소프트웨어 오류가 고객 경험에 영향을 미치지 않도록 합니다. 예를 들어, 소프트웨어 팀은 SRE 도구를 사용하여 소프트웨어 개발 수명 주기를 자동화합니다. 이렇게 하면 오류가 줄어들어 팀이 버그 수정보다 새로운 기능 개발을 우선시할 수 있습니다.

운영 계획 개선

 SRE 팀은 소프트웨어가 실패할 현실적인 가능성이 있음을 인정합니다. 따라서 팀은 가동 중지가 비즈니스와 최종 사용자에게 미치는 영향을 최소화하기 위해 적절한 인시던트 대응을 계획합니다. 또한 가동 중지로 인한 비용을 더 잘 추정하고 이러한 인시던트가 비즈니스 운영에 미치는 영향을 이해할 수 있습니다. 

사이트 신뢰성 엔지니어링의 핵심 원칙은 무엇인가요?

다음은 사이트 신뢰성 엔지니어링(SRE)의 몇 가지 주요 원칙입니다.

애플리케이션 모니터링

SRE 팀은 오류가 소프트웨어 배포 프로세스의 일부임을 인정합니다. 완벽한 솔루션을 찾는 대신 서비스 수준에 관한 계약(SLA), 서비스 수준 지표(SLI) 및 서비스 수준 목표(SLO) 측면에서 소프트웨어 성능을 모니터링합니다. 프로덕션 환경에 애플리케이션을 배포한 후 성능 지표를 관찰하고 모니터링합니다. 

점진적 변경 구현

SRE 방식은 시스템 신뢰성을 유지하기 위해 빈번하지만 작은 변경 사항을 릴리스하도록 권장합니다. SRE 자동화 도구는 일관되지만 반복 가능한 프로세스를 사용하여 다음을 수행합니다.

  • 변경으로 인한 위험을 줄입니다.
  • 시스템 성능을 측정하기 위한 피드백 루프를 제공합니다.
  • 변경 구현의 속도와 효율성을 높입니다.

신뢰성 향상을 위한 자동화

SRE는 전달 파이프라인의 모든 단계에서 신뢰성 원칙을 포함하는 정책과 프로세스를 사용합니다. 다음은 문제를 자동으로 해결하는 몇 가지 전략입니다.

  • 서비스 수준 목표를 기반으로 품질 게이트를 개발하여 조기에 문제 감지
  • 서비스 수준 지표를 사용하여 빌드 테스트 자동화
  • 소프트웨어 개발 초기에 시스템 복원력을 보장하는 아키텍처 결정

사이트 신뢰성 엔지니어링의 관측성이란 무엇인가요?

관측성은 소프트웨어가 최종 사용자를 위해 개시될 때 소프트웨어 팀이 불확실성에 대비할 수 있도록 준비하는 프로세스입니다. 사이트 신뢰성 엔지니어링(SRE) 팀은 도구를 사용하여 소프트웨어의 비정상적인 동작을 감지하고 더 중요하게는 개발자가 문제의 원인을 이해하는 데 도움이 되는 정보를 수집합니다. 관측성에는 SRE 도구를 사용하여 다음 정보를 수집하는 것이 포함됩니다. 

지표 

지표는 애플리케이션의 성능 또는 시스템 상태를 반영하는 수량화 가능한 값입니다. SRE 팀은 지표를 사용하여 소프트웨어가 과도한 리소스를 소비하거나 비정상적으로 작동하는지 확인합니다.

로그

SRE 소프트웨어는 특정 이벤트에 대한 응답으로 로그라는 자세한 타임스탬프 정보를 생성합니다. 소프트웨어 엔지니어는 로그를 사용하여 특정 문제를 일으키는 일련의 이벤트를 파악합니다. 

트레이스 

트레이스는 분산 시스템에서 특정 함수의 코드 경로를 관찰한 것입니다. 예를 들어, 장바구니 결제에는 다음과 같은 과정이 포함됩니다.

  • 데이터베이스로 가격 계산
  • 결제 게이트웨이로 인증
  • 공급업체에 주문 제출

트레이스는 ID, 이름 및 시간으로 구성되며 소프트웨어 개발자가 지연 시간 문제를 감지하고 소프트웨어 성능을 개선하는 데 도움이 됩니다. 

사이트 신뢰성 엔지니어링에서 모니터링이란 무엇인가요?

모니터링은 애플리케이션에서 미리 정의된 지표를 관측하는 프로세스입니다. 개발자는 애플리케이션 상태를 파악하는 데 중요한 파라미터를 결정하고 모니터링 도구에서 설정합니다. 사이트 신뢰성 엔지니어링(SRE) 팀은 시스템 성능을 반영하는 중요한 정보를 수집하여 차트로 시각화합니다.

SRE에서 소프트웨어 팀은 이러한 지표를 모니터링하여 시스템 신뢰성에 대한 인사이트를 얻습니다.

지연 시간 

지연 시간은 애플리케이션이 요청에 응답할 때의 지연을 나타냅니다. 예를 들어, 웹 사이트에서 양식을 제출하면 사용자가 승인 웹 페이지로 이동하기까지 3초가 걸립니다. 

트래픽

트래픽은 서비스에 동시에 액세스하는 사용자 수를 측정하며 소프트웨어 팀이 모든 사용자에게 만족스러운 서비스 수준을 유지하기 위해 그에 따라 컴퓨팅 리소스의 예산을 책정하는 데 도움이 됩니다.

오류

오류는 애플리케이션이 예상대로 수행하거나 전송하지 못하는 상태입니다. 예를 들어, 웹 페이지가 로드되지 않거나 트랜잭션이 진행되지 않는 경우 SRE 팀은 소프트웨어 도구를 사용하여 애플리케이션의 오류를 자동으로 추적하고 대응합니다. 

포화도

포화도는 애플리케이션의 실시간 용량을 나타냅니다. 포화도가 높으면 대개 성능이 저하됩니다. 사이트 신뢰성 엔지니어는 포화도를 모니터링하여 특정 임계값 미만인지 확인합니다. 

사이트 신뢰성 엔지니어링의 주요 지표는 무엇인가요?

사이트 신뢰성 엔지니어링(SRE) 팀은 다음 지표를 사용하여 서비스 제공 품질과 신뢰성을 측정합니다. 

서비스 수준 목표

서비스 수준 목표(SLO)는 소프트웨어가 다음과 같은 다른 지표에 대해 합리적인 비용으로 달성할 수 있다고 확신하는 구체적이고 정량화 가능한 목표입니다. 

  • 가동 시간 또는 시스템 작동 시간
  • 시스템 처리량
  • 시스템 출력
  • 다운로드 속도 또는 애플리케이션 로드 속도

SLO는 소프트웨어를 통해 고객에게 제공을 약속합니다. 예를 들어, 회사 음식 배달 앱의 가동 시간 SLO를 99.95%로 설정했습니다.

서비스 수준 지표

서비스 수준 지표(SLI)는 SLO가 정의하는 지표의 실제 측정치입니다. 실제 상황에서는 SLO와 일치하거나 다른 값을 얻을 수 있습니다. 예를 들어, 애플리케이션이 99.92%의 시간 동안 가동되어 실행되며 이는 약속된 SLO보다 낮습니다. 

서비스 수준에 관한 계약

서비스 수준에 관한 계약(SLA)은 하나 이상의 SLO가 충족되지 않을 때 발생하는 상황을 명시하는 법적 문서입니다. 예를 들어, SLA에는 기술 팀이 보고서를 수신한 후 24시간 이내에 고객의 문제를 해결할 것이라고 명시되어 있습니다. 팀이 지정된 기간 내에 문제를 해결할 수 없는 경우 고객에게 환불해야 할 수도 있습니다.

오류 예산

오류 예산은 SLO에 대한 비준수 허용 오차입니다. 예를 들어, SLO에서 가동 시간 99.95%는 허용되는 가동 중지 시간이 0.05%임을 의미합니다. 소프트웨어 가동 중지 시간이 오류 예산을 초과하면 소프트웨어 팀은 애플리케이션을 안정화하는 데 모든 리소스와 주의를 집중합니다.

사이트 신뢰성 엔지니어링은 어떻게 작동하나요?

사이트 신뢰성 엔지니어링(SRE)에는 사이트 신뢰성 엔지니어의 소프트웨어 팀 참여가 포함됩니다. SRE 팀은 SRE에 대한 주요 지표를 설정하고 시스템의 위험 허용 수준에 따라 결정되는 오류 예산을 생성합니다. 오류 수가 적으면 개발 팀에서 새로운 기능을 출시할 수 있습니다. 그러나 오류가 허용된 오류 예산을 초과하면 팀은 새로운 변경을 보류하고 기존 문제를 해결합니다.

예를 들어, 사이트 신뢰성 엔지니어는 서비스를 사용하여 성능 지표를 모니터링하고 비정상적인 애플리케이션 동작을 탐지합니다. 애플리케이션에 문제가 있는 경우 SRE 팀은 소프트웨어 엔지니어링 팀에 보고서를 제출합니다. 개발자는 보고된 사례를 수정하고 업데이트된 애플리케이션을 게시합니다.

DevOps

DevOps는 개발 및 운영 팀의 기존 경계를 허무는 소프트웨어 문화입니다. DevOps를 사용하면 개발자와 운영 엔지니어가 더 이상 사일로에서 작업하지 않습니다. 대신 소프트웨어 도구를 사용하여 협업을 개선하고 소프트웨어 업데이트 릴리스의 빠른 속도를 따라갑니다.

SRE와 DevOps 비교

SRE는 DevOps를 실제로 구현한 것입니다. DevOps는 점점 짧아지는 개발 일정 속에서 소프트웨어 품질을 유지하기 위해 무엇을 해야 하는지에 대한 철학적 토대를 제공합니다. 사이트 신뢰성 엔지니어링은 DevOps 성공을 달성하는 방법에 대한 답을 제공합니다. SRE는 DevOps 팀이 속도와 안정성 사이에서 적절한 균형을 유지하도록 합니다. 

사이트 신뢰성 엔지니어의 책임은 무엇인가요?

사이트 신뢰성 엔지니어는 자동화 도구를 사용하여 프로덕션 환경에서 소프트웨어 신뢰성을 모니터링하고 관찰하는 IT 전문가입니다. 또한 소프트웨어에서 문제를 찾고 수정하는 코드를 작성하는 데 경험이 있습니다. 사이트 신뢰성 엔지니어는 일반적으로 우수한 코딩 기술을 가진 전직 시스템 관리자 또는 운영 엔지니어입니다. 다음은 몇 가지 사이트 신뢰성 책임입니다.

운영

사이트 신뢰성 엔지니어는 작업 시간의 최대 절반을 운영 작업에 소비합니다. 여기에는 다음과 같은 여러 태스크가 포함됩니다. 

  • 긴급 인시던트 대응
  • 변경 관리
  • IT 인프라 관리

엔지니어는 SRE 도구를 사용하여 여러 운영 태스크를 자동화하고 팀 효율성을 높입니다.

시스템 지원

사이트 신뢰성 엔지니어는 개발 팀과 긴밀히 협력하여 새로운 기능을 만들고 프로덕션 시스템을 안정화합니다. 전체 소프트웨어 팀을 위한 SRE 프로세스를 만들고 에스컬레이션 문제를 지원합니다. 더 중요한 것은 사이트 신뢰성 팀이 고객 지원에 문서화된 절차를 제공하여 불만 사항을 효과적으로 처리할 수 있도록 지원한다는 것입니다. 

프로세스 개선

사이트 신뢰성 엔지니어는 인시던트 사후 검토를 실시하여 소프트웨어 개발 수명 주기를 개선합니다. SRE 팀은 모든 소프트웨어 문제와 해당 솔루션을 공유 기술 자료에 문서화합니다. 이를 통해 소프트웨어 팀은 향후 유사한 문제에 효율적으로 대응할 수 있습니다. 

일반적인 사이트 신뢰성 엔지니어링 도구는 무엇인가요?

사이트 신뢰성 엔지니어링(SRE) 팀은 다양한 유형의 도구를 사용하여 모니터링, 관찰 및 인시던트 대응을 용이하게 합니다. 

컨테이너 오케스트레이터 

소프트웨어 개발자는 컨테이너 오케스트레이터를 사용하여 다양한 플랫폼에서 컨테이너식 애플리케이션을 실행합니다. 컨테이너식 애플리케이션은 코드 파일과 관련 리소스를 컨테이너라고 하는 단일 패키지 내에 저장합니다. 예를 들어, 소프트웨어 엔지니어는 Amazon Elastic Kubernetes Service(Amazon EKS)를 사용하여 클라우드 애플리케이션을 실행하고 조정합니다. 

비상 대기 관리 도구 

대기 관리 도구는 SRE 팀이 보고된 소프트웨어 문제를 처리하는 지원 담당자를 계획, 배치 및 관리하는 데 사용할 수 있는 소프트웨어입니다. SRE 팀은 소프트웨어를 사용하여 소프트웨어 문제에 대한 적시 알림을 수신할 수 있도록 항상 대기 중인 지원 팀이 있는지 확인합니다. 

인시던트 대응 도구 

인시던트 대응 도구는 감지된 소프트웨어 문제에 대한 명확한 에스컬레이션 경로를 보장합니다. SRE 팀은 인시던트 대응 도구를 사용하여 보고된 사례의 심각도를 분류하고 신속하게 처리합니다. 도구는 유사한 문제가 다시 발생하지 않도록 인시던트 사후 분석 보고서를 제공할 수도 있습니다. 

구성 관리 도구

구성 관리 도구는 소프트웨어 워크플로를 자동화하는 소프트웨어입니다. SRE 팀은 이러한 도구를 사용하여 반복적인 태스크를 없애고 생산성을 높입니다. 예를 들어, 사이트 신뢰성 엔지니어는 AWS OpsWorks를 사용하여 AWS 환경에서 서버를 자동으로 설정하고 관리합니다. 

AWS는 사이트 신뢰성 엔지니어링에 관해 어떤 도움을 줄 수 있나요?

 

AWS Management and Governance 서비스는 소프트웨어 팀이 시스템 신뢰성을 유지하면서 분산 애플리케이션을 빌드, 조정 및 배포하는 데 필요한 도구를 제공합니다. 사이트 신뢰성 엔지니어링(SRE) 팀은 다양한 AWS Management and Governance 서비스를 사용하여 AWS와 온프레미스 컴퓨팅 리소스를 모니터링하고 관리합니다.

  • AWS Service Catalog를 사용하면 SRE 팀이 IT 서비스를 관리하고 신속하게 배포하고 목록을 작성할 수 있습니다.
  • AWS Systems Manager는 사이트 신뢰성 엔지니어가 소프트웨어 컴퓨팅 리소스에 대한 운영 인사이트를 얻을 수 있도록 중앙 집중식 관리 허브를 제공합니다.
  • AWS Proton은 컨테이너식 및 서버리스 애플리케이션을 배포하기 위한 자동화된 관리 도구입니다.

지금 AWS 계정을 만들어 AWS에서 사이트 신뢰성 엔지니어링을 시작하세요.

AWS의 다음 단계

무료 계정에 가입

AWS 프리 티어에 즉시 액세스할 수 있습니다.

가입 
콘솔에서 구축 시작

AWS Management Console에서 사이트 신뢰성 엔지니어링을 사용하여 구축을 시작하세요.

로그인