๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿคท๐Ÿผ‍โ™€๏ธ Etc.../- old dev log

[Best Of the Best ํ™œ๋™๊ธฐ] 1์ฐจ ํŒ€ ํ”„๋กœ์ ํŠธ ํ›„๊ธฐ - ํŒ€ ๋นŒ๋”ฉ ๋ฐ ํ˜‘์—…์˜ ๊ณ ๋ฏผ

by Wonit 2021. 8. 25.

์˜ค๋Š˜์€ BoB 10๊ธฐ ๋ณด์•ˆ์ œํ’ˆ๊ฐœ๋ฐœ ํŠธ๋ž™์˜ ๋ณด์•ˆ ์†”๋ฃจ์…˜ ์ œ์ž‘ ์ˆ˜์—…์—์„œ ํ•œ๋‹ฌ๋™์•ˆ ์ง„ํ–‰ํ•œ 1์ฐจ ํŒ€ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐํ•ด๋ณด๋ ค ํ•œ๋‹ค.

ํ•ด๋‹น ๊ธ€์€ ์ด 2๋ถ€์ž‘์œผ๋กœ ํŒ€ ๋นŒ๋”ฉ๊ณผ ํ˜‘์—… ๊ณผ์ • ๊ทธ๋ฆฌ๊ณ  ์„œ๋น„์Šค ์„ค๋ช… ๋ฐ ๊ฐœ๋ฐœ ๊ณผ์ • ์œผ๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ github ๋ฐ”๋กœ๊ฐ€๊ธฐ -> ๋ณด์•ˆ ์œ„ํ˜‘ ํŠธ๋ž˜ํ”ฝ ๋ถ„์„ ์†”๋ฃจ์…˜ github

 

GitHub - dhslrl321/L7-monitor: ๐Ÿ” L7 ์—์„œ ๋™์ž‘ํ•˜๋Š” Access Log ๊ธฐ๋ฐ˜ ํŠธ๋ž˜ํ”ฝ ๋ถ„์„ ๋ฐ ๋ณด์•ˆ ์œ„ํ˜‘ ๋ถ„์„ ์„œ๋น„์Šค

๐Ÿ” L7 ์—์„œ ๋™์ž‘ํ•˜๋Š” Access Log ๊ธฐ๋ฐ˜ ํŠธ๋ž˜ํ”ฝ ๋ถ„์„ ๋ฐ ๋ณด์•ˆ ์œ„ํ˜‘ ๋ถ„์„ ์„œ๋น„์Šค (BoB 10 ๊ธฐ ๋ณด์•ˆ์ œํ’ˆ๊ฐœ๋ฐœ 1์ฐจ ํŒ€ ํ”„๋กœ์ ํŠธ) - GitHub - dhslrl321/L7-monitor: ๐Ÿ” L7 ์—์„œ ๋™์ž‘ํ•˜๋Š” Access Log ๊ธฐ๋ฐ˜ ํŠธ๋ž˜ํ”ฝ ๋ถ„์„ ๋ฐ ๋ณด

github.com


 

BoB ์ปค๋ฆฌํ˜๋Ÿผ์˜ ํฐ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

๊ณตํ†ต ๊ต์œก(7์›”) -> ์ „๊ณต ์‹ฌํ™” ๊ต์œก(7์›” ~ 9์›”) -> 2์ฐจ ํŒ€ ํ”„๋กœ์ ํŠธ(9์›” ~ 12์›”) -> 2์ฐจ ์‹ฌํ™” ๊ต์œก(12์›” ~) -> ์ˆ˜๋ฃŒ

 

ํ˜„์žฌ๋Š” ์ „๊ณต ์‹ฌํ™” ๊ต์œก ์‹œ์ฆŒ์ด๊ณ  ์‹ฌํ™”๊ต์œก ๋‚ด์—์„œ 2์ฐจ ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ๊ฐ„๋‹จ ๋ชธํ’€๊ธฐ? ๋Š๋‚Œ์˜ 1์ฐจ ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

 

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

 

