- ๊ฐํจ๋ฆญ๋ํ๊ต ์ปดํจํฐ๊ณตํ/์ค๊ตญ์ธ์ด๋ฌธํํ๊ณผ (2025.08 ์กธ์ , ์ ๊ณต ํ์ 4.0)
- ํ๋์ํ ๊ธ์ต ์๋น์ค ๊ฐ๋ฐ ๋ถํธ์บ ํ ์ฐ์ ์๋ฃ (2024.08 - 2025.02)
- ๊ตฌ๋ฆ ํ๋กํํธ ํด๋ผ์ฐ๋ ์์ง๋์ด๋ง (2025.07 - 2025.09)
- ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ (2023)
Backend + DevOps | EKS, Kinesis, Kinesis Data Analytics, Loki, Grafana
ํ๋ก์ ํธ ์์ธ๋ณด๊ธฐ
โจ ๊ฐ๋ฐ ์์ฐ์ฑ 300% ํฅ์: ์ปค์คํ
๋ก๊น
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ ๋
ธํ
์ด์
ํ๋๋ก ๋ก๊ทธ ๋ถ๋ฅ ์๋ํ
๐ ๋ถ์ฐ ์ถ์ : 7๊ฐ MSA์์ Request ID ํ๋๋ก ์ ์ฒด ์ถ์ ๊ฐ๋ฅ โ ๋๋ฒ๊น
์๊ฐ 80% ๋จ์ถ
๐ ํตํฉ ๋ชจ๋ํฐ๋ง: Prometheus + Loki + Grafana ์คํ ๊ตฌ์ถ โ ์ฅ์ ๋์ 70% ๋จ์ถ
- ์ปค์คํ
๋ก๊น
๋ผ์ด๋ธ๋ฌ๋ฆฌ: AOP ๊ธฐ๋ฐ ๋๋ฉ์ธ๋ณ ์๋ ๋ก๊ทธ ๋ถ๋ฅ (
@StatefulLog,@StatelessLog,@RecommendationLog) - ๋ถ์ฐ ์ถ์ ์์คํ : MDC + Filter๋ก 16์๋ฆฌ Request ID ์์ฑ/์ ํ, Kafka ํค๋ ์ ํ๋ก ๋น๋๊ธฐ ์ฒ๋ฆฌ ์ถ์
- ์ค์๊ฐ ๋ก๊ทธ ํ์ดํ๋ผ์ธ: Fluent Bit โ Kinesis (3๊ฐ ํ์ ๋ณ ์คํธ๋ฆผ) โ Kinesis Data Analytics ๋์ผ ์คํธ๋ฆผ ์ฒ๋ฆฌ
- ํตํฉ ๋ชจ๋ํฐ๋ง: Helm Chart ๊ธฐ๋ฐ Loki/Prometheus/Grafana ํ์คํ ๋ฐฐํฌ, Alert Manager SNS ์ฐ๋
Infrastructure Design & DevOps | AWS ECS, GitHub Actions
ํ๋ก์ ํธ ์์ธ๋ณด๊ธฐ
๐ข ๋ฐฐํฌ ์๊ฐ 58% ๋จ์ถ (1์๊ฐโ25๋ถ): Git diff ๋ณ๊ฒฝ ๊ฐ์ง + Matrix ๋ณ๋ ฌ ๋ฐฐํฌ
๐ ๋ฌด์ค๋จ ๋ฐฐํฌ: ECS Blue/Green ์ ํ + ์๋ ๋กค๋ฐฑ
๐ฆ ์ค๋ณต ์ฝ๋ 80% ์ ๊ฑฐ: auto-time/auto-response ๊ณตํต ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- CI/CD ์๋ํ: GitHub Actions Git diff๋ก ๋ณ๊ฒฝ ์๋น์ค๋ง ์๋ ๊ฐ์ง, Matrix ๋ณ๋ ฌ ๋ฐฐํฌ๋ก ์๊ฐ ๋จ์ถ
- ๋ฌด์ค๋จ ๋ฐฐํฌ: ECS Blue/Green ์ ํ, ํฌ์ค์ฒดํฌ ์คํจ ์ ์๋ ๋กค๋ฐฑ
- ํ๊ฒฝ๋ณ ์ค์ ๊ด๋ฆฌ: AWS Secrets Manager + Spring Profile๋ก local/dev/prod ํ๊ฒฝ ๋ถ๋ฆฌ
Backend Architecture | JPA, Redis, PostgreSQL
ํ๋ก์ ํธ ์์ธ๋ณด๊ธฐ
โ
ํด๋จผ ์๋ฌ 100% ์ ๊ฑฐ: JPA Entity Listener๋ก TimeData ์๋ ๊ด๋ฆฌ (์ฃผ 23๊ฑดโ0๊ฑด)
โก ์๋ต์๊ฐ 90% ๊ฐ์ (200msโ20ms): Redis Cache-Aside ํจํด
๐๏ธ ๊ฐ๋ฐ ์๊ฐ 82% ๋จ์ถ: ๋ฒ์ฉ Repository๋ก ์ํฐํฐ ๊ฐ๋ฐ 45๋ถโ8๋ถ
- JPA Entity Listener ์๋ํ: UUID ๊ธฐ๋ฐ TimeData ์ค์ ๊ด๋ฆฌ,
@PrePersist/@PreUpdate๋ก ์์ฑ/์์ ์๊ฐ ์๋ ์ค์ - ๋ฒ์ฉ Repository: Reflection ๊ธฐ๋ฐ ๋์ ์ฟผ๋ฆฌ, JOIN FETCH๋ก N+1 ๋ฐฉ์ง, ์ํํธ ์ญ์ ์๋ํ
- ์ฑ๋ฅ ์ต์ ํ: Redis Cache-Aside ํจํด์ผ๋ก ์ฅ๋ฐ๊ตฌ๋ DB ๋ถํ 90% ๊ฐ์
AI Recommendation System | KB-ALBERT, Redis Vector Search, Claude API
ํ๋ก์ ํธ ์์ธ๋ณด๊ธฐ
๐ค ์ถ์ฒ ์ ํ๋ ํฅ์: KB-ALBERT ๊ธ์ต ํนํ ๋ชจ๋ธ + ํ์ด๋ธ๋ฆฌ๋ ์ถ์ฒ (์ปจํ
์ธ 70% + ํ์
ํํฐ๋ง 30%)
๐ ์ฉ์ด ์ ๊ทผ์ฑ ๊ฐ์ : BERT ๊ธฐ๋ฐ ์ด๋ ค์ด ์ฉ์ด ์๋ ์ถ์ถ + Claude API ์ค์๊ฐ ์ค๋ช
โก ์๋ต ์๋ ๊ฐ์ : Redis Vector Search๋ก 1์ด ์ด๋ด ์ถ์ฒ, Redis ์บ์ฑ์ผ๋ก DB ๋ถํ 90% ๊ฐ์
- KB-ALBERT ๋ฒกํฐ ๊ฒ์: Redis Stack HNSW ์ธ๋ฑ์ค ๊ธฐ๋ฐ ์ ์ฌ๋ ๊ฒ์, ์ปจํ ์ธ ๊ธฐ๋ฐ + ํ์ ํํฐ๋ง ํ์ด๋ธ๋ฆฌ๋
- ์ด๋ ค์ด ์ฉ์ด ์ถ์ถ: BERT ๋ฌธ๋งฅ ๋ถ์(70%) + Korpora ๋น๋ ๋ถ์(30%) ํ์ด๋ธ๋ฆฌ๋
Backend | Spring Boot, MySQL, WebSocket
ํ๋ก์ ํธ ์์ธ๋ณด๊ธฐ
๐ฌ FAQ ์ถ์ฒ ์์คํ
: TF-IDF + ์ฝ์ฌ์ธ ์ ์ฌ๋๋ก ์ ์ฌ ์ง๋ฌธ ์๋ ์ถ์ฒ
๐ ์ค์๊ฐ ๋๊ธฐํ: WebSocket ๊ธฐ๋ฐ ๋๋ฉด์๋ด ๋ฒํธํ ์ค์๊ฐ ์
๋ฐ์ดํธ
- FAQ ์ถ์ฒ ์๊ณ ๋ฆฌ์ฆ: TF-IDF ๋ฒกํฐํ + ์ฝ์ฌ์ธ ์ ์ฌ๋๋ก ๊ธฐ์กด FAQ ์ค ์ ์ฌํ ๋ต๋ณ ์๋ ์ถ์ฒ
- ์ค์๊ฐ ๋ฒํธํ ์์คํ : WebSocket์ ํ์ฉํ ๋๋ฉด์๋ด ๋ฒํธํ ์ค์๊ฐ ๋๊ธฐํ

