개발자 번아웃, 코드가 먼저 알려준다.
Git 커밋 패턴, PR 사이클, 코드 리뷰 응답 속도를 분석해서 팀원의 번아웃 신호를 2주 전에 팀 리더에게 알려줍니다.
Self-hosted — 코드와 커밋 데이터가 외부로 나가지 않습니다. 경량 — 4코어, 8GB RAM이면 충분합니다. 선택적 알림 — Slack, Discord 등 사용하는 협업 도구로 알림을 받으세요.
월요일 아침, 팀원 A의 PR이 3일째 방치되어 있다.
지난주부터 커밋이 절반으로 줄었다.
새벽 2시에 올라온 커밋이 이번 주만 4개.
"요즘 좀 힘든가?" 라고 물어보고 싶지만,
감이 아닌 데이터로 확인할 수 있다면?
BurnGuard는 이 5가지 신호를 자동으로 추적합니다.
| 신호 | 측정 방식 | 위험 기준 |
|---|---|---|
| 심야 커밋 비율 | 22:00~06:00 커밋 | > 15% |
| PR 방치율 | 72시간 이상 미리뷰 PR | > 20% |
| 코드 리뷰 응답 지연 | 평균 리뷰 응답 시간 | > 24시간 |
| 커밋 수 급감 | 전주 대비 감소율 | > -30% |
| 주말/휴일 작업 | 토·일 작업 비율 | > 10% |
종합 점수: 0.0 ~ 1.0 → LOW / MEDIUM / HIGH / CRITICAL
HIGH 이상이면 팀 리더에게 즉시 알림이 갑니다.
git clone https://github.com/YOUR_USERNAME/burnguard.git
cd burnguard
cp .env.example .env# .env
GITHUB_WEBHOOK_SECRET=your-webhook-secret
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/T.../B.../...
# 또는 Discord를 쓴다면:
# DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/...docker compose up -dRepository → Settings → Webhooks → Add webhook
| 항목 | 값 |
|---|---|
| Payload URL | http://your-server:8080/api/v1/webhooks/github |
| Content type | application/json |
| Secret | .env의 GITHUB_WEBHOOK_SECRET |
| Events | Push, Pull request, Pull request review |
curl -X POST localhost:8082/api/v1/teams \
-H "Content-Type: application/json" \
-d '{"name":"my-team","repos":["your-org/your-repo"]}'curl http://localhost:8080/actuator/health # 서비스 상태
curl http://localhost:8082/api/v1/teams/1/dashboard # 팀 대시보드이제 팀원이 커밋할 때마다 BurnGuard가 분석하고, 위험 신호가 감지되면 설정한 채널(Slack/Discord)로 알림이 갑니다.
GitHub Webhook (push, PR, review)
│
▼
┌──────────────────┐ Redis Pub/Sub ┌──────────────────┐
│ webhook-receiver │ ───────────────────▶ │ analyzer │
│ (HMAC 검증) │ │ (번아웃 지표 계산)│
└──────────────────┘ └────────┬─────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌───────────┐
│PostgreSQL│ │ REST API │ │ Slack │
│ (저장) │ │ (대시보드)│ │ Discord │
└──────────┘ └──────────┘ └───────────┘
3개의 마이크로서비스가 각자 역할을 수행합니다:
| 서비스 | 역할 | 포트 |
|---|---|---|
| webhook-receiver | GitHub Webhook 수신, HMAC 검증, 이벤트 발행 | 8080 |
| analyzer | 번아웃 지표 계산, DB 저장, 알림 발송 | 8081 |
| api-server | 대시보드 REST API, 점수 이력 조회 | 8082 |
BurnGuard는 여러 알림 채널을 동시에 지원합니다.
.env에 URL을 넣으면 활성화, 비우면 비활성화. 그게 전부입니다.
| 채널 | 환경변수 | 상태 |
|---|---|---|
| Slack | SLACK_WEBHOOK_URL |
지원 |
| Discord | DISCORD_WEBHOOK_URL |
지원 |
| Microsoft Teams | TEAMS_WEBHOOK_URL |
예정 (v1.4.0) |
Slack과 Discord를 동시에 설정하면 두 곳 모두에 알림이 갑니다.
| 환경 | CPU | RAM | 비고 |
|---|---|---|---|
| 최소 | 4코어 | 8GB | Intel N100 등 저전력 미니PC에서 검증 완료 |
| 권장 | 4코어+ | 16GB+ | 대규모 팀, 모니터링 강화 시 |
| 구성 요소 | 기본 할당 |
|---|---|
| webhook-receiver (JVM -Xmx256m) | ~400MB |
| analyzer (JVM -Xmx512m) | ~700MB |
| api-server (JVM -Xmx256m) | ~400MB |
| Redis | ~512MB |
| PostgreSQL | ~1.5GB |
| Prometheus | ~512MB |
| Grafana | ~256MB |
| 여유 | ~3.7GB |
서버 RAM에 여유가 있으면 JVM
-Xmx, PostgreSQLshared_buffers등을 자유롭게 올릴 수 있습니다.
| 카테고리 | 기술 | 비고 |
|---|---|---|
| 언어 | Java 25 LTS | Virtual Threads, Scoped Values, Generational ZGC |
| 프레임워크 | Spring Boot 4.x | Spring Framework 7.x |
| 메시지 | Redis Pub/Sub | Kafka 미사용 (최소 스펙에서 메모리 2.5GB 절약) |
| DB | PostgreSQL 16 | 이벤트/분석 결과 저장 |
| 알림 | Slack, Discord | 인터페이스 기반 확장 가능 |
| 모니터링 | Prometheus + Grafana | 선택 사항 |
| CI/CD | GitHub Actions + ArgoCD | 오픈소스 전체 공개 |
| 테스트 | JUnit 5, Mockito, TestContainers | TDD |
# 팀 관리
POST /api/v1/teams # 팀 생성 + 레포 등록
GET /api/v1/teams # 팀 목록
POST /api/v1/teams/{teamId}/repos # 레포 추가
# 대시보드 — 3가지 뷰
GET /api/v1/dashboard # 전체 현황
GET /api/v1/teams/{teamId}/dashboard # 팀별 현황
GET /api/v1/repos/{owner}/{repo}/dashboard # 레포별 현황
# 개발자 상세
GET /api/v1/developers/{login}/scores?days=14
# 헬스체크
GET /actuator/health사용 흐름 예시:
# 1. 팀 만들기
curl -X POST localhost:8082/api/v1/teams \
-H "Content-Type: application/json" \
-d '{"name":"backend-team","description":"백엔드 팀","repos":["org/api-server","org/auth-service"]}'
# 2. 팀 대시보드 확인
curl localhost:8082/api/v1/teams/1/dashboard
# 3. 특정 레포만 확인
curl localhost:8082/api/v1/repos/org/api-server/dashboard| 문서 | 설명 |
|---|---|
| ARCHITECTURE.md | MSA 구조, Redis Pub/Sub, Java 25 적용 |
| ALGORITHM.md | 번아웃 감지 알고리즘 상세 |
| DEVELOPMENT.md | 로컬 환경, 스프린트 계획, TDD |
| API.md | REST API 명세 |
| DEPLOYMENT.md | k3s 배포, CI/CD |
| TROUBLESHOOTING.md | 트러블슈팅 기록 |
| DESKTOP_APP.md | 데스크톱 GUI 앱 설계 (Tauri) |
| roadmap.md | 버전별 로드맵 |
MIT License — Self-hosted 오픈소스