장애 대응 실무 가이드 · Part 1

첫 15분에 할 일

연락을 받은 직후 무엇부터 확인할지 순서를 갖기

작성 기준2026년 7월

이 파트에서 다루는 내용

원인보다 영향이 먼저확인할 네 가지변경 이력정보를 못 볼 때첫 보고
01

원인부터 찾으면 늦습니다

장애 연락을 받으면 반사적으로 로그부터 열게 됩니다. 자연스러운 반응이지만 순서가 틀렸습니다.

장애 대응의 첫 목표는 원인 규명이 아니라 영향 최소화입니다. 원인은 몇 시간이 걸릴 수도 있지만 영향 범위는 몇 분이면 파악됩니다. 그리고 그동안 할 수 있는 조치가 있는지는 영향 범위를 알아야 판단됩니다.

현실적인 이유도 있습니다. 상사나 고객사가 처음 묻는 것은 원인이 아니라 "지금 얼마나 심각한가"입니다. 로그를 뒤지느라 이 질문에 답하지 못하면, 대응은 하고 있는데 아무것도 안 하는 것처럼 보입니다.

먼저 할 것
5분

영향 범위 파악. 누가 못 쓰고 있는가, 어느 기능인가, 언제부터인가.

그다음
10분

변경 이력 확인. 최근에 무엇이 바뀌었는가. 여기서 답이 나오는 경우가 많습니다.

미룰 것
나중

코드를 읽으며 원인을 추론하는 일. 증거를 모으기 전에 하는 추론은 대개 빗나갑니다.

02

네 가지만 확인하면 됩니다

신고를 받으면 정보가 파편적으로 옵니다. "시스템이 안 돼요"라는 한 문장으로 시작하는 일이 대부분입니다. 이걸 대응 가능한 형태로 바꾸는 질문이 네 개 있습니다.

  • 특정 사용자만이면 데이터 문제일 가능성이 높습니다. 그 사용자의 데이터로 재현해 봅니다.
  • 특정 지점이나 부서만이면 네트워크 경로나 권한 설정을 먼저 봅니다.
  • 전 사용자면 공통 구간입니다. 서버, DB, 외부 연동, 인증 중 하나입니다.
  • 간헐적이라면 여러 인스턴스 중 일부만 문제일 수 있습니다. 어느 서버로 붙었는지 확인이 필요합니다.
무엇이
기능 범위

전체가 안 되는가, 특정 화면만 안 되는가. 이 하나로 의심 범위가 크게 갈립니다. 전체면 인프라나 공통 자원, 일부면 그 기능의 경로입니다.

누가
사용자 범위

전 사용자인가, 특정 지점이나 부서인가, 한 사람인가. 한 사람만이면 그 사람의 데이터나 권한, 브라우저를 먼저 봅니다.

언제부터
시각

신고 시각과 발생 시각은 다릅니다. 사용자는 한참 참다가 연락합니다. "오늘 아침부터"라는 말을 그대로 믿지 말고 마지막으로 정상이었던 시각을 확인합니다.

무엇이 바뀌었나
변경

가장 답에 가까운 질문입니다. 다음 섹션에서 따로 다룹니다.

03

변경 이력이 가장 강한 단서입니다

아무것도 바뀌지 않았는데 갑자기 장애가 나는 경우는 생각보다 드뭅니다. 대부분 무언가 바뀌었고, 그 변경을 찾으면 원인의 절반은 나온 것입니다.

주의할 점은 "아무도 안 바꿨다"는 답을 그대로 믿으면 안 된다는 것입니다. 배포만 변경이 아닙니다. 데이터가 늘어난 것도, 인증서가 만료된 것도, 디스크가 찬 것도 변경입니다.

배포
가장 흔함

애플리케이션 배포 직후 장애면 그 배포를 먼저 의심합니다. Jenkins 코스에서 다룬 빌드 이력으로 정확한 시각을 확인합니다.

설정 변경
추적 어려움

서버 설정, 방화벽, 로드밸런서, 커넥션 풀 크기. 코드에 안 남아서 추적이 어렵습니다. 인프라 담당자에게 직접 물어야 합니다.

데이터 작업
간과하기 쉬움

대량 적재, 정정 작업, 마이그레이션. DB 코스에서 다룬 통계 변화로 실행계획이 바뀌었을 수 있습니다.

시간이 만든 변경
무변경 장애

인증서 만료, 디스크 누적, 데이터 증가로 인한 쿼리 저하, 배치 누적. 아무도 안 건드렸는데 나는 장애의 대부분이 여기입니다.

외부 시스템
우리 밖

