SRE란 무엇이고 중요한 이유는 무엇인가요?

완료됨

대체로 처음부터 시작하는 것이 가장 좋습니다. 먼저 “사이트 안정성 엔지니어링이란 무엇인가요?”라는 기본 질문에서 시작해 보겠습니다. 용어를 만든 사람(Google의 Ben Treynor Sloss)이 자주 인용했던 답변을 포함하여이 질문에 대한 수많은 답이 있지만, 우리가 갖고 있는 가장 실용적인 답변은 다음과 같습니다.

사이트 안정성 엔지니어링은 조직이 해당 시스템, 서비스 및 제품에서 ‘적절한’ 수준의 안정성을 지속적으로 달성하도록 지원하는 엔지니어링 분야입니다.

나중에 다른 정의를 추가할 수 있지만, 여기서 시작하겠습니다. 이 정의에는 “왜 중요한가요?”라는 질문으로 이어지는, 분석해야 할 세 가지 중요한 부분이 있습니다.

안정성

SRE 이름의 한가운데에 있으며 가장 핵심이 되는 개념은 안정성이란 단어입니다. 정의에서는 “적절한 수준의 성능”, “적절한 수준의 효율성” 또는 “적절한 수준의 소득 달성”이라는 표현을 사용하지 않습니다. “적절한 수준의 안정성”이라고 표현합니다. 그 이유는

빠른 데모를 살펴보겠습니다. 다음 스크린샷을 참조하세요. 어떤 것을 보여 주고 있다고 생각하세요? 아이디어가 떠오를 때까지 포기하지 마시고 생각해보세요. 참고: 그림에서 세부 정보를 검색하기 어려워도 괜찮습니다. 브라우저에서는 완벽하게 렌더링됩니다.

A blank screenshot representing a PHP app that fails to load.

이 그림은 PHP 앱(다른 디버깅 지원은 추가되지 않음)이 실패한 경우를 보여 주는 스크린샷입니다. Java 앱의 경우 다음과 같이 표시될 수 있습니다.

A screenshot of failed java app with HTTPS Status 500 error.

이러한 예를 보고 있는 이유는 무엇일까요? 각 예제는 기업이 막대한 시간, 에너지 및 리소스를 써서 만들었을 애플리케이션을 나타냅니다. 그러나 애플리케이션이 가동되지 않는 경우, 고객이 액세스해야 할 때 작동하지 않는 경우, 불안정한 경우 아무에게도, 특히 비즈니스에 유용하지 않습니다. 사실상, 안정성이 없으면 비즈니스에 실제적인 피해(명성, 경제적, 계약적, 도덕적 등)를 줄 수 있습니다.

이것이 SRE에서 기본 속성(서비스, 시스템 또는 제품의 기본 속성)으로 안정성에 중점을 두는 이유입니다. 안정성은 많은 항목을 포함할 수 있지만(나중에 설명) 정의의 두 번째 중요한 부분으로 넘어가겠습니다.

적절한 수준의 안정성

처음에 정의를 읽을 때는 파악하지 못했을 수도 있지만, 아래에서 다른 중요한 단어를 강조 표시하겠습니다.

사이트 안정성 엔지니어링은 조직이 해당 시스템, 서비스 및 제품에서 ‘적절한’ 수준의 안정성을 지속적으로 달성하도록 지원하는 엔지니어링 분야입니다.

이 단어가 중요한 이유는 무엇일까요?

SRE 분야에서 100% 안정적인 시스템 및 서비스는 매우 찾기 힘든 것 같습니다. 항공, 의료 기기 등과 같이 생명관련 상황은 물론 예외입니다.

사실상, 바람직한 상황도 매우 적습니다. 더 나은 안정성을 추구할수록 안정성을 높이는 데 필요한 노력과 리소스(및 비용)도 빠른 속도로 늘어납니다. 다르게 표현한다면, 불필요한 안정성 추구는 시간과 돈을 낭비하는 것입니다. 시스템, 서비스 및 제품에서 적절한 수준의 안정성을 달성하려고 합니다.

그 수준은 비즈니스 수요에 적절하고 실용적이어야 합니다. 예를 들어 고객은 100% 신뢰할 수 없는 네트워크를 통해 사용자에게 연결할 수 있습니다(시간의 90%를 차지한다고 가정해 보겠습니다). 서비스의 안정성을 95% 보장하기 위해 노력과 비용을 투자하는 것은 시간과 비용을 낭비하는 것과 같습니다. 시스템, 서비스 및 제품에서 적절한 수준의 안정성을 달성하려고 합니다.

SRE는 이 실용주의를 한 단계 더 발전시킵니다. 이제 원하는 수준의 안정성이 있다고 가정할 경우 해당 수준을 충족하거나 능가하려는 경우 어떤 작업을 수행해야 할까요? 마찬가지로, 이 작업에 실패하면 어떻게 해야 할까요? 모듈의 뒷부분에서 이 질문에 답하도록 하겠습니다.

지속적인 달성

계속 진행하기 전에 강조해서 짚고 넘어갈 정의의 마지막 단어는 지속적입니다. ‘지속적’은 사용자가 해야 할 역할을 의미합니다. 지속 가능한 운영 방식을 만드는 것이 중요합니다. 사람은 신뢰할 수 있는 시스템, 서비스 및 제품을 빌드합니다. 업무의 지속 가능성을 보장하기 위한 조치를 취하지 않는 경우, 매일 새벽 3시에 페이지로 직원들을 깨우고 가족과 함께할 시간을 주지 않는 경우, 자신을 볼 시간을 주지 않는 경우, 신뢰할 수 있는 시스템을 빌드할 수 있는 방법은 없습니다. SRE에 따르면 시간이 지나도 지속 가능한 운영 방식을 구현하여 사람들이 업무에 최선을 다할 수 있도록 하는 것이 정말 중요합니다.

지식 점검

1.

서비스, 시스템 또는 제품의 속성 중 SRE에서 주로 초점을 두는 속성은 무엇인가요?

2.

대부분의 서비스, 시스템 및 제품에 대해 SRE에서 달성하고자 노력하는 안정성 수준을 얼마나 되나요?