Skip to content
View JaeHyun-Ban's full-sized avatar

Block or report JaeHyun-Ban

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.

Content in all repositories owned by your account will be closed.
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
JaeHyun-Ban/README.md

Get in Touch

Linkedin Badge


๐Ÿ›  Tech Stack

Java HTML5 JavaScript Spring Spring Boot Microsoft SQL Server Oracle Windows Server


๐Ÿš€ Side Projects

์ƒํ’ˆ ์กฐํšŒ๋ถ€ํ„ฐ ์žฅ๋ฐ”๊ตฌ๋‹ˆ, ์ฃผ๋ฌธยท๊ฒฐ์ œ, ์ฟ ํฐ ๋ฐœ๊ธ‰๊นŒ์ง€ ๊ตฌํ˜„ํ•œ ์ด์ปค๋จธ์Šค ๋ฐฑ์—”๋“œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.
๋‹จ์ˆœํ•œ API ๊ตฌํ˜„์„ ๋„˜์–ด, ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ์ฃผ๋ฌธํ•˜๊ฑฐ๋‚˜ ์ฟ ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ, ๋™์‹œ์„ฑ, ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜ ๋ฐ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ์ค‘์ ์ ์œผ๋กœ ๋‹ค๋ค˜์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ์ˆ ์  ๊ณ ๋ฏผ๊ณผ ํ•ด๊ฒฐ

  • ๋™์‹œ์„ฑ ์ œ์–ด ์ „๋žต

    • ์„ ์ฐฉ์ˆœ ์ฟ ํฐ ๋ฐœ๊ธ‰์—๋Š” Redisson ๋ถ„์‚ฐ ๋ฝ
    • ์ž”์•ก๊ณผ ์ฃผ๋ฌธ๋ฒˆํ˜ธ์—๋Š” ์ •ํ•ฉ์„ฑ์„ ์šฐ์„ ํ•œ ๋น„๊ด€์  ๋ฝ
    • ์ƒํ’ˆ ์žฌ๊ณ ์—๋Š” ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•œ ๋‚™๊ด€์  ๋ฝ + ์žฌ์‹œ๋„
    • ๋ฐ์ดํ„ฐ์˜ ์ค‘์š”๋„์™€ ์ถฉ๋Œ ๊ฐ€๋Šฅ์„ฑ์— ๋”ฐ๋ผ ์„œ๋กœ ๋‹ค๋ฅธ ์ž ๊ธˆ ๋ฐฉ์‹์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ฃผ๋ฌธ ๊ณผ์ •์˜ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ

    • ์ฃผ๋ฌธยท์žฌ๊ณ ยท์ž”์•กยท์ฟ ํฐ ์ฒ˜๋ฆฌ๋ฅผ ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ๋กœ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
    • Saga Choreography์™€ ๋ณด์ƒ ํŠธ๋žœ์žญ์…˜์„ ์ ์šฉํ•ด ์ค‘๊ฐ„ ๋‹จ๊ณ„ ์‹คํŒจ ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๋„๋ก ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ๋ฉฑ๋“ฑ์„ฑ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ์ค‘๋ณต ์ฃผ๋ฌธ๊ณผ ์ค‘๋ณต ๊ฒฐ์ œ๋ฅผ ๋ฐฉ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์กฐํšŒ ์„ฑ๋Šฅ ๊ฐœ์„ 

    • Redis ์บ์‹œ, DB ์ธ๋ฑ์Šค ๋ฐ EntityGraph๋ฅผ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
    • N+1 ๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐํ•ด ์กฐํšŒ ์ฟผ๋ฆฌ๋ฅผ 21ํšŒ โ†’ 1ํšŒ๋กœ ์ค„์˜€์Šต๋‹ˆ๋‹ค.
    • ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ธฐ์ค€ ์ „์ฒด ์ฒ˜๋ฆฌ๋Ÿ‰์„ 60 TPS โ†’ 600 TPS๋กœ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ ๋ฐ ์„ฑ๋Šฅ ๊ฒ€์ฆ

    • Testcontainers ๊ธฐ๋ฐ˜์œผ๋กœ ์‹ค์ œ MySQLยทRedis ํ™˜๊ฒฝ์—์„œ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • JMeter์™€ k6๋กœ ์ฟ ํฐ ๋ฐœ๊ธ‰, ์ฃผ๋ฌธ ์ƒ์„ฑ ๋ฐ ์ƒํ’ˆ ์กฐํšŒ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ฒ€์ฆํ–ˆ์Šต๋‹ˆ๋‹ค.
    • 1,000๋ช…์˜ ๋™์‹œ ์š”์ฒญ์—์„œ๋„ ํ•œ์ •๋œ ์ฟ ํฐ 100๊ฐœ๋งŒ ๋ฐœ๊ธ‰๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