연동 대상이 바뀌었거나 느려졌을 수 있습니다. 우리가 못 보는 변경이라 확인 요청이 필요합니다.

인프라 작업
공지 누락

네트워크 점검, 서버 이관, 보안 패치. 공지가 우리 팀까지 안 온 경우가 있습니다.

질문 방식

"뭐 바뀐 거 있나요"라고 물으면 대개 없다고 답합니다. "어제 이 시각 이후로 배포, 설정 변경, 데이터 작업, 서버 작업 중에 하신 게 있나요"처럼 구체적으로 나눠 물어야 답이 나옵니다.

04

내가 직접 볼 수 없을 때 무엇을 요청할지

고객사 시스템을 다루면 서버에 직접 붙지 못하는 경우가 많습니다. 원격 접속 신청에 시간이 걸리거나, 아예 안 되고 담당자를 통해 자료를 받아야 합니다.

이때는 무엇을 요청할지 정확히 아는 것이 실력입니다. 한 번에 필요한 것을 다 요청하지 못하면 왕복하며 시간을 버립니다. 그동안 장애는 계속됩니다.

  • 명령은 결과를 파일로 남기게 작성합니다. 화면을 캡처해 보내면 검색도 안 되고 잘립니다.
  • 시간 범위를 명시합니다. 전체 로그를 달라고 하면 수 기가바이트가 오거나 거절당합니다.
  • 전화로 대응할 때는 상대가 입력할 명령을 미리 준비해 두고 불러 줍니다. 즉석에서 만들면 오타가 납니다.
  • 폐쇄망이라 파일 반출이 안 되면 화면 공유나 원격 지원을 요청합니다. 터미널·서버 코스의 오프라인 대응이 여기서 쓰입니다.
1차 요청 목록text
[요청드릴 자료]

1. 애플리케이션 로그
   - 대상: 오늘 09:00 ~ 현재
   - 위치: /app/logs/application.log, application.log.YYYY-MM-DD
   - 전체 파일이 크면 해당 시간대만 잘라 주셔도 됩니다

2. 서버 상태 (가능하시면)
   - 명령: top -b -n 1 > /tmp/top.txt
   - 명령: df -h > /tmp/df.txt

3. 애플리케이션 프로세스 상태
   - 명령: jcmd <PID> Thread.print > /tmp/thread1.txt
   - 5초 간격으로 3회 실행 부탁드립니다 (thread1, thread2, thread3)
   - PID 확인: jcmd -l  또는  ps -ef | grep java

4. 확인 부탁드릴 사항
   - 최근 배포 또는 설정 변경 여부와 시각
   - 증상이 시작된 대략적인 시각

명령을 그대로 복사해 쓸 수 있게 적어 주는 것이 중요합니다. 상대가 개발자가 아닐 수 있습니다. 스레드 덤프를 3회 요청하는 이유는 Part 6에서 다룹니다.

05

15분 안에 첫 보고를 올립니다

원인을 모르는 상태에서 보고하는 것이 어색하게 느껴질 수 있습니다. 하지만 침묵이 더 나쁩니다. 연락이 없으면 상대는 상황을 모른 채 불안해하고, 결국 재촉 연락이 오면서 대응 시간을 잡아먹습니다.

첫 보고에는 원인이 없어도 됩니다. 네 가지만 있으면 충분합니다.

첫 보고 형식text
[장애 발생 보고] 주문 조회 지연

■ 현재 상황
  - 주문 조회 화면이 응답하지 않거나 30초 이상 지연됩니다.
  - 전 사용자 영향으로 보이며, 주문 등록은 정상 동작합니다.
  - 최초 발생 추정 시각: 오늘 14:20경

■ 확인된 것 / 미확인
  - 확인: 애플리케이션 서버는 기동 상태, 오류 로그 다수 발생
  - 미확인: 원인, 복구 예상 시각

■ 진행 중
  - 로그 및 프로세스 상태 확보 중
  - DB 담당자에게 동시간대 부하 확인 요청함

■ 다음 보고
  - 15:00 또는 원인 확인 시 즉시

복구 예상 시각을 모르면 모른다고 씁니다. 근거 없이 30분이라고 적었다가 넘기면 그다음 보고부터 신뢰를 잃습니다. 보고 형식은 Part 4에서 자세히 다룹니다.

첫 15분 체크리스트

영향 범위를 네 가지 질문으로 정리했는가. 최근 변경 이력을 구체적으로 물었는가. 직접 못 보는 정보는 요청 목록으로 보냈는가. 첫 보고를 올렸고 다음 보고 시각을 알렸는가. 여기까지 하면 원인을 아직 몰라도 대응은 통제되고 있는 상태입니다.

체크

이 파트 완료 기준