๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Today I Learned

ํ˜‘์—… ๊ณผ์ •์—์„œ์˜ ๋ฌธ์ œ ํ•ด๊ฒฐ๊ณผ ์นดํ”„์นด ๋ฉ”์‹œ์ง• ๊ตฌ์กฐ ๊ฐœ์„ 

 

Today I Learn โœ๐Ÿผ 

 

 

 

1. ๋ฐฐ์†ก ์‹œ๋‚˜๋ฆฌ์˜ค ๋ฌธ์ œ

ํŒ€์› ๋ฏผ์ฒ ๋‹˜์ด ์ž‘์„ฑํ•œ ๋ฐฐ์†ก ์‹œ์Šคํ…œ์˜ Kafka ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐ์ •์ด ์™„๋ฃŒ๋œ ์ดํ›„์—๋„ ์˜คํ›„ 4์‹œ์— ์Šค์ผ€์ค„๋ง ์ž‘์—…์œผ๋กœ ๋‹จ์ˆœํžˆ ์ฃผ๋ฌธ ์ƒํƒœ๋ฅผ '๋ฐฐ์ •์ค‘'์—์„œ '๋ฐฐ์ •์™„๋ฃŒ'๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋™์ž‘๋งŒ ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ์ : ์Šค์ผ€์ค„๋ง ์ž‘์—…์—์„œ ๋ฐฐ์†ก ๊ธฐ์‚ฌ๋ฅผ ๋ฐฐ์ •ํ•˜๋Š” ๋กœ์ง์ด ๋น ์ ธ ์žˆ์—ˆ๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹๋„ ๋น„ํšจ์œจ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

๋ฐฐ์†ก ํ”„๋กœ์„ธ์Šค ์ œ์‹œ

์ €๋Š” ํŒ€์›๋“ค์—๊ฒŒ ์˜คํ›„ 4์‹œ ์Šค์ผ€์ค„๋ง ์ž‘์—…์—์„œ ๋ฐฐ์ •์ค‘ → ๋ฐฐ์ •์™„๋ฃŒ๋กœ ์ƒํƒœ๋งŒ ๋ณ€๊ฒฝํ•˜๋Š” ๋Œ€์‹ , ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๋ผ๊ณ  ๊ฐ€์ด๋“œ๋ฅผ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค:

  1. ๋ฐฐ์ • ์ž‘์—…์„ ํ•œ ๋ฒˆ์— Bulk Insert๋กœ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜,
  2. Kafka๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜์”ฉ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ.

์‹œ๊ฐ„์ด ๋ถ€์กฑํ–ˆ๊ธฐ์— ์ด ๋ฌธ์ œ๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‚ฎ์ถ”๊ณ , ์ฃผ๋ฌธ ์‹œ์Šคํ…œ ์ˆ˜์ •์„ ๋จผ์ € ์ง„ํ–‰ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐ์†ก ์‹œ๋‚˜๋ฆฌ์˜ค ํ”„๋กœ์„ธ์Šค ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

  1. ์˜คํ›„ 4์‹œ ์Šค์ผ€์ค„๋ง: ๋ฐฐ์†ก ์„œ๋ฒ„๋Š” ์˜คํ›„ 4์‹œ์— ํŒฌ๋”ฉ ์ƒํƒœ์ธ ์ฃผ๋ฌธ ๋ชฉ๋ก์„ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค.
  2. ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ: ์ฃผ๋ฌธ ๋ชฉ๋ก์—์„œ ํ•˜๋‚˜ํ•˜๋‚˜ ์˜ค๋” ์•„์ด๋””๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ฃผ๋ฌธ์„ ์กฐํšŒํ•˜๊ณ , ๋ฐฐ์†ก ๊ธฐ์‚ฌ๋ฅผ ๋ฐฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ฃผ๋ฌธ ์ƒํƒœ ๋ณ€๊ฒฝ: ๊ฐ ์ฃผ๋ฌธ์˜ ์ƒํƒœ๋ฅผ '๋ฐฐ์ฐจ์™„๋ฃŒ'๋กœ ๋ณ€๊ฒฝํ•œ ํ›„, Kafka๋ฅผ ํ†ตํ•ด ์ฃผ๋ฌธ ์ƒํƒœ ๋ณ€๊ฒฝ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  4. ์‹คํŒจ ์ฒ˜๋ฆฌ: ๋งŒ์•ฝ ์ฒ˜๋ฆฌ์— ์‹คํŒจํ•œ ์ฃผ๋ฌธ์ด ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ์ฃผ๋ฌธ๋“ค์„ ๋ชฉ๋ก์— ๋„ฃ๊ณ  ๋‹ค์‹œ ์žฌ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

