구현의 성공 여부를 판단할 수 있는 방법 예상되는 성능을 제시

이 문서를 통해 프로젝트 관리자 및 기술 리더가 애플리케이션에 대한 사용자 트래픽 급증이 예상되는 기간의 실행 계획을 만드는 데 도움이 됩니다. 예를 들어 미국에서는 11월의 마지막 금요일인 블랙 프라이데이에 1년 중에서 가장 많은 판매가 이루어질 수 있습니다. 다른 여러 국가에도 소매업체에 매우 높은 트래픽이 예상되는 비슷한 기간이 있습니다. 이 문서에서는 블랙 프라이데이 유형의 이벤트에서 조직 준비 상태, 시스템 안정성, Google 고객 참여도를 높일 수 있는 부분을 설명합니다.

이 문서에서는 다음과 같은 시스템을 설명합니다.

  • 이벤트를 처리하기 위한 세 가지 개별 단계인 계획, 준비, 실행을 관리합니다.
  • 기술, 운영 및 리더십 관계자들이 프로세스와 협업을 개선하는 데 참여하도록 합니다.
  • 블랙 프라이데이 유형의 이벤트를 처리하는 데 도움이 되는 아키텍처 패턴을 설정합니다.
  • Google Site Reliability Engineering(SRE)에서 권장사항을 홍보합니다.

소개

소매 업계의 상거래 시스템은 평균 부하보다 5배 이상 많은 단기간의 피크 요청량을 처리해야 하는 쉽지 않은 기술적 문제에 직면하게 됩니다. 미국에서 이러한 이벤트는 11월 추수감사절 이후 블랙 프라이데이와 사이버 먼데이 기간에 발생합니다. 다른 국가에도 매년 각기 다른 기간에 이와 비슷하게 트래픽이 급증하게 되는 이벤트가 있습니다.

이를 해결하는 방법 중 하나는 클라우드 네이티브 시스템 전략을 채택하는 것입니다. 기존 배포와 비교하여, 이 전략은 피크에 대비한 계획 및 실행을 개선하는 데 도움을 줄 수 있으며 새롭게 고려해 볼 만한 옵션을 제공합니다.

블랙 프라이데이는 미국 내 유통업계의 주요 이벤트로 꼽히긴 하지만 선거일 저녁이나 크리스마스, 12월 31일 등의 휴일과 유사한 특성을 갖고 있습니다. 피크 이벤트는 일반적으로 다음과 같은 특성을 나타냅니다.

  • 트래픽이 5배에서 20배 이상까지 상승하며, 일반적으로 전환율이 더 높고 백엔드 시스템의 부하가 증가합니다.
  • 이벤트가 열리면 짧은 기간 동안 트래픽이 빠르게 늘어납니다.
  • 이후 트래픽은 점차 정상 수준으로 떨어집니다. 하락 속도는 일반적으로 상승 속도보다 느립니다.

거래 쪽으로 트래픽이 쏠리는 상거래 시스템에서는 프런트엔드 증가가 그리 크지 않을 수도 있습니다. 예를 들어 프런트엔드 웹 트래픽은 2~4배 증가하는 반면, 주문/분 단위로 측정되는 백엔드 시스템의 부하는 10배 이상 증가할 수 있습니다.

다음 그림은 일반적인 사용자 트래픽 증가를 보여줍니다. 트래픽의 특징은 최대 트래픽까지 갑자기 증가한 후에 점차 정상으로 돌아간다는 것입니다.

구현의 성공 여부를 판단할 수 있는 방법 예상되는 성능을 제시

블랙 프라이데이 이벤트를 진행할 때 계획, 준비, 실행 등 세 단계를 따르는 것이 좋습니다. 다음 다이어그램에서 각 단계가 어떻게 각기 다른 역할, 기술, 프로세스를 강조하는지 살펴보세요.

구현의 성공 여부를 판단할 수 있는 방법 예상되는 성능을 제시

운영 및 관리 직원은 피크 이벤트의 전술적 측면을 활용하여 조직을 이끕니다. 세 가지 단계 및 각 단계의 활동을 검토함으로써 담당 직원은 팀이 피크 이벤트에 더 잘 대응하도록 준비시킬 수 있습니다. 이벤트 중에 예상치 못한 문제가 발생할 경우, 준비가 잘 되어 있으면 문제를 더 빠르고 정확하게 분류하고 해당 문제의 영향을 줄이는 해결 경로를 제공할 수 있습니다.

용어

블랙 프라이데이애플리케이션에서 발생하는 모든 유형의 최대 트래픽 이벤트입니다.QPS초당 쿼리 수입니다. 트래픽 양을 나타내는 일반적인 측정항목입니다. QPS는 주문/분과 비교했을 때 일반적으로 기술적인 측면에서 양을 나타내는 용어입니다.주문/분거래 지표입니다. 이 용어는 초당 장바구니 추가 횟수와 같은 다른 지표를 포함합니다. 이 지표는 QPS와 비교했을 때 좀더 비즈니스 관점에서 세부적인 거래량을 나타냅니다.SLI서비스 수준 지표입니다. 서비스가 용인되는 범위 안에 있는지를 나타내는 데 사용되는 측정항목입니다. 예를 들어 페이지 로드 시간의 SLI는 웹페이지와 모든 기본 API 호출을 95번째 백분위수에서 로드하는 것일 수 있습니다.SLO서비스 수준 목표입니다. SLI 및 타겟 목표를 사용하여 정의됩니다. SLO의 예시에는 앞선 SLI 지연 시간이 400ms 아래여야 함 등이 있습니다.SLA서비스수준계약입니다. 고객과 공급업체 사이의 계약에 정의된 서비스에 대한 안정성 목표, 조건 및(종종 재무적인) 결과입니다. SLI 지연 시간이 10분 연속 1초 넘게 유지될 경우 SLA 위반이 발생한 시간 내에서 QPS 100을 초과하는 트래픽의 청구 사용량에 대해 50% 할인 자격이 고객에게 부여되는 경우를 SLA 예시 중 하나로 들 수 있습니다.

계획 단계

'희망은 전략이 아니다'라는 격언은 철저한 계획과 준비가 필요한 이유를 설명할 때 종종 인용됩니다. 조직 전반에서 그리고 타사 공급업체와 함께 강력한 복합적 계획 및 조율을 실시하면 성공 가능성이 증가합니다. 엔지니어링, 아키텍처, 운영, 비즈니스 관계자들은 무엇을 측정해야 하는지에 동의하고 피크 이벤트가 프로덕션 시스템에 미칠 영향에 대해 알고 있어야 합니다. 계획 및 운영체제 지원에 있어서는 데이터 중심의 의사결정으로 팀 내의 선택과 절충을 결정하게 됩니다.

다음 표에는 계획 단계의 주요 단계가 요약되어 있습니다.

계획 단계Tasks
데이터 수집 측정 데이터를 이해합니다.
이전 피크 이벤트를 검토합니다.
비즈니스 예측을 준비합니다.
프로그램 관리 설정 커뮤니케이션 채널을 설정합니다.
공유 상태를 검토합니다.
모니터링 및 프로빙을 설정합니다.
시스템 모니터링을 검토합니다.
용량 계획을 만듭니다.
체크리스트를 만듭니다.
위험 분석을 공유하고 우선순위를 매깁니다.
아키텍처 계획 설계 아키텍처를 검토합니다.
블랙 프라이데이 아키텍처 패턴을 검토합니다.
장애 조치 전략을 만듭니다.

데이터 수집

계획 단계에서 처음으로 할 일은 데이터를 수집하는 것입니다.

측정 데이터 이해

기존 측정 데이터(요청/초, 주문/분, 초당 장바구니 추가 횟수)로 시작하면 피크 이벤트를 이해하고 계획할 수 있는 토대가 마련됩니다. 다음 질문에 답변하는 것으로 이 프로세스를 시작할 수 있습니다.

  • 과거의 정상 운영과 피크 운영에서 어떠한 데이터를 사용할 수 있나요?
  • 데이터가 올바른 시스템 및 비즈니스 측정항목을 측정하나요?
  • 시스템 운영을 더 잘 파악하려면 어떤 데이터를 수집해야 하나요?

목표는 어떤 데이터를 사용할 수 있는지 그리고 해당 데이터가 과거에 어떠한 가치를 제공했는지를 파악하는 것입니다. 수집되고 있지 않은 측정항목이나 SLI가 발견되었다면 준비 단계 중에 시스템을 수정하여 해당 데이터를 수집할 수 있도록 해당 데이터에 우선순위를 두세요.

데이터를 수집하는 것도 중요하지만, 측정항목이 어떤 유용한 정보를 제공하는지를 이해하는 것이 중요합니다. 측정항목이 사용자 만족도 및 비즈니스 성공 지표에 어떻게 관련되는지를 이해하면 시스템 규모가 훨씬 커졌을 때 측정항목을 해석하는 방법을 알 수 있습니다.

이전 피크 이벤트 검토

구체적인 프로세스와 무관하게 이전 이벤트로부터 배우는 것이 중요합니다. 특히 부하가 걸렸을 때 시스템에 어떤 제약이 있었는지가 확연히 드러나는 경우는 더욱더 그렇습니다. 기술 분야에서 사후 분석은 데이터를 캡처하고 발생한 이슈를 이해하는 데 유용한 기법입니다.