๊ทธ๋ž˜์„œ ๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค๊ณผ ๋งŒ๋‚˜๋Š” ์ฒซ ํ”„๋กœ์ ํŠธ๋ผ๋Š” ์ƒ๊ฐ์— ๋”์šฑ ์—ด์‹ฌํžˆ ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋‹ค.

 

1์ฐจ ํŒ€ ํ”„๋กœ์ ํŠธ๋Š” ํฌ๊ฒŒ ํŒ€ ๋นŒ๋”ฉ -> ๊ธฐ์ˆ  ์„ ์ • -> ๋ฉ˜ํ†  ํ”ผ๋“œ๋ฐฑ -> ๊ฐœ๋ฐœ -> ์‹œ์—ฐ ๋ฐ ํ‰๊ฐ€ ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

 

1์ฐจ ํŒ€ ํ”„๋กœ์ ํŠธ๋Š” ์ „๊ณต ๊ต์œก๊ณผ ํ•จ๊ป˜ ์ง„ํ–‰๋˜์–ด ์ผ์ •์ด ๋งค์šฐ๋งค์šฐ ๋นก๋นกํ•˜๊ณ  ์•ˆ ๊ทธ๋ž˜๋„ ๋งŽ๊ธฐ๋กœ ์œ ๋ช…ํ•œ BoB ๊ณผ์ œ ์Šคํƒ์— ํŒ€ ํ”„๋กœ์ ํŠธ ๊นŒ์ง€ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ •๋ง ์ผ์ •์ด ์ƒ๊ฐ ์ด์ƒ์œผ๋กœ ์•ˆ ๋‚˜์˜จ๋‹ค.

 

๋‚˜๋Š” ๊ณผ์ œ์— ํฌ๊ฒŒ ์˜๋ฏธ๋ฅผ ๋‘๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋‚˜๋งˆ ๊ดœ์ฐฎ์•˜์ง€๋งŒ BoB ์ธ์ฆ์ž๋ฅผ ๋…ธ๋ฆฌ๋Š” ์ธ์›๋“ค์—๊ฒŒ๋Š” ์ง€์˜ฅ ๊ทธ ์ž์ฒด์˜€๋‹ค๊ณ  ํ•œ๋‹ค..

 

ํŒ€ ๋นŒ๋”ฉ

 

ํŒ€ ๋นŒ๋”ฉ์€ ๋ณด์•ˆ ์†”๋ฃจ์…˜ ๊ฐœ๋ฐœ ์ˆ˜์—… ์‹œ๊ฐ„์— ๋ฉ˜ํ† ๋‹˜์ด ์•ˆ๋‚ดํ•ด์ฃผ์‹œ๋Š” ๋Œ€๋กœ ์ง„ํ–‰๋˜๊ณ  ํŒ€ ์ธ์›์€ 1์ธํŒ€ ๋ถ€ํ„ฐ 5์ธํŒ€ ๊นŒ์ง€ ์ž์œจ์ ์œผ๋กœ ์ธ์›์ด ๊ตฌ์„ฑ๋œ๋‹ค.

 

์ฒซ ์ฃผ ๋ถ€ํ„ฐ ๊ฐ์ž ๊ด€์‹ฌ์žˆ๋Š” ๋ถ„์•ผ๋ฅผ ์ •ํ•˜๊ณ  ๊ทธ ์ธ์›๋“ค๋ผ๋ฆฌ ๋˜ ํŒ€์›์„ ์„ ์ •ํ•˜์˜€๋Š”๋ฐ, ์šฐ๋ฆฌ๋Š” ํŠธ๋ž™ ๋ฐ˜์žฅ๋‹˜ ๊ป˜์„œ ๊ฐ์ž ๊ด€์‹ฌ ๋ถ„์•ผ๋ฅผ ์กฐ์‚ฌํ•˜์—ฌ ๋ฉ˜ํ† ๋‹˜์—๊ฒŒ ์ „๋‹ฌํ•ด๋“œ๋ ธ๋‹ค.

 

