incident-response

11 개의 포스트

spotify

콘텐츠 수집 및 팟캐스트 동영상 사고 보고서 | Spotify Engineering (새 탭에서 열림)

Spotify의 6월 24일 팟캐스트 영상 게시 지연은 트랜스코딩 용량 부족, 대량 배치 작업, 영상 처리 비용 증가, 자원 스케줄링 버그가 동시에 발생해 큐가 폭증하면서 일어났다. 신규 영상 게시가 수시간 지연됐고, 일부 크리에이터의 재업로드가 부하를 더욱 키웠다. Spotify는 배치 작업 중단, 버그 수정, 처리 용량 증설로 다음 날 새벽 backlog를 해소했으며, 이후 용량 계획·우선순위·모니터링을 전반적으로 개선하고 있다. ## 게시 지연이 발생한 과정 - 신규 팟캐스트의 오디오·비디오는 트랜스코딩과 콘텐츠 분석을 거쳐 Spotify에 게시된다. - 6월 24일 영상 트랜스코딩 인프라가 최대 용량에 도달하면서 신규 영상 게시 큐가 급격히 쌓였다. - 평소 수분 내 게시되던 영상이 수시간 동안 표시되지 않았다. - 업로드가 정상적으로 접수·대기 중이라는 확인이 충분히 제공되지 않아 일부 크리에이터가 에피소드를 재업로드했고, 이로 인해 시스템 부하가 추가됐다. - 신규 에피소드용 중간 우선순위 큐와 기존 에피소드 업데이트용 낮은 우선순위 큐가 모두 영향을 받았다. ## 장애를 키운 네 가지 요인 - **부족한 용량 여유** - 평상시 처리량은 감당할 수 있었지만, 대규모 콘텐츠 제출량 급증을 흡수할 여유 용량이 부족했다. - **기존 콘텐츠 재처리 배치 작업** - 재생 시스템 변경에 맞춰 기존 에피소드를 재처리하는 정기 작업이 신규 콘텐츠와 처리 자원을 경쟁했다. - 배치 작업은 처음에는 정상적으로 보였지만, 제출량 급증과 결합되면서 문제가 됐다. - **영상 품질 개선에 따른 처리 비용 증가** - 더 낮은 비트레이트에서 높은 품질을 제공하도록 변경하면서 에피소드당 처리 시간과 필요한 컴퓨팅 자원이 증가했다. - 용량 계획에 이 증가분이 충분히 반영되지 않았다. - **자원 스케줄링 버그** - 더 강력한 하드웨어로 이전한 뒤 스케줄링 오류가 가용 컴퓨팅 자원을 제대로 활용하지 못하게 했다. - 결과적으로 처리량이 약 10% 감소했다. ## 장애 대응과 복구 일정 - 13:30: 내부 모니터링에서 초기 경고가 발생했지만, 전체 용량 문제로 즉시 인식되지는 않았다. - 15:00: 영상 제출량 급증으로 트랜스코딩 용량이 한계에 접근했다. - 16:35: 용량 확보를 위해 배치 작업을 중단했다. - 17:34: 큐가 임계치를 넘었다는 자동 경고 후 공식 장애 대응을 시작했다. - 19:00: 크리에이터들이 에피소드 미표시 문제를 보고했다. - 20:49: 자원 활용률을 개선하는 소프트웨어 수정 사항을 배포했다. - 6월 25일 00:14: 추가 처리 클러스터를 가동했다. - 01:02: 모든 큐가 비워졌다. - 07:30: 전체 게시 파이프라인이 정상 작동하는 것을 최종 확인했다. ## 모니터링과 대응의 문제점 - 첫 경고가 발생한 뒤 공식 장애 대응이 시작되기까지 약 4시간이 걸렸다. - 엔지니어들은 16:35에 배치 작업을 중단했지만, 문제의 범위가 시스템 전체의 용량 부족이라는 점은 큐가 임계치를 넘은 뒤에야 명확해졌다. - Spotify는 용량 한계에 접근하는 단계에서 더 일찍 경고하도록 모니터링을 개선하고 있다. ## 후속 조치와 신뢰성 개선 - 트랜스코딩 처리 용량을 약 67% 늘려 트래픽 급증과 배치 작업을 위한 여유를 확보했다. - 가용 컴퓨팅 자원을 충분히 활용하지 못하게 하던 스케줄링 버그를 수정했다. - 용량 한계에 가까워질 때 더 빠르게 알림을 보내도록 모니터링을 개선했다. - 정상 상태의 트래픽뿐 아니라 급격한 증가와 장애 복구 상황까지 반영하는 용량 계획을 수립하고 있다. - 크리에이터의 실시간 콘텐츠가 백그라운드 작업보다 우선 처리되도록 게시 시스템의 우선순위 정책을 개선하고 있다. - 예상치 못한 부하를 완화하기 위해 파이프라인 전반에 속도 제한(rate limiting)과 백프레셔(backpressure)를 확대할 계획이다. ## 실용적인 결론 이번 장애는 단일 버그보다 용량 여유 부족, 배치 작업과 실시간 작업의 자원 경쟁, 처리 비용 증가, 모니터링 지연이 복합적으로 작용한 사례다. 대규모 미디어 처리 시스템에서는 평상시 처리량뿐 아니라 급격한 트래픽 증가를 견딜 여유 용량, 작업 우선순위, 조기 경보, 재시도·중복 업로드를 방지하는 명확한 상태 확인이 함께 설계되어야 한다.

github

보안 권고 데이터베이스의 내부와 취약점 수가 기록을 경신할 때 벌어지는 일 (새 탭에서 열림)