비즈니스 예측 준비

블랙 프라이데이의 영향을 예측함으로써 기업은 상품을 조달하고 판매를 준비하는 방법을 계획할 수 있습니다. 재고 관리, 공급망 관리, 직원 배치 등의 요소에는 정확한 비즈니스 예측이 큰 영향을 미칩니다. 시스템이 트래픽 급증에 대비하는 데에도 이러한 예측이 중요합니다. 이전 예측으로부터 더 많은 정보를 알아낼수록 새로운 비즈니스 판매를 더 정확하게 예측할 수 있습니다. 이와 같은 새로운 예측 정보는 시스템에 예상되는 수요가 어느 정도인지를 판단하는 데에도 중요한 데이터입니다.

다음의 주요 비즈니스 요인 측정항목은 대부분의 전자상거래 사이트에서 흔히 찾아볼 수 있습니다.

  • 방문수
  • 전환수
  • 평균 주문값

이러한 요인을 바탕으로, 측정항목을 시스템이 분석할 수 있는 형태로 변환할 수 있습니다. 그러한 측정항목에는 다음이 포함될 수 있습니다.

  • 초당 쿼리 수
  • 주문/분
  • 초당 장바구니 추가 횟수

그런 다음에 해당 측정항목을 시스템 동작을 측정하고 시스템 상태를 표시하는 SLI 및 SLO로 변환할 수 있습니다.

프로그램 관리 설정

조율은 블랙 프라이데이 성공을 위한 핵심입니다. 계획, 준비, 실행 단계를 엔지니어링, 아키텍처, 운영, 리더십 등의 내부 관계자 그리고 타사 공급업체와 맞추고 합의해야 합니다. 공동의 목표를 달성하려면 투명한 커뮤니케이션과 협업이 필요합니다.

먼저 다기능팀을 편성하고, 관계자들을 독려하는 역할을 하는 운영위원회를 구성하는 것이 좋습니다. 프로그램 관리에서 타임라인을 설정할 수 있도록 이러한 팀을 초기에 구성하세요. 프로그램 관리는 추가 인프라, 테스트 지원, 교육을 위한 예산과 리소스도 확보해야 합니다.

커뮤니케이션 채널 설정

커뮤니케이션은 피크 이벤트 실행의 모든 단계에서 중요합니다. 계획과 동시에 다음 항목을 만드세요.

  • 다음을 포함하는 피크 이벤트 계획 문서:

    • 가정 목록
    • 알 수 없는 항목 목록
    • 팀, 팀 리드, 관계자, 관련 책임자. 책임 소재가 명확히 전달되도록 책임 할당 매트릭스(RACI) 또는 유사 형식을 사용합니다.
    • 핵심적인 작업과 해당 작업의 담당팀을 정확히 규정하는 분명하고 명확한 타임라인
  • 명확한 회의를 정기적으로 진행하고 회의록을 통해 모든 팀에 진행 상황 통보. 우려되는 부분을 미리 공론화하고 문제가 심각한 장애물이 되기 전에 뜻을 모아 해결합니다. 피크 이벤트는 일반적으로 시기가 정해져 있으며, 일정이 늦어질 경우 대처하기가 곤란합니다.

  • 핵심 요약 문서. 피크 이벤트의 가장 중요한 정보를 한두 페이지로 간추립니다. 쉽게 배포할 수 있는 문서로서, 사람들이 계획 정보를 이해하고 간단한 의문을 해결하는 데 도움이 됩니다. 새로 참여하는 인원은 이 문서를 읽고 피크 이벤트 계획을 빠르게 숙지할 수 있습니다.

  • 운영팀이 시스템의 여러 부분을 빠르게 이해할 수 있도록 도와주는 간단한 아키텍처 문서. 전체 시스템을 파악하는 데 충분한 시간이 있다면 수백 개의 구성요소 상자와 수십 개의 연결선이 있는 아키텍처 문서도 유용합니다. 그러나 운영 프로세스 중에는 주요 구성요소의 연결 상황을 알기 쉽게 보여주는 다이어그램으로 문제의 원인을 빠르게 찾아내서 해결할 수 있습니다.

  • 운영 지원 문서 및 에스컬레이션 절차. 이러한 자료는 문제를 파악 및 보고하고, 문제를 처리해 나가고, 개발자나 공급업체 지원팀 등 다른 팀과의 협업을 평가하는 방법을 운영팀에 명확히 제시합니다. 다양한 종류의 이슈를 신속히 처리하기 위한 공통 이슈 관리 프로세스와 템플릿을 갖추시기 바랍니다.

공유 상태 검토

공유 상태란 여러 팀의 관점을 종합하여 합의에 도달하는 것을 의미합니다. 하나의 관점에 의존하는 대신 합의를 통해 시스템을 더 폭넓게 바라볼 수 있습니다. 공유 상태는 집단의 결정이 개인의 결정 범위를 넘어서 시스템에 어떤 영향을 주는지를 보여줍니다. 예를 들어 기술적 구성의 사소한 변경이 비즈니스 측정항목에 큰 영향을 줄 수도 있습니다.

각각의 공유 상태 검토는 소유 팀과 모든 관련 팀 사이에 이루어집니다. 이러한 검토에서 Google Cloud팀과 소통하면 Google팀이 블랙 프라이데이와 관련된 상황을 파악할 수 있습니다. 그리고 Google팀은 다른 여러 고객과 협력하면서 알게 된 권장사항을 피드백으로 제공할 수 있습니다.

모니터링 및 프로빙 설정

모니터링을 통해 시스템의 운영 효율성을 유지하기 위한 정확한 결정을 내릴 수 있습니다. 모니터링은 시스템 상태를 추적하는 데 도움이 되고, 예정된 문제를 미리 알리며, 애플리케이션의 네 가지 주요 신호에 관한 유용한 정보를 제공합니다.

  • 지연 시간. 요청된 내용을 시스템에 제공하는 데 필요한 시간입니다.
  • 트래픽. 시스템의 수요로, 주로 초당 요청 수로 측정됩니다.
  • 오류. 실패하는 요청의 비율로, 절댓값 또는 모든 요청의 비례 값으로 표시됩니다.
  • 포화도. 핵심 시스템 리소스의 사용률을 나타내는 측정항목입니다. 이 측정항목은 데이터베이스 저장용량과 같은 리소스가 고갈되는 상황을 미리 알려줄 수도 있습니다.

피크 이벤트 문제를 감지하려면 이러한 네 가지 신호의 중요한 가치를 반드시 이해해야 합니다. 구체적이고 실행 가능한 모니터링 단계에는 다음이 포함됩니다.

  • 수익, 주문 건수 등의 주요 비즈니스 측정항목을 모니터링합니다. 이러한 측정항목은 모든 개별 구성요소가 제대로 작동하고 있더라도 전반적인 시스템 조율에 문제가 있음을 나타낼 수 있습니다. 또한 이메일 마케팅 캠페인 일정을 모니터링하면서 이메일이 언제 얼마나 많이 발송되고 트래픽이 사이트에 언제 도착하는지를 추적합니다. 마지막 순간에 이메일을 갑자기 많이 보내면 예상보다 당황스러울 정도로 많은 트래픽이 발생하거나 잘 캐싱되지 않은 페이지로 트래픽이 유도될 수 있습니다.

  • 사용자 만족도를 보여주는 측정항목을 모니터링합니다. 개략적인 서비스 상태를 제시하는 소수의 대시보드를 주시하다가 특정 하위 시스템 또는 위치로 드릴다운하세요.

  • 블랙박스 모니터링(예: 프로브)과 화이트박스 모니터링(예: 내보낸 애플리케이션 측정항목)을 결합하여 심층 방어를 구축합니다. 예를 들면 다음과 같습니다.

    • Google Cloud부터 온프레미스 네트워크까지를 포괄하는 네트워크 연결(예: VPN 및 직접 연결)의 지연 시간, 패킷 손실, 처리량을 측정하는 프로브를 설정합니다.

    • 사용하는 타사 서비스의 가용성과 지연 시간을 측정하는 블랙박스 프로브를 설정합니다. 또한 타사 대시보드 및 알림에 대한 액세스 권한을 해당 회사에 요청합니다.

  • 트래픽이 갑자기 증가하는 피크 이벤트는 시스템에 대한 분산 서비스 거부(DDoS) 공격과 비슷한 측면이 있습니다. 보호 시스템이 적법한 고객의 상거래 시스템 이용 시도를 차단하지 않도록 DDoS 방어를 조정할 방법을 강구해야 합니다.

  • 피크 이벤트 시즌 중에는 치열한 경쟁으로 인해 사이트에서 콘텐츠와 가격 정보를 추출하는 웹 봇의 활동이 매우 활발해집니다. 실제 트래픽과 비교한 봇 트래픽의 비율과 유형, 피크 이벤트 중의 변화 추이, 원치 않는 트래픽으로부터 시스템을 보호할 방법을 판단해야 합니다.

시스템 모니터링 검토

