GROW Notification Service๋ ํ๋ซํผ ์ ์ฒด์ ์ค์๊ฐ ์๋ฆผยท์ชฝ์งยท๊ณต์งยทQnA ์ด๋ฒคํธ ํ๋ธ ์ญํ ์ ์ํํ๋ ํต์ฌ ๋ง์ดํฌ๋ก์๋น์ค์
๋๋ค.
AI ๋ถ์ ๋ฐ ํด์ฆ ์ถ์ /์ฑ์ ํ๋ฆ๊ณผ ๋ฉค๋ฒ ๋๋ฉ์ธ์ ๊ธด๋ฐํ ์ฐ๋ํ์ฌ, ํ์ต ํผ๋๋ฐฑยทํฌ์ธํธ/์
์ ๋ฐ์๊น์ง ๋๋จ ์๋ฆผ์ ์ฑ
์์ง๋๋ค.
SSE ๊ธฐ๋ฐ ์ค์๊ฐ ์คํธ๋ฆผ๊ณผ Kafka ์ด๋ฒคํธ ํ์ค์ ํตํด ๋ฉค๋ฒยทํด์ฆยท๊ฒฐ์ ๋ฑ๊ณผ ๋ฎ์ ๊ฒฐํฉ๋๋ก ํต์ ํฉ๋๋ค.
| ์ฅ๋ฌด์ | ์ต์ง์ |
|---|---|
| GitHub | GitHub |
์๋น์ค๋ DDD(Domain-Driven Design) ์์น์ ์ค์ฌ์ผ๋ก Hexagonal Architecture (Ports & Adapters) ๊ตฌ์กฐ๋ก ์ค๊ณ๋์ด,
๋๋ฉ์ธ ๋ก์ง๊ณผ ์ธํ๋ผ ์์กด์ฑ์ ๋ช
ํํ ๋ถ๋ฆฌํ๊ณ ๋์ ์์ง๋์ ๋ฎ์ ๊ฒฐํฉ๋๋ฅผ ์ ์งํฉ๋๋ค.
ํต์ฌ ๋น์ฆ๋์ค ๊ท์น์ domain ๊ณ์ธต์์ ๊ด๋ฆฌ๋๋ฉฐ,
์ธ๋ถ ์ฐ๋(์: Kafka, Redis, JPA, ์ธ๋ถ API)์ infra ์ด๋ํฐ๋ฅผ ํตํด ์ฃผ์
๋ฉ๋๋ค.
application ๊ณ์ธต์์๋ ํธ๋์ญ์
๋จ์์ ์ ์ค์ผ์ด์ค(์: ์๋ฆผ ์์ฑ/์ ์ก, ํด์ฆ ์ฑ์ ๊ฒฐ๊ณผ ์ฐ๋, ๊ณต์ง/QnA/์ชฝ์ง ์ ํ)๋ฅผ ์กฐํฉํ๊ณ ,
presentation ๊ณ์ธต์์๋ REST/SSE API๋ฅผ ํตํด ๊ฒ์ดํธ์จ์ด์ ํต์ ํฉ๋๋ค.
๋ชจ๋ ๋ง์ดํฌ๋ก์๋น์ค(member, payment, quiz, analysis ๋ฑ)๋ Kubernetes ํ๊ฒฝ์์ ์ปจํ ์ด๋ ๋จ์๋ก ๋ฐฐํฌ๋๋ฉฐ, ๊ฒ์ดํธ์จ์ด์ ๋ฐ์ดํฐ ๊ณ์ธต, ์ธ๋ถ ์ฐ๋ API๊น์ง ์์ ํ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๊ตฌ์กฐ๋ก ์ค๊ณ๋์์ต๋๋ค.
์๋น์ค ๊ฐ ์ฐ๊ฒฐ์ Gateway, Kafka, Redis, Kubernetes๋ฅผ ์ค์ฌ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
| ๊ตฌ์ฑ ์์ | ์ญํ |
|---|---|
| ๐งญ Gateway (Spring Cloud Gateway) | JWT ๊ธฐ๋ฐ ์ธ์ฆ ๊ฒ์ฆ ๋ฐ ์์ฒญ ๋ผ์ฐํ . SSE ์ค์๊ฐ ์๋ฆผ ์คํธ๋ฆผ ์๋ํฌ์ธํธ ์ ๊ณต |
| ๐งต Kafka (Event Bus) | AI ๋ถ์/ํด์ฆ ์ถ์ ยท์ฑ์ /QnA/๊ณต์ง/์ชฝ์ง ๋ฑ ์ด๋ฒคํธ ๋ฐํยท๊ตฌ๋ ๋ฐ ํ์คํ |
| ๐พ Redis (Cache & Lock) | ๋ฐฐ์ง ์นด์ดํธยท์ธ์ ์บ์, ๋ฉฑ๋ฑ ์ฒ๋ฆฌ(Idempotency Key) ๋ฐ ๋ถ์ฐ ๋ฝ์ผ๋ก ์ค๋ณต ์ ์ก ๋ฐฉ์ง |
| ๐๏ธ MySQL (Primary DB) | ์๋ฆผ/์ชฝ์ง/๊ณต์ง/QnA, ์ ์ก ์ด๋ ฅ ๋ฐ ์คํจ ๋ณด์ ๋ก๊ทธ์ ์์ ์ ์ฅ์ |
| โธ๏ธ Kubernetes | ์๋น์ค ๋ฐฐํฌยท์ค์ผ์ผ๋งยท๋กค๋ง ์ ๋ฐ์ดํธ ์๋ํ๋ก ๊ณ ๊ฐ์ฉ์ฑ(HA) ํ๋ณด |
| ๐ Prometheus + Grafana | SSE ์ฐ๊ฒฐ ์, ์๋ฆผ ์ ์ก๋ฅ , AI/ํด์ฆ ์ด๋ฒคํธ ์ง์ฐ, ์ค๋ฅ์จ ๋ฑ ์ค์๊ฐ ๋ชจ๋ํฐ๋ง |
| ๊ตฌ๋ถ | ๊ธฐ๋ฅ ์ค๋ช |
|---|---|
| ๐ ์ค์๊ฐ ์๋ฆผ(SSE) | ์ฌ์ฉ์๋ณ SSE ์คํธ๋ฆผ ์ ๊ณต, ์๋ ์ฌ์ฐ๊ฒฐยทํํธ๋นํธ, ํ์ ยท์ฐ์ ์์ ๊ธฐ๋ฐ ์ ํ |
| ๐ง AI ๋ถ์ ์ฐ๋ | Analysis/LLM ๊ฒฐ๊ณผ ์์ โ ํ์ต ๋ฆฌ๋ง์ธ๋ยท๊ฐ์ธํ ํผ๋ ์๋ฆผ ๋ฐํ |
| ๐งฉ ํด์ฆ ์ถ์ /์ฑ์ ์ฐ๋ | LLM ๊ธฐ๋ฐ ํด์ฆ ์์ฑ/์ ์ถ/์ฑ์ ์ด๋ฒคํธ๋ฅผ ๊ตฌ๋ ํ์ฌ ๊ฒฐ๊ณผ ์๋ฆผ ๋ฐ ๋ฉค๋ฒ ํฌ์ธํธ/์ ์ ์ฐ๊ณ |
| ๐ฎ ์ชฝ์ง(Note) | 1:1 ์ชฝ์ง ์ก์์ ยท์ฝ์ ์ฒ๋ฆฌ, ์ ๊ท ์์ ์ ์ฆ์ ํธ์ |
| ๐ข ๊ณต์ง(Notice) | ์ด์ ๊ณต์ง ์์ฑยท์์ ยท์ญ์ , ๋์์ ๋ฒ์ ์ ํ ๋ฐ ์ฝ์ ์ง๊ณ |
| ๐ฌ QnA | ์ง๋ฌธ/๋ต๋ณ ๋ฑ๋กยท๊ฐฑ์ ์ ๊ตฌ๋ ์ยท์์ฑ์์๊ฒ ์๋ฆผ ์ ์ก |
| ๐งฑ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ | Redis ๋ฉฑ๋ฑํคยท๋ถ์ฐ๋ฝยท์ค๋ณต ์ต์ ๋ก ๋์ผ ์ด๋ฒคํธ ๋ค์ค ์ ์ก ๋ฐฉ์ง |
| โป๏ธ ๋ณด์ ํธ๋์ญ์ | ์ธ๋ถ ์ฑ๋ ์คํจ ์ ์ฌ์๋ยท๋ณด์ ๋ก์ง ์ํ ๋ฐ ๊ด๋ฆฌ์ ๊ฒฝ๋ณด(Slack ๋ฑ) |
| ์ด๋ชจ์ง | ํ์ | ์ค๋ช | ์์ ์ปค๋ฐ ๋ฉ์์ง |
|---|---|---|---|
| โจ | feat | ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ | feat: ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ์ถ๊ฐ |
| ๐ | fix | ๋ฒ๊ทธ ์์ | fix: ํ์๊ฐ์ ์ ์ด๋ฉ์ผ ์ค๋ณต ์ฒดํฌ ์ค๋ฅ ์์ |
| ๐ | docs | ๋ฌธ์ ์์ | docs: README ์คํ ์์ |
| ๐ | style | ์ฝ๋ ํฌ๋งท, ์ธ๋ฏธ์ฝ๋ก ๋๋ฝ ๋ฑ ์คํ์ผ ๋ณ๊ฒฝ (๊ธฐ๋ฅ ๋ณ๊ฒฝ ์์) | style: ์ฝ๋ ์ ๋ ฌ ๋ฐ ์ธ๋ฏธ์ฝ๋ก ์ถ๊ฐ |
| โป๏ธ | refactor | ์ฝ๋ ๋ฆฌํฉํ ๋ง (๊ธฐ๋ฅ ๋ณ๊ฒฝ ์์) | refactor: ์ค๋ณต ์ฝ๋ ํจ์๋ก ๋ถ๋ฆฌ |
| โก | perf | ์ฑ๋ฅ ๊ฐ์ | perf: ์ด๋ฏธ์ง ๋ก๋ฉ ์๋ ๊ฐ์ |
| โ | test | ํ ์คํธ ์ฝ๋ ์ถ๊ฐ/์์ | test: ์ ์ API ํ ์คํธ ์ฝ๋ ์ถ๊ฐ |
| ๐ ๏ธ | build | ๋น๋ ์์คํ ๊ด๋ จ ๋ณ๊ฒฝ | build: ๋ฐฐํฌ ์คํฌ๋ฆฝํธ ์์ |
| ๐ง | ci | CI ์ค์ ๋ณ๊ฒฝ | ci: GitHub Actions ์ํฌํ๋ก์ฐ ์์ |
ํ์
(๋ฒ์): ๊ฐ๊ฒฐํ ์ค๋ช
(50์ ์ด๋ด, ํ๊ธ ์์ฑ)
(ํ์์) ๋ณ๊ฒฝ ์ด์ /์์ธ ๋ด์ฉ
-
ํ๋์ ์ปค๋ฐ์๋ ํ๋์ ๋ชฉ์ ๋ง ๋ด๊ธฐ
โ ์ฌ๋ฌ ๋ณ๊ฒฝ ์ฌํญ์ ํ ์ปค๋ฐ์ ๋ชฐ์๋ฃ์ง ์๊ธฐ
-
์ ๋ชฉ ๋์ ๋ง์นจํ(.)๋ฅผ ๋ถ์ด์ง ์๊ธฐ
-
๋ณธ๋ฌธ(Body)์ ์ ํ ์ฌํญ์ด์ง๋ง, ๋ณ๊ฒฝ ์ด์ ๋ ์์ธ ์ค๋ช ์ด ํ์ํ ๋ ์์ฑ
โ 72์ ๋จ์๋ก ์ค๋ฐ๊ฟ, ์ ๋ชฉ๊ณผ ๋ณธ๋ฌธ ์ฌ์ด์ ํ ์ค ๋์ฐ๊ธฐ
-
์์ ์ค๊ฐ ์ ์ฅ์ WIP(Work In Progress)๋ก ํ์ํ ๊ฒ
โ ์) WIP: ํ์๊ฐ์ ๋ก์ง ๊ตฌํ ์ค
ํ์๋ค์ด ์ฃผ๋ก ํ๋ํ๋ ์๊ฐ๋์
๋๋ค.
์ด ์๊ฐ์ ๋ง์ถฐ ์ปค๋ฎค๋์ผ์ด์
๊ณผ ์ฝ๋ ๋ฆฌ๋ทฐ, ํ์ ๋ฑ์ ์งํํฉ๋๋ค.
| ์์ผ | ํ๋ ์๊ฐ |
|---|---|
| ๐ ํ์ผ | 14:00 ~ 18:00, 20:00 ~ 23:00 |
| ๐ ์ฃผ๋ง | 14:00 ~ 18:00 |
- PR ์ ๋ชฉ๊ณผ ์ค๋ช ์ ๋ช ํํ๊ฒ ์์ฑ (๋ณ๊ฒฝ ๋ด์ฉ, ๋ชฉ์ , ์ฐธ๊ณ ์ด์ ๋ฑ ํฌํจ)
- Conventional Commits ๊ท์น์ ์ค์ํ์ฌ ์ปค๋ฐ ๋ฉ์์ง ์์ฑ
- ํ๋์ PR์๋ ํ๋์ ๊ธฐ๋ฅ/์ด์๋ง ํฌํจ
- ์ฝ๋ ์คํ์ผ, ๋ค์ด๋ฐ, ๋ก์ง, ์ฑ๋ฅ, ๋ณด์, ์์ธ ์ฒ๋ฆฌ ๋ฑ ๊ผผ๊ผผํ ํ์ธ
- ๋ฆฌ๋ทฐ ์ฝ๋ฉํธ์๋ ๋ฐ๋์ ๋ต๋ณ, ํ์์ ์ถ๊ฐ ์ปค๋ฐ์ผ๋ก ๋ฐ์
- ๋ชจ๋ ๋ฆฌ๋ทฐ ์ฝ๋ฉํธ resolve ํ ๋จธ์ง
- ์ค์ฟผ์ ๋จธ์ง ๋ฐฉ์ ๊ถ์ฅ, ์ถฉ๋ ๋ฐ์ ์ ๋จธ์ง ์ ํด๊ฒฐ
- ๋ฆฌ๋ทฐ๋ 24์๊ฐ ์ด๋ด ์งํ, ๋ชจ๋ฅด๋ ๋ถ๋ถ์ ์ ๊ทน์ ์ผ๋ก ์ง๋ฌธ
- ๋ฆฌ๋ทฐ ๊ณผ์ ์์ ๋ฐฐ์ด ์ ์ ํ ๋ฌธ์์ ๊ณต์ (ํธ๋ฌ๋ธ ์ํ ๋ฑ)