Skip to content
View kim946509's full-sized avatar

Block or report kim946509

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please donโ€™t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this userโ€™s behavior. Learn more about reporting abuse.

Report abuse
kim946509/README.md

๊น€๋Œ€์—ฐ Kim Dae yeon ๐Ÿ‘‹

"๋ฐ์ดํ„ฐ ์ฆ๊ฐ€๋กœ ์ธํ•œ ์„ฑ๋Šฅยท์•ˆ์ •์„ฑ ๋ฌธ์ œ๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ๋ถ„์„ํ•˜๊ณ  ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค."
์‹คํ–‰ ๊ณ„ํš ๋ถ„์„์„ ํ†ตํ•œ ์ฟผ๋ฆฌ ์ตœ์ ํ™”, ๋™์‹œ์„ฑ ์ œ์–ด, ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์„ ์„ ํ†ตํ•ด ๋” ๋‚˜์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

Java Spring Boot Spring Security JPA React Next.js PostgreSQL MySQL Redis AWS Docker Kafka Git

๐Ÿš€ Core Competencies

  • Performance Optimization
    ์‹คํ–‰ ๊ณ„ํšยท์ธ๋ฑ์Šค ๋ถ„์„์„ ํ†ตํ•ด ์กฐํšŒ ์„ฑ๋Šฅ 60~78% ๊ฐœ์„ 

  • Concurrency Control
    ๋น„๊ด€์  ๋ฝ๊ณผ ์ƒํƒœ ์ „์ด ๊ฒ€์ฆ์œผ๋กœ ๋™์‹œ์„ฑ ์˜ค๋ฅ˜ 0% ๋‹ฌ์„ฑ

  • System Architecture
    ๋ชจ๋“ˆ ๋ถ„๋ฆฌยทMSA ์„ค๊ณ„๋กœ ์žฅ์•  ์ „ํŒŒ ์ฐจ๋‹จ

  • DevOps & Automation
    CI/CDยท๋ชจ๋‹ˆํ„ฐ๋ง ์ž๋™ํ™”๋กœ ์šด์˜ ์•ˆ์ •์„ฑ ๊ฐ•ํ™”


๐Ÿ“‚ Featured Projects

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% ๊ฐœ์„ )
  • ์šด์˜์ž๊ฐ€ ์ฆ‰์‹œ ๋Œ€์‘ ๊ฐ€๋Šฅํ•œ ์•ˆ์ •์ ์ธ ์ˆ˜์ง‘ ์‹œ์Šคํ…œ ๊ตฌ์ถ•

Pinned Loading

  1. mindrhythms mindrhythms Public

    kangmin app fork

    Dart

  2. prompt_ev prompt_ev Public

    prompt evaluation

    HTML

  3. sparta-MOIM/MOIM-Server sparta-MOIM/MOIM-Server Public

    ๐Ÿง ๋Œ€๊ทœ๋ชจ ๋ชจ์ž„๊ด€๋ฆฌ ์„œ๋น„์Šค

    Java 2 5

  4. UDR-Sequence/sequence-backend UDR-Sequence/sequence-backend Public

    Java 1 2