용어 섹션에서 언급한 대로 SLI는 SLO를 측정하는 데 사용됩니다. 모니터링을 사용하여 SLI 및 기타 주요 시스템 값을 모니터링할 수 있습니다. 이 접근 방식을 통해 다음을 파악할 수 있습니다.

  • 모니터링을 통해 캡처되고 있는 시스템 측정항목
  • 모니터링 보고의 지연 시간
  • 관심을 가져야 할 알림 수준

모니터링을 통해 성능과 SLO를 검토하는 데 중요한 모든 관련 인프라 및 애플리케이션 측정항목에 대한 정보를 캡처하는 것이 이상적입니다.

여러 영역에서 모니터링을 사용할 수 있습니다.

  • 인프라 측정항목:

    • 가상 머신 통계 – 인스턴스, CPU, 메모리, 사용률과 계수 비교
    • 컨테이너 기반 통계 – 클러스터 사용률, 클러스터 용량, pod 수준 사용률, 계수
    • 네트워킹 통계 – 인그레스/이그레스, 구성요소 간 대역폭, 지연 시간과 처리량 비교
  • 애플리케이션 측정항목. QPS, 쓰기/초, 발송 메시지/초 등의 애플리케이션별 동작

  • 관리형 서비스 통계. API 등의 Google 관리형 서비스나 BigQuery, App Engine, Cloud Bigtable 등의 제품에 대한 QPS, 처리량, 지연 시간, 사용률 등

  • 연결 통계. 온프레미스 시스템 또는 Google Cloud 외부에 있는 시스템에 대한 연결의 VPN/상호 연결 관련 통계입니다.

  • SLI. 전반적인 시스템 상태와 관련된 측정항목입니다. 이 측정항목은 일반적으로 특정 인프라 구성요소보다 광범위하며 API QPS 비율, 주문/분 또는 장바구니 추가/초 등으로 표현될 수 있습니다.

  • 알림의 응답 시간 및 알림 기준을 고려하세요. 예를 들어 주문 10% 감소 알림은 문제가 시작된 지 몇 분 후에 발생할 수 있지만 '1초 동안 주문 없음' 알림은 문제를 더 빨리 드러낼 수 있습니다.

SLO를 선택한 후에는 단일 핵심 측정항목 집합으로 전반적인 시스템 상태를 표시할 수 있도록 모든 관계자들에게서 폭넓은 합의를 도출해야 합니다. 그런 다음에 시스템 비정상 작동의 알림을 구성하는 데 필요한 데이터를 좁혀나갑니다.

용량 계획 만들기

용량 계획은 소매 상거래 시스템에서 중요한 활동입니다. 동적 용량 할당이 가능한 클라우드 네이티브 시스템은 기존 시스템에 비해 아키텍처 및 기술적 측면의 장점을 제공합니다. 수만 개의 코어까지 용량을 확장할 수 있는 클라우드 네이티브 시스템은 보통 수천 개의 컴퓨팅 코어를 사용하므로 평균 부하보다 낮은 경우가 많습니다. 이 경우 클라우드 제공업체와 클라우드 인프라팀은 용량 계획을 공동으로 책임지며, 운영팀은 신뢰 구간이 있는 용량 계획을 만들어야 합니다. 이러한 간격은 추가 VM으로 확장할 수 없게 되는 경우와 같은 예상치 못한 사고를 방지하는 데 도움이 됩니다.

이러한 동적 용량 시스템은 제한적이고 산발적인 용량 급증에 적합합니다. 하지만 자동 확장 및 적시(JIT) 프로비저닝에 의존하는 것보다는 용량 계획을 검토하고 프로비저닝 전 용량을 평가하는 것이 좋습니다. 귀사와 클라우드 제공업체가 사전 확장, 예약 및 기타 기능을 사용하여 시스템 가용성을 높일 수 있다고 생각해보세요. 피크 이벤트 직전에 이 인프라를 프로비저닝할 수 있으며, 불필요한 클라우드 비용을 방지하기 위해 피크 이벤트 후에 곧바로 축소할 수 있습니다.

용량 계획 환경을 개선하기 위해 Google과 고객들은 다음과 같은 권장사항을 개발했습니다.

  • 측정항목을 최대 사용량 추정치에 매핑합니다. 추정치에 오류가 있는지를 평가하는 계획을 수립합니다. 계획을 통해 불확실성을 줄이고 추정치가 초과되었을 때 빠르게 조정할 수 있습니다.
  • 최대 + 신뢰 구간에 필요한 용량을 평가합니다.
  • 클라우드 제공업체 및 인프라팀과 함께 용량을 검토하고 확정합니다.
  • 할당량과 용량은 서로 다르다는 점에 주의하세요. 할당량은 리소스를 가질 수 있는 권리이고, 용량은 해당 리소스가 얼마나 필요한지를 나타냅니다.
  • 사용 가능한 각 리소스(컴퓨팅, 메모리, 스토리지, 네트워크, API 소비 등)의 할당량과 용량을 평가합니다. 이러한 평가는 부하 테스트를 진행할 때 알려지지 않은 할당량 및 용량 문제를 파악하는 데 도움이 됩니다.
  • 전체 리전 장애를 처리하기 위한 할당량과 용량을 설정합니다.
  • 할당량과 용량을 계획 단계에서 평가하고 준비 단계에서 조정합니다.

체크리스트 만들기

블랙 프라이데이 같은 이벤트는 주기적으로 발생합니다. 내년에도 블랙 프라이데이는 찾아올 것이고, 또 다른 홍보 캠페인이 진행되거나 대규모 제품 출시가 있을 것입니다. 이벤트마다 정보는 고유하지만 애셋은 재사용하고 확장할 수 있습니다. 매해 이벤트를 통해 체크리스트를 만들고 조정하고 개선하면서 관리의 부담을 줄여 지속적으로 프로세스를 발전시킬 수 있습니다. 체크리스트는 비행기 조종사의 비행 전 점검과 비슷합니다. 오류를 방지하고 일관된 방식으로 실행하는 데 도움이 됩니다.

체크리스트 권장사항은 다음과 같습니다.

  • 안정적인 제품 출시를 통해 확고한 방침을 세웁니다.
  • 기존의 출시 또는 피크 이벤트 체크리스트를 사용하여 이전의 문제가 반복되지 않도록 합니다.
  • 현재 이벤트에 사용할 체크리스트를 평가하고 실행 단계에서 해당 리스트를 시행할 권한 있는 담당자를 지정합니다.
  • Google Cloud 출시 체크리스트와 같은 공급업체 운영 체크리스트를 검토하고 다음과 같은 제품별 체크리스트를 검토합니다.

    • App Engine 체크리스트
    • BigQuery 체크리스트
    • Cloud SQL 체크리스트
    • Cloud Storage 체크리스트
    • Compute Engine 체크리스트

위험 분석을 관계자들과 공유하고 우선순위를 알리는 것이 중요합니다. 분석 결과로 어떤 위험이 시스템, 내부 팀, 클라우드 제공업체, 타사 공급업체의 책임하에 있는지를 파악해야 합니다. 클라우드 제공업체 및 공급업체와도 위험을 공유하세요. 일부 위험은 이미 알려져 있고 용인되는 것일 수도 있습니다. 일부는 클라우드 제공업체 또는 공급업체의 도움을 받아 완화 계획을 세워야 합니다.

아키텍처 계획

블랙 프라이데이를 위한 아키텍처를 계획하는 것은 고유의 권장사항이 있는 별개의 문제입니다. 피크 시스템 제약조건은 위험 분석에 영향을 미치며 성공적인 최대 부하 테스트에 매우 중요합니다.

설계 아키텍처 검토

모든 당사자가 솔루션을 이해하도록 대략적인 설계 아키텍처를 검토하는 것이 좋습니다. 이 검토는 단일 장애 지점(SPOF)이나 Google의 알파 또는 베타 구성요소를 사용하는 것과 같은 안정성 문제를 팀에 알립니다. 모든 문제를 완화할 수는 없지만 문제가 있다는 것을 아는 것만으로도 모든 팀에게 도움이 됩니다.

프로덕션 준비를 위해 시스템을 지원하려면 각각 특정한 대상을 목표로 하는 두 가지 수준의 아키텍처가 필요합니다.

  • 시스템 아키텍처는 운영팀이 핵심적인 시스템 구성요소를 파악하는 데 도움이 됩니다. 주요 구성요소의 상호 연결을 보여주는 명확한 다이어그램은 문제의 원인을 빠르게 찾아서 해결하는 데 기여할 수 있습니다.

  • 구성요소 아키텍처는 설계자와 개발자에게 주요 I/O 지점, 종속 항목, 구성요소를 거치는 기본 워크플로를 설명합니다. 이러한 구성요소는 복잡한 사용자 여정에서 중요한 부분을 차지하며 재고, 가격 책정, 마스터 제품 데이터, 주문, 인보이스 등의 구성요소 및 데이터 흐름 중 어디에서 문제가 발생할 수 있는지를 파악하는 데 기여합니다. 데이터 흐름은 SLO, 모니터링, 프로브 사용과 관련된 결정에도 도움이 됩니다.

블랙 프라이데이 아키텍처 패턴 검토