๊ฐ์ž ๊ด€์‹ฌ ๋ถ„์•ผ๋Š” ํฌ๊ฒŒ ํ•ดํ‚น ๋ฐฉ์–ด, ๊ถŒํ•œ ์ œ์–ด, ๋ถ„์„ ๋„๊ตฌ, ๊ต์œก, ์ทจ์•ฝ์  ์œผ๋กœ ๋‚˜๋‰˜์–ด์ง„๋‹ค.

 

 

๋‚˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์ธ์ฆ๊ณผ ๊ถŒํ•œ์ด๋‚˜ ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์— ๊ด€๋ จ๋œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๊ณ ์‹ถ์—ˆ๊ณ  ๋ฉ˜ํ† ๋‹˜์—๊ฒŒ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ์˜ ํ† ํฐ ๋ฆด๋ ˆ์ด ์„œ๋น„์Šค๋ฅผ ์ œ์•ˆํ•˜์—ฌ ์—ฌ์ญค๋ดค๋”๋‹ˆ ๊ทธ๊ฑด BoB ์—์„œ ํ• ๋งŒํ•œ ์ฃผ์ œ๋Š” ์•„๋‹Œ๊ฒƒ ๊ฐ™๋‹ค๋Š” ํ”ผ๋“œ๋ฐฑ์ด ์™€์„œ ๋‹ค๋ฅธ ์ฃผ์ œ๋ฅผ ๊ณ ๋ฏผํ–ˆ์–ด์•ผ ํ–ˆ๋‹ค..

 

BoB ์—์„œ ์นœํ•ด์ง„ ๋™๋ฃŒ ํ•œ ๋ช…๊ณผ ํ•จ๊ป˜ ๋‹ค๋ฅธ ์ฃผ์ œ๋ฅผ ์ƒ๊ฐํ•˜๋˜ ๋„์ค‘ ๋ชจ๋‹ˆํ„ฐ๋ง์€ ์–ด๋–ป๊ฒ ๋ƒ๋Š” ์˜๊ฒฌ์ด ๋‚˜์˜ค๊ฒŒ ๋˜์–ด์„œ ๋ถ„์„ ๋„๊ตฌ ์ฃผ์ œ๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜์—ˆ๋‹ค.

 

๋งˆ์นจ BoB ์™ธ์— ์ง„ํ–‰ํ•˜๋˜ ํŒ€ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ด€๋ จ ๋„๊ตฌ์˜ ๋„์ž…์ด ํ•„์š”ํ–ˆ์–ด์„œ ๋‚˜๋ฆ„ ํฅ๋ฏธ๋กœ์šด ์ฃผ์ œ์˜€๋˜๊ฒƒ ๊ฐ™์•˜๋‹ค.

 

๊ทธ๋Ÿฌ๋˜ ์™€์ค‘์— BoB ๋“ค์–ด์˜ค๊ธฐ ์ „์— ์ธํ„ด์‰ฝ์„ ์ง„ํ–‰ํ–ˆ๋˜ ํšŒ์‚ฌ์—์„œ ์‚ฌ๋‚ด ๋ชจ๋‹ˆํ„ฐ๋ง ์†”๋ฃจ์…˜์„ ์ง์ ‘ ๊ฐœ๋ฐœํ–ˆ๋˜ ๋™๋ฃŒ ๊ต์œก์ƒ์ด ์žˆ์–ด์„œ ๊ทธ ๋ถ„๊ณผ ๋˜ ๊ตฐ๋Œ€์—์„œ ์—ฌ๋Ÿฌ ๋ชจ๋‹ˆํ„ฐ๋ง ํˆด์„ ๋‹ค๋ค„๋ดค๋˜ ๋ถ„๊ณผ ํ•จ๊ป˜ ํŒ€์„ ๊พธ๋ฆฌ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

