Skip to content
@thought-corner

Thought-Corner

  • Korea, South

๐Ÿงฉ Thought Corner

์ƒ๊ฐ์„ ์ฝ”๋“œ๋กœ ์ •๋ฆฌํ•˜๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.

"์™œ ์ด๋ ‡๊ฒŒ ๋™์ž‘ํ•˜๋Š”๊ฐ€"๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๋ฉฐ ์ดํ•ดํ•˜๊ณ ,
๋ถ€๋ถ„์ด ์•„๋‹Œ ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์ƒํ˜ธ์ž‘์šฉ ๊ด€์ ์—์„œ ๋ฌธ์ œ๋ฅผ ๋ฐ”๋ผ๋ด…๋‹ˆ๋‹ค.

๐Ÿ’ผ Introduction

  • Spring Boot ๊ธฐ๋ฐ˜์˜ Java/Kotlin ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์šด์˜ํ•˜๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค. ์‚ฌ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์„ฑ๋Šฅ ๊ฐœ์„ , ๊ตฌ์กฐ ๋ฆฌํŒฉํ† ๋ง, ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋„์ž…์„ ๋งก์•„ ์™”์Šต๋‹ˆ๋‹ค.
  • ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ˆ„๊ตฌ๋‚˜ ๊ฐ™์€ ๋œป์œผ๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ์ •๋ฆฌํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„์ด ํ‹€๋ฆฌ๋Š” ๋น„์šฉ๋ณด๋‹ค ํ•ฉ์˜๊ฐ€ ์–ด๊ธ‹๋‚˜๋Š” ๋น„์šฉ์ด ๋” ํฌ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ค๋ž˜ ์œ ์ง€๋˜๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ์„ ๋งŒ๋“œ๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์ง€ํ–ฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿงญ Approach

  • ์ •์ƒ ๋™์ž‘๋ณด๋‹ค ๋จผ์ € ์‹คํŒจํ–ˆ์„ ๋•Œ ๋ฌด์—‡์ด ๊นจ์ง€๋Š”์ง€๋ฅผ ๊ทธ๋ ค๋ด…๋‹ˆ๋‹ค. ๋ฌด์—‡์„ ํฌ์ƒํ•˜๊ณ  ๋ฌด์—‡์„ ์ง€ํ‚ฌ์ง€ ์ •ํ•œ ๋‹ค์Œ ์„ค๊ณ„์— ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.
  • ์ปค๋ฒ„๋ฆฌ์ง€ ์ˆซ์ž๋ณด๋‹ค "์ด ํ…Œ์ŠคํŠธ๊ฐ€ ์‹ค์ œ๋กœ ํšŒ๊ท€๋ฅผ ์žก์•„๋‚ด๋Š”๊ฐ€"๋ฅผ ๋จผ์ € ๋ฌป์Šต๋‹ˆ๋‹ค. ํ†ต๊ณผํ•˜๋Š” ํ…Œ์ŠคํŠธ์™€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์ŠคํŠธ๋Š” ๋‹ค๋ฅด๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋ ต๋‹ค๋ฉด ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•๋ณด๋‹ค ์„ค๊ณ„๋ฅผ ๋จผ์ € ์˜์‹ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐํ•ฉ์ด ์‹ฌํ•œ ์ฝ”๋“œ๋Š” ๋Œ€์ฒด๋กœ ํ…Œ์ŠคํŠธ์—์„œ ๋จผ์ € ๋“œ๋Ÿฌ๋‚ฉ๋‹ˆ๋‹ค.
  • ๊ธฐํš์„ ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „์— ์ด ๊ธฐํš์ด ํ’€๋ ค๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ด์—ˆ๋Š”์ง€ ๋˜์งš๊ณ , ์• ๋งคํ•œ ์ง€์ ์€ ๋„˜์–ด๊ฐ€์ง€ ์•Š๊ณ  ๋จผ์ € ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์š”๊ตฌ์‚ฌํ•ญ ํ•˜๋‚˜๊ฐ€ ์ฝ”๋“œ ์–ด๋””๊นŒ์ง€ ๋‹ฟ๋Š”์ง€, ๊ทธ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋ฐ”๋€Œ๋ฉด ์–ด๋””๊ฐ€ ํ”๋“ค๋ฆด์ง€๋ฅผ ๋จผ์ € ๊ทธ๋ ค๋ด…๋‹ˆ๋‹ค.
  • ์„ ํƒ์ง€๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๋น„๊ตํ•˜๊ณ  "์™œ ์ด ๋ฐฉ์‹์„ ํƒํ–ˆ๋Š”๊ฐ€"๋ฅผ ๊ธฐ๋ก์œผ๋กœ ๋‚จ๊ธฐ๋Š” ์Šต๊ด€์„ ๋“ค์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ญ Interests

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

