8,000달러를 낭비해 버린 1줄의 코드

3 weeks ago 8

  • macOS용 화면 녹화 앱 Screen Studio의 자동 업데이트 버그로 인해, 250MB 파일이 5분마다 반복 다운로드되는 문제가 발생함
  • 결과적으로 한 달간 2PB(2,000,000GB)의 트래픽이 Google Cloud에서 발생하며 약 $8,000의 요금 폭탄으로 이어짐
  • 원인은 단순한 코드 누락으로, 업데이트 다운로드 후 반복 요청을 멈추는 로직을 빠뜨린 것
  • 일부 사용자에겐 인터넷 서비스 해지 등 실질적 피해까지 발생했고, 개발팀은 책임을 통감함
  • 클라우드 비용 경고 설정, 비용 유발 코드 검토, 업데이트 서버 제어 장치 마련 등의 교훈을 강조함

사고 개요

  • Screen Studio는 macOS용 데스크탑 화면 녹화 앱으로, 자동 업데이트 기능이 있음
  • 업데이트 파일 용량은 약 250MB이며, 앱은 5분마다 서버를 확인
  • 버그로 인해 업데이트가 감지된 후에도 5분 간격 요청이 중단되지 않고 계속 다운로드

비극적 리팩터의 시작

  • 기존에는 업데이트 팝업이 녹화 중 방해가 되어 UX 문제가 있었음
  • 이를 개선하기 위한 리팩터 중, 업데이트 후 타이머를 정지하는 로직을 제거해버림
  • 그 결과, 업데이트 파일이 반복 다운로드되는 로직이 앱 내에 내장된 상태가 됨

무서운 컨텍스트: 백그라운드 실행 상태

  • 사용자 중 상당수가 앱을 수 주간 백그라운드 상태로 실행한 채로 사용 중이었음
  • 이 상태에서 수천 개의 인스턴스가 5분마다 250MB를 자동 다운로드

수치로 보는 재앙

  • 5분마다 다운로드 = 하루 288회
  • 사용자 1인당 일일 다운로드 트래픽 = 72GB
  • 약 30일간 지속, 1천 명의 사용자 가정 시:
    • 250MB × 288 × 30 × 1,000 = 약 2PB 트래픽
  • Google Cloud에서 발생한 예상 요금: 약 $8,000

연쇄 실수들

  • Google Cloud 비용 알림이 설정되지 않음
  • 기존 월 요금 $300 수준으로 안일하게 생각
  • 최종적으로는 신용카드 한도 초과로 거래가 차단되며 문제 인지

사용자 피해

  • 한 사용자는 이 트래픽으로 인해 ISP(인터넷 제공업체)에서 서비스 계약 해지 통보를 받음
  • 해당 지역에 대체 공급자 없음 → 심각한 생활 불편
  • 팀은 책임 인정 및 비용 보상 제안, 다행히 상황은 원만히 해결됨
  • 하지만 사용자에게 해를 끼친 경험은 개발자에게 깊은 반성을 남김

교훈 요약

  • 클라우드 비용 알림은 필수
  • 자동 업데이트 로직은 매우 신중하게 작성할 것
  • 비용 유발 가능성이 있는 모든 코드는 특별히 검토할 것
  • 서버 제어 신호(예: 강제 업데이트 플래그) 를 설계에 포함할 것
  • 클라우드 사용 상태를 정기적으로 점검할 것

Read Entire Article