์šด์ด ์ข‹๊ฒŒ ๋‚˜๋Š” 4๋ช…์˜ ์ฒœ์‚ฌ ํŒ€์›๋“ค๊ณผ ํ•จ๊ป˜ ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ ๊ฐœ๋ฐœ์ด๋ผ๋Š” ๋ชฉํ‘œ๋ฅผ ๊ฐ–๋Š” ํŒ€์ด ๊ตฌ์„ฑ๋˜์—ˆ๋‹ค!

 

์ง„์งœ ํŒ€์› ์šด์ด ๋„ˆ๋ฌด๋„ˆ๋ฌด ์ข‹์•˜๋˜๊ฒƒ ๊ฐ™๋‹ค... ์‚ฌ๋ž‘ํ•ด์š” ๋ณด๋ฆฌ๋ฐฅ..

 

๋น„๋Œ€๋ฉด ํŒ€ ํšŒ์˜

 

BoB 10๊ธฐ ์ „๊ณต ๊ต์œก์„ ๋“ฃ๋Š” ํ˜„์žฌ๋Š” ์ฝ”๋กœ๋‚˜ ์ƒํ™ฉ์œผ๋กœ ์‚ฌํšŒ์  ๊ฑฐ๋ฆฌ๋‘๊ธฐ 4๋‹จ๊ณ„๊ฐ€ ์ง„ํ–‰๋˜์–ด 100% ๋น„๋Œ€๋ฉด์œผ๋กœ ํ˜‘์—…์ด ์ง„ํ–‰๋˜์—ˆ๋‹ค..

 

์•„์‰ฌ์› ๋˜ ๊ฒƒ๋“ค์€ ๋งŽ์•˜์ง€๋งŒ ๋น„๋Œ€๋ฉด ํšŒ์˜๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ด๋“์ธ ๋ถ€๋ถ„๋„ ์žˆ๊ธฐ์— ๊ทธ๋‚˜๋งˆ ์žฅ์ ์„ ๊ผฝ์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

  • ๋ฌธ์ œ ๋ฐœ์ƒ์— ๋Œ€ํ•œ ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ๊ณผ ์ž์œ ๋กœ์šด ํšŒ์˜
  • ํšŒ์˜ ๋ถ€๋‹ด ๊ฐ์†Œ๋กœ ์ƒ์‚ฐ์„ฑ ์ฆ๊ฐ€
  • ์ž ์˜ท ์ฐจ๋ฆผ์œผ๋กœ ํšŒ์˜ ๊ฐ€๋Šฅ

 

์ž ์˜ท ์ฐจ๋ฆผ์€... ์ข€ ๊ทธ๋ ‡์ง€๋งŒ ์ผ๋‹จ ๊ฐ์ž ๊ต์œก ์ผ์ •๊ณผ ๊ณผ์ œ ๋•๋ถ„์—.. ์ปดํ“จํ„ฐ ์•ž์— ์•‰์•„ ์žˆ์„ ํ™•๋ฅ  100% ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธ‰ํ•˜๊ฒŒ ํšŒ์˜๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ƒ๊ณ  ๋ฌผ์–ด๋ณด๋ฉด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋Œ€๋‹ตํ•ด์ค€๋‹ค.

 

๊ทธ๋ž˜์„œ ๋ฌธ์ œ์— ๋ด‰์ฐฉํ•˜๊ฑฐ๋‚˜ ์˜๋…ผํ•  ์ฃผ์ œ๋“ค์ด ์žˆ๋‹ค๋ฉด ๋ฐ”๋กœ๋ฐ”๋กœ Google Meet ์„ ๊ฐœ์„คํ•ด์„œ ํšŒ์˜๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

 

 