Madison Ficorilli는 취약점 투명성 분야의 전문가로, GitHub에서 보안 관리자로 활동하며 자문 데이터베이스 큐레이션 팀을 이끌고 있습니다. 취약점 신고·대응·공개에 깊이 관여하며, OpenSSF와 CVE 프로그램에서도 관련 표준과 생태계 발전에 기여하고 있습니다. 그녀의 전문성은 GitHub와 카네기멜런대학교 SEI CERT에서의 사고 대응 및 취약점 조정 경험을 바탕으로 합니다. ### GitHub에서의 역할 - GitHub의 시니어 보안 관리자로 근무합니다. - 보안 권고 데이터베이스의 큐레이션 팀을 이끌고 있습니다. - 취약점 정보가 정확하고 일관되게 정리·공개되도록 관리합니다. ### 취약점 투명성과 공개 - 취약점 신고, 대응, 공개 절차의 개선을 주요 관심사로 삼고 있습니다. - 보안 취약점 정보를 투명하게 공유해 사용자와 오픈소스 생태계가 효과적으로 대응하도록 돕습니다. - 관련 오픈소스 보안 커뮤니티에서 협업과 표준화에 참여합니다. ### 오픈소스 및 CVE 생태계 기여 - Open Source Security Foundation(OpenSSF)의 관련 워킹 그룹 공동 의장으로 활동합니다. - CVE 프로그램 이사회 구성원으로서 취약점 식별자와 공개 체계의 발전에 관여합니다. - 기술적 대응뿐 아니라 취약점 관리 정책과 거버넌스에도 기여합니다. ### 이전 경력과 전문성 - GitHub에서 제품 사고 대응 분석가로 일하며 보안 사고 대응 경험을 쌓았습니다. - 카네기멜런대학교 소프트웨어공학연구소(SEI)의 CERT Coordination Center에서 취약점 조정 업무를 담당했습니다. - 이러한 경험을 통해 취약점 발견부터 조정, 대응, 공개까지 전 과정을 이해하고 있습니다. 그녀의 경력은 개별 기업의 보안 대응과 국제적인 취약점 공개 체계를 연결하는 데 초점을 둡니다.ીએમ

line

ODW #8: Slack MCP로 사고 대응과 FAQ 생성 작업 속도를 높이는 실습형 사내 워크숍 후기 (새 탭에서 열림)

