๋ฉ”์ธ ์ปจํ…์ธ ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

์ตœ์ค€ํ˜ธ

Backend Engineer

๋ ˆ๊ฑฐ์‹œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜, AI/LLM ํ†ตํ•ฉ, ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ• ๊ฒฝํ—˜์„ ๋ณด์œ ํ•œ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.
Zero-downtime ์ „๋žต์œผ๋กœ ์•ˆ์ „ํ•œ ์‹œ์Šคํ…œ ์ „ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๊ณ ,
๋ณต์žกํ•œ ๊ธฐ์ˆ ์  ๋ฌธ์ œ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๋ถ„์„ํ•˜๊ณ  ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

โœจAI์™€ ๋Œ€ํ™”ํ•˜๋ฉฐ ์ด๋ ฅ ๋ณด๊ธฐ

Contact

Email: [email protected]
Phone: 010-7724-5336
GitHub: github.com/Choi-JJunho
Blog: velog.io/@junho5336

๊ฒฝ๋ ฅ

ํ•œ๊ตญ์‹ ์šฉ๋ฐ์ดํ„ฐ (KCD)

Backend Engineer

2025.01 ~ ํ˜„์žฌ

์ฃผ์š” ์„ฑ๊ณผ (2025.06 ~ 2025.11)

  • โšก VAT ๊ณ„์‚ฐ ์„ฑ๋Šฅ 97% ๊ฐœ์„  (19์‹œ๊ฐ„ โ†’ 30๋ถ„)
  • ๐Ÿ“Š ์ด์ƒ์น˜ ํƒ์ง€ False Positive 92.9% โ†’ ๋Œ€ํญ ๊ฐ์†Œ
  • ๐Ÿš€ 10๊ฐœ ์ฃผ์š” ํ”„๋กœ์ ํŠธ ์™„๋ฃŒ (50+ ๋ฐฐํฌ)
  • ๐Ÿ’ฏ 100K+ ๋ฐ์ดํ„ฐ ๋ฌด์ค‘๋‹จ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ (UUID ์ „ํ™˜)
  • ๐Ÿงช Mock ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ QA ์‹œ๊ฐ„ 60% ๋‹จ์ถ•
  • ๐Ÿ“ 271์ผ ์ƒ์„ธ ์ž‘์—… ๋กœ๊ทธ, 300+ ์ปค๋ฐ‹

๊ธฐ์ˆ  ์Šคํƒ

Backend & Framework

KotlinJavaSpring BootSpring WebFluxSpring Batch

Database & Messaging

PostgreSQLMySQLRedisKafka

AI/ML

LangfuseOpenTelemetrySpring AIRAG

DevOps & Infra

ArgoCDGitHub ActionsJenkinsNexusDocker

์ฃผ์š” ํ”„๋กœ์ ํŠธ

๋ถ€๊ฐ€์„ธ ์˜ˆ์ธก ์‹œ์Šคํ…œ

2025.06 ~ 2025.09 (4๊ฐœ์›”)

๋ถ€๊ฐ€์„ธ ์‹ ๊ณ  ์ „ ์˜ˆ์ƒ ์„ธ์•ก์„ ์ž๋™์œผ๋กœ ๊ณ„์‚ฐํ•˜์—ฌ ์ œ๊ณตํ•˜๋Š” ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ

ํ•ต์‹ฌ ์„ฑ๊ณผ

  • ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•: DB Sink Job์œผ๋กœ revenue/cost ๋ฐ์ดํ„ฐ ์ž๋™ ์ ์žฌ
  • ์˜ˆ์ธก ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„: ๊ณ ์ •๋น„/๋ณ€๋™๋น„ ๋ถ„๋ฅ˜ ๋ฐ N๊ฐœ์›” ์ถ”์ด ๋ถ„์„ ๋กœ์ง ๊ตฌํ˜„
  • ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ์ด์Šˆ ํ•ด๊ฒฐ: hometax_agency 90๋งŒ์› ์ฐจ์ด (month ๊ธฐ์ค€ ์กฐํšŒ๋กœ ๊ฐœ์„ )
  • ๋ฐฉ์–ด๋กœ์ง ๊ตฌํ˜„: 9์›” 31์ผ ์ด์Šˆ ํ•ด๊ฒฐ (LocalDate ๊ธฐ๋ฐ˜ ๋ฆฌํŒฉํ† ๋ง)