์šฐ๋ฆฌ๋Š” ์ฒซ ํŒ€ ํšŒ์˜์—์„œ ๋ฐ”๋กœ ์ฃผ์ œ๋ฅผ ์„ ์ •ํ•˜๊ณ  ์‹ฌํ™”์— ๋“ค์–ด๊ฐ”๋‹ค.

 

์ฃผ์ œ ์„ ์ • - Access Log ๊ธฐ๋ฐ˜ ๋ชจ๋‹ˆํ„ฐ๋ง ํˆด ์ œ์ž‘

 

์‚ฌ์‹ค์ƒ ๋ชจ๋‹ˆํ„ฐ๋ง์— ๊ด€์‹ฌ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋ชจ์ธ ์ž๋ฆฌ๋ผ์„œ ์ฃผ์ œ๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง์œผ๋กœ ๋ฐ”๋กœ ์ •ํ•ด์กŒ๋‹ค.

 

ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์— ๋ณด์•ˆ์„ ์–ด๋–ป๊ฒŒ ์ ‘๋ชฉ์‹œํ‚ฌ์ง€ ๊ณ„์†ํ•ด์„œ ์ด์•ผ๊ธฐ๋ฅผ ํ–ˆ์—ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ๋‚˜์˜จ ์ด์•ผ๊ธฐ๊ฐ€ ๋ฐ”๋กœ Application Layer ์—์„œ ๋Œ์•„๊ฐ€๋Š” ์›น ๊ณต๊ฒฉ ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ ์ด๋‹ค.

 

์›๋ž˜ ๊ณ„ํš์€ ์›น ๊ณต๊ฒฉ ๋ถ„๋ฅ˜์™€ ํŒจํ‚ท ์นด์šดํŒ…์„ ์ด์šฉํ•œ DDos ํƒ์ง€ ๊ธฐ๋ฒ•์„ ์ ‘๋ชฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ํƒ์ง€์™€ ์ฐจ๋‹จ์ด ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ, ๊ทผ๋ฐ ์ด์ œ access.log์™€ SaaS๋ฅผ ๊ณ๋“ค์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณ„ํšํ–ˆ์—ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ Application Layer ์—์„œ์˜ ์‹ค์‹œ๊ฐ„ ์ฐจ๋‹จ์ด ์–ด๋ ต๋‹ค๋Š” ํ”ผ๋“œ๋ฐฑ๊ณผ ์—ฌ๋Ÿฌ ์ผ์ •์ƒ ๋ฌธ์ œ์  ๋•Œ๋ฌธ์— ๋‹จ์ˆœ ๊ณต๊ฒฉ ๋ถ„๋ฅ˜์™€ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ๋งŒ ์ œ๊ณตํ•˜๊ธฐ๋กœ ๊ฒฐ์ •์ด ๋˜์—ˆ๋‹ค.

 

์ด๊ฑธ ๋ˆ„๊ฐ€ ์จ? ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ž ์‹œ ์ง„์ •ํ•ด์ฃผ์„ธ์š”

 

์šฐ๋ฆฌ๊ฐ€ ๊ฒจ๋ƒฅํ•œ ๊ณ ๊ฐ์€ ๋ฐ”๋กœ DevSecOps ๋ฅผ ์ฑ„์šฉํ•˜๊ธฐ ๋ถ€๋‹ด์Šค๋Ÿฌ์šด ์Šคํƒ€ํŠธ์—…์ด๋‚˜ ๊ธฐ์—…์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์„œ๋น„์Šค์˜€๋‹ค.

 

๊ทธ๋ž˜์„œ SaaS ํ˜•ํƒœ๋กœ ์„œ๋น„์Šค๊ฐ€ ์ œ๊ณต๋˜๊ณ  ๋ณ„ ๋‹ค๋ฅธ ์„ค์ • ์—†์ด๋„ ๊ธฐ์กด์— ์šด์˜ ์ค‘์ด๋˜ ์„œ๋น„์Šค์— ์Œ“์ด๋Š” Access Log ๋งŒ ์žˆ๋‹ค๋ฉด ๋ฐ”๋กœ ์‹œ๊ฐํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์„ ๊ฐ•์กฐํ•˜๋ฉฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค.

 

