— Prometheus + Alertmanager + Slack으로 실시간 장애 대응 시스템 구축
1. 왜 Slack 알림이 필요한가?
백엔드 시스템은 문제가 생기는 순간이 가장 중요합니다.
- 정산 배치 실패
- 환불 실패율 급증
- DB 커넥션 풀 고갈
- JVM 메모리 사용률 90% 초과
이런 이벤트를 사람이 직접 모니터링 화면을 보고 발견하는 구조는 운영이 아닙니다.
운영은 “이상 징후가 발생했을 때 자동으로 알려주는 구조”입니다.
Slack 알림은 그 첫 단계입니다.
2. 시스템 구성 구조
이번 프로젝트에서는 다음 구조로 구성했습니다.
Spring Boot (Micrometer)
↓
Prometheus (메트릭 수집)
↓
Alertmanager (알람 판단)
↓
Slack (실시간 알림)
Prometheus (메트릭 수집)
↓
Alertmanager (알람 판단)
↓
Slack (실시간 알림)
핵심 포인트
- 애플리케이션은 /actuator/prometheus를 통해 메트릭을 노출
- Prometheus가 주기적으로 scrape
- Alert rule이 조건을 만족하면 firing
- Alertmanager가 Slack Webhook으로 전송
3. Slack Webhook 연동 방식
Slack은 “Incoming Webhook” 기능을 제공합니다.
- Slack App 생성
- Incoming Webhook 활성화
- 채널 선택
- Webhook URL 발급
- .env에 설정
Alertmanager 설정:
global:
slack_api_url: '${SLACK_WEBHOOK_URL}'
slack_api_url: '${SLACK_WEBHOOK_URL}'
이 구조로 알림을 자동화했습니다.
4. 실제 알림 사례
예시 1: 환불 실패율 10% 초과
- alert: HighRefundFailureRate
expr: (
rate(refund_failed_total[5m])
/
rate(refund_requests_total[5m])
) > 0.1
expr: (
rate(refund_failed_total[5m])
/
rate(refund_requests_total[5m])
) > 0.1
Slack 메시지:
🚨 환불 실패율 높음
최근 5분간 환불 실패율이 12%를 초과했습니다.
Environment: production
Runbook: 링크
최근 5분간 환불 실패율이 12%를 초과했습니다.
Environment: production
Runbook: 링크
이렇게 되면:
- 즉시 인지
- 로그 확인
- PG 연동 확인
- DB 상태 점검
으로 이어집니다.
5. Slack 알림의 실질적인 유용성
1️⃣ MTTR(Mean Time To Recovery) 단축
Slack 알림이 없으면:
- 대시보드 수동 확인
- 고객 문의 후 인지
Slack 알림이 있으면:
- 1~2분 내 인지
- 장애 확산 방지
2️⃣ 운영 가시성 확보
정산/환불은 “돈”과 직결됩니다.
- 배치 실패
- 중복 환불
- idempotency 오류
이걸 실시간으로 모르면 손실로 이어질 수 있습니다.
3️⃣ 팀 협업 강화
Slack은 단순 알림이 아닙니다.
- 알림 스레드에서 원인 분석
- 담당자 멘션
- runbook 링크 클릭 후 대응
즉, 알림 → 대응 → 기록 → 개선 흐름이 만들어집니다.
6. runbook과의 결합
알림 메시지에 runbook 링크를 포함하면 운영 성숙도가 올라갑니다.
Slack 알림에 링크 포함:
🔗 Runbook: 클릭
→ 클릭하면 대응 매뉴얼 확인
이건 단순 알림이 아니라 운영 체계입니다.
7. 운영 단계에서의 전략적 활용
🔴 Critical
- 즉시 대응
- repeat_interval 5분
- @channel
🟡 Warning
- 반복 간격 길게
- 추세 확인
- 성능 튜닝 대상
Alert severity에 따라 Slack 전략을 다르게 가져갈 수 있습니다.
8. 구현하면서 느낀 점
Slack 연동은 어렵지 않습니다.
하지만 중요한 건 무엇을 알릴 것인가입니다.
잘못된 알림은:
- 피로도 증가
- 무시되는 알람
- 운영 신뢰도 하락
좋은 알림은:
- 핵심 지표만
- 실제 조치 가능한 수준
- 명확한 메시지 + Runbook
9. 결론
Slack 알림 연동은 단순 편의 기능이 아닙니다.
“시스템을 코드로 운영하는 것”의 시작입니다.
- 모니터링
- 알람
- 대응 문서
- 자동화
이 흐름이 갖춰질 때 비로소 운영 가능한 시스템이 됩니다.
🔚 마무리
백엔드 개발자는 이제 단순 API 구현자가 아닙니다.
- 장애를 감지하고
- 지표를 해석하고
- 대응 체계를 설계하는 사람입니다.
Slack 알림은 그 첫 단계입니다.
LIST
'Spring & Backend' 카테고리의 다른 글
| 인텔리제이와 cursor 그리고 claude code 협업 구조 (0) | 2026.02.26 |
|---|---|
| 멀티 쓰레딩에 대해서 설명해 주세요. (0) | 2026.02.26 |
| Spring Boot 프로젝트에서 GitHub Actions로 CI 파이프라인 구축하기 (0) | 2026.02.24 |
| JIRA의 복잡한 프로세스를 work.md 하나로 관리할 수 있을까? (0) | 2026.02.24 |
| SonarQube 사용법 완전 정리 (0) | 2026.02.24 |