Spring BatchPostgreSQLJDBC TemplateDB Sink Job

์ˆ˜๊ธฐ์ž…๋ ฅ ์‹œ์Šคํ…œ ์ด๊ด€

2025.07 ~ 2025.09 (3๊ฐœ์›”)

Ruby on Rails ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์„ Kotlin/Spring MSA๋กœ ๋ฌด์ค‘๋‹จ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

ํ•ต์‹ฌ ์„ฑ๊ณผ

  • Dual Write ํŒจํ„ด ๊ตฌํ˜„: ์‹ ๊ทœ/๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ ๋™์‹œ ์ €์žฅ์œผ๋กœ ๋กค๋ฐฑ ๊ฐ€๋Šฅ ๊ตฌ์กฐ
  • Zero-downtime ๋‹ฌ์„ฑ: ์žฅ์•  0%, ๋ฐ์ดํ„ฐ ์†์‹ค 0%
  • ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ๊ฒ€์ฆ: ์ž๋™ํ™”๋œ ๊ฒ€์ฆ ์‹œ์Šคํ…œ ๊ตฌ์ถ•
  • JPA Optimistic Locking: ๋™์‹œ์„ฑ ์ œ์–ด ๋ฐ ๋ฒ„์ „ ์ถฉ๋Œ ์ฒ˜๋ฆฌ
KotlinSpring BootJPADual Write Pattern

์•Œ๋ฆผํ†ก ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ & ์‹œ์Šคํ…œ

2025.07 ~ 2025.11 (5๊ฐœ์›”)

๊ณตํ†ต ์•Œ๋ฆผํ†ก ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐœ๋ฐœ ๋ฐ ๋ฉ”์‹œ์ง€ ๋ฐœ์†ก ์‹œ์Šคํ…œ ๊ตฌ์ถ•

ํ•ต์‹ฌ ์„ฑ๊ณผ

  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋“ˆํ™”: engagement-libraries ์„ค๊ณ„ ๋ฐ Nexus ๋ฐฐํฌ ์ž๋™ํ™”
  • Kafka ํ†ตํ•ฉ: Event-Driven Architecture ๊ธฐ๋ฐ˜ produce/consume ๊ตฌํ˜„
  • ๋ชจ๋‹ˆํ„ฐ๋ง ์–ด๋“œ๋ฏผ: ๋ฐœ์†ก ๋‚ด์—ญ ์ถ”์  ๋ฐ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ
  • ๋‹ค์–‘ํ•œ ์•Œ๋ฆผํ†ก ๊ตฌํ˜„: ๋ถ€๊ฐ€์„ธ, ์ฃผ๊ฐ„/์›”๊ฐ„ ๋ฆฌํฌํŠธ, ์ด์ƒ์น˜ ํƒ์ง€ ์•Œ๋ฆผ
KotlinKafkaNexusGitHub Actions

AI ๋น„์„œ ์„œ๋น„์Šค (chat-assistant)

2025.06 ~ 2025.09 (4๊ฐœ์›”)

LLM ๊ธฐ๋ฐ˜ AI ๋น„์„œ ์„œ๋น„์Šค ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ๋ฐ ์ธํ”„๋ผ ๊ตฌ์ถ•

ํ•ต์‹ฌ ์„ฑ๊ณผ

  • Coroutine ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ: WebClient + Coroutine์œผ๋กœ ๋ฆฌ์†Œ์Šค ํšจ์œจ์„ฑ ํ–ฅ์ƒ
  • ์–ด๋“œ๋ฏผ ์‹œ์Šคํ…œ ๊ตฌ์ถ•: ํ›„ํ‰๊ฐ€, ์ถ”์ฒœ์งˆ๋ฌธ, ํ”„๋กœ๋ชจ์…˜ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
  • ArgoCD/PagerDuty ์ธํ”„๋ผ: ๋ฐฐํฌ ์ž๋™ํ™” ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง ์ฒด๊ณ„ ๊ตฌ์ถ•
  • Langfuse ํ†ตํ•ฉ: AI ์‚ฌ์šฉ๋Ÿ‰ ๋ฐ ๋น„์šฉ ์ถ”์  ์‹œ์Šคํ…œ (์ง„ํ–‰ ์ค‘)
Spring WebFluxKotlin CoroutineArgoCDLangfuse