๊ฒฐ๊ตญ ์‹œ๊ฐ„์— ๋ชป ์ด๊ฒจ์„œ.. SaaS๋„ ํฌ๊ธฐํ•˜๊ณ  On-Premise ๋กœ ๊ฐ€๊ฒŒ ๋˜๊ธด ํ–ˆ์ง€๋งŒ..

 

์ฃผ์ œ๊ฐ€ ๋น ๋ฅด๊ฒŒ ์ •ํ•ด์ ธ์„œ ์šฐ๋ฆฌ๋Š” ๊ฐœ๋ฐœ์„ ์ข€ ๋” ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

๊ธฐ์ˆ  ์„ ์ •

 

๊ธฐ์ˆ ์€ ๋‹น์—ฐํžˆ ํŒ€ ๋‚ด๋ถ€์—์„œ ์ต์ˆ™ํ•œ ์–ธ์–ด์™€ ๊ธฐ์ˆ ์ด ๊ฐ€์žฅ ๋จผ์ € ์ •ํ•ด์กŒ๋‹ค.

 

Web Application

 

๋‚˜๋Š” Spring Boot ๋ฅผ ์ด์šฉํ•œ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์— ๊ฐ€์žฅ ์ž์‹ ์ด ์žˆ์—ˆ๊ณ , ํŒ€์›๋“ค์—๊ฒŒ๋Š” ๋งํ•˜์ง€ ์•Š์•˜์ง€๋งŒ React, Next.js ํ”„๋กœ์ ํŠธ ๋ฆฌ๋”ฉ ๊ฒฝํ—˜์ด ์—ฌ๋Ÿฟ ์žˆ์–ด์„œ ํ”„๋ก ํŠธ๋„ ํฌ๊ฒŒ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ๋‹ค.

 

๋‚ด๊ฐ€ Back End๊ฐ€ ๋„ˆ๋ฌด ํ•˜๊ณ ์‹ถ๋‹ค๊ณ  ๊ฐ„์ ˆํžˆ ๋ฐ”๋žฌ๋˜๊ฒŒ ํŒ€์›๋“ค์—๊ฒŒ ๋Š๊ปด์กŒ๋Š”์ง€ ๋‚ด๊ฐ€ Backend๋ฅผ ๋งก๊ฒŒ ๋˜์—ˆ๊ณ , ๋‹ค๋ฅธ ํŒ€์› ํ•œ ๋ช…์ด Front๋ฅผ ๋งก๊ฒŒ ๋˜์—ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ํŒ€์›๋“ค ์ค‘์— Front ๊ฐœ๋ฐœ์„ ์ฃผ๋กœ ํ•ด์™”๋˜ ํŒ€์›์ด ์—†์—ˆ๊ธฐ์— Front ๋Š” ์ˆœ์ˆ˜ HTML๊ณผ BootStrap ์„ ์ด์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋Š”๋ฐ, ์ดํ›„ Data Fetching ์ด๋‚˜ Render ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ , ๋‚ด๊ฐ€ ์ต์ˆ™ํ•œ React ๋ฅผ ์ด์šฉํ•˜๋Š” ๋Œ€์‹  Front๋„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฒฐ์ •์ด ๋‚ฌ๋‹ค.

 

๋ถ„์„ Daemon & ๋กœ๊ทธ ์ „์†ก Agent

 

