HTTP/HTTPS ์๋ํฌ์ธํธ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ฒดํฌํด์ ๊ฐ์ฉ์ฑ/์๋๋ฅผ ๊ธฐ๋กํ๊ณ , ์ฐ์ ์คํจ ์ Slack์ผ๋ก ์๋ฆผ์ ๋ณด๋ด๋ ๊ฒฝ๋ ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ฅผ ๋ง๋ค์์ต๋๋ค.
Spring Boot + MariaDB + React ๊ธฐ๋ฐ์ด๋ฉฐ, ๋์๋ณด๋๋ก ํ์ฌ ์ํ๋ฅผ ํ๋์ ๋ณผ ์ ์์ด์.
TL;DR
- ๋ชจ๋ํฐ ๋ฑ๋ก โ ์ฃผ๊ธฐ์ ์ฒดํฌ โ ๊ฒฐ๊ณผ ๊ธฐ๋ก โ ์ฐ์ ์คํจ ์ Incident ์คํ & Slack ์๋ฆผ โ ์ฑ๊ณต 1ํ ์ ์๋ ์ข
๋ฃ
- ๋ฐฑ์๋: Spring Boot(WebFlux WebClient), JPA, Swagger
- ํ๋ก ํธ: React + Vite + TS, Recharts
- DB: MariaDB
๐งญ ์ ๋ง๋ค์๋
- ์ฌ์ด๋ ํ๋ก์ ํธ/๊ฐ์ธ ์๋ฒ/์๊ท๋ชจ ์๋น์ค์์ ๊ฐ๋จํ๊ฒ API ํฌ์ค ์ฒดํฌ๊ฐ ํ์ํ ๋๊ฐ ๋ง์ต๋๋ค.
- ์์ฉ ์๋ฃจ์
์ ๊ฐ๋ ฅํ์ง๋ง, ๊ฐ๋ณ๊ฒ ์์ํ MVP๊ฐ ํ์ํ์ด์.
- ๊ทธ๋์ ๋ฑ๋กโ์ฒดํฌโ์๋ฆผ ํต์ฌ ์ฌ์ดํด๋ง ์ ๋ฝ์ ๊ตฌํํ์ต๋๋ค.
โจ ๊ธฐ๋ฅ ์์ฝ (MVP)
- ๋ชจ๋ํฐ: URL, Method, ์ฃผ๊ธฐ, ํ์์์, ๊ธฐ๋ ์ํ์ฝ๋ ๋ฒ์, ์ฐ์ ์คํจ ์๊ณ์น
- ์ฒดํฌ: ์๋ต ์ฝ๋, ์ง์ฐ(ms), ์๋ฌ ๋ฉ์์ง ๊ธฐ๋ก
- Incident: ์ฐ์ ์คํจ ์ Open, ์ฑ๊ณต ์ Close
- ์๋ฆผ: Slack Webhook
- ๋์๋ณด๋: ์ต๊ทผ ์ํ, ์คํํฌ๋ผ์ธ(latency), Open Incidents
๐ ์ํคํ
์ฒ
[React Dashboard] --Axios--> [Spring Boot API]
โ
[Scheduler 60s / WebClient]
โ
[MariaDB ์ ์ฅ]
โ
[Slack ์๋ฆผ]
โ๏ธ ๋ก์ปฌ ์คํ (์์ฝ)
Backend
./gradlew bootRun
Frontend
cd frontend
npm i
npm run dev
Slack Webhook ๋ฑ๋ก
POST /api/integrations
{
"type": "SLACK_WEBHOOK",
"name": "Main Slack",
"webhookUrl": "https://hooks.slack.com/services/XXX/YYY/ZZZ"
}
๋ชจ๋ํฐ ๋ง๋ค๊ธฐ(๋น ๋ฅธ ํ
์คํธ)
POST /api/monitors
{
"name": "httpstat.us 503",
"url": "https://httpstat.us/503",
"method": "GET",
"intervalSeconds": 30,
"timeoutMs": 2000,
"expectedStatusFrom": 200,
"expectedStatusTo": 399,
"latencyThresholdMs": 1500,
"alertConsecutiveFailures": 1
}
1~2๋ถ ๋ด /results์ ๊ธฐ๋ก์ด ์์ด๊ณ , ์๊ณ์น์ ๋๋ฌํ๋ฉด Slack์ผ๋ก Incident ์๋ฆผ์ด ์ต๋๋ค.
๐งฉ ๊ตฌํ ํฌ์ธํธ
1) ๋์ ์ค์ผ์ค๋ง
- DB์
next_check_at ์ ๊ธฐ์ค์ผ๋ก Due ๋์๋ง ์คํ
- ์ฒดํฌ ํ
next_check_at = now + intervalSeconds
2) ์ฒดํฌ & ํ์
- WebClient + Reactor Netty๋ก ์ฐ๊ฒฐ/์ฝ๊ธฐ/์ฐ๊ธฐ ํ์์์
status in [expected_from..expected_to] โ ์ฑ๊ณต
- ์์ธ/ํ์์์/DNS/SSL ์ค๋ฅ๋ ์คํจ, ์๋ฌ ๋ฉ์์ง ์ ์ฅ
3) Incident & ์๋ฆผ
- ์ฐ์ ์คํจ ํ์๊ฐ ์๊ณ์น ๋๋ฌ ์ Incident ์คํ
- Slack Webhook์ผ๋ก ์๋ฆผ(์ต์ด 1ํ)
- ๋ค์ ์ฑ๊ณต 1ํ ์ Incident Close
4) ๋์๋ณด๋
- ๋ชจ๋ํฐ ์นด๋: ์ต๊ทผ ์ํ/์คํํฌ๋ผ์ธ
- Open Incidents ํ
์ด๋ธ
- Integrations: Slack Webhook ๋ฑ๋ก
๐งช ์คํฌ๋ฆฐ์ท/๋ฐ๋ชจ


๐งญ ๋ค์์ ํ ์ผ(์์ด๋์ด)
- ๋ณธ๋ฌธ ํค์๋/JSONPath ์ด์ค์
- ์ฌ์๋ฆผ ์ฟจ๋ค์ด, ํ๋ํ ์ต์
- 24h/7d ๊ฐ์ฉ์ฑ% / p95 ์ง์ฐ ๋กค์
- Kakao Biz/Email ์๋ฆผ ์ด๋ํฐ
- JWT / ๋ฉํฐ ์ํฌ์คํ์ด์ค
โ
์ฐธ๊ณ