아키텍처 패턴은 클라우드 기반 시스템을 최적화하고 클라우드 분산 시스템의 몇 가지 난제에 대처하는 데 도움이 됩니다. 다음의 권장사항은 피크 이벤트 중에 클라우드 시스템의 안정성을 높이는 데 도움이 됩니다.

  • 캐시 시스템을 사용하되, 확장 운영 중에 어떻게 작동하는지 알고 있어야 합니다. 확장 중에는 캐시 시스템의 캐시 적중률이 달라집니다. 이 차이로 인해 확장 프로세스 중에 캐시 부적중이 부하를 가중시키는 연쇄적 문제가 발생하여 시스템이 예상보다 빠르게 포화될 수 있습니다.

  • Cloud CDN과 같은 콘텐츠 전송 네트워크(CDN)를 사용하여 트래픽 급증을 완화하고 안정성과 가용성을 높입니다. CDN은 큰 폭의 트래픽 급증이 원본 서버에 도달하기 전에 트래픽을 흡수할 수 있습니다.

  • Active-Active로 구성된 인터넷 기반 VPN과 함께 Cloud Interconnect 인스턴스를 사용합니다. Active-Active는 주 연결 경로와 보조 연결 경로가 모두 트래픽을 처리하는 데 항상 사용됨을 나타내며, Active-Passive는 주 연결 경로에 장애가 있을 때 보조 연결 경로가 사용됨을 나타냅니다. 상호 연결은 클라우드 제공업체와 데이터 센터 간에 전용 대역폭을 지원합니다. 여러 대도시 지역에서 서로 다른 제공업체와 복수의 상호 연결을 프로비저닝하는 것이 좋습니다. 이렇게 하면 Dedicated Interconnect를 위한 99.99%의 가용성 설정의 설명과 같이 SLA와 안정성이 향상됩니다. VPN은 상호 연결에 장애가 있거나 단기적으로 용량이 증가할 때 사용됩니다.

장애 조치 전략 수립

제대로 준비되지 않은 팀은 블랙 프라이데이 같은 중요 이벤트 기간에 서비스 중단과 고객 불만이라는 문제를 겪게 됩니다. 장애 조치 전략을 수립하면 팀이 장애의 근본 원인을 조사하는 동안 시스템 업타임을 유지할 수 있습니다. 모든 요소에 장애 가능성이 있기 때문에, 장애와 관련된 위험을 평가하고 시스템의 SLO를 파악하면서 안정성과 비용 사이에서 적절한 균형점을 찾아야 합니다.

클라우드 시스템은 다음과 같은 장애 조치 패턴을 사용합니다.

  • 리전 장애를 처리합니다. 영구 데이터를 리전 간에 동기화하고 리전별 장애에 대처하는 패턴을 개발합니다. 스테이트리스(Stateless) 애플리케이션 서버를 다루는 것이 데이터를 동기화하는 것보다 훨씬 쉽습니다. 관리형 서비스를 검토하고 사용하여 안정성을 높이고 관리 오버헤드를 줄이세요. 동기화 패턴은 데이터 플랫폼 기능에 종속됩니다. 다음을 비롯한 자료를 참고하여 더 자세히 알아보세요.

    • 데이터의 재해 복구 시나리오
    • Firestore으로 확장 가능 애플리케이션 빌드
    • Cloud SQL 및 ProxySQL로 MySQL 데이터베이스 백엔드 수평 확장
  • 시스템을 여러 위치에 배포합니다. 최소 2개, 가급적 3개 리전에 배포하여 클라우드 제공업체의 특정 영역 또는 리전 문제에 따르는 위험을 완화합니다.

    • 전체 리전 장애 조치 없이도 계속 작동할 수 있도록 리전별 장애 조치 및 복원력을 위해 각 리전에서 복수의 영역을 사용합니다. 여러 리전에 배포하면 고객의 지연 시간이 줄어들고 리전별 중단 문제에 대처하는 데 도움이 됩니다.

    • 해당 시나리오에 가장 적합한 부하 분산기 유형을 사용합니다. Google Cloud에는 다양한 기능을 제공하는 여러 유형의 부하 분산기가 있습니다. 자세한 내용은 Cloud Load Balancing 문서를 참조하세요.

  • 시스템이 캐시 없이도 최대 수요에 대응할 수 있도록 준비합니다. 캐싱 시스템에서 장애가 발생하거나 캐시 적중률이 낮은 경우에 대비하여 시스템을 미리 테스트합니다. 캐시 시스템 장애나 캐시 플러시가 연쇄적 장애 시나리오를 촉발하여 다른 구성요소의 과부하 및 장애를 유발할 수 있습니다.

  • CDN 장애에 대비한 계획을 세웁니다. 이러한 장애는 캐시 시스템 장애와 비슷합니다. CDN 제공업체와 협력하여 블랙 프라이데이 동안 예기치 않게 부하를 높일 수 있는 CDN 시스템 장애를 처리하는 방법을 알아보세요.

  • 모든 장애 조치 시나리오를 자동화하여 수동 작업 단계를 없앱니다. 특히 서비스 중단을 급박하게 해결해야 하는 경우 수동 작업은 시간이 오래 걸리고 실수를 저지르기 쉽습니다.

  • 외부 서비스 종속 항목의 복원력을 키웁니다. 특정 서비스가 실패해도 연쇄적 장애가 발생하지 않도록 '회로 차단기' 같은 복원력 패턴을 도입하세요.

  • 타사 제품의 지연 시간을 제한합니다. 웹사이트의 클라이언트 측 코드에서 타사 웹 서비스에 대한 차단식 HTTP 호출을 제한하거나 삭제하세요. 타사의 지연 시간이나 가용성 문제로 인해 웹사이트가 사용자에게 응답을 중지할 수도 있습니다.

  • 네트워크 공격으로부터 보호합니다. DDoS 공격 및 웹 봇으로부터 사이트를 방어하세요. Google Cloud Armor 및 CDN의 보안 플랫폼 같은 웹 보안 도구를 사용하시기 바랍니다.

계획 단계 결과물

다음의 계획 단계 결과물은 준비 및 실행 단계 중에 사용됩니다.

  • 위험 분석. 운영, 기술, 비즈니스, 시간 요소를 비롯하여 다양한 위험의 발생 가능성 및 프로젝트에 주는 영향을 파악합니다.
  • 아키텍처 변경 계획. 정상 운영 중에 처리량을 높이기 위해 시스템에서 어떤 부분을 수정할 수 있는지를 포함합니다.
  • 테스트 계획. 예상된 트래픽보다 높은 수준에서 시스템을 평가하고, 일반적인 장애 테스트 시나리오를 평가합니다.
  • 커뮤니케이션 계획. 공유 상태를 모든 관계자에게 일관되게 유지합니다. 이 계획에는 커뮤니케이션 또는 합의나 대응이 중요한 경우를 위한 에스컬레이션 절차도 포함됩니다.
  • SLO/SLI 동의. 수집할 모니터링 측정항목 및 SLI에 대한 합의를 나타냅니다. 고객의 관점에서 시스템 가용성을 입증하는 SLO 동의도 포함됩니다. 이 동의에는 현재 수집되지 않는 측정항목 및 SLO 달성 여부를 손쉽게 살필 수 있는 모니터링 대시보드를 구현하는 방법에 대한 계획도 포함됩니다. 이 동의는 타사 공급업체 SLA가 SLO 측정항목에 어떤 영향을 주는지를 설명합니다.
  • 체크리스트 목록. 공통 절차의 일관된 검토 및 실행을 보장합니다.
  • 운영 플레이북 목록. 블랙 프라이데이 중에 발생할 수 있는 이슈 시나리오에 대처하는 플레이북을 나열합니다. 플레이북은 정상 운영 상태로 빠르게 복귀하기 위한 최선의 수단입니다.

준비 단계

준비 단계의 목표는 시스템이 최대 사용자 트래픽에 맞춰 확장되고 결과를 문서화할 수 있는지를 테스트하는 것입니다. 준비 단계를 완료하면 최대 트래픽을 더 효율적으로 처리하고 시스템 안정성을 향상시키도록 아키텍처가 개선됩니다. 피크 이벤트와 발생 가능한 문제를 처리하는 프로세스를 간소화하는 데 도움이 되는 운영 및 지원 절차도 이 단계에서 마련됩니다. 시스템 및 운영 관점에서 이 단계는 피크 이벤트에 대한 연습이라고 보면 됩니다.

다음 표에는 계획 단계의 주요 단계가 요약되어 있습니다.

준비 단계Tasks
안정성을 보장하도록 지원 부하 및 성능 테스트를 설정합니다.
시나리오를 평가하고 테스트합니다.
확장 및 안정성을 위해 아키텍처 변경 큐 및 메시지 브로커 중간 레이어를 도입합니다.
캐싱을 구현하여 성능을 높입니다.
부하 차단을 구현합니다.
회로 차단기 패턴을 구현합니다.
모니터링 및 로깅 설정 모니터링을 구성합니다.
대시보드를 사용하여 모니터링을 분산합니다.
피드백을 사용하여 운영 및 지원 개선 체크리스트와 플레이북을 작성합니다.
지원 및 에스컬레이션 절차를 학습시킵니다.
운영팀이 성공할 수 있도록 준비시킵니다.
용량 요청 조율 예상되는 리소스 용량 니즈를 검토하고 Google Cloud와 공유합니다.
변경 금지 설정 이벤트 전에 새로운 소프트웨어와 인프라를 배포할 수 있는 시간을 할당합니다.
이벤트를 지원하는 홍보 활동 중에는 변경하지 마세요.
버그 수정 및 타이밍을 개발팀과 조율합니다.