๋ถ„์„ Daemon๊ณผ ๋กœ๊ทธ ์ „์†ก Agent๋Š” ๋ฌธ์ž์—ด ํŒŒ์‹ฑ์— ๊ฐ•ํ•œ ์ด์ ๊ณผ ํŒ€์—์„œ ์ต์ˆ™ํ•œ Python ์„ ์ด์šฉํ•˜๊ธฐ๋กœ ํ–ˆ์—ˆ๊ณ  ์ „์— ๊ฒฝํ—˜์ด ์žˆ๋˜ ํŒ€์žฅ๊ณผ ํŒ€์› ํ•œ ๋ช…์ด ๊ฐ๊ฐ ์ผ์„ ๋ถ„๋‹ดํ•˜๊ธฐ๋กœ ํ–ˆ์—ˆ๋‹ค.

 

๋ฐฐํฌ ๋ฐ ์ธํ”„๋ผ

 

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ•˜๋‚˜์˜ Computing Engine ์—์„œ ๋‘ ๊ฐœ์˜ ์„œ๋ฒ„๋ฅผ ๋™์‹œ์— ๋Œ๋ฆด ์ˆ˜ ์žˆ๋„๋ก Reverse Proxy ๊ฐ€ ๋„์ž…๋˜์—ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ์˜ Application ์€ ๋„์ปค๋ฅผ ์ด์šฉํ•ด์„œ ์ปจํ…Œ์ด๋„ˆํ™” ํ•˜์˜€์œผ๋ฉฐ ๋ฉ€ํ‹ฐ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ docker-compose ๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ๊ฒฐ๋ก ์€?!

 

๊ทธ๋ž˜์„œ ๊ฒฐ๊ตญ ๊ธฐ์ˆ  ์Šคํƒ๊ณผ ์–ธ์–ด ๋ฐ ํ™˜๊ฒฝ์€ ์œ„์™€ ๊ฐ™์ด ์„ ์ •๋˜์—ˆ๊ณ  ๋‹ค๋“ค ๋งก์€ ๋ฐ”๋ฅผ ๋„ˆ๋ฌด ์—ด์‹ฌํžˆ ์ž˜ ํ•ด์ฃผ์—ˆ๋‹ค.

 

ํ˜‘์—… ๋ฐ ์ผ์ • ๊ด€๋ฆฌ

 

ํ˜‘์—…์„ ์œ„ํ•œ ๋ฌธ์„œํ™” ๋„๊ตฌ๋Š” ๊ฑฐ์˜ ๋‹น์—ฐ?? ํ•˜๊ฒŒ๋„ Notion ์œผ๋กœ ์„ ์ •๋˜์—ˆ๋‹ค.

 

๋‚˜๋Š” ๋…ธ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์–ด๊บ  ๋„˜์–ด๋กœ ๋ด ์™”๊ธฐ ๋–„๋ฌธ์— ์ž˜ ์‚ฌ์šฉํ•˜์ง€๋Š” ๋ชปํ•˜์ง€๋งŒ ์šฐ๋ฆฌ ํŒ€์žฅ๋‹˜์ด ๋…ธ์…˜์— ์ผ๊ฐ€๊ฒฌ์ด ์žˆ์œผ์…”์„œ ์•„์ฃผ ์˜ˆ์˜๊ฒŒ ์ž˜ ๊ตฌ์„ฑํ•ด์ฃผ์…จ๋‹ค.

 

 

API ๋ฌธ์„œ๋‚˜ DB ์Šคํ‚ค๋งˆ๋„ ๊น”๋”ํ•˜๊ฒŒ ์ž˜ ๊ตฌ์„ฑํ•ด๋†“์•˜๊ณ , ์ด๊ฒŒ ์ƒ๊ฐ๋ณด๋‹ค ์ƒ์„ ์„ฑ์„ ๋งค์šฐ ์ฆ๊ฐ€์‹œ์ผœ์ค€๋‹ค.

 

