별책부록 16편
별책부록 16편
봇 유지보수 (월별 의식)
매일 5분 + 주별 15분 + 월별 1시간으로 봇을 24/7 안정 운영합니다
📑 이 챕터에서 다룰 내용

봇은 한 번 셋업한다고 끝이 아닙니다. 매일·주별·월별 점검이 필요해요. 사용자가 늘어나면 자원이 늘고, Anthropic 비용도 늘고, 새 에러가 나타납니다. 정기 점검을 안 하면 어느 날 갑자기 봇이 멈추거나 비용이 폭발할 수 있어요.

📘 이 편의 목표

1인 운영자가 5분 안에 끝낼 수 있는 점검 루틴을 정리합니다. 매일·주별·월별 각 단계를 체크리스트 형태로 따라가면 봇이 안정적으로 돌아갑니다.

16-1 매일 의식 (5분) 🔗

매일 09:00 (또는 봇 매일 리포트 도달 시)

📘 매일 5분 체크리스트

[1분 — 봇 리포트 확인]

  • ☑ 봇 매일 리포트 도착 확인 (Discord·Telegram)
  • ☑ 어제 에러 0건 또는 정상 처리 여부 확인

[2분 — Sentry 대시보드]

  • ☑ 새 에러 발생 여부 확인
  • ☑ 에러 빈도 정상 범위 안인지 확인

[2분 — Anthropic 비용]

  • ☑ console.anthropic.com → Usage 확인
  • ☑ 어제 비용이 예상 범위 안인지 확인

[★ 즉시 대응 기준]

  • 비용이 예상치 2배+ → 코드·호출 패턴 점검 필요
  • 새 에러 5건+ → 반드시 검토
  • 봇 응답 없음 → 즉시 서버 점검

매일 09:00 자동 점검 스크립트 (선택)

💻 /home/ubuntu/scripts/daily_health_check.sh
#!/bin/bash
# crontab: 0 9 * * * /home/ubuntu/scripts/daily_health_check.sh

echo "=== 봇 상태 ==="
pm2 status

echo ""
echo "=== 자원 현황 ==="
free -h | head -2
df -h | grep "/$"
top -bn1 | grep "load average"

echo ""
echo "=== 디스크 큰 폴더 ==="
du -sh /home/ubuntu/봇*/ 2>/dev/null | sort -h | tail -5

echo ""
echo "=== 어제 에러 건수 ==="
journalctl -u 봇* --since "yesterday" --until "today" | grep -i error | wc -l

echo ""
echo "=== Anthropic 비용 (수동 확인 권장) ==="
echo "  → console.anthropic.com 접속 권장"
💡 crontab 등록 방법

crontab -e를 열고 아래 한 줄을 추가하세요.

0 9 * * * /home/ubuntu/scripts/daily_health_check.sh

매일 오전 9시에 자동 실행되어 결과를 로그로 남깁니다.

16-2 주별 의식 (15분, 월요일 권장) 🔗

1주일 종합 검토

📘 주별 15분 체크리스트

[5분 — 비용 검토]

  • ☑ Anthropic 지난 주 비용 (vs 그 전 주 비교)
  • ☑ 비용 추세 확인 (증가·안정·감소)
  • ☑ prompt caching hit_rate 확인 (90%+ 권장)

[5분 — 자원 추세]

  • ☑ 메모리 사용 추세 (안정·증가 여부)
  • ☑ 디스크 사용 추세
  • ☑ DB 상태 (PostgreSQL·SQLite) — 행 수 증가, 인덱스 정상 여부

[3분 — 코드·종속성]

  • npm audit 또는 pip list --outdated
  • ☑ 보안 패치 검토
  • ☑ Anthropic SDK 새 버전 확인

[2분 — 사용자]

  • ☑ 사용자 추세 (DAU·MAU)
  • ☑ 만족도 확인 (피드백·평점)
  • ☑ 미처리 에스컬레이션 응답 처리

주별 점검 명령 모음

💻 weekly_check.sh
# 매주 월요일 09:00
# crontab: 0 9 * * 1 /home/ubuntu/scripts/weekly_check.sh

echo "=== 1주일 봇 로그 ==="
pm2 logs --lines 0  # 최근 logs

echo ""
echo "=== 패키지 업데이트 현황 ==="
cd /home/ubuntu/봇/
npm outdated  # Node.js
# 또는
pip list --outdated  # Python

echo ""
echo "=== DB 크기 (PostgreSQL) ==="
sudo -u postgres psql -c "SELECT pg_size_pretty(pg_database_size('봇DB'));"

