개발팀을 위한 서버 모니터링 및 업무 알림 플랫폼입니다.
서버 상태를 자동으로 감시하고, PR 방치 및 배포 현황을 슬랙과 이메일로 알려줍니다.
서버 헬스체크
등록된 서버 URL을 1분마다 자동으로 체크합니다.
응답 실패 시 담당자에게 슬랙과 이메일로 즉시 알림을 발송하고, 이력을 저장합니다.
PR 방치 알림
GitHub API를 통해 N시간 이상 리뷰가 없는 PR을 감지합니다.
매일 오전 9시에 방치된 PR 목록을 슬랙으로 발송합니다.
배포 현황
GitHub Webhook으로 main 브랜치 push 이벤트를 수신합니다.
배포 이력을 저장하고 슬랙으로 알림을 발송합니다.
일일 리포트 (Spring Batch)
매일 오전 9시에 배치 작업이 실행됩니다.
열린 PR 수, 어제 머지된 PR 수, 헬스체크 실패 건수를 집계해 슬랙과 이메일로 발송합니다.
모니터링 대시보드 API
서버 상태, 최근 배포 이력, 알림 발송 현황을 REST API로 제공합니다.
SSE 엔드포인트를 통해 실시간으로 데이터를 받아볼 수 있습니다.
| 구분 | 기술 |
|---|---|
| Backend | Spring Boot 4.0.3, Spring Batch 6, Spring Scheduler |
| Database | MySQL 8.0, Redis 7 |
| 알림 | notification-engine (SSE, Email, Slack) |
| 외부 연동 | GitHub REST API, GitHub Webhook |
| API 문서 | Swagger (springdoc-openapi) |
| 인프라 | Docker, Docker Compose, AWS EC2 |
| CI/CD | GitHub Actions |
GitHub API / Webhook
│
▼
Spring Scheduler / Batch
(이벤트 감지 및 집계)
│
▼
notification-engine
├── SSE → 대시보드 실시간 업데이트
├── Email → 담당자 이메일 발송
└── Slack → 팀 채널 알림
알림 발송은 직접 개발한 notification-engine 라이브러리를 활용합니다.
SSE, 이메일, 슬랙을 단일 인터페이스로 처리합니다.
main 브랜치 push
│
▼
GitHub Actions
1. Gradle 빌드
2. Docker 이미지 빌드
3. Docker Hub push
│
▼
EC2 자동 배포
docker compose pull & up
- Java 17
- Docker, Docker Compose
루트 디렉토리에 .env 파일을 생성합니다.
# MySQL
MYSQL_ROOT_PASSWORD=루트비밀번호
MYSQL_DATABASE=devmate
MYSQL_USER=devmate
MYSQL_PASSWORD=비밀번호
DB_URL=jdbc:mysql://localhost:3307/devmate?serverTimezone=Asia/Seoul
# Redis
REDIS_HOST=localhost
# GitHub
GITHUB_TOKEN=깃허브토큰
GITHUB_OWNER=깃허브유저명
GITHUB_REPO=레포지토리명
# Slack
SLACK_WEBHOOK_URL=슬랙웹훅URL
# Mail
MAIL_USERNAME=Gmail주소
MAIL_PASSWORD=앱비밀번호
# Docker로 MySQL, Redis 실행
docker-compose up -d
# 앱 실행
./gradlew bootRun앱 실행 후 아래 URL에서 Swagger UI로 확인할 수 있습니다.
http://localhost:8080/swagger-ui/index.html
| Method | URL | 설명 |
|---|---|---|
| GET | /api/dashboard | 대시보드 전체 현황 조회 |
| GET | /api/servers | 헬스체크 서버 목록 조회 |
| POST | /api/servers | 헬스체크 서버 등록 |
| PATCH | /api/servers/{id}/toggle | 서버 활성화/비활성화 |
| GET | /api/pr-alerts | PR 알림 설정 목록 조회 |
| POST | /api/pr-alerts | PR 알림 설정 등록 |
| PATCH | /api/pr-alerts/{id}/toggle | PR 알림 활성화/비활성화 |
| DELETE | /api/pr-alerts/{id} | PR 알림 설정 삭제 |
| GET | /api/deploys | 전체 배포 이력 조회 |
| GET | /api/deploys/{repoName} | 레포별 배포 이력 조회 |
| POST | /webhook/github | GitHub Webhook 수신 |
| GET | /api/notifications | 알림 로그 조회 |
| GET | /api/sse/connect/{targetId} | SSE 연결 |
- GitHub 레포 → Settings → Webhooks → Add webhook
- Payload URL:
http://서버주소:8080/webhook/github - Content type:
application/json - Events: Just the push event 선택
알림 발송은 직접 개발한 notification-engine 라이브러리를 사용합니다.
SSE, Email, Slack 채널을 단일 인터페이스로 통합하여 사용할 수 있습니다.