"๋ฐ์ดํฐ ์ฆ๊ฐ๋ก ์ธํ ์ฑ๋ฅยท์์ ์ฑ ๋ฌธ์ ๋ฅผ ๊ตฌ์กฐ์ ์ผ๋ก ๋ถ์ํ๊ณ ํด๊ฒฐํฉ๋๋ค."
์คํ ๊ณํ ๋ถ์์ ํตํ ์ฟผ๋ฆฌ ์ต์ ํ, ๋์์ฑ ์ ์ด, ์ํคํ ์ฒ ๊ฐ์ ์ ํตํด ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ง๋ญ๋๋ค.
-
Performance Optimization
์คํ ๊ณํยท์ธ๋ฑ์ค ๋ถ์์ ํตํด ์กฐํ ์ฑ๋ฅ 60~78% ๊ฐ์ -
Concurrency Control
๋น๊ด์ ๋ฝ๊ณผ ์ํ ์ ์ด ๊ฒ์ฆ์ผ๋ก ๋์์ฑ ์ค๋ฅ 0% ๋ฌ์ฑ -
System Architecture
๋ชจ๋ ๋ถ๋ฆฌยทMSA ์ค๊ณ๋ก ์ฅ์ ์ ํ ์ฐจ๋จ -
DevOps & Automation
CI/CDยท๋ชจ๋ํฐ๋ง ์๋ํ๋ก ์ด์ ์์ ์ฑ ๊ฐํ
StayOneKorea โ ์์น ๊ฒ์ยท๊ฒฐ์ ๋์์ฑ ๊ฐ์
- ๊ธฐ๊ฐ: 2025.10 ~ 2025.12
- ์ญํ : ํ์คํ ์์ง๋์ด (ํ์ฅ)
- Tech Stack: Spring Boot, PostgreSQL(PostGIS), Next.js, Cloudflare R2
์ธ๊ตญ์ธ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ๊ณ ์์ยท๋จ๊ธฐ ์๋ฐ์ ์ฐ๊ฒฐํ๋ ์์น ๊ธฐ๋ฐ ์๋ฐ ํ๋ซํผ์
๋๋ค.
๊ฒ์๊ณผ ๊ฒฐ์ ๋ ์ฌ์ฉ์์ ์ฒซ ์ดํ ์ง์ ์ด ๋ ์ ์๋ ํต์ฌ ํ๋ฆ์ผ๋ก, ๋ฐ์ดํฐ ์ฆ๊ฐ์ ๋ฐ๋ฅธ ์ฑ๋ฅ ์ ํ์ ๋น๋๊ธฐ ๊ฒฐ์ ์ฒ๋ฆฌ์ ์์ ์ฑ ํ๋ณด๊ฐ ์ฃผ์ ๊ณผ์ ์์ต๋๋ค.
- ์ขํ ๊ธฐ๋ฐ ๊ฑฐ๋ฆฌ ๊ณ์ฐ์ ๋งค ์์ฒญ๋ง๋ค ์ํํ๋ฉด์ ๊ณต๊ฐ ์ธ๋ฑ์ค๊ฐ ํ์ฉ๋์ง ์์ ๊ฒ์ ์๋ต ์ง์ฐ
DISTINCT์ฌ์ฉ์ผ๋ก ์ธํ ๋์คํฌ ์คํ๊ณผ Full Scan ๋ฐ์- ๊ฒฐ์ ์๋ฃ(Paid)ยท์ทจ์(Cancelled) ์นํ ์ด ๋น๋๊ธฐ์ ์ผ๋ก ๋์ฐฉํ๋ฉฐ Race Condition ๋ฐ์
- ๋์ผ ๊ฒฐ์ ๊ฑด์ ์ํ๊ฐ ์๋ชป ๋ฎ์ด์จ์ง๋ ์น๋ช ์ ์ธ ๋ฐ์ดํฐ ์ ํฉ์ฑ ๋ฌธ์ ์กด์ฌ
- ์ขํ ์ปฌ๋ผ์
geometry(Point, 4326)ํ์ ์ผ๋ก ๋ณ๊ฒฝํ๊ณ GIST ๊ณต๊ฐ ์ธ๋ฑ์ค ์ ์ฉ ST_DWithin๊ธฐ๋ฐ ๊ฒ์์ผ๋ก ์ธ๋ฑ์ค ํ์ฉ๋๋ฅผ ๊ทน๋ํํ๊ณ ๋ถํ์ํ DISTINCT ์ ๊ฑฐ- ๊ฒฐ์ ์กฐํ ๋จ๊ณ์ ๋น๊ด์ ๋ฝ(Pessimistic Lock) ์ ์ฉ์ผ๋ก ํธ๋์ญ์ ์์ฐจ ์ฒ๋ฆฌ
- ์ํ ์ ์ด ๊ฒ์ฆ ๋ก์ง์ ์ถ๊ฐํด ์ฌ๋ฐ๋ฅด์ง ์์ ์ํ ๋ณ๊ฒฝ์ ๊ตฌ์กฐ์ ์ผ๋ก ์ฐจ๋จ
- ์์น ๊ฒ์ ์ฑ๋ฅ 1.8s โ 0.4s (78% ๊ฐ์ )
- ๊ฒ์ ์ฒ๋ฆฌ๋ 3.4๋ฐฐ ํฅ์
- ๊ฒฐ์ ๋์์ฑ ์ค๋ฅ์จ 10% โ 0%
- ์ค์ฌ์ฉ ํ๊ฒฝ์์๋ ๊ฒฐ์ ยท๊ฒ์ ํ๋ฆ์ ์์ ์ฑ ํ๋ณด
ํ์ฐจ์ฒ๊ตญ โ ์กฐํ ์๋ต ๊ฐ์ ยท๋ฐ์ดํฐ ๋ชจ๋ธ ๊ณ ๋ํ
- ๊ธฐ๊ฐ: 2025.08 ~ 2026.01
- ์ญํ : ํ์คํ ์์ง๋์ด
- Tech Stack: Spring Boot, MySQL, Caffeine Cache, Algolia
์๋น ์ฐฝ์
์๋ฅผ ์ํ ๋ง์ถคํ ํ๋์ฐจ์ด์ฆ ์ถ์ฒ ํ๋ซํผ์
๋๋ค.
์ถ์ฒ ์ ํ๋๋ฅผ ๋์ด๊ธฐ ์ํด ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ๋ณต์กํด์ง๋ฉด์ ์กฐํ ์ฑ๋ฅ ์ ํ์ ์ ์ง๋ณด์ ๋น์ฉ ์ฆ๊ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
- 3๋ฐฐ์ ๊ตฌ์กฐ์ ํ ์ด๋ธ์ด ์ต๋ 33๊ฐ๊น์ง ํ์ฅ๋๋ฉฐ ์ค๋ณต ์กฐ์ธ๊ณผ ๋ณต์กํ ์กฐํ ๋ก์ง ๋ฐ์
- ์ฐ์ ์์ ๊ณ์ฐ์ ์กฐํ ์์ ์ ์ํํด ์์ฒญ๋ง๋ค ์ฐ์ฐ ๋น์ฉ ์ฆ๊ฐ
- ์ถ์ฒ ๋ธ๋๋ API ํธ์ถ ์ ๋ฐ๋ณต์ ์ธ DB I/O๋ก ํ๊ท ์๋ต ์๊ฐ 3.8์ด
- ์ํฐํฐ ์บ์ฑ ๊ตฌ์กฐ์์
LazyInitializationException๋ฑ ๋์์ฑ ์ด์ ๋ฐ์
- 15๊ฐ ํ ์ด๋ธ์ 4๊ฐ๋ก ํตํฉํ๋ ์ญ์ ๊ทํ ๋ชจ๋ธ ์ค๊ณ
- ์ฐ์ ์์ ๊ณ์ฐ์ ์กฐํ ์์ ์ด ์๋ **์ ์ฅ ์์ (Write-Time)**์ผ๋ก ์ด๋
- ์ถ์ฒ ๊ฒฐ๊ณผ๋ฅผ Caffeine Local Cache + DTO ๊ธฐ๋ฐ ์บ์ฑ ๊ตฌ์กฐ๋ก ์ฌ์ค๊ณ
- ์บ์์ ์กฐํ ์ฑ ์์ ๋ถ๋ฆฌํด ๋์์ฑ ๋ฌธ์ ์ ๊ฑฐ
- ์ถ์ฒ API ์๋ต ์๋ 3.8s โ 37ms
- ์ผ๋ฐ ์กฐํ ์๋ต 900ms โ 300ms (3๋ฐฐ ๊ฐ์ )
- ์ ์ง๋ณด์ ์์ ๋ 67% ์ ๊ฐ
- ์ถ์ฒ ํธ๋ํฝ ์ฆ๊ฐ ์ํฉ์์๋ ์์ ์ ์ธ ์๋ต ์ฑ๋ฅ ํ๋ณด
MOIM โ ๋์ฉ๋ ์๋ฆผ ์์คํ
- ๊ธฐ๊ฐ: 2025.04 ~ 2025.05
- ์ญํ : ๋ฐฑ์๋ ์์ง๋์ด
- Tech Stack: Spring Boot, Kafka, MongoDB, Redis
๋ชจ์ ์์ฑยท์ฐธ์ฌยท์๋ฆผ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ปค๋ฎค๋์ผ์ด์
ํ๋ซํผ์
๋๋ค.
์๋ฆผ ํธ๋ํฝ์ด ๊ธ๊ฒฉํ ์ฆ๊ฐํ๋ฉด์ ์ ์ฅยท์ญ์ ยท์กฐํ ์ ๋ฐ์์ ์ฑ๋ฅ ๋ณ๋ชฉ์ด ๋ฐ์ํ์ต๋๋ค.
- JPA
saveAll()๊ธฐ๋ฐ ๋จ๊ฑด INSERT ๋ฐ๋ณต์ผ๋ก ์๋ฆผ ์ ์ฅ TPS ์ ํ - ๋๋ ์๋ฆผ ์ญ์ ์ DELETE ์ฟผ๋ฆฌ๋ก ์ธํ ๋ฝ ๋๊ธฐ ๋ฐ์
- ์กฐํ ์ ๋ถํ์ํ ๋ฒ์ ์ค์บ์ผ๋ก ์๋ต ์ง์ฐ
- ์๋ฆผ ์ ์ฅ์ JDBC Batch Insert ๊ธฐ๋ฐ์ผ๋ก ์ ํํด ํธ๋์ญ์ ์ค๋ฒํค๋ ์ ๊ฑฐ
- ์ฃผ ๋จ์ Range Partitioning ์ ์ฉ ํ
DROP PARTITION๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ์ญ์ - ํํฐ์ ํ๋ฃจ๋์ ํ์ฉํด ์กฐํ ๋ฒ์ ์ต์ํ
- ์๋ฆผ ์ ์ฅ TPS 0.9 โ 25 (25๋ฐฐ ํฅ์)
- ๋ฐ์ดํฐ ์ญ์ ์๋ 14๋ฐฐ ๊ฐ์
- ์กฐํ ์ฑ๋ฅ 6.5๋ฐฐ ํฅ์
- ๋๊ท๋ชจ ์๋ฆผ ํธ๋ํฝ์์๋ ์์ ์ ์ธ ์์คํ ๊ตฌ์กฐ ํ๋ณด
Unearth โ ๋ฐฑ์คํผ์ค ๊ตฌ์ถ ๋ฐ ๋ฐ์ดํฐ์์ง ์์ ํ (์ธํด)
- ๊ธฐ๊ฐ: 2025.07
- ์ญํ : ๋ฐฑ์๋ ๊ฐ๋ฐ์
- Tech Stack: Django, Spring Boot, MySQL
์์ ๋ฐ์ดํฐ๋ฅผ ์์งยท๋ถ์ํ๋ B2B ๋ฐฑ์คํผ์ค ์์คํ
์
๋๋ค.
๋ฐ์ดํฐ ์์ง ์คํจ๊ฐ ์ฆ์์ผ๋ ์ฆ์ ์ธ์ง๋์ง ์์ ์ด์ ๋์์ด ์ง์ฐ๋๋ ๊ตฌ์กฐ์ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
- ๋ฐ์ดํฐ ์์ง ์คํจ ๋ฐ์ ์ ์ด์์๊ฐ ์์๊ฐ ํ์ ์ธ์ง
- ์คํจ ์์ธ ์ถ์ ์ด ์ด๋ ค์ ์ฌ๋ฐ ๋ฐฉ์ง์ ํ๊ณ
- ๋ฃจํ ๊ธฐ๋ฐ ๋ฐ๋ณต ์กฐํ๋ก ์ธํ N+1 ๋ฌธ์ ๋ฐ์
- ์คํจ ๋ก๊ทธ ํ ์ด๋ธ ์ค๊ณ ๋ฐ ์๋ ์ฌ์๋ ๋ก์ง ๊ตฌํ
- Slack Webhook ๊ธฐ๋ฐ ์ค์๊ฐ ์ฅ์ ์๋ฆผ ์ฒด๊ณ ๊ตฌ์ถ
- Fetch Join ๋ฐ ์ผ๊ด ์กฐํ ๊ตฌ์กฐ๋ก ์กฐํ ๋ก์ง ๊ฐ์
- Django ํฌ๋กค๋ฌ์ Spring Boot ๋ฐฑ์คํผ์ค๋ฅผ ๋ถ๋ฆฌํด ์ฅ์ ์ํฅ ๋ฒ์ ์ต์ํ
- ํฌ๋กค๋ง ์คํจ์จ 40% โ 8%
- ์ฅ์ ๋์ ์๊ฐ 3์๊ฐ โ 20๋ถ
- ์กฐํ ์ฑ๋ฅ 500ms โ 200ms (60% ๊ฐ์ )
- ์ด์์๊ฐ ์ฆ์ ๋์ ๊ฐ๋ฅํ ์์ ์ ์ธ ์์ง ์์คํ ๊ตฌ์ถ