안정성을 보장하도록 지원

Google 사이트 안정성 엔지니어(SRE)는 Google 서비스의 안정성과 속도에 초점을 맞춥니다. SRE는 플랫폼 상태를 책임지며 Google 서비스 안정성을 최고 수준으로 유지할 수 있게 도와줍니다. Google SRE팀은 대규모 시스템을 빌드, 출시, 운영하는 방법과 관련하여 많은 권장사항과 경험에 바탕을 둔 조언을 담은 2권의 서적을 출판했습니다. 많은 정보를 활용할 수 있지만, 그 중에서도 특히 부하 테스트와 장애 테스트라는 두 가지가 블랙 프라이데이 이벤트의 성공과 관련이 있습니다.

부하 및 성능 테스트 설정

부하 테스트는 테스트 버전의 시스템을 배포하고 요청을 만들어서 높은 시스템 사용률을 시뮬레이션하는 프로세스입니다. 부하 테스트는 일반적으로 절대 최대치 아래의 일부 백분위수에서 지속 가능한 사용자 인지 동작을 테스트하는 데 초점을 맞춥니다. 피크 테스트를 통과하려면 일관된 우수한 성능으로 해당 최상위 백분위수에 도달해야 합니다.

부하 및 성능을 테스트할 때 다음의 권장사항을 따르세요.

  • 최대 트래픽의 100% 이상에서 부하 및 성능을 테스트합니다. 백분위수를 재조정하여 최대치가 100%를 초과하도록 설정해야 합니다. 재조정하면 최대 트래픽에 적절한 성능을 제공하면서도 소량의 간단한 시스템 동작도 수행할 수 있는 여력이 남게 됩니다.

    최대 트래픽보다 얼마나 더 높게 테스트해야 하나요? 이것은 피크 이벤트 트래픽의 신뢰 구간에 따라 결정됩니다. 신뢰도가 낮으면 피크 이벤트 성공의 가능성을 높이기 위해 더 높은 부하가 필요합니다. 사실을 바탕으로 정확하고 더 좁은 신뢰 구간은 피크 위의 좀더 낮은 백분위수에서 테스트하면 됩니다.

  • 정상 트래픽에서 최대 트래픽으로 바뀌는 속도를 테스트합니다. 피크 이벤트에 따라서는 트래픽이 급격하게 변화할 수 있습니다. 블랙 프라이데이 매장이 개점할 때는 불과 몇 초 만에 변화합니다. 정상 트래픽에서 최대치로 빠르게 확장하는 능력을 테스트하세요. 시스템의 일부분은 부하 신호에 반응하는 데 시간이 필요할 수도 있습니다.

  • 부하가 걸렸을 때의 영역/리전별 장애 조치, 재배포, 캐시 플러시 시나리오를 테스트합니다.

  • 부하가 걸렸을 때의 고객 여정을 테스트합니다. 시스템을 전반적으로 테스트하여 피크 중에도 고객 경험이 만족스러운지 확인합니다. 개별 구성요소나 기술적 실행 경로를 테스트하면 시스템 안정성이 향상되지만 고객 경험은 측정되지 않습니다.

  • 연쇄적 장애를 방지하기 위한 부하 차단을 고려합니다. 부하 차단을 구현하면 덜 중요한 요소를 희생하는 대신 가장 중요한 고객 여정에서 장애를 방지할 수 있습니다. 예를 들어 체크아웃 기능의 SLO를 유지하는 대신 카탈로그 둘러보기나 사용자 후기 검색을 중지할 수 있습니다.

  • 테스트 결과를 평가하고 폭넓게 공유합니다. 비난 없는 사후 분석 프로세스를 사용하여 문제를 해결하도록 공개적이고 정직한 평가와 문제 해결을 위한 건설적인 의견 제시를 장려합니다. 팀 전체가 데이터베이스 핫 스팟, 할당량 초과, 종속 항목의 예상치 못한 과부하, 디버깅하기 어려운 기타 상황을 파악합니다.

  • 다양한 부하 조합 테스트: 모바일과 데스크톱을 비교하고 출처의 지리적 분포와 트랜잭션 유형 등을 다변화하여 테스트합니다. 이 모든 조합은 시스템에서 각기 다른 부분에 부담을 줄 수 있습니다.

시나리오 평가 및 테스트

피크 이벤트의 성공 신뢰도를 높이기 위해서는 이벤트 중에 발생할 수 있는 시나리오를 평가하고 테스트하는 것이 중요합니다. 시스템이 재해 상황에 대응할 수 있는지 테스트하기 위해 설계된 프로세스와 도구에는 Google DiRT, Netflix Chaos Monkey 등 여러 가지가 있습니다.

준비 단계 동안에 가장 영향력이 큰 장애 시나리오를 테스트하면 성공 가능성을 높일 수 있습니다. 그러면 피크 상황에서 장애가 발생하더라도 문제를 해결할 수 있는 프로세스나 기술적 솔루션을 찾을 수 있습니다. 다음의 권장사항을 따르세요.

  • 가장 가능성이 큰 장애 시나리오를 테스트합니다. 가능성/위험 요인 가중치를 사용하여 피크 이벤트 중에 발생할 수 있는 가장 중대한 문제를 파악합니다. 해당 장애 모드를 설계하고 과부하 상태에서 시뮬레이션하여 시스템의 반응을 확인합니다. 혼란스러운 장애보다는 의도된 장애 시나리오를 고려해보세요.

  • 회로 차단기 패턴을 사용하는 것을 고려합니다. 아키텍처에서 회로 차단기 패턴을 구현하여 오프라인 상태에서도 일부 구성요소/기능이 계속 작동할 수 있는 위치를 식별합니다. 이 접근 방식은 시스템의 직접적인 제어를 받지 않는 타사 종속 항목에서 특히 중요합니다. 타사 종속 항목을 사용 중지하면 약간의 기능 손실을 감수하면서 대부분의 사용자 경험을 온전히 유지할 수 있습니다.

  • 운영 대응을 테스트합니다. 운영팀의 장애 대응이 시스템 응답보다 더 중요합니다. 예상치 못한 이벤트에 대처하는 방법에 익숙해지면 의도적인 장애 테스트보다 훨씬 더 큰 도움이 됩니다.

  • 실제 테스트와 최대한 가깝게 시뮬레이션합니다. 운영팀과 지원팀에 내부 정보를 제공하지 마세요. 내부 및 외부 지원팀과의 소통을 테스트하여 대응 시간과 협조 능력을 검증하고 문제가 발생했을 때 운영팀이 어떻게 대처하는지 살펴봅니다.

  • 비난 없는 사후 분석 프로세스를 실행하여 향후에 발생하는 문제를 성공적으로 복구할 수 있도록 상황, 상황에 대한 대응, 개선의 여지를 문서화합니다.

확장 및 안정성을 위해 아키텍처 변경

부하 테스트 및 장애 테스트는 아키텍처 검토와 더불어 시스템의 규모와 안정성을 향상시킬 수 있는 제한된 범위의 아키텍처 변경을 장려합니다. 하지만 변경사항이 있으면 위험이 추가되므로 시간 범위를 보수적으로 잡고 변경을 제한하세요.

예를 들어 다음과 같은 변경을 고려할 수 있습니다.

  • 큐/메시지 브로커 중간 레이어를 도입하여 트래픽 및 부하에 민감한 시스템(예: 규모가 제한되는 재고, 주문 처리 등의 시스템)을 관리합니다. 큐는 백엔드 시스템에 대한 트래픽 급증을 줄이고 몇몇 과부하 동작을 방지하는 데 도움이 될 수 있습니다.
  • 캐싱을 구현하여 성능을 높입니다. 캐시에는 다음과 같은 세 가지 기본 카테고리가 있습니다.

    • 프런트엔드: Cloud CDN 같은 콘텐츠 전송 네트워크를 도입하면 애셋을 고객과 더 가까운 위치로 분산하여 시스템에서 부하를 삭제합니다.
    • 애플리케이션 수준: 백엔드 서비스 소비자가 느리게 변경되는 데이터(예: 소비자 수준 제품 정보)를 Memorystore에 캐시하도록 합니다.
    • API 수준: API를 통해 Memorystore를 활용하여 API의 데이터를 캐시합니다.

    캐시에 과도하게 의존하여 실수로 계단식 장애 문제를 발생시키는 일이 있어서는 안 됩니다. 캐시를 통해 규모를 확장하는 것은 캐시를 사용할 수 없고 기본 시스템이 트래픽을 처리할 수 없게 될 경우 재앙으로 다가올 수 있습니다.

  • 부하 차단을 구현하여 전체 시스템 장애를 방지합니다. 이 방식을 사용하면 시스템 부하가 매우 큰 상황에서도 가장 중요한 사용자 여정에서는 시스템을 계속 사용할 수 있고, 다른 사용자 여정은 의도적으로 제한하게 됩니다.

  • 회로 차단기 패턴을 구현합니다. 이를 통해 구성요소 장애를 무리 없이 처리하면서 연쇄적 장애를 억제할 수 있습니다. 이 패턴을 구현하면 특정 구성요소에 과부하가 걸릴 때 호출자 구성요소가 실패하는 것을 방지할 수 있습니다.