echo ""
echo "=== 백업 현황 ==="
ls -lh /backup/*.sql.gz | tail -7  # 최근 7개 백업
16-3 월별 의식 (1시간, 매월 1일) 🔗

월 1회 종합 점검

📘 월별 1시간 체크리스트

[15분 — 코드 업데이트]

  • npm audit fix 또는 pip install --upgrade
  • ☑ Anthropic 모델 업데이트 확인 (Sonnet·Opus 새 버전 등)
  • ☑ 보안 패치 적용
  • ☑ git pull (코드 변경 사항 반영)

[15분 — DB 정리]

  • ☑ 오래된 로그 정리 (3개월+ 된 것)
  • ☑ DB vacuum (PostgreSQL)
  • ☑ 인덱스 재구축

[10분 — 백업 검증]

  • ☑ 백업 파일 존재 확인
  • ☑ 복구 시험 (다른 환경에 실제로 복원해보기)

[10분 — 비용 검토]

  • ☑ 한 달 Anthropic 비용 종합
  • ☑ Cloudflare 비용
  • ☑ Contabo 비용
  • ☑ 다음 달 예산 계획

[10분 — KPI]

  • ☑ 사용자 추세 (한 달 전체)
  • ☑ 봇 응답 성공률
  • ☑ 만족도
  • ☑ 반복 문제 패턴 파악
16-4 Anthropic 비용 추세 분석 🔗

월별 비용 추세 예시

비용변동해석
1월$30기준치
2월$45+50%요주의 — 원인 파악 필요
3월$52+16%사용자 증가 (정상 범위)
4월$48-8%캐싱 최적화 효과
⚠️ 즉시 점검이 필요한 신호
  • 전월 대비 50%+ 갑자기 증가 → 코드 점검 필수
  • 사용자 수 변화 없는데 비용 증가 → 불필요한 호출 확인
  • cache_hit_rate 급락 → 시스템 프롬프트 캐싱 설정 재확인

점검 흐름:

  1. console.anthropic.com → Usage 접속
  2. 모델별 비율 확인 (Sonnet vs Opus 비율)
  3. cache_hit_rate 확인 (낮으면 → 시스템 프롬프트 캐싱 재설정)
  4. 일별 사용량 확인 (특정 날 폭발 여부)
  5. 코드 확인 (반복 호출·무한 루프 여부)

비용 절약 방법

💡 Prompt Caching — 최대 90% 절약

시스템 프롬프트가 반복되는 경우 캐싱을 적용하면 비용을 90%까지 줄일 수 있어요.

💻 Python SDK — 캐싱 적용 예시
client.messages.create(
    model="claude-sonnet-4-6",
    system=[
        {
            "type": "text",
            "text": "long system prompt...",
            "cache_control": {"type": "ephemeral"}  # ★ 캐싱 적용
        }
    ],
    messages=[...]
)
방법절약 효과적합한 상황
Prompt Caching최대 90%시스템 프롬프트가 동일한 모든 호출
Batch API50%즉시 응답 불필요 — 매일 리포트 등
Haiku 모델 선택80% (vs Sonnet)단순 분류·짧은 응답
Sonnet 모델 선택40% (vs Opus)일반 대화·일반 분석
16-5 Sentry 에러 대응 🔗

매일 Sentry 점검 (5분)

📘 Sentry 대시보드 확인 포인트
  1. New Issues — 어제 처음 발생한 에러
  2. Frequency — 가장 자주 발생하는 에러
  3. Affected Users — 사용자 영향 범위

[즉시 대응 기준]

  • New Issue + High Frequency → 5분 안에 검토
  • Critical level → 30분 안에 수정
  • 영향 받는 사용자 100명+ → 즉시 수정

주별 에러 검토

📘 Top 10 에러 처리 방식
  • Top 1~3 → 이번 주 수정 우선
  • Top 4~10 → 다음 주 처리 예약
  • 1주일 이상 0건 → resolved 표시

[패턴 파악]

  • 같은 에러 반복 → 코드 구조 개선 필요
  • 사용자 행동 패턴의 에러 → UX 개선 권장
  • 외부 서비스 에러 (Anthropic·Discord) → 자동 retry 추가

에러 수정 4단계 흐름

1
재현

에러 trace를 보고, 어떤 사용자·환경에서 발생하는지 파악합니다. 로컬에서 재현을 시도하세요.

2
수정

코드를 수정하고 단위 테스트 + 통합 테스트를 실행합니다. Junho가 직접 코드 검토까지 합니다.

3
배포

git commit + push → GitHub Actions 자동 배포 (별책부록 9편 참고) → Sentry에서 resolve 표시.

4
검증

배포 후 1시간 동안 모니터링합니다. 같은 에러가 재발하지 않는지 확인하세요.

16-6 의식 흐름 종합 🔗

매일 흐름 (5분)

시간작업소요
09:00봇 매일 리포트 확인1분
09:01Sentry 대시보드 확인1분
09:02Anthropic 사용량 확인1분
09:03pm2 status 또는 systemctl 확인1분
09:04자원 현황 확인1분
09:05완료 ✅

주별 흐름 (15분, 월요일)

시간작업소요
09:00매일 흐름 수행5분
09:05주별 비용 추세 확인5분
09:10패키지·종속성 확인3분
09:13백업 현황 확인2분
09:15완료 ✅

월별 흐름 (1시간, 매월 1일)

시간작업소요
09:00매일·주별 흐름 수행20분
09:20코드 업데이트15분
09:35DB 정리15분
09:50백업 복구 시험10분
10:00KPI 종합 검토10분
10:10완료 ✅

📌 16편 정리

  • 점검 루틴은 부담이 아닙니다. 5분 매일 + 15분 주별 + 1시간 월별 = 봇이 안정적으로 24/7 운영됩니다.
  • 매일: 봇 리포트·Sentry·비용 — 이상 신호를 조기에 포착합니다.
  • 주별: 추세·종속성·백업 — 중기 문제를 예방합니다.
  • 월별: 코드 업데이트·DB 정리·KPI — 시스템 건강성을 유지합니다.
  • 루틴을 cron·systemd timer로 자동화하면 운영자는 결정과 수정에만 집중할 수 있어요.
📘
별책부록 도우미
질문하기 OK
안녕하세요! 봇 유지보수 루틴에 대해 무엇이든 물어보세요. 본문에서 찾아 답변해드릴게요. 👇