์ด ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์€ ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ์žฌ์‹œ๋„ ๋กœ์ง์„ ํฌํ•จํ•˜์—ฌ ์•ˆ์ •์„ฑ์„ ๊ฐ•ํ™”ํ•˜๋ฉฐ, Kafka๋ฅผ ํ™œ์šฉํ•œ ์ฃผ๋ฌธ ์ƒํƒœ ์—…๋ฐ์ดํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 


2. DEV-product ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐ ๊ฐœ์„ 

๋Œ€ํ˜„๋‹˜์˜ ์ฝ”๋“œ๋ฅผ ๋ฆฌ๋ทฐํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค:

  • ํŒ€ ์ฝ”๋“œ ๊ทœ์น™์— ๋งž์ง€ ์•Š๊ฒŒ ์ž‘์„ฑํ•œ ๋ถ€๋ถ„์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.(์ด๋ฏธ ํ—ˆ๋ธŒapp์—์„œ ๊ฐ€์ด๋“œ ์ฝ”๋“œ ์ž‘์—…์„ ์™„์„ฑํ•ด๋‘” ์ƒํƒœ์ž…๋‹ˆ๋‹ค) 
  • Git ์‚ฌ์šฉ์— ๋ฏธ์ˆ™ํ•œ ๋ชจ์Šต๋„ ๋ณด์˜€๋Š”๋ฐ, ์ƒํ’ˆ ์„œ๋ฒ„์™€ ๊ด€๋ จ ์—†๋Š” ์ฝ”๋“œ๊ฐ€ PR๋กœ ํ•จ๊ป˜ ์˜ฌ๋ผ์˜ค๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • DEV-product PR๋กœ ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ํ•˜์ง€์•Š๊ณ  ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ Discusstion์— ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. Discustion ๋งํฌ

์ด์— Git ๋ธŒ๋žœ์น˜ ์ „๋žต๊ณผ PR ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ด์ฃผ์—ˆ๊ณ , ์ƒํ’ˆ๊ณผ ์ƒํ’ˆ ์žฌ๊ณ  ์„œ๋น„์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ์„ค๊ณ„์— ๋Œ€ํ•ด ๋‹ค์‹œ ๋‚ฉ๋“์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, ์ฝ”๋“œ ์ •๋ฆฌ ๋ฐ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ ์ ์šฉ์„ ์œ„ํ•ด ๊ตฌ๊ธ€ ์Šคํƒ€์ผ๊ณผ ์†Œ๋‚˜ ๋ฆฐํŠธ๋ฅผ IntelliJ์— ์„ค์น˜ํ•˜๋„๋ก ๊ฐ€์ด๋“œํ–ˆ์Šต๋‹ˆ๋‹ค.

์ง€์› ๋ฐ ๊ฐœ์„  ํ™œ๋™

  • ๋Œ€ํ˜„๋‹˜์—๊ฒŒ Git ์‚ฌ์šฉ๋ฒ•๊ณผ ๋ธŒ๋žœ์น˜ ์ „๋žต, ํ’€/ํ‘ธ์‹œ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ ์Šคํƒ€์ผ์„ ๋งž์ถ”๊ธฐ ์œ„ํ•ด IntelliJ ์ž๋™ ์ •๋ ฌ ๋ฐ import ์ •๋ฆฌ ๋‹จ์ถ•ํ‚ค๋ฅผ ๊ณต์œ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํŒ€ ์ฝ”๋“œ ๊ทœ์น™์— ๋งž๊ฒŒ ์ƒํ’ˆ ์„œ๋ฒ„์—์„œ ์ƒํ’ˆ๊ณผ ์ƒํ’ˆ ์žฌ๊ณ  ์„œ๋น„์Šค๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋„๋ก ์œ ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Getter/Setter ์ž๋™ ์ƒ์„ฑ ์›๋ฆฌ๋ฅผ ์ปดํŒŒ์ผ๋œ ํด๋ž˜์Šค ํŒŒ์ผ์„ ํ†ตํ•ด ์„ค๋ช…ํ•˜๋ฉฐ ์ดํ•ด๋ฅผ ๋„์™”์Šต๋‹ˆ๋‹ค.