๐Ÿ—๏ธ Toy Projects

order-system โ€” RabbitMQ ๋น„๋™๊ธฐ ์ฃผ๋ฌธ ์‹œ์Šคํ…œ

์ฃผ๋ฌธ API๊ฐ€ ๋ฉ”์‹œ์ง€ ๋ฐœํ–‰ ์ฆ‰์‹œ ์‘๋‹ตํ•˜๊ณ , ์ปจ์Šˆ๋จธ๊ฐ€ ์žฌ๊ณ  ์ฐจ๊ฐยท์ฃผ๋ฌธ ์ƒ์„ฑ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

  • MySQL Named Lock(์ฃผ๋ฌธ ๋‹จ์œ„) + JPA ๋น„๊ด€์  ๋ฝ(์žฌ๊ณ  ๋‹จ์œ„) ์ด์ค‘ ๋ฝ์œผ๋กœ ๋™์‹œ์„ฑ ์ œ์–ด
  • k6 ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ: 4,000 VUs์—์„œ TPS 2.23k, ์‹คํŒจ 0๊ฑด, ์žฌ๊ณ  ์ •ํ•ฉ์„ฑ ์˜ค์ฐจ 0 ์‹ค์ธก ๊ธฐ๋ก
  • Dead Letter Queue + ์žฌ๋ฐœํ–‰์œผ๋กœ ์‹คํŒจ ๋ฉ”์‹œ์ง€ ์œ ์‹ค ๋ฐฉ์ง€, prefetchยท์ปจ์Šˆ๋จธ ์ˆ˜ ํŠœ๋‹ ๊ณผ์ • ๋ฌธ์„œํ™”

query-performance โ€” ๋Œ€์šฉ๋Ÿ‰ ์กฐํšŒ ์„ฑ๋Šฅ ๊ฐœ์„  (SQL ํŠœ๋‹ โ†’ Redis ์บ์‹ฑ)

30๋งŒ ๊ฑด ๋ฐ์ดํ„ฐ์—์„œ ํ’€ ํ…Œ์ด๋ธ” ์Šค์บ”์œผ๋กœ ์ตœ๋Œ€ 14์ดˆ ๊ฑธ๋ฆฌ๋˜ ํ•„ํ„ฐ๋ง ์กฐํšŒ๋ฅผ ๋‹จ๊ณ„์ ์œผ๋กœ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • EXPLAIN์œผ๋กœ ํ’€ ํ…Œ์ด๋ธ” ์Šค์บ”(type: ALL) ํ™•์ธ โ†’ ๊ฐ€๊ฒฉ ์ธ๋ฑ์Šค ์ ์šฉ์œผ๋กœ ์กฐํšŒ ์‹œ๊ฐ„70.5% ๋‹จ์ถ•(1s โ†’ 0.295s)
  • ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ–ˆ๋Š”๋ฐ๋„ ๋™์ž‘ํ•˜์ง€ ์•Š๋˜ ์›์ธ ๋ถ„์„ โ€” ๋‚ฎ์€ ์นด๋””๋„๋ฆฌํ‹ฐ(LocalDate ์ผ ๋‹จ์œ„ ์ €์žฅ + ์ค‘๋ณต๋„ ๋†’์€ ๋”๋ฏธ ๋ฐ์ดํ„ฐ)๋กœ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์ธ๋ฑ์Šค๋ฅผ ๋ฒ„๋ฆฌ๋Š” ์ƒํ™ฉ์„ ๊ทœ๋ช…ํ•˜๊ณ , ํƒ€์ž…ยท๋ฐ์ดํ„ฐ ๋ถ„ํฌ๋ฅผ ๋ฐ”๋กœ์žก์•„ 82.25% ๋‹จ์ถ• (2s โ†’ 0.355s)
  • ์‹œ์Šคํ…œ ๋ณ€๊ฒฝ ์—†๋Š” SQL ํŠœ๋‹์„ ๋จผ์ €, ๊ทธ ์œ„์— Redis Cache-Aside๋ฅผ ์–น์–ด ์ถ”๊ฐ€ 45.7% ๊ฐœ์„ (1.01s โ†’ 0.548s) โ€” ์บ์‹œ-DB ์ •ํ•ฉ์„ฑ ํ•œ๊ณ„๊นŒ์ง€ ๋ฌธ์„œํ™”
Jang Woo's GitHub stats

Pinned Loading

  1. backend-roadmap backend-roadmap Public

    ๐Ÿ’ป ๊ฐœ๋ฐœ ์ปค๋ฆฌ์–ด๋ฅผ ์ด์–ด๊ฐ€๋ฉด์„œ ํ•„์š”ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํ•™์Šต ์ €์žฅ์†Œ

    Java 1

Repositories

Showing 10 of 25 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loadingโ€ฆ

Most used topics

Loadingโ€ฆ