이러한 아키텍처 변경사항 중 다수가 기능 개발 중에 이미 구현되었다면 이상적일 것입니다. 위험 수준이 적절하고 리소스가 풍부한 경우에는 아키텍처 변경이 시스템 가용성을 향상시키는 데 도움이 될 수 있습니다.

모니터링 및 로깅 설정

시스템이 어떻게 작동하는지를 확인하려면 모니터링 및 로깅을 주요 점검 도구로 사용하세요. 정보의 세분성과 깊이를 적절히 적용하면 모니터링 및 로깅 성능을 위한 적절한 양의 컴퓨팅과 저장용량이 보장됩니다.

모니터링 구성

모니터링을 수행하려면 과거 이벤트로부터 올바른 측정항목을 식별하고, 현재 및 미래의 이벤트에 적합한 측정항목을 검토하고, 측정항목 수집/집계/보고가 가능하도록 시스템을 구현해야 합니다. 모니터링 구성의 일환으로 다음 요소를 고려하세요.

  • 계획 단계 중에 파악된 새로운 측정항목이나 SLI를 포착하여 적절한 시스템 범위를 제공합니다.
  • 리소스가 올바르게 모니터링되도록 모니터링 구성을 감사합니다. 리소스 생성 프로세스에서 리소스를 모니터링 대상으로 제대로 등록하지 않는 실수를 저지르기 쉽습니다.

  • 모니터링 시스템 측정항목을 사용하여 자동 확장 처리, 자가 복구 시스템 같은 자동화 시스템에 적절히 통보합니다.

  • 모니터링을 운영 플레이북의 핵심 요소로 사용합니다.

대시보드를 사용하여 모니터링 배포

관계자 간의 공유 상태를 유지하기 위한 목적으로, 모니터링 대시보드에서 모든 주체가 좀더 세분화된 측정항목 대신 SLO에 초점을 맞추도록 할 수 있습니다. 대시보드에는 다음과 같은 장점이 있습니다.

  • 단일 창구. 공유되는 측정항목 대시보드가 있는 단일 시스템이 운영 응답성을 높이고 해석 오류의 가능성을 낮춥니다.
  • 적절한 보고 세분성. 집계는 트렌드를 더 확실하게 보여주지만 개별 리소스의 문제를 은폐할 수도 있습니다.
  • 적절한 알림. 적절한 알림을 통해 필요한 팀에 표준 방식으로 통보합니다. 예를 들어 플레이북을 기준으로 이메일, SMS, 호출기 알림 등의 모니터링 알림을 구성합니다.

피드백을 사용하여 운영 및 지원 개선

알려진 문서화 가능한 항목은 계획 단계에서 소개되었습니다. 준비 단계에서는 아키텍처 변경, 부하 테스트, 장애 테스트의 피드백으로 해당 문서를 업데이트해야 합니다.

체크리스트 및 플레이북 작성

다음의 권장사항을 따라 중요한 체크리스트를 작성합니다.

  • 체크리스트 소유자가 체크리스트가 제대로 실행되는지를 확인할 수 있도록 합니다. 소유자에게 체크리스트의 목표에 부합하는 선에서 내용을 변경할 재량권을 부여합니다.
  • 허용되는 위험 수준에 따라 문제를 해결하거나 완화할 계획을 세웁니다. 체크리스트 항목을 달성할 수 없는 경우에는 완화 계획에 대한 부서 간 합의를 모색합니다. 완화에 따르는 영향을 모든 팀이 이해하도록 합니다.

알려진 문제와 장애 테스트 중에 발견한 공통적인 문제에 대한 플레이북을 개발합니다.

지원 및 에스컬레이션 절차 교육

모든 운영팀 구성원이 자신들의 책임과 다른 팀의 책임을 인지하도록 합니다.

  • 긴급 대응팀 구성원들이 대응 시간 요건을 숙지하도록 하고 기존 문서 및 플레이북을 사용하여 신속하게 문제를 해결하는 방법을 교육합니다.
  • 모의 사고 관리 연습을 개발합니다. 이 문서 뒷부분에서 설명하는 블랙 프라이데이 가상 상황실을 시뮬레이션하는 상황실을 만듭니다. 다양한 이슈를 테스트하고 팀의 대응 방식을 테스트합니다. 이슈 중에 적절한 조율이 이루어지도록 프로세스 진행 중에 Google에도 상황을 통보합니다. 그러나 CE/지원팀의 양해를 구하기 전에 Google에 모의 P1 티켓을 제출해서는 안 됩니다. 명확하게 라벨링된 테스트/모의 P4 티켓은 괜찮습니다.

    • 불운의 바퀴 연습을 실시합니다. 이 연습은 운영팀의 준비 상태, 절차와 플레이북의 치밀함, 다른 팀과의 적절한 조율을 평가합니다.
    • CDN 캐싱 손실, 실수로 가격이 너무 낮게 책정된 SKU에 고객 주문이 몰리는 상황, 리전 장애 등의 다양한 상황을 만들어보고 운영팀이 이러한 이벤트에 어떻게 대응하는지 살펴봅니다.

모의 연습을 여러 차례 실행하여 대응 시간을 단축하고 이어지는 시뮬레이션을 통해 조율 상태를 개선합니다. 사후 분석을 통해 각 연습의 결과를 캡처하고 계속해서 다음 연습을 개선합니다.

공급업체 지원 조율

다른 팀 구성원이나 공급업체 지원팀에 연락하고 세부정보를 전달하는 방법을 확인합니다. 공급업체는 각기 다른 방법으로 지원 절차를 구현하기 때문에 지원 서비스와 가장 효과적으로 상호작용할 수 있는 방법을 숙지하는 것이 중요합니다. 공급업체 SLA에서 지원 응답과 가용성 및 지연 시간 측정항목에 대해 검토하세요.

Google Cloud 지원 문의

Google Cloud는 Google Cloud 지원을 통해 참여를 최적화하는 방법에 대한 정보를 제공합니다. 공개된 문서는 모든 고객에게 제공됩니다. Google Cloud 고객 엔지니어링에 직접 문의하거나 플래티넘 지원에 등록한 고객은 Google 담당자와 직접 상담하면서 지원 범위를 검토하고 파악할 수 있습니다. 자세한 내용은 이 문서 후반부에서 설명하는 실행 단계 섹션의 Google Cloud 지원을 참조하세요.

운영팀이 성공을 거둘 수 있도록 준비시키기

피크 이벤트를 처리하기 위해서는 많은 스트레스를 받고 감정 노동이 격심할 수밖에 없습니다. 운영팀이 완전히 지치는 것을 방지하기 위해 로테이션 프로세스를 마련하세요. 운영팀에 충분한 휴식을 제공하면 실수가 줄어들고 큰 사고가 발생할 경우 추가적인 예비 지원 인력을 제공할 수 있습니다. 다음 사항이 마련되어 있는지 확인하세요.

  • 운영팀이 피크 이벤트 중에 부담하는 업무량이 적절합니다.
  • 다운타임이 예정되어 있습니다.
  • 모두가 충분한 수면을 취합니다.
  • 운영팀에 에스컬레이션 경로나 백업이 정해져 있으며 도움이 필요하면 누구에게 연락할지를 알고 있습니다.

대다수 운영팀은 문제를 해결하기 위해 '밤샘 작업'을 해본 경험이 있습니다. 그러한 노력 자체는 칭찬해야 하지만 초인적인 능력을 바라는 것보다는 직원을 적절히 로테이션하는 것이 더 낫습니다. 팀 구성원을 교차 교육하여 여러 명의 전문가를 둠으로써 긴장감과 오류율을 줄일 수 있습니다.

용량 요청 조율

계획 단계 중에 용량 계획을 Google Cloud 및 다른 공급업체와 공유하고 조율했습니다. 다음은 고려해야 할 몇 가지 추가적인 용량 계획 전략입니다.

  • 예상되는 리소스 용량 니즈를 최대한 구체적으로 검토하고 Google Cloud와 공유합니다. CPU, 코어, 디스크, API QPS 등을 공유합니다. 조직 및 개별 프로젝트의 할당량이 적절하게 할당되었는지 확인합니다. 필요하면 조정합니다.
  • 트래픽이 예상을 초과할 경우에 대비하여 할당량 수준을 예상 사용량보다 훨씬 높게 잡아야 합니다.
  • 할당량은 용량과 다르며 시스템에 주는 영향도 다릅니다. 대규모 부하 테스트는 Google Cloud의 할당량(예: API 호출 한도) 또는 다른 Google 시스템(예: OAuth2)의 할당량을 파악하는 데 유용할 수 있습니다.
  • Google팀과 정기적으로 만나 현재 용량 요청을 검토하고 이 요청이 필요한 만큼 이행될 수 있는지 확인합니다.

변경 금지 설정