๋‚˜๋Š” ์›๋ž˜ Github Issue๋‚˜ Wiki ๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ–ˆ์—ˆ๋Š”๋ฐ, ์ด๊ฒŒ ์ฃผ ๋ชฉ์ ์ด ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋ชฉ์ ์ด๋ผ๊ธฐ ๋ณด๋‹ค ์†Œ์Šค ์ฝ”๋“œ์˜ version control ์˜ ๋ชฉ์ ์ด๋‹ค ๋ณด๋‹ˆ ๋ญ”๊ฐ€ ๋ฌธ์„œํ™” ๋„๊ตฌ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ์กฐ๊ธˆ ์• ๋งคํ•œ ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‹ค.

 

ํŠนํžˆ UI๊ฐ€ ํฌ๊ฒŒ ๋‹ค๊ฐ€์™”๋‹ค.

 

 

๊นƒํ—™์˜ UI๋Š” ๋ญ”๊ฐ€ ๋ญ‰๋š๋ญ‰๋šํ•˜๊ณ  ๊ฐœ๋ฐœ์ž์Šค๋Ÿฌ์šด๋ฐ, Notion ์€ ์ „ํ˜€ ๋‹ค๋ฅด๋‹ค.. ๋ญ”๊ฐ€ ๋ฉ‹์žˆ๋Š” ๋ฌธ์„œ๊ฐ™๋‹ค.

 

 

์ด๋ ‡๊ฒŒ ๋ฌธ์„œํ™”๋ฅผ ์ •๋ฆฌํ•˜์˜€๊ณ , ๊นƒ ๋ธŒ๋žœ์น˜ ์ „๋žต์€ Gitflow๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

์šฐ๋ฆฌ๋Š” Gitflow ์˜ Hotfix ๋‚˜ release ๋ธŒ๋žœ์น˜๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ ํ•ฉํ•˜์ง€ ์•Š์•„์„œ Hotfix์™€ Release ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ”๋‹ค.

 

 

gitflow ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ํ•œ ๋ฒˆ Conflict ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋˜ ์ ์ด ์žˆ๋Š”๋ฐ, ์‚ฌ์‹ค ๊ฐ•์ œ๋กœ Conflict ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ณ  Github ์—์„œ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ–ˆ์—ˆ๋Š”๋ฐ, ๋ฐ”๋€ ์ฝ”๋“œ๊ฐ€ ํŒŒ์ผ ๋ณ€๊ฒฝ์ด ์•„๋‹Œ ๋””๋ ‰ํ† ๋ฆฌ ๋ณ€๊ฒฝ ์ด๋ผ Github ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ–ˆ์—ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ๊ฒฐ๊ตญ ์ถฉ๋Œ ํ•ด๊ฒฐ ๋ธŒ๋žœ์น˜๋ฅผ ๋”ฐ๋กœ ๋นผ์„œ ์ž‘์—…์„ ํ•ด๋†จ๋Š”๋ฐ.. ๊ทธ ์ˆœ๊ฐ„ ๋‡Œ์ ˆ์ด ์™€ ๋ฒ„๋ฆฌ๋Š” ๋ฐ”๋žŒ์— ํ•œ ์‹œ๊ฐ„? ์ •๋„๋ฅผ ๊ทธ๋ƒฅ ๋‚ ๋ ธ๋˜๊ฒƒ ๊ฐ™๋‹ค..

 


 

์ด๋ ‡๊ฒŒ ํ”„๋กœ์ ํŠธ ํ˜‘์—…๊ณผ ํŒ€ ๋นŒ๋”ฉ์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐํ–ˆ๋Š”๋ฐ, ๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” ์„œ๋น„์Šค๊ฐ€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์„ฑ๋˜๊ณ  ๊ฐœ๋ฐœ๋˜์—ˆ๋Š”์ง€ ์ข€ ๋” ๊ธฐ์ˆ ์ ์ธ ๊ด€์ ์—์„œ ์ด์•ผ๊ธฐํ•ด๋ณด๋ ค ํ•œ๋‹ค!

 

๋Œ“๊ธ€