가이드/장애 인지 가이드
목차

Version 2

새로 나온

링크 복사장애 인지 가이드

토스페이먼츠 결제 장애를 실시간으로 인지하고 빠르게 대응하는 방법을 알려드릴게요. Status Page 웹훅을 구독하면 결제 장애와 복구 시점을 알림으로 받을 수 있어요. 이걸 활용해서 아래와 같은 대응을 자동화할 수 있어요.

  • 구매자 안내 — 결제 오류 시 "일시적 장애" 안내 메시지를 보여주고 재시도를 유도해요.
  • 내부 알림 — Slack, PagerDuty 등으로 운영팀에 즉시 알림을 보내요.
  • 빌링 배치 시간 변경 — 장애 중 자동결제(빌링) 배치 실행을 지연하거나 일시 중단해요.

결제 실패 에러 코드(REJECT_CARD_PAYMENT, PROVIDER_ERROR 등)는 카드 한도초과·비밀번호 오류 등 장애와 무관한 원인이 대부분이에요. 토스페이먼츠 시스템 장애 시에도 동일한 코드가 반환되거나 요청 자체가 실패하는 경우가 있어서, 가맹점에서 운영하는 거래 성공률 모니터링과 함께 Status Page 웹훅을 활용하면 장애를 더 정확하게 인지할 수 있어요.

링크 복사1. Status Page에서 웹훅을 구독하세요

status.tosspayments.com에 접속해서 아래 순서로 구독해요.

  1. Subscribe to Updates 클릭
  2. 전달 방식에서 Webhook 선택
  3. 수신 URL 입력 후 완료

수신 엔드포인트는 30초 안에 2xx 응답 코드를 반환해야 해요. 테스트 웹훅이 자동 발송되지 않으니, 4. Payload 예시 샘플로 직접 검증하세요.

토스페이먼츠 Status Page 웹훅은 서명·인증 헤더를 제공하지 않고, 발송 IP도 고정돼 있지 않아요. 수신 엔드포인트를 안전하게 운영하려면 HTTPS만 허용하고, 추측하기 어려운 경로(예: /webhooks/status/<random-token>)로 URL을 구성하세요. 결제 차단처럼 영향이 큰 자동화를 실행하기 전에는 component.id·new_status가 예상 값 안에 있는지 자체 검증하세요.

링크 복사2. 웹훅 Payload를 이해하세요

Component 상태가 바뀌면 아래 종류 웹훅이 모두 발송돼요. 자세한 명세는 Atlassian Statuspage 웹훅 문서, 전체 Payload는 4. Payload 예시에서 확인할 수 있어요.

  • Component Update — 각 서비스별 status 변경 알림. 자동화 로직에 적합.
  • Incident Update — 장애 제목·본문·진행 경과 등 사람이 읽는 텍스트. Slack·구매자 안내 메시지에 활용.

Component 종류 — Status Page는 토스페이먼츠 서비스별 상태를 Component 단위로 보여줘요. 상황별 자세한 감지 방법은 3. 장애를 감지하고 대응하세요를 참고하세요.

Component ID이름
0xsnykf1zpq7결제 | payment
ckdj8w8bby5v원천사 이슈 | Upstream Issue
vwbf98p17wl2결제창 | payment-window
5d5cs4llzxql결제위젯 | payment-widget
3506k7lxngtc브랜드페이 | brandpay
lr64d5vf3g8w링크페이 | linkpay
6lj53ywh4616지급대행 | payout
xgrb1l8jphj2상점관리자 | Admin Page
smlx5bskhynp조회 API & Webhook
zh1589tz95y1테스트 환경 | Test Env.

링크 복사Component Update

Payload는 아래 형태의 JSON이 HTTP POST로 전송돼요. 핵심 필드는 component.id, component_update.new_status·old_status예요.

Component status — 각 Component의 상태값이에요.

status의미
operational정상
degraded_performance성능 저하(응답 지연)
* 원천사 Component는 이슈 발생 시 이 상태만 가져요.
partial_outage일부 결제 제품 장애 혹은 간헐적 실패
major_outage전체 결제 불가

링크 복사Incident Update

Payload는 아래 형태로 전송돼요. 핵심 필드는 incident.statusincident.incident_updates[].body예요.

Incident statusinvestigating으로 시작해서 resolved로 종료돼요. 중간 단계(identified, monitoring)와 사후 분석(postmortem)은 상황에 따라 생략돼요.

status의미
investigating장애 원인 조사 중
identified원인 파악 완료, 조치 진행 중
monitoring조치 완료, 정상화 모니터링 중
resolved장애 완전 해소
postmortem사후 분석/보고서 게시(선택)

링크 복사3. 장애를 감지하고 대응하세요

웹훅의 component.id로 장애 종류를 구분하고, component_update.new_status로 상태 변화를 판단해요. 자주 마주치는 두 상황(원천사 장애, 결제 시스템 전체 장애)을 살펴볼게요.

링크 복사원천사(카드사·은행) 장애

원천사 이슈 Component(ckdj8w8bby5v)는 카드사, 은행, 간편결제사 등 외부 제휴사 장애를 별도로 분리해서 알려줘요. degraded_performanceoperational 두 상태로만 전환돼요.

어떤 원천사가 영향받았는지는 Incident Update의 incident.incident_updates 배열(display_at 기준 최신 항목)의 body로 확인하세요. 본문은 아래 형식이에요.

링크 복사토스페이먼츠 결제 시스템 장애

결제 Component(0xsnykf1zpq7)는 토스페이먼츠 결제 시스템 전체 상태를 반영해요. 전체 결제 불가(major_outage)를 감지할 때 사용하세요.

처음에는 원천사 이슈(ckdj8w8bby5v)로 공지되었다가, 영향 범위가 확대되면서 토스페이먼츠 전체 결제 장애(0xsnykf1zpq7)로 전환되는 경우가 있어요. 두 장애는 권장 대응(특정 결제수단 안내 vs. 전체 결제 차단)이 다르기 때문에, 반드시 component.id를 기준으로 장애 종류를 분기 처리하고 두 Component를 모두 구독하세요.

링크 복사4. Payload 예시

원천사 Component(ckdj8w8bby5v)에서 토스카드 장애가 발생했다가 해소되는 시나리오예요. 한 건의 이벤트마다 Component UpdateIncident Update 두 종류가 모두 발송돼요.

링크 복사자주 묻는 질문

  • 더 궁금한 내용이 있나요?
  • 코드 샘플을 참고하세요
  • 기술지원이 필요한가요?
    실시간 문의|이메일 보내기