블랙 프라이데이는 연중 가장 중요한 비즈니스 이벤트 중 하나입니다. 웹 인프라에 상당한 부담이 가해지지만, 기록적인 비즈니스 수익을 거둘 수 있는 기회가 됩니다. 실패의 가장 큰 원인은 변경(예상된 변경 또는 예상치 못한 변경)입니다. 특히 아키텍처 변경은 인프라의 확장 능력에 영향을 줄 수 있으므로 피크 이벤트가 진행 중이거나 임박한 상황에서는 변경을 금지하는 것이 좋습니다.

변경 금지를 설정할 때 다음의 권장사항을 따르세요.

  • 이벤트 전에 새로운 소프트웨어와 인프라를 배포할 시간을 넉넉하게 계획해 둡니다. 변경 금지에 들어가기 앞서 피크 부하 및 장애 테스트 등의 기준을 충족해야 합니다.
  • 블랙 프라이데이 전 판매 및 마케팅 캠페인과 같은 비즈니스 홍보 활동에 지장을 주면 안 됩니다. 이 기간 동안 변경을 금지하세요.
  • 개발팀과 상의하여 경미한 버그 수정을 배포할 수 있는 마지막 시기를 합의합니다. 버그 수정을 아키텍처 또는 인프라 변경만큼 조기에 금지할 필요는 없지만 피크 이벤트에 임박해서 변경을 밀어붙여서는 안 됩니다.
  • 타사 서비스가 변경 금지를 준수하도록 합니다. 타사 서비스의 변경 금지 시작 및 종료 시점을 파악하세요. 계약 SLA를 업데이트하여 구속력을 부여하는 방법도 고려할 수 있습니다.
  • 클라우드 제공업체에 변경 관리 프로세스를 문의하고, 피크 기간 동안 변경이 예상된다면 어떠한 변경인지 알아봅니다.

준비 단계 결과물

준비 단계에서는 계획 단계 문서를 수정하고 새로운 항목을 개발합니다. 예를 들면 다음과 같습니다.

  • 계획 단계의 결과물 중 준비 단계 프로세스에서 바뀐 결과물을 검토, 수정, 배포합니다. 부하 및 장애 테스트 결과에 따라 전제조건을 다시 고민하고 일정, 위험, 용량, 운영 계획을 수정해야 하는 경우가 많습니다.
  • 부하 및 장애 테스트의 결과를 공유 상태 관계자 그룹에 배포합니다. 잘된 부분, 개선된 부분, 새로운 위험이 발견된 부분을 모두가 숙지하도록 합니다.
  • 공유된 단일 창구 모니터링이 제대로 운영되며 모든 당사자가 액세스할 수 있는지를 검증합니다. 투명한 정보 접근성이 빠른 의사결정을 이끌어 냅니다.
  • 운영팀이 완전히 참여하고 있고 실행 단계를 책임지는지 확인합니다.
  • 인원 배치 계획이 적절하고 타당한지, 충분한 휴식이 올바른 판단을 보장하는지, 근무 교대 시 인수인계 절차가 있는지 검토합니다.
  • 용량 계획이 정확하게 문서화되고, 할당량이 Google Cloud에서 확인되고 Google 시스템에 구현되었는지 확인합니다.
  • 각 공급업체의 지원 준비 상태 평가를 완료합니다. 지원 요청을 접수하고 에스컬레이션하는 방법을 숙지합니다.

실행 단계

계획 및 준비 단계를 완료했다면 이제 안심하고 블랙 프라이데이에 임하세요. 모든 것이 계획대로 진행된다면 탁월한 운영 지원에 힘입어 피크 이벤트가 순조롭게 흘러갈 것입니다. 운영팀은 모든 사항을 파악하고 대응할 수 있으므로 예상치 못한 이슈란 없습니다. 이슈가 발생하더라도 금방 파악하여 해결할 수 있습니다.

다음 표에서는 실행 단계의 주요 절차를 요약하여 보여줍니다.

실행 단계Tasks
최대 용량까지 수동으로 확장 규모를 확장하려면 먼저 블랙 프라이데이 후에 점진적으로 규모를 줄일 계획부터 세워야 합니다.
빠른 복구에 중점을 둔 실행 가상 상황실을 설치합니다.
사고 관리 경험을 활용합니다.
플레이북을 실행합니다.
Google Cloud 지원팀과 협력합니다.
데이터 전송 프로세스 개선 근본 원인 분석을 실시합니다.
추정치와 실제값을 비교 분석합니다.
사후 분석과 고찰을 종합합니다.
공로를 인정합니다.

최대 용량까지 수동으로 확장

자동 확장 시스템은 예상치 못한 급증에 대응하는 데 효과적이지만, 대부분의 경우 트래픽을 5배에서 10배까지 늘리기 위한 기본 확장 프로세스로는 권장되지 않습니다. 자동 확장 시스템은 일반적으로 작은 단위로만 확장됩니다. 주로 평가 주기별로 추가 용량을 위한 VM을 추가합니다. 시스템이 추가 용량을 위해 수십 또는 수백 개의 VM을 빠르게 확장해야 할 경우에는 적절한 범위로 시스템을 수동 확장하는 것이 더 효율적입니다.

시스템이 준비가 되어 있고, 캐시가 예열될 수 있고, 가상 머신 시작 같은 상대적으로 느린 이벤트가 피크 이벤트 시작 전에 이루어질 수 있도록 수동 확장을 사용하여 시스템 용량을 천천히 늘리세요. 이 프로세스는 시스템에서 해당 용량이 가능한지를 확인하는 안전한 방법이기도 합니다.

최대 트래픽까지 확장하는 것이 기본 목표이지만 블랙 프라이데이 후에 규모를 점차 줄일 수 있는 방법도 계획해야 합니다. 정상 트래픽을 위한 원래의 확장 전략이 있는데 트래픽이 아직 정상으로 돌아오지 않은 경우, 너무 빠르게 축소하면 중단이 발생할 수 있습니다.

빠른 복구에 중점을 둔 실행

운영팀의 기본 목표는 시스템을 안정적으로 운영하는 것입니다. 엔지니어는 문제에 대한 데이터를 수집하기 위해 아직 문제가 진행 중일 때 근본 원인을 찾는 경향이 있습니다. 근본 원인 분석도 중요하지만 일단은 복구에 집중해야 합니다. 용량을 추가하거나, 성능이 저하된 구성요소를 삭제하거나, 시스템을 다시 시작하는 등 시스템 복구에 최선을 다하는 와중에 기회가 되면 분석을 위해 데이터를 수집하여 저장하세요. 문제가 '왜' 발생했는지는 이슈를 해결한 후에 언제든지 오프라인에서 분석할 수 있습니다.

가상 상황실 설치

실행 단계를 책임지는 것은 운영팀이지만 이외에도 여러 사람이 참여합니다. 운영팀은 팀 간 협업 체계를 활용하여 회사의 다른 부서 및 공급업체에 지원을 요청할 수 있습니다.

가상 상황실은 피크 이벤트 중에 모든 관계자가 팀워크를 발휘할 수 있는 공간입니다. 비동기 채팅 시스템이나 이메일 커뮤니케이션에서 발생하는 지연 없이 아이디어를 빠르게 공유할 수 있습니다. 가상 상황실을 통해 각종 상황에 쉽고 빠르게 대처하고 적극적인 참여를 유도하세요.

피크 이벤트 전용의 하위 팀 공간을 만드는 것도 좋습니다. 이러한 하위 공간이 있으면 이슈가 여러 건 발생할 경우 주 상황실에서는 빠른 진단과 위임에 집중할 수 있습니다.

사고 관리 경험 활용

적절한 인원이 이슈에 대응할 수 있도록 사고 관리 프로세스에서 장애 테스트, 모의실험, 테스트 실행을 사용하세요. 운영팀이 사고 관리 프로세스에 익숙해지면 전반적인 대응력과 해결 속도가 향상됩니다.

플레이북 실행

이슈가 나타나거나, 시스템 알림이 발생하거나, 문제가 신고될 때 플레이북이 있어야 각 팀에서 상황을 빠르게 진단하고 해결법이 있는지를 판단할 수 있습니다. 예기치 못한 문제라도 플레이북의 데이터는 각 팀이 문제를 빠르게 파악하고 해결하는 데 도움이 됩니다. 하지만 플레이북에 내용을 추가하고 건설적인 의견을 수집하는 것이 최우선 과제는 아닙니다. 대신 정보를 메모해 두고 나중에 사후 분석을 통해 플레이북 실행을 검토하세요.

Google Cloud 지원팀과 협력

