ํ๊ณผ ํจ๊ป ๋ฌธ์ ๋ฅผ ์ ์ํ๊ณ , ๊ทธ ํด๋ต์ ๊ธฐ์ ๋ก ํ์ด๋ด๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์์ ๋๋ค.
ํ์ฅ์ฑ๊ณผ ์์ ์ฑ์ ๊ณ ๋ คํ ๊ตฌ์กฐ์ ์ค๊ณ, ๋๊ธฐ/๋น๋๊ธฐ ๊ฒฝ๊ณ, ๊ด์ฐฐ ๊ฐ๋ฅ์ฑ(Logging/Tracing/Metric) ์ ์ค์ํ๊ฒ ์๊ฐํฉ๋๋ค.
๐ ์๊ธฐ ์๊ฐ
์ ๋ ํ๊ณผ ํจ๊ป ๋ฌธ์ ๋ฅผ ์ ์ํ๊ณ , ๊ทธ ํด๋ต์ ๊ธฐ์ ๋ก ํ์ด๋ด๋ ๊ฐ๋ฐ์์ ๋๋ค.
4 ๋ฒ์ ํ ํ๋ก์ ํธ ์ค 3 ๋ฒ์ ํ์ฅ์ ๋งก์ ํ๋ก์ ํธ๋ฅผ ์ด๋๋ฉฐ ์๋น์ค ํ๋ฆ์ ์ ์ฒด์ ์ผ๋ก ๋ฐ๋ผ๋ณด๋ ์๊ฐ์ ํค์ ๊ณ , ๋ค์ํ ํ์๋ค๊ณผ ํ์ ์ ํ๋ฉด์** ์ํฉ์ ๋ง๋ ์ํต ๋ฐฉ์๊ณผ ๋ช ํํ ์๊ตฌ์ฌํญ ์ ๋ฌ์ ์ค์์ฑ**์ ๋ฐฐ์ ์ต๋๋ค. ๋ํ ๊ธฐํ์์ ๋์์ด๋๊ฐ์ด ๋ค๋ฅธ ๊ด์ ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ๋ฐ๋ผ๋ณด๋ ๊ตฌ์ฑ์๋ค๊ณผ ํ์ ํ๋ฉฐ, ์๋๊ฐ ์ดํดํ ์ ์๋ ๋ฐฉ์์ผ๋ก ์๊ฒฌ์ ์ ๋ฌํ๊ณ ์กฐ์จํ๋ ๊ณผ์ ์ ๊ฒฝํํ์์ต๋๋ค.
๊ฐ๋ฐ์๋ก์๋ ๋จ์ํ ๊ธฐ๋ฅ ๊ตฌํ์ ๋์ด ํ์ฅ์ฑ๊ณผ ์ฑ๋ฅ์ ๊ณ ๋ คํ ์ค๊ณ๋ฅผ ๊ณ ๋ฏผํ๋ฉฐ, ์ธํฐํ์ด์ค ๊ธฐ๋ฐ ์ค๊ณ, ๋น๋๊ธฐ ์ฒ๋ฆฌ, ์บ์ฑ ์ ๋ต ๋ฑ์ ์ ๊ทน ํ์ฉํ์ฌ ์ ์ฐํ๊ณ ์์ ์ ์ธ ์์คํ ์ ๊ตฌํํ๋๋ฐ ์ง์คํ๊ณ ์์ต๋๋ค.
๐ ๊ธฐ์ ๊ฒฝํ
- OAuth2 ๋ฐ JWT ๊ธฐ๋ฐ ์์ ๋ก๊ทธ์ธ๊ณผ ์ผ๋ฐ ๋ก๊ทธ์ธ ์ธ์ฆ ์์คํ ๊ตฌํ ๋ฐ ๋ฐฐํฌ ๊ฒฝํ
- JPA์ ํ์ฉํ ๋ณตํฉ ์กฐ๊ฑด ํ์ ์ฟผ๋ฆฌ ๊ตฌ์ฑ ๋ฐ N+1 ๋ฌธ์ ํด๊ฒฐ ๊ฒฝํ
- Redis๋ฅผ ํ์ฉํ ์บ์ฑ, Pub/Sub ๊ตฌ์กฐ๋ฅผ ํตํ ํธ๋ํฝ ๋ถ์ฐ
- Elasticsearch๋ฅผ ํ์ฉํ ๊ฐ์ค์น ๊ฒ์ ๋ฐ Logstash๋ฅผ ํตํ ์ค์๊ฐ ๋ก๊ทธ ๋ถ์ ๊ตฌํ
- Docker ๊ธฐ๋ฐ ๋ฉํฐ ์ปจํ ์ด๋ ํ๊ฒฝ ๊ตฌ์ฑ ๋ฐ CI/CD ์๋ํ ๊ตฌ์ถ
- ECS, ALB, RDS, S3, Route53, Client VPN ๋ฑ AWS ์ธํ๋ผ ๊ตฌ์ฑ ๊ฒฝํ
- WebSocket STOMP๋ฅผ ํ์ฉํ ์ค์๊ฐ ์ฑํ ๊ธฐ๋ฅ ๊ตฌํ
- SSE๋ฅผ ํ์ฉํ ์ค์๊ฐ ์๋ฆผ ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ Ping๊ณผ Heartbeat๋ฅผ ํตํ ์ฐ๊ฒฐ ์ ์ง ๊ด๋ฆฌ
- Kafka ๋ฉ์์ง ํ์ Pub/Sub ๋ฐฉ์์ ํตํ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐ ์๋น์ค ๊ฐ ์ด๋ฒคํธ ์ ๋ฌ ๊ตฌํ
| ๋ถ์ผ | ๊ธฐ์ |
|---|---|
| ์ธ์ด | |
| ํ๋ ์์ํฌ/๋ผ์ด๋ธ๋ฌ๋ฆฌ | |
| DB/์คํ ๋ฆฌ์ง | |
| Infra & DevOps |
๐ GitHub Repo | ์ญํ : ๊ฐ๋ฐ ๋ฆฌ๋
- WebSocket(STOMP) ์ฑํ ๊ณผ SSE ์๋ฆผ ๋ถ๋ฆฌ โ ์ค์๊ฐ์ฑ ํ๋ณด ๋ฐ ์๋ฒ ๋ถํ ๋ถ์ฐ
- PostgreSQL(์ ํฉ์ฑ) + MongoDB(๋๋ ๋ก๊ทธ) โ ํ์ด๋ธ๋ฆฌ๋ ์ ์ฅ ์ ๋ต
- Kafka ์ด๋ฒคํธ ๋๋ฆฌ๋ธ ๊ตฌ์กฐ โ ์ฑํ ์ง์ฐ ๋ฌธ์ ํด๊ฒฐ
- Docker + AWS ECS, ALB, RDS, Route53 ์ธํ๋ผ
- ๋ถํ ํ ์คํธ ๊ฒฐ๊ณผ: p95 ์๋ต์๊ฐ 5์ด โ 8ms, ์คํจ์จ 47% โ 0%
๐ GitHub Repo | ์ญํ : ํ์ฅ
- Elasticsearch ๊ธฐ๋ฐ 50๋ง ๊ฑด ์์ ๋ฐ์ดํฐ ๋งค์นญ
- Redis ์บ์ฑ์ผ๋ก ์กฐํ ์๋ต์๋ 60%+ ๊ฐ์
- AOP + Logstash + Kibana โ ์ฌ์ฉ์ ๋ก๊ทธ ๋ถ์
- ์ข์์ยท์กฐํ์ ๊ฐ์ค์น ๊ธฐ๋ฐ ํธ๋ ๋ ์ถ์ฒ ๊ธฐ๋ฅ ๊ฐ๋ฐ
- AWS ECS, ALB, Route53, VPN ๊ธฐ๋ฐ ์ธํ๋ผ ์ค๊ณ
๐ GitHub Repo | ์ญํ : ํ์ฅ
- ๊ต๋ด ์ฅํ๊ธยท๊ณต์งยทํ๋ก๊ทธ๋จ ์ ๋ณด ํตํฉ ์ ๊ณต
- ํฌ๋กค๋ฌ ์ธํฐํ์ด์คํ โ ์ ๊ท ์ฌ์ดํธ ์ฝ๊ฒ ํ์ฅ
- Gemini API ํ์ฉ ๊ณต์ง ์์ฝ ๊ธฐ๋ฅ ์ถ๊ฐ
- ์ค์ ์ฌ์ฉ์ 100์ฌ ๋ช ํ๋ณด, ํ ํ๊ธฐ ์ด์
- ํ๋ฐฐ ๋ฉํ ๋ง/์ธ์์ธ๊ณ โ ์ง์ ๊ฐ๋ฅํ ๊ตฌ์กฐ ๋ง๋ จ
๐ GitHub Repo | ์ญํ : ํ์ฅ
- ์ ๋ ฅ๋ ์ํ ์ค๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ์ผ๋ก ์ ์ฌ ์ํ ์ถ์ฒ
- OpenSearch ๊ธฐ๋ฐ ๊ฐ์ค์น ๋ญํน (๋ฐฐ์ฐยท๊ฐ๋ ยท์ฐ๋ยท์์ ๋ฐ์)
- Flask NLP ์๋ฒ๋ก ์ค๊ฑฐ๋ฆฌ ์์ฝ/ํค์๋ ์ถ์ถ
- OAuth2 ์นด์นด์ค ๋ก๊ทธ์ธ + JWT ์ธ์ฆ/์ธ๊ฐ ๊ตฌ์กฐ
- CatBoost ๊ธฐ๋ฐ ์ถ์ฒ ์ฑ๋ฅ ๊ฒ์ฆ
- ๊ธฐ๋ฅ ๊ตฌํ์ ๋์ด ํ์ฅ์ฑ๊ณผ ์์ ์ฑ์ ๊ณ ๋ คํ ์ค๊ณ ์งํฅ
- ์ธํฐํ์ด์ค ๊ตฌ์กฐํ, ๋๊ธฐ/๋น๋๊ธฐ ๊ฒฝ๊ณ ๊ตฌ๋ถ, ์บ์ฑ ์ ๋ต ์ผ๊ด ์ ์ฉ
- ์์ผ๋ก ์ง์คํ ๋ถ๋ถ
- MSA ์ธํ๋ผ ์ค๊ณ ๋ฐ ์ด์
- Go, Kotlin ๊ธฐ๋ฐ ๋ฐฑ์๋ ์๋น์ค ๊ฐ๋ฐ
- ๋๊ท๋ชจ ํธ๋ํฝ ๋น๋๊ธฐ ์ฒ๋ฆฌ ํ๋ฆ ๊ณ ๋ํ