Tech Stack

Java Spring Boot Spring Data JPA MySQL Redis Gradle Docker JUnit5 Apache JMeter k6

์ด๋ ฅ์„œ์™€ ์ฑ„์šฉ๊ณต๊ณ ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์ง€์›์ž์˜ ์ง๋ฌด ์ ํ•ฉ๋„์™€ ๋ณด์™„์ ์„ ์ œ๊ณตํ•˜๋Š” AI ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค
Team Project ยท Backend Developer

PDF ์ด๋ ฅ์„œ์™€ URLยทํ…์ŠคํŠธยท์ด๋ฏธ์ง€ ํ˜•ํƒœ์˜ ์ฑ„์šฉ๊ณต๊ณ ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ ,
Gemini๋ฅผ ํ™œ์šฉํ•ด ์ฑ„์šฉ ์š”๊ฑด๋ณ„ ์ถฉ์กฑ๋„์™€ ์ด๋ ฅ์„œ ๊ฐœ์„  ๋ฐฉํ–ฅ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

๋‹ด๋‹น ์˜์—ญ

  • Spring Boot ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ๊ตฌ์กฐ์™€ ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์„ฑ
  • ๊ณตํ†ต API ์‘๋‹ต, ์˜ค๋ฅ˜ ์ฝ”๋“œ, ์‚ฌ์šฉ์ž ์ •์˜ ์˜ˆ์™ธ ๋ฐ ์ „์—ญ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ตฌํ˜„
  • Gemini ๊ธฐ๋ฐ˜ ์ด๋ ฅ์„œโ€“์ฑ„์šฉ๊ณต๊ณ  ๋ถ„์„ ๋ฐ ์žฌ๋ถ„์„ API ๊ตฌํ˜„
  • PDF ์ด๋ ฅ์„œ ํ…์ŠคํŠธ ์ถ”์ถœ ๋ฐ ์œ ํšจ์„ฑ ๊ฒ€์ฆ
  • URL ํฌ๋กค๋ง, ์ง์ ‘ ์ž…๋ ฅ ํ…์ŠคํŠธ, ๊ณต๊ณ  ์ด๋ฏธ์ง€ OCR์„ ์ง€์›ํ•˜๋Š” ์ž…๋ ฅ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌํ˜„
  • ๋ถ„์„ ๊ฒฐ๊ณผ์™€ ์ฑ„์šฉ ์š”๊ฑด๋ณ„ ํ‰๊ฐ€๋ฅผ JPA ์—”ํ‹ฐํ‹ฐ๋กœ ์„ค๊ณ„ํ•˜๊ณ  MySQL์— ์ €์žฅ
  • JUnit 5์™€ Mockito๋ฅผ ํ™œ์šฉํ•œ ๋ถ„์„ ์„œ๋น„์Šค ๋ฐ ์˜ˆ์™ธ ์ƒํ™ฉ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ

์ฃผ์š” ๊ธฐ์ˆ ์  ๊ณ ๋ฏผ๊ณผ ํ•ด๊ฒฐ

  • ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ์ฑ„์šฉ๊ณต๊ณ  ์ž…๋ ฅ ์ฒ˜๋ฆฌ

    • ์ฑ„์šฉ๊ณต๊ณ ๋ฅผ URL, ์ง์ ‘ ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • URL ํฌ๋กค๋ง์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์›๋ฌธ์„ ์šฐ์„  ์‚ฌ์šฉํ•˜๋Š” fallback ์ „๋žต์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
    • Gemini OCR๋กœ ์ด๋ฏธ์ง€์˜ ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•˜๊ณ  URLยทํ…์ŠคํŠธ ๊ฒฐ๊ณผ์™€ ๋ณ‘ํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ๋™์ผํ•œ ๊ณต๊ณ  ๋‚ด์šฉ์ด ์ค‘๋ณต ์ €์žฅ๋˜์ง€ ์•Š๋„๋ก ํ”„๋กฌํ”„ํŠธ์™€ ๋ณ‘ํ•ฉ ๋กœ์ง์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • LLM ์‘๋‹ต์˜ ๋ถˆํ™•์‹ค์„ฑ ์ œ์–ด

    • Gemini์˜ response_schema๋ฅผ ์‚ฌ์šฉํ•ด ์‘๋‹ต์„ ์ •ํ•ด์ง„ JSON ๊ตฌ์กฐ๋กœ ์ œํ•œํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ํšŒ์‚ฌ๋ช…, ํฌ์ง€์…˜, ์ฑ„์šฉ ์š”๊ฑด, ์ถฉ์กฑ ์ƒํƒœ์™€ ํ”ผ๋“œ๋ฐฑ์„ DTO๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ๊ฒ€์ฆํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ๋ˆ„๋ฝ๋˜๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ์‘๋‹ต์€ ๊ณตํ†ต ์˜ˆ์™ธ๋กœ ์ฒ˜๋ฆฌํ•ด ๋น„์ •์ƒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹จ๊ณ„๋ณ„ AI ๋ถ„์„ ํŒŒ์ดํ”„๋ผ์ธ ์„ค๊ณ„

    • ์ด๋ ฅ์„œ ์ •๋ฆฌ โ†’ ์ฑ„์šฉ๊ณต๊ณ  ๊ตฌ์กฐํ™” โ†’ ์š”๊ฑด๋ณ„ ์ ํ•ฉ๋„ ๋ถ„์„ โ†’ ๊ฐœ์„  ์šฐ์„ ์ˆœ์œ„ ๊ณ„์‚ฐ โ†’ ํ”ผ๋“œ๋ฐฑ ์นด๋“œ ์ƒ์„ฑ ๋‹จ๊ณ„๋กœ ๋ถ„์„์„ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ๋ถ€์กฑํ•œ ์š”๊ฑด์—๋Š” ๊ธฐ๋Œ€ํšจ๊ณผ์™€ ์ž‘์„ฑ ๋‚œ์ด๋„๋ฅผ ์ ์ˆ˜ํ™”ํ•˜์—ฌ ๊ฐœ์„  ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์ˆ˜์ •๋œ ์ด๋ ฅ์„œ๋ฅผ ๋‹ค์‹œ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์žฌ๋ถ„์„ ๊ธฐ๋Šฅ๊ณผ ๋ถ„์„ ์‹œ๋„ ์ด๋ ฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํŒŒ์ผ ์ž…๋ ฅ ์•ˆ์ •์„ฑ ๊ฐ•ํ™”

    • ํ™•์žฅ์ž๋งŒ ํ™•์ธํ•˜์ง€ ์•Š๊ณ  MIME Type, ํŒŒ์ผ ํฌ๊ธฐ, PDF ํ—ค๋”์™€ ์‹ค์ œ ํŒŒ์‹ฑ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์ฆํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์†์ƒ๋˜๊ฑฐ๋‚˜ PDF๋กœ ์œ„์žฅ๋œ ํŒŒ์ผ์ด ๋ถ„์„ ๊ณผ์ •์œผ๋กœ ์ง„์ž…ํ•˜์ง€ ์•Š๋„๋ก ๋ฐฉ์–ดํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํ˜‘์—… ๊ธฐ๋ฐ˜ ๋งˆ๋ จ

    • ๊ณตํ†ต ์‘๋‹ต ํ˜•์‹๊ณผ ์ „์—ญ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ทœ์น™์„ ๋งŒ๋“ค์–ด ํŒ€ API์˜ ์ผ๊ด€์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค.
    • Gradle Wrapper, MySQL Docker Compose, ํ™˜๊ฒฝ๋ณ„ Spring Profile์„ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
    • PR ํ…œํ”Œ๋ฆฟ๊ณผ ์‹คํ–‰ยท์˜ˆ์™ธ ์ฒ˜๋ฆฌยท์ปค๋ฐ‹ ๊ทœ์น™ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•ด ํ˜‘์—… ๊ธฐ์ค€์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

Tech Stack

Java Spring Boot Spring Data JPA MySQL Gemini Jsoup Apache PDFBox Gradle Docker JUnit5 Mockito

Pinned Loading

  1. hhplus_ecommerce03 hhplus_ecommerce03 Public

    Java

  2. TIL TIL Public

    Java

  3. SWYP14th-Team3/BackEnd SWYP14th-Team3/BackEnd Public

    Java