Slack에 축적된 문의와 사고 대응 정보는 중요하지만, 문서화가 늦어지거나 담당자별 품질 차이로 지식 자산화가 어려웠다. 이 글은 사내 인증 기반 Slack MCP와 Confluence·Jira MCP를 결합해 FAQ, 사고 상황 요약, 인시던트 리포트를 자동 생성하는 워크숍 사례를 소개한다. 핵심은 기술 설명보다 실제 업무를 직접 자동화해 보고, 검증된 프롬프트를 스킬로 만들어 조직 전체에서 재사용하는 데 있다. ## Slack 정보의 구조화 격차 - Slack에는 사고 대응, 문의, 프로젝트 논의 등 실시간 업무 정보가 축적된다. - 그러나 문서화가 본업에 밀리거나 담당자에 따라 기록 품질이 달라진다. - 그 결과 중요한 정보가 Slack 스레드에 묻혀 재검색과 재활용이 어려워진다. - FAQ, 사고 보고서, 진행 상황 보고서 형태로 Confluence나 Jira에 정리할 필요가 있다. ## Slack MCP 도입과 워크숍 목표 - 사내 Slack MCP는 사내 인증과 연동되어 개인 토큰이나 복잡한 OAuth 설정 없이 Slack 정보에 접근할 수 있다. - 새로운 도구의 도입을 막는 요인은 다음과 같다. - 업무 중 별도로 학습할 시간 부족 - 설정과 활용에 대한 심리적 부담 - 사내 정보 확산의 지연 - 워크숍은 Slack MCP가 공개된 직후 빠르게 열어 참가자의 관심을 실습으로 연결했다. - 목표는 깊은 기술 지식 전달보다 참가자가 당일부터 업무에 활용할 수 있게 만드는 것이었다. ## Slack MCP의 주요 기능과 확장성 - Slack MCP는 다음 기능을 제공한다. - 메시지와 스레드 조회 - 메시지 게시 및 액션 실행 - 채널과 멤버 조회 - 메시지 검색 - Confluence MCP와 결합하면 프로젝트 보고서나 FAQ를 자동 생성하고 게시할 수 있다. - Jira MCP와 결합하면 Slack 논의를 바탕으로 작업 티켓을 만들 수 있다. - 워크숍에서는 먼저 AI에게 Slack 채널에 “Hello”를 게시하게 하여 MCP의 동작을 직접 체험하게 했다. ## 문의 대응 내용을 FAQ로 변환 - Slack 문의 채널의 대화를 검색해 FAQ 형식의 마크다운으로 변환했다. - 기존 Confluence FAQ와 대조해 이미 문서화된 내용은 제외했다. - 생성된 내용을 Confluence 하위 페이지로 게시하고, 증상·해결책·원인 구조의 표로 정리했다. - 활용 흐름은 다음과 같다. - 문의 채널과 Confluence 페이지 지정 - ‘문의’를 포함한 최신 스레드 검색 - 기존 FAQ와 중복 여부 확인 - 신규 문의만 FAQ 파일로 생성 - Confluence에 게시 - 이를 통해 반복 문의를 지식 베이스로 축적하고 담당자별 답변 품질 차이를 줄일 수 있다. ## 사고 상황 요약과 인시던트 리포트 생성 ### 빠른 상황 파악 - “시스템 장애 내용 및 상황을 정리해줘”와 같은 자연어 지시로 Slack 스레드를 검색한다. - AI는 해결 상태, 고객 영향, 담당자별 조치, 장애 타임라인을 요약한다. - 예를 들어 장애 감지 시각, 원인 파악 시각, 대응 완료 시각을 한눈에 정리할 수 있다. - 매니저가 중간에 합류하거나 담당자에게 직접 묻기 전에 전체 상황을 파악할 수 있어 의사 결정이 빨라진다. ### 인시던트 리포트 자동 작성 - 사전에 정한 형식에 따라 발생 시각, 감지 시각, 장애 기간, 원인, 영향 범위, 대응 내용을 자동 구조화한다. - 데이터베이스 커넥션 풀 고갈이나 설정 변경 누락 같은 원인과 사용자 수, 영향 기능, 데이터 손실 여부 등을 보고서에 포함할 수 있다. - 사고 대응 중에는 현황 요약을, 대응 완료 후에는 공식 리포트를 생성하는 식으로 목적에 맞게 활용한다. ## 정확도와 리뷰를 높이는 방법 - Slack의 모든 정보를 그대로 사용하지 말고 분석 범위를 먼저 좁혀야 한다. - 기존 Confluence 문서와 중복 제거 - 특정 리액션이 달린 메시지만 선택 - 특정 채널이나 기간, 키워드로 검색 범위 제한 - AI가 생성한 결과를 그대로 공개해서는 안 된다. - 개인정보 포함 여부 확인 - 원본 스레드 출처 표시 - 원래 발언을 과도하게 해석하지 않았는지 검토 - 실제 실습에서도 원본 스레드의 의도와 FAQ 내용이 미묘하게 달라지는 사례가 있어 사람의 리뷰가 필요함을 확인했다. - “증상·해결책·원인 세 칼럼의 표로 작성”처럼 출력 형식을 구체적으로 지정하면 팀 문서 표준에 맞는 결과를 얻기 쉽다. ## 재사용 가능한 스킬 설계 - 반복 작업은 스킬로 저장해 프롬프트를 매번 다시 작성하지 않도록 했다. - 워크숍에서 사용한 스킬은 다음 네 가지다. - `slack-to-faq`: Slack 스레드에서 FAQ 생성 - `faq-to-confluence`: FAQ를 Confluence에 게시 - `slack-incident-status`: 사고 상황 요약 - `slack-incident-report`: 인시던트 리포트 생성 - 스킬 제작 과정은 다음과 같다. - 수동으로 여러 프롬프트를 실험 - 효과적인 지시와 출력 형식 기록 - 재사용 가능한 스킬로 정의 - 팀에 공유하고 피드백을 반영해 개선 - 이를 통해 워크숍 참가자가 같은 절차를 재현하고, 팀 전체가 일관된 품질의 결과를 얻을 수 있다. ## 워크숍 운영에서 얻은 교훈 - 신기술이 등장해 관심이 높은 시점에 빠르게 교육을 제공하면 학습 참여를 높일 수 있다. - “Hello” 게시처럼 단순한 성공 경험부터 시작한 뒤 FAQ 생성과 사고 대응으로 난도를 높이는 단계적 구성이 효과적이다. - 일반적인 기능 소개보다 문의 대응과 장애 대응처럼 실제로 시간이 많이 드는 업무를 주제로 삼아야 활용 가능성을 쉽게 체감할 수 있다. - 기술 자체보다 참가자가 직접 손을 움직여 자신의 업무에 적용해 보는 경험이 현장 정착에 중요하다. 실무에서는 Slack MCP를 전사적으로 한꺼번에 도입하기보다, 반복 문의나 인시던트 보고처럼 효과를 측정하기 쉬운 업무부터 시작하는 것이 좋다. 원본 출처와 사람의 검토 절차를 반드시 포함하고, 검증된 작업 흐름은 스킬로 표준화해 점진적으로 확산하는 방식이 적절하다.

discord

ROOST, AI 시대를 위한 (새 탭에서 열림)

비영리 단체 ROOST는 AI 시대의 온라인 안전을 위해 오픈 소스 기반의 보안 도구인 'Coop'과 'Osprey'를 공개했습니다. 이 도구들은 막대한 비용이 드는 엔터프라이즈 소프트웨어나 복잡한 자체 시스템 없이도 모든 규모의 기업이 유해 콘텐츠를 탐지하고 대응할 수 있는 기술적 토대를 제공합니다. 이를 통해 안전 인프라를 공공재로 전환함으로써 디지털 생태계 전반의 보안 수준을 상향 평준화하는 것을 목표로 합니다. **전문적인 콘텐츠 검토와 규제 준수를 돕는 Coop** * 콘텐츠 리뷰를 전문가에게 라우팅하고, 검토에 필요한 관련 정보를 시각화하여 즉각적인 조치를 취할 수 있는 인터페이스를 제공합니다. * 아동 성착취물(CSAM)의 의무 신고를 위한 미국 실종학대아동센터(NCMEC) API가 내장되어 있어 관련 법규를 효율적으로 준수할 수 있습니다. * 대규모 유해 콘텐츠 처리에 특화된 기술 기업 'Cove'의 IP를 ROOST가 인수하여 오픈 소스로 전환함으로써, 검증된 기술력을 누구나 무료로 활용할 수 있게 되었습니다. **위협 조사 및 대규모 사고 대응을 위한 Osprey** * 플랫폼 내에서 발생하는 위협을 심층적으로 이해하고 대규모로 대응 조치를 실행할 수 있는 경량화된 사고 조사 도구입니다. * 사용자 친화적인 설계를 통해 소규모 커뮤니티부터 대형 플랫폼까지 인프라 부담 없이 강력한 조사 기능을 수행할 수 있도록 돕습니다. * Discord가 자사 플랫폼뿐만 아니라 인터넷 전체의 안전을 위해 개발한 기술을 ROOST에 기증한 것으로, 업계 내 안전 기술 공유의 핵심 사례로 꼽힙니다. **오픈 소스 안전 생태계의 확산과 협업** * 탈중앙화 소셜 미디어인 Bluesky는 Osprey 도입을 통해 자원 규모와 관계없이 효과적인 안전 인프라 구축이 가능함을 입증할 계획입니다. * Notion과 같은 주요 플랫폼들은 기존 Cove 기술을 통해 확보한 안전 역량을 기반으로, ROOST의 주도하에 더욱 강화된 개방형 보안 생태계 구축에 동참하고 있습니다. * 이 모델은 스타트업의 혁신, 자선 단체의 후원, 그리고 오픈 소스의 협업 정신을 결합하여 피싱 캠페인부터 아동 안전 사고까지 광범위한 위협에 맞서는 새로운 표준을 제시합니다. 온라인 위협이 정교해짐에 따라 안전 도구는 더 이상 경쟁 우위 수단이 아닌, 모든 플랫폼이 갖춰야 할 필수적인 기반 시설이 되어야 합니다. 유해 콘텐츠 대응과 플랫폼 보안 강화가 필요한 서비스 제공자라면, 향후 정식 공개될 Coop과 Osprey를 적극적으로 도입하여 비용 효율적이면서도 전문적인 신뢰 및 안전(Trust & Safety) 역량을 확보할 것을 권장합니다.