Google Cloud 지원팀에 문의할 때는 최대한 구체적으로 설명하고, 명시적으로 언급되지 않은 정보를 추정하지 마세요. 이 접근 방식으로 지원팀은 고객의 관점에서 문제를 바라보고 좀더 효과적으로 조사 범위를 좁힐 수 있습니다. 다음의 네 가지 주요 세부정보에 집중하세요.

  • 시간. '아까 전'이나 '어제' 같이 모호한 표현을 사용하지 말고 상대적이지 않은 명확한 용어로 문제를 알리고 시간대를 명시하세요. 가급적 UTC로 표현하시기 바랍니다. Google 엔지니어가 찾아보는 로그 등의 데이터가 고객의 현지 시간대와 어긋날 염려가 있습니다. 이들은 고객과 같은 시간대에 있지 않을 수도 있으므로 시간을 애매하게 설명하면 정확히 전달되지 않습니다.

  • 제품. 어떤 제품에서 어떤 작업을 하고 있는지를 명시하세요. '잘 안 돼요'라고만 말하면 고객이 보는 상황을 Google이 동일하게 보고 있는지 판단하기가 어렵습니다.

  • 위치. 리전과 영역을 명시하세요. 소프트웨어 롤아웃 등의 이벤트가 특정 위치에서만 진행 중이거나 고객 문제와 다른 이벤트 간에 상관관계가 의심되는 경우에 이 정보가 도움이 될 수 있습니다.

  • 구체적 ID. 프로젝트 ID, 결제 ID, 특정 VM, 기타 관련 ID를 명시하세요. 고객은 여러 개의 프로젝트와 리소스를 보유하며, Google이 알 수 없는 고객이 정한 명명 규칙을 따르기도 합니다. 해당 프로젝트, 결제 계정 또는 리소스를 Google에 분명히 전달해야 빠른 해결이 가능합니다.

지원 요청을 접수하려면 최대한 많은 데이터를 제공하고 엔지니어의 정보 요청에 응해야 합니다. 해결 속도를 높이려면 스크린샷, tcpdump 출력, 로그 파일 스니펫, 기타 모든 요청된 정보를 제공하세요.

Google은 다음과 같은 방식으로 문제를 해결합니다.

  1. 시스템 관찰 정보를 수집하고 공유합니다.
  2. 관찰 내용을 설명하는 가설을 세웁니다.
  3. 가설이 맞거나 틀렸음을 입증할 수 있는 테스트를 찾아냅니다.
  4. 테스트를 실행하고 결과가 의미하는 바에 대한 합의를 도출합니다.
  5. 다음 가설로 넘어갑니다.
  6. 해결될 때까지 반복합니다.

이 과정을 함께하고 진행 중인 정보를 공유함으로써 사례 해결 속도를 크게 높일 수 있습니다.

데이터 전송 프로세스 개선

새로운 주기에서 처음으로 해야 할 일이 데이터 수집이라면 실행 단계에서 마지막으로 해야 할 일은 데이터 전송입니다. 측정항목 및 로그를 프로세스 중에 생성된 다른 결과물과 함께 보존해야 합니다. 그러면 다음 주기를 시작하고 계획 단계를 처음부터 새로 시작하기 위한 견고한 토대가 마련됩니다.

근본 원인 분석 실시

근본 원인 분석(RCA)은 장애를 없애면 시스템이 정상적으로 작동할 수 있도록 시스템에서 가장 세밀한 수준까지 장애를 파악하는 데 집중합니다. 데이터 수집 구성요소를 제외하고는 중단 중에 RCA를 즉시 수행하는 것을 권장하지 않습니다. 시스템을 다시 가동하는 동안 이벤트가 발생한 시점과 그 직후에 생성된 데이터를 수집하고 보존하세요. 시스템 복구가 완료되면 시간에 따른 데이터 저하 또는 노력, 강조사항 손실을 방지하기 위해 잠시 후에 RCA를 수행하세요.

RCA는 다음을 수행하는 것을 의미합니다.

  • '5번의 왜(five whys)' 기법을 활용하여 발생한 문제를 설명합니다.
  • 시스템 장애의 특정 시점에 데이터를 귀속하기 위한 세부적인 타임라인을 만듭니다.
  • 시스템 장애의 주 요인과 보조 요인을 분리합니다. 문제의 근원이 되는 요인을 파악하려고 시도합니다. 여러 요인을 반복적으로 검토하면 장애와 관련된 최하위 구성요소를 파악하는 데 도움이 됩니다.
  • 감지, 알림, 자동 완화를 사용할 기회를 모색합니다.

    • 문제를 감지하고 진단하는 데 얼마나 걸렸는가?
    • 모든 원격 분석을 사용할 수 있었는가?
    • 조기 경고가 있었는가?
    • 경보가 작동했는가? 얼마나 일찍 작동했는가? 운영팀이 즉시 이해하고 조치를 취하기에 충분한 정보를 포함했는가?
    • 종속 항목 경보가 너무 많았는가? 상관관계 및 억제가 필요한가?
    • 이러한 경보를 자동 완화 작업에 연결할 수 있는가?

사고마다 조사 방법이 달라야 합니다. 사고가 겹치는 경우에는 지원팀과 협력하여 인과관계가 있는지를 파악합니다. 근본 원인이 파악되면 미래의 사고를 방지하는 데 도움이 되도록 실행 가능한 활동 목록을 개발합니다. 사고를 완화하고 다시 발생하지 않도록 하는 데 필요한 리소스, 시간, 비용을 파악합니다. 사고로 인해 시스템이 SLO에서 벗어난 경우, 재발 방지를 적절히 예약합니다.

추정치와 실제값을 비교하여 분석

이 주기에서 가장 먼저 할 일 중 하나는 이전 이벤트의 데이터를 수집하여 미래의 요구를 예상하기 위한 기초로 삼는 것입니다. 차이와 원인을 파악함으로써 향후 피크 이벤트 계획자에게 도움을 줄 수 있습니다. 비즈니스 측정항목이 SLO에 어떤 영향을 미치는지를 이해하면 시스템 안정성을 높이는 방법을 파악할 수 있습니다.

용량 계획도 검토합니다. 용량이 예상했던 값보다 낮은 영역 때문에 추가 용량이 필요한 사고가 발생했을 수도 있습니다.

사후 분석 및 고찰 종합

사후 분석 및 고찰 프로세스를 수행하는 것이 좋습니다. 이 프로세스에서 모든 팀은 발생한 이벤트의 세부정보와 피크 이벤트 동안 고객과 Google 시스템이 어떻게 행동했는지에 대한 정보를 공유합니다. 모든 팀이 이러한 경험을 검토하고 미래의 계획에 반영합니다.

사후 분석 및 고찰 프로세스 중에 다음 정보를 수집하세요.

  • 프로세스 분석 및 계획 단계의 어떤 부분이 효과적이었는지에 대한 정보
  • 준비 및 실행 단계에서 무엇이 잘 이루어졌는지에 대한 다각적인 관점의 유용한 정보와 두 단계 모두에서 개선이 필요한 부분에 대한 의견
  • 다른 고객들이 Google Cloud를 사용하는 데 유용할 수 있는 권장사항과 솔루션을 발표할 수 있는 기회
  • 엔지니어링, 운영, 프로젝트 관리, 비즈니스, 경영진의 관점. 필요하다면 고객의 목소리를 취합하여 참고할 수도 있습니다.
  • 서면으로 작성된 정보와 회의 중에 논의된 정보. 회의에서 미처 기록되지 않은 내용이 나중에 중요한 의미를 가질 수도 있습니다.

공로 인정

블랙 프라이데이를 성공적으로 관리하는 데 도움을 준 여러 부서의 팀원들에게 감사의 뜻을 전합니다. 팀 전체와 개인의 성과를 치하하고, 헌신적인 노력을 보인 이들에게는 보상을 제공합니다.

팀은 성공을 회상하고 자축하면서 길고 힘들었던 과정에서 소진한 기력을 회복할 수 있습니다. 업무 만족도는 팀의 장기적인 성공에 핵심적인 요소입니다. 업무는 잠시 제쳐두고 특별한 순간을 만끽하면서 축배를 나누세요.

실행 단계 결과물

실행 단계 결과물에는 계획, 준비, 실행 단계의 종료와 더불어 무엇보다도 블랙 프라이데이 이벤트의 성공적인 완료가 포함됩니다. 이 단계의 주요 결과물은 다음을 비롯한 데이터 수집 및 분석입니다.

  • 측정항목, SLO, 용량 계획의 예상 데이터와 실제 데이터 검토
  • 실행 단계 중에 발생한 이슈의 근본 원인 분석
  • 잘된 부분과 개선의 여지가 있는 부분(구체적인 조치 항목 포함)을 파악하는 사후 분석 및 고찰

다음 단계

이 정도 분량의 자료로 모든 것을 다 설명할 수는 없습니다. 블랙 프라이데이를 앞두거나 진행하는 동안 불안감을 줄이려면 회사의 각 부서 및 Google Cloud팀과 함께 이 문서에서 다루지 않은 상황을 가정하고 의견을 모아보세요. 다음과 같은 주제를 탐구해 볼 수도 있습니다.

  • 추가적인 SRE 방침을 살펴보고 확장 가능한 프로덕션 지원 문화를 조성합니다.
  • 이 콘텐츠에 관한 YouTube Next 2018 프레젠테이션을 Google 고객의 관점에서 검토합니다.
  • 더 안정적인 시스템을 지원하기 위해 고객과 협력하는 Google의 참여 모델인 고객 신뢰성 공학에 대해 읽어봅니다.
  • 여러 아키텍처 설계 패턴에서 사용되는 Cloud Load Balancing에 대해 자세히 알아봅니다.
  • Google Cloud에 대한 참조 아키텍처, 다이어그램, 가이드, 권장사항 살펴보기 Cloud 아키텍처 센터 살펴보세요.