3. ์ฃผ๋ฌธ ์‹œ์Šคํ…œ ๊ฐœํŽธ

์ฃผ๋ฌธ ์‹œ์Šคํ…œ์ด Stateless๋กœ ๊ฐœํŽธ๋˜๋ฉด์„œ ๊ธฐ์กด์˜ CRUD ๊ธฐ๋Šฅ๋“ค์ด ๋งŽ์ด ์‚ฌ๋ผ์ ธ ์žˆ๋Š” ์ƒํƒœ์˜€๊ณ ,

Kafka ๋ฉ”์‹œ์ง€ ์†ก์ˆ˜์‹  ๋กœ์ง๋„ ๊ณตํ†ต ๋ชจ๋“ˆ๋กœ ๊ตฌ๋ถ„์ด ๋˜์–ด ์žˆ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ๋ฉ”์‹œ์ง€ ํ”„๋กœ๋“€์„œ, ๋ฉ”์‹œ์ง€ ์ปจ์Šˆ๋จธ, ๋ฉ”์‹œ์ง€ ์„œ๋น„์Šค๋ฅผ ๊ฐ๊ฐ ๋ถ„๋ฆฌํ•˜๊ณ , ์ „๋žต ํŒจํ„ด๊ณผ ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด์„ ์ ์šฉํ•˜๋ผ๊ณ  ํŒ€์›๋“ค์—๊ฒŒ ์ง€์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.


4. ์นดํ”„์นด ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ ๊ฐœ์„ 

๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ์™€ ๊ด€๋ จํ•ด์„œ๋Š” ์ œ๊ฐ€ ์ง์ ‘ ์นดํ”„์นด ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด ์ค„ ์ˆ˜๋„ ์žˆ์—ˆ์ง€๋งŒ, ํŒ€์›๋“ค์ด ์Šค์Šค๋กœ ๊ณ ๋ฏผํ•˜๋„๋ก ์œ ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ผ์š”์ผ ๋ฐค 12์‹œ๋ถ€ํ„ฐ ์ƒˆ๋ฒฝ 4์‹œ๊นŒ์ง€ ํŒ€์›๋“ค์€ ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ๋ฅผ ๊ณ ๋ฏผํ–ˆ์œผ๋ฉฐ, ๋ฏผ์ฒ ๋‹˜๊ณผ ๋Œ€ํ˜„๋‹˜์ด ๋งŽ์ด ๊นจ๋‹ฌ์€ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.

 

์›”์š”์ผ ์•„์นจ ํšŒ์˜์—์„œ ํ•œ ๋ฒˆ ๋” ์„ค๋ช…ํ•ด์ฃผ๊ณ  PR์„ ๋ฐ›๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฏผ์ฒ ๋‹˜์ด ๊ณ ๋ฏผํ•œ ํ”์ 

 

์ดํ›„ ๋ฏผ์ฒ ๋‹˜์ด ๋…ธ๋ ฅํ•œ ์ฝ”๋“œ๋ฅผ ์ œ๊ฐ€ ์กฐ๊ธˆ ์ˆ˜์ •ํ•ด์„œ,
์ตœ์ข…์ ์œผ๋กœ ๊ฒฐ์ •๋œ Kafka ๋ฉ”์‹œ์ง• ๊ตฌ์กฐ๋Š” ์—ฌ๊ธฐ์— ๋ฐ˜์˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


7.  ๋ฐฐ์šด ์ 

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