datadog

결함이 있는 배포 탐지 (새 탭에서 열림)

Datadog은 Gartner의 2026년 Observability Platforms Magic Quadrant에서 Leader로 선정되었다고 소개합니다. 제공된 내용은 이 발표와 Datadog 제품 메뉴 중심이며, 선정 근거와 평가 세부 내용은 포함되어 있지 않습니다. Datadog은 인프라부터 애플리케이션, 로그, 보안, 사용자 경험, 소프트웨어 배포, AI까지 통합 관측성 플랫폼을 제공한다는 점을 강조합니다. ### Gartner Magic Quadrant 리더 선정 - Datadog이 Gartner의 **2026년 Observability Platforms Magic Quadrant**에서 Leader로 이름을 올렸다는 발표입니다. - 다만 제공된 본문에는 Gartner의 평가 기준, Datadog의 구체적인 점수, 경쟁사 비교 내용은 없습니다. - 링크는 Datadog의 공식 발표 및 관련 리소스로 연결됩니다. ### 통합 인프라 모니터링 - 호스트, 컨테이너, Kubernetes, 네트워크, 서버리스 환경을 모니터링합니다. - 메트릭 기반 모니터링과 클라우드 비용 관리, 스토리지 및 GPU 모니터링을 제공합니다. - Cloudcraft를 통해 클라우드 인프라 구조를 시각화할 수 있습니다. ### 애플리케이션 및 데이터 관측성 - APM으로 애플리케이션 성능과 서비스 간 의존성을 추적합니다. - Continuous Profiler, Dynamic Instrumentation, Universal Service Monitoring 등을 통해 런타임 동작과 성능 병목을 분석합니다. - 데이터베이스, 데이터 스트림, 데이터 품질, 작업 실행 상태도 관찰할 수 있습니다. ### 로그 및 보안 관리 - 로그 수집·검색·분석, 민감 데이터 탐지, 감사 추적 기능을 제공합니다. - Observability Pipelines를 이용해 로그의 필터링과 라우팅을 제어할 수 있습니다. - 코드 보안, SAST, SCA, IaC 보안, 클라우드 보안, 취약점 관리, SIEM, 워크로드 보호까지 보안 영역을 확장합니다. ### 디지털 경험과 소프트웨어 배포 - Browser·Mobile RUM, 세션 리플레이, Synthetic Monitoring으로 실제 사용자 경험과 가상 테스트 결과를 분석합니다. - 오류 추적, 제품 분석, 실험 기능도 포함됩니다. - CI Visibility, 테스트 최적화, 코드 커버리지, 기능 플래그 등을 통해 배포 과정과 변경 사항의 영향을 관찰합니다. ### AI 기반 운영과 서비스 관리 - Watchdog, Bits AI Agents, Bits Investigation 등 AI 기반 분석 및 장애 조사를 제공합니다. - 이벤트 관리, SLO, 인시던트 대응, 워크플로 자동화, 서비스 카탈로그를 지원합니다. - AI 에이전트, GPU, MCP Server 등을 관측성 범위에 포함해 AI 시스템 운영도 지원합니다. 제공된 내용만으로는 Gartner 선정의 구체적인 이유나 기술적 사례를 판단하기 어렵습니다. 실제 도입을 검토한다면 Datadog의 통합 범위뿐 아니라 데이터 보존 비용, 수집량 기반 과금, 기존 도구와의 연동성, 필요한 제품 모듈을 함께 비교하는 것이 좋습니다.

datadog

Arm64 JIT 컴파일러 버그를 드러낸 PostgreSQL 세그멘테이션 오류 파헤치기 (새 탭에서 열림)

Postgres 서버에서 발생한 'Segmentation fault(signal 11)' 오류의 원인을 추적하여, 이것이 Postgres 자체의 결함이 아니라 Arm64 아키텍처 환경에서 작동하는 LLVM(JIT 컴파일러)의 버그임을 밝혀낸 과정을 다루고 있습니다. 대규모 파티션 테이블을 조회할 때 JIT가 활성화되면서 크래시가 발생했으며, 이를 통해 업스트림 LLVM의 문제를 해결하는 성과를 거두었습니다. ## JIT 컴파일과 크래시의 상관관계 * **세그멘테이션 폴트 발생**: 최신 버전의 Postgres를 사용 중임에도 특정 쿼리(죽음의 쿼리)를 실행하면 서버가 즉시 종료되는 현상이 발생했습니다. * **스택 오염 확인**: 코어 덤프 분석 결과, 호출 스택(Backtrace)이 비정상적으로 짧고 깨져 있었으며, 이는 JIT 실행 함수인 `ExecRunCompiledExpr` 부근에서 문제가 발생했음을 시사했습니다. * **트리거 조건**: 64개의 파티션과 160만 개 이상의 행을 가진 대규모 테이블을 스캔할 때, Postgres의 비용 기반 휴리스틱에 의해 JIT 컴파일이 활성화되면서 오류가 유발되었습니다. ## Postgres JIT와 LLVM의 역할 * **성능 최적화**: Postgres는 반복적인 SQL 표현식 평가 오버헤드를 줄이기 위해 LLVM을 사용하여 런타임에 네이티브 머신 코드를 생성합니다. * **튜플 디포밍(Tuple Deforming)**: 디스크상의 데이터를 메모리 표현으로 변환하는 과정을 네이티브 코드로 컴파일하여 처리 효율을 극대화합니다. * **컴파일 오버헤드**: JIT는 실행 속도를 높이지만 컴파일 시간이 추가되므로, Postgres는 실행 비용이 높은 쿼리에 대해서만 선택적으로 JIT를 적용합니다. ## 문제 해결 및 근본 원인 파악 * **임시 조치**: `SET jit = off;` 설정을 통해 JIT 기능을 비활성화함으로써 쿼리 지연 시간의 큰 손해 없이 프로덕션 환경의 크래시를 즉시 중단시켰습니다. * **디버깅 결과**: 데이터 복제 및 로컬 환경 재현을 통해 분석한 결과, 특정 조건에서 LLVM이 Arm64 아키텍처용 머신 코드를 잘못 생성하는 버그가 있음을 확인했습니다. * **업스트림 기여**: 이 조사는 단순히 설정을 변경하는 것에 그치지 않고, 어셈블리 수준의 분석을 통해 LLVM 프로젝트의 코드 수정까지 이끌어내는 계기가 되었습니다. ## 권장 사항 Arm64 기반 클라우드 환경에서 Postgres를 운영 중인데 원인을 알 수 없는 Segmentation fault가 발생한다면, 우선적으로 JIT를 비활성화하여 안정성을 확보하십시오. 이후 시스템의 LLVM 라이브러리 버전을 확인하고 관련 아키텍처 패치가 적용되었는지 점검하는 것이 필요합니다.

datadog

2023-03-08 장애: 장애 대응 심층 분석 (새 탭에서 열림)

2023년 3월 발생한 Datadog의 사상 첫 글로벌 장애는 대규모 복합 시스템을 운영하는 조직에 있어 장애는 '발생 여부'가 아닌 '발생 시기'의 문제임을 다시 한번 각인시켰습니다. Datadog은 수백 명의 엔지니어가 투입된 이 전례 없는 위기 상황에서 '직접 만든 사람이 직접 운영한다(You build it, you own it)'는 원칙과 체계적인 사고 대응(Incident Response) 프로세스를 통해 시스템을 복구할 수 있었습니다. 이번 장애 대응 과정은 기술적 해결을 넘어, 유연한 조직 구조와 비난 없는 문화(Blameless Culture)가 복잡한 시스템의 장애를 해결하는 데 얼마나 결정적인 역할을 하는지 증명했습니다. ### 데이터독의 상시 모니터링 및 대응 체계 * **다중 모니터링 전략:** 서비스 내부 모니터링뿐만 아니라, 플랫폼 전체가 중단된 상황에서도 작동할 수 있도록 외부 인프라에서 독립적으로 구동되는 '아웃 오브 밴드(Out-of-band)' 모니터링을 운영합니다. * **소유권 중심 모델:** 엔지니어가 자신이 구축한 서비스의 온콜(On-call) 업무를 직접 담당하며, 장애 발생 시 수 분 이내에 응답하는 것을 원칙으로 합니다. * **자동화된 협업 환경:** 장애가 선포되면 Slack 앱이 자동으로 전용 채널을 생성하고 상황을 공유하여, 직접 호출되지 않은 엔지니어도 자발적으로 참여할 수 있는 환경을 제공합니다. ### 고난도 장애를 위한 지휘 체계와 역할 분담 * **인시던트 커맨더(Incident Commander, IC):** 고객 영향도가 크거나 여러 팀의 협력이 필요한 고차원 장애 시, 숙련된 시니어 엔지니어가 IC 역할을 맡아 전체 대응을 진두지휘합니다. * **전담 커뮤니케이션 관리:** IC는 복구 작업에 집중하고, 별도의 커뮤니케이션 리드와 고객 연락 담당자(Customer Liaison)가 내부 상황 전파 및 대외 공지를 전담하여 혼선을 방지합니다. * **경영진의 참여:** 심각한 장애 시에는 엔지니어링 임원이 참여하여 비즈니스 맥락에 따른 의사결정을 지원하고 필요한 자원을 즉각 투입합니다. ### 훈련을 통한 숙련도 향상과 자율성 보장 * **낮은 장애 선포 장벽:** 평소 아주 작은 문제라도 장애로 규정하고 대응 프로세스를 가동함으로써, 엔지니어들이 도구와 절차에 익숙해지도록 유도합니다. * **정기적인 온콜 교육:** 모든 엔지니어는 6개월마다 온콜 교육을 이수해야 하며, 여기에는 기술적 절차뿐만 아니라 비난 없는 조사 방식에 대한 교육이 포함됩니다. * **사람 중심의 프로세스:** 미리 정의된 딱딱한 복구 절차(Runbook)에 의존하기보다, 시스템을 가장 잘 아는 엔지니어가 현장에서 최선의 판단을 내릴 수 있도록 자율성을 부여합니다. ### 3월 8일 글로벌 장애의 기술적 분석 및 교훈 * **장애 원인:** `systemd` 업그레이드 과정에서 발생한 예기치 못한 문제가 '무인 업그레이드(Unattended upgrades)'를 통해 확산되며 쿠버네티스 클러스터 실패를 유발했습니다. * **신속한 초기 대응:** 장애 발생 3분 만에 이상이 감지되었고, 30분 이내에 글로벌 장애로 진단되어 대응 체계가 가동되었습니다. * **심리적 안전감의 중요성:** 극심한 스트레스가 동반되는 글로벌 장애 상황에서 비난 없는 문화는 엔지니어들이 위축되지 않고 창의적인 해결책을 찾는 토대가 되었습니다. **실용적인 결론** 대규모 시스템의 장애는 완벽히 막을 수 없으므로, 조직은 **'사람과 문화'**에 투자해야 합니다. 기술적 자동화도 중요하지만, 장애 상황에서 유연하게 대처할 수 있는 숙련된 엔지니어를 양성하고 이들이 비난받을 두려움 없이 복구에 전념할 수 있는 환경을 조성하는 것이 가장 효과적인 재난 대비책입니다. 또한, 평상시 아주 작은 장애라도 공식 프로세스를 거쳐 대응하고 사후 분석(Postmortem)을 작성하는 습관을 통해 조직 전체의 복원력을 높여야 합니다.

datadog

2023-03-08 사건: 우리의 사건 대응에 대한 심층 분석 | Datadog (새 탭에서 열림)

Datadog은 2023년 3월 발생한 사상 첫 글로벌 서비스 장애를 겪으며 자사의 장애 대응(Incident Response) 프로세스와 문화를 실전에서 검증했습니다. 수백 명의 엔지니어가 투입된 이번 사태를 통해 Datadog은 "직접 만든 사람이 직접 운영한다(You build it, you own it)"는 원칙과 비난 없는 사후 분석(Blameless Postmortem)의 중요성을 다시 한번 확인했습니다. 이 글은 전례 없는 대규모 장애 상황에서 유연한 의사결정과 체계적인 협업 시스템이 어떻게 복구를 견인했는지에 대한 기술적 기록을 담고 있습니다. **Datadog의 장애 모니터링 및 대응 체계** * **소유권 기반 모델:** 모든 엔지니어링 팀은 자신이 구축한 서비스의 운영을 직접 책임지며, 24시간 모니터링 경보에 몇 분 내로 응답해야 하는 "You build it, you own it" 모델을 따릅니다. * **대역 외(Out-of-band) 모니터링:** 플랫폼 자체가 중단될 경우를 대비해 인프라 외부에서 API를 호출하여 사용자 관점에서 상태를 체크하는 별도의 독립적인 모니터링 시스템을 운영합니다. * **Slack 기반 협업:** 장애 발생 시 전용 앱이 Slack 채널을 자동으로 생성하며, 관련 없는 엔지니어도 자유롭게 참여하여 도움을 줄 수 있는 개방적인 환경을 조성합니다. **고심도 장애(High-Severity) 관리 및 역할 분담** * **장애 지휘관(Incident Commander):** 대규모 장애 시 숙련된 시니어 엔지니어가 투입되어 전체 대응을 진두지휘하며, 복구 전략과 커뮤니케이션을 총괄합니다. * **전담 커뮤니케이션 팀:** 고객 지원 매니저와 경영진이 포함된 별도 팀이 구성되어 외부 고객 및 비즈니스 이해관계자에게 정확한 상태 정보를 전달합니다. * **지속적인 훈련:** 장애 선언 문턱을 낮게 설정하여 일상적으로 장애 대응 프로세스를 연습하며, 모든 엔지니어는 6개월마다 필수 리프레시 교육을 이수해야 합니다. **자율성과 비난 없는 조직 문화** * **절차보다 사람 우선:** 고정된 복구 매뉴얼은 복잡한 시스템의 변화 속도를 따라갈 수 없으므로, 엔지니어가 현장에서 상황에 맞는 최선의 판단을 내릴 수 있도록 자율권을 부여합니다. * **비난 없는 문화(Blameless Culture):** 장애의 원인을 개인의 실수가 아닌 시스템의 결함으로 간주하여, 엔지니어가 압박감 속에서도 창의적인 해결책을 찾을 수 있도록 지원합니다. * **강화된 사후 분석:** 모든 고심도 장애 이후에는 자동화된 알림을 통해 상세한 포스트모템 작성을 독려하며, 이를 통해 유사 장애의 재발을 방지합니다. **3월 8일 글로벌 장애 타임라인 및 초기 진단** * **장애 트리거(06:00 UTC):** systemd 업데이트가 시작되면서 예상치 못한 인프라 연쇄 반응이 발생했습니다. * **신속한 감지(06:03~06:18 UTC):** 장애 발생 3분 만에 모니터링 시스템이 문제를 감지했고, 15분 이내에 고심도 장애로 격상되었습니다. * **원인 파악(07:20~11:36 UTC):** 쿠버네티스(Kubernetes) 노드 실패가 글로벌 장애의 핵심 원인임을 식별했으며, 최종적으로 '무인 업데이트(Unattended upgrades)'가 트리거였음을 밝혀냈습니다. * **인프라 복구(12:05~19:00 UTC):** EU1 및 US1 리전의 컴퓨팅 용량을 순차적으로 복구하고 재발 방지를 위한 완화 조치를 적용하여 전체 인프라를 정상화했습니다. 대규모 시스템을 운영하는 조직이라면 고정된 대응 매뉴얼에 의존하기보다 엔지니어의 자율성을 존중하고, 장애를 학습의 기회로 삼는 비난 없는 문화를 구축하는 것이 중요합니다. 특히 플랫폼 전체가 마비되는 최악의 상황을 대비해 인프라 외부에서 독립적으로 작동하는 '대역 외 모니터링' 체계를 반드시 갖출 것을 추천합니다.

figma

리니어가 디도스 공격을 (새 탭에서 열림)

Linear는 2022년 10월 홈페이지가 DDoS 공격으로 마비되자, 단순히 서비스를 복구하는 데 그치지 않고 Figma 디자인 파일 자체를 임시 홈페이지로 활용했다. 이 즉흥적인 대응은 공격 중에도 사용자에게 브랜드와 리디자인을 보여주는 창구가 되었고, 결과적으로 위기를 창의적인 홍보와 커뮤니티 이벤트로 전환했다. 글은 빠른 장애 대응과 대담한 아이디어, 그리고 축적된 디자인 작업물이 위기 상황에서 새로운 가치를 만들 수 있음을 보여준다. ## 출시 직전까지 이어진 대규모 디자인 작업 - Linear 팀은 새 홈페이지를 준비하며 수개월 동안 다양한 디자인 방향을 탐색했다. - 하나의 Figma 파일에 수많은 프레임, 대형 이미지, 아이디어, 반복 작업 결과물이 축적됐다. - 파일이 너무 커져 브라우저 메모리의 약 64.3%를 사용한다는 경고가 표시될 정도였다. - 출시 직전까지도 작업이 이어졌지만, 최종 결과물은 온라인에서 좋은 반응을 얻으며 큰 관심을 끌었다. - Paco Coursey는 출시 며칠 전 이 거대한 Figma 파일을 공개할지 디자이너 Edgar Ambartsoumian에게 묻는 게시물을 올렸다. ## 홈페이지를 마비시킨 DDoS 공격 - DDoS는 대량의 인터넷 트래픽으로 서버나 네트워크를 압도해 정상적인 서비스를 방해하는 공격이다. - 홈페이지 리디자인 다음 날 Linear 사이트가 다운되자, 팀은 처음에는 새 배포나 디자인 변경에 문제가 생겼다고 추측했다. - 조사 결과 원인은 비교적 흔한 유형의 DDoS 공격으로 확인됐다. - 장애 대응의 최우선 목표는 사용자가 Linear 앱에 다시 접근하도록 만드는 것이었다. - 팀은 사이트의 하위 페이지 방문자를 로그인 페이지로 직접 보내 앱 접근을 우선 복구했다. - 그러나 소셜미디어에서 화제가 된 새 랜딩 페이지를 보러 온 방문자들은 홈페이지 대신 로그인 화면만 보게 됐다. ## Figma 파일을 임시 홈페이지로 활용한 발상 - Jori Lallo는 홈페이지 대신 Figma 디자인 파일을 공개하자는 아이디어를 제안했다. - Paco는 즉시 실행 가능하다고 판단했지만, Edgar와 일부 팀원은 처음에는 다소 주저했다. - Jori는 “그냥 믿어 달라”며 아이디어를 밀어붙였다. - 결과적으로 완성된 웹사이트가 아닌 제작 과정의 Figma 파일을 공개해, 공격으로 사라진 홈페이지를 대체했다. - 파일에는 최종 디자인뿐 아니라 수개월 동안의 탐색과 반복 과정도 담겨 있어 방문자에게 제작 비하인드까지 보여줄 수 있었다. ## 장애를 브랜드 경험으로 바꾼 대응 - 일반적인 장애 대응은 서비스 복구와 원인 차단에 집중하지만, Linear 팀은 사용자가 무엇을 보게 될지까지 고려했다. - 로그인 페이지로만 연결하면 기능 접근은 가능하지만, 새 홈페이지를 기대한 방문자 경험은 크게 떨어진다는 점을 인식했다. - Figma 파일 공개는 공격으로 인한 공백을 채우면서도 Linear의 디자인 문화와 작업 방식을 직접 보여주는 방법이 됐다. - 예상치 못한 상황에서 팀의 빠른 의사결정과 디자인 자산이 결합해 온라인에서 큰 화제를 만들었다. - 이 사건은 단순한 보안 사고가 아니라, 커뮤니티가 함께 참여하는 일종의 Figma 이벤트로 발전했다. ## 실용적인 시사점 - 장애 상황에서는 기술적 복구뿐 아니라 사용자가 마주할 대체 경험도 설계해야 한다. - 평소 축적해 둔 디자인 파일, 문서, 작업 기록은 위기 때 커뮤니케이션 자산으로 활용할 수 있다. - 완벽한 대안을 기다리기보다 안전하고 실행 가능한 임시 해결책을 빠르게 시도하는 것이 효과적일 수 있다. - 단, Figma 파일 공개와 같은 대응은 내부 정보나 민감한 자산이 포함되지 않았는지 먼저 검토해야 한다.

figma

포스트모템: 20 (새 탭에서 열림)

Figma의 2022년 6월 서비스 장애는 Cluster-Mode Enabled(CME) ElastiCache Redis 노드의 Engine CPU가 100%에 도달하면서 발생했다. AWS는 CME 클러스터에서 높은 Redis Publish/Subscribe 부하를 처리할 때 발생하는 드문 버그를 원인으로 확인했으며, 트래픽을 새 ElastiCache 클러스터로 전환해 서비스를 복구했다. 장애는 총 네 차례 발생했지만 데이터 손실은 없었다. ## 장애 범위와 사용자 영향 - 장애 시간은 2022년 6월 6일 오후 11시 34분부터 7일 오전 10시 43분까지였다. - 총 네 차례의 서비스 중단이 발생했으며, 각 장애는 7분에서 최대 1시간 20분 동안 지속됐다. - 이미 열려 있던 파일은 계속 편집할 수 있었지만 다음 기능을 사용할 수 없었다. - 새 파일 열기 - 다른 사용자와 협업 - 일부 웹 API 기능 - 오프라인 상태에서 변경한 내용은 로컬에 저장됐고, 서비스가 회복될 때 서버에도 저장되어 데이터 손실은 발생하지 않았다. ## ElastiCache와 Redis 구성 - Figma는 AWS의 관리형 Redis 서비스인 ElastiCache를 다음 용도로 사용했다. - 자주 조회되는 데이터의 빠른 처리 - 서비스 간 메시지 전달 - 당시 두 종류의 ElastiCache 인스턴스를 운영했다. - **Cluster-Mode Disabled(CMD)**: 단일 Redis 클러스터 구조 - **Cluster-Mode Enabled(CME)**: 노드를 추가해 수평 확장 가능 - 장애가 발생하기 몇 주 전, Figma는 Redis Publish/Subscribe 트래픽을 CMD에서 CME 인스턴스로 이전했다. - 이전 후 몇 주 동안은 문제가 없었고, 장애 직전 트래픽이나 Redis 사용량에도 뚜렷한 변화가 없었다. ## CPU 100%를 유발한 CME 버그 - 장애의 직접적인 징후는 CME ElastiCache 노드 하나의 Engine CPU 사용률이 100%에 도달한 것이었다. - AWS 조사 결과, CME 클러스터에서 높은 Publish/Subscribe 부하가 발생할 때 Redis 내부의 드문 버그가 이 포화 상태를 유발한 것으로 확인됐다. - ElastiCache 기반 시스템에서는 하부 머신의 CPU 프로파일을 직접 확인할 수 없었기 때문에, 어떤 작업이 CPU를 소모하는지 즉시 파악하기 어려웠다. - Figma는 수년간 Publish/Subscribe를 사용했지만, CME로 이전하기 전까지는 같은 문제가 발생하지 않았다. ## 초기 대응과 클러스터 확장 - Figma는 원인을 용량 부족 또는 장애 난 하드웨어로 추정했다. - 대응을 위해 다음 조치를 동시에 수행했다. - 문제가 있는 노드의 failover 시작 - 더 큰 노드 타입과 더 많은 노드로 구성된 새 ElastiCache 인스턴스 생성 - 기존 노드의 failover가 예상보다 오래 걸리자, 새 클러스터인 V2로 트래픽을 전환해 서비스를 복구했다. - 그러나 이후 같은 CPU 포화 문제가 V2에서도 재발했다. - 결과적으로 클러스터 규모를 키우는 것이 이 버그를 해결하지 못했고, 오히려 상황을 악화시킬 수 있다는 사실이 드러났다. ## 원인 조사 과정 - Figma는 다음과 같은 가능성을 차례로 검토했다. - 정기 백업이나 예기치 않은 스냅샷이 노드를 일시적으로 과부하시켰을 가능성 - Redis 명령어 사용량이 갑자기 증가했을 가능성 - 느린 명령어, 대형 키 등 비정상적인 Redis 사용 - 장애 직전에 실행된 백그라운드 작업 - 백업이나 스냅샷과 관련된 징후는 발견되지 않았다. - Redis 명령어 사용량도 이전 몇 주와 비슷하고 안정적이었다. - 장애가 시작된 뒤에는 많은 명령어의 처리 시간이 길어졌지만, 이는 CPU가 이미 포화된 결과로 판단됐다. - 처리 시간이 긴 Redis 요청을 일부 차단했지만 문제를 해결하지 못했다. - 장애가 트래픽이 감소하던 시점에도 재발했기 때문에, 단순한 피크 트래픽이나 용량 부족만으로는 설명할 수 없었다. ## Failover를 통한 일시적 복구 - 두 번째 장애에서는 문제가 있는 노드의 failover가 정상적으로 완료되어 더 빠르게 서비스를 복구할 수 있었다. - 장애가 반복되는 동안 Figma는 Redis 요청, 백그라운드 작업, 클러스터 구성 등을 계속 비교하며 공통 패턴을 찾았다. - 최종적으로 AWS의 ElastiCache 서비스 팀이 CME 환경의 높은 Publish/Subscribe 부하와 관련된 Redis 버그를 확인했다. - AWS는 이후 CME 클러스터에서 Redis Publish/Subscribe 성능을 개선하는 작업을 진행했다. ## 실용적인 결론 Redis의 Publish/Subscribe를 CME ElastiCache로 이전할 때는 단순히 노드 수나 인스턴스 크기를 늘리는 것만으로 안정성이 보장되지 않는다. 관리형 서비스에서는 하부 시스템의 프로파일링이 제한되므로, CPU 포화·failover 지연·트래픽 우회 전략을 사전에 검증하고, 장애 시 다른 클러스터로 즉시 전환할 수 있는 구조를 마련하는 것이 중요하다.

datadog

언제나 DNS 문제다... (새 탭에서 열림)

제공된 내용에는 본문이 아니라 Datadog 웹사이트의 메뉴와 링크 목록만 포함되어 있어, 기술 블로그 글의 주장이나 기술적 세부사항을 정확히 요약할 수 없습니다. 링크 주소상 글은 **gRPC의 DNS 및 로드 밸런싱 관련 장애 분석 글**로 보이지만, 본문 없이 내용을 추정하면 부정확할 수 있습니다. 글의 본문을 붙여 주시면 요청하신 형식에 맞춰 다음과 같이 정리해 드리겠습니다. - 핵심 주장과 결론을 2~4문장으로 요약 - DNS 해석, gRPC 로드 밸런싱, 장애 원인 등 섹션별 설명 - 구체적인 기술적 원인과 대응 방법 - 실용적인 운영 권장사항