๐Ÿง‘๐Ÿป‍๐Ÿ’ป Re:Mind/๐Ÿ”ฅ ํšŒ๊ณ 

[ํšŒ๊ณ ] ์ด์งํ•œ ๋ถ ๊ฐœ๋ฐœ์ž์˜ ์‚ฌ๋‚ด ์ˆ˜์Šต๊ณผ์ œ ํšŒ๊ณ  - 1

Boom's 2024. 1. 18. 15:54
๋ฐ˜์‘ํ˜•

 

 

์•ˆ๋…•ํ•˜์„ธ์š”. ๋ถ ๊ฐœ๋ฐœ์ž ์ž…๋‹ˆ๋‹ค. ๋น„์ „๊ณต์ž์ธ ์ œ๊ฐ€ ํšŸ์ˆ˜๋กœ๋Š” ๋ฒŒ์จ 2๋…„ ์ผ ๋•Œ, ์ด์งํ•œ ํšŒ์‚ฌ์—์„œ ๋Œ€ํ•œ ํšŒ๊ณ ๋ก ์ž…๋‹ˆ๋‹ค.

 

์ด์ง

  • ๋‚˜๋Š” ๋น„์ „๊ณต์ž์ด๋ฉฐ, ๊ฐœ๋ฐœ ์—…๋ฌด๋ฅผ ์‹œ์ž‘ ํ•œ ์ง€ ์•ฝ 1๋…„ 6๊ฐœ์›”๋งŒ์— ์šด์ด ์ข‹๊ฒŒ ์ฒซ ์ด์ง์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.
  • ์ƒˆ๋กญ๊ฒŒ ์ด์ง ํ•œ ํšŒ์‚ฌ๋Š” Sass ํ˜•ํƒœ์˜ EndToEnd ์œ ์ €์˜ ๋น„๋””์˜ค ํ”Œ๋žซํผ ๊ณผ VOD์™€ Live ํ”Œ๋žซํผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํšŒ์‚ฌ์ด๋‹ค. ์ „ ์ง์žฅ๊ณผ ๋น„๊ต๊ฐ€ ์•ˆ๋  100์—ฌ๋ช…์˜ ์ง์›๋“ค์ด ์žˆ์œผ๋ฉฐ, ํ•ด์™ธ ๋ฒ•์ธ๋„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์Šคํƒ€ํŠธ์—…์œผ๋กœ ์ด์ง์„ ํ•˜์˜€๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๊ฐœ๋ฐœํŒ€, Product Leader(๊ธฐํš, ๋””์ž์ด๋„ˆ), ์‚ฌ์—…ํŒ€, ๋งˆ์ผ€ํŒ…ํŒ€, QAํŒ€ ๋“ฑ ๋‹ค์–‘ํ•œ ํŒ€์ด ์žˆ์œผ๋ฉด์„œ ๋˜๊ฒŒ ์ฒด๊ณ„์ ์œผ๋กœ ์š”๊ตฌ์‚ฌํ•ญ๋ถ€ํ„ฐ ๊ฐœ๋ฐœ ๊ทธ๋ฆฌ๊ณ  Product Release๊นŒ์ง€ ์ฒด๊ณ„์ ์œผ๋กœ ์—…๋ฌด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‚˜๋‰˜์–ด์ง„ ํšŒ์‚ฌ์ด๋‹ค.

์—…๋ฌด


  • ๋‚˜๋Š” ์—ฌ๊ธฐ์„œ VOD ๊ด€๋ฆฌํ•˜๋Š” BackEnd ๊ฐœ๋ฐœ์ž๋กœ ์ด์งํ–ˆ์œผ๋ฉฐ, ํšŒ์‚ฌ์— ๊ฐ€์žฅ ํฐ ํ”„๋กœ์ ํŠธ ๋‹ด๋‹น์ž์ด๋‹ค. VOD ๊ด€๋ฆฌํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋Š” ์ด 3๋ช…์ด์„œ ์—ด์‹ฌํžˆ ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค.
  • ์ฃผ ์–ธ์–ด๋กœ๋Š” PHP ์ด๋ฉฐ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ๋Š” Laravel, CodeIgniter๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.
  • docker, kubernates, ArgoCD ๋“ฑ ๋‹ค์–‘ํ•œ CI-CD๋กœ๋„ ํ‹ˆํ‹ˆ์ด ๊ด€๋ฆฌ ๋ฐ ๋ฐฐํฌ๋„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋‹ค.
  • Database๋„ MySQL, Redis ๋“ฑ ๋‹ค์–‘ํ•˜๊ฒŒ ์‚ฌ์šฉ ์ค‘์— ์žˆ๋‹ค.

 

์ˆ˜์Šต๊ณผ์ œ ํšŒ๊ณ ๋ก

  • 12์›”์—์„œ ์•ฝ 3๊ฐœ์›”๋™์•ˆ ์ต์ˆ™ํ•˜์ง€ ์•Š์€ PHP๋ฅผ ํ™œ์šฉํ•˜์—ฌ Laravel ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ API ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ์ˆ˜์Šต๊ณผ์ œ์— ๋Œ€ํ•œ ํšŒ๊ณ ๋ก์ด๋‹ค.

์ˆ˜์Šต๊ณผ์ œ ํ”„๋กœ์ ํŠธ ๊ฐœ์š” ๋ฐ ๋กœ๋“œ๋งต

 

์•ฝ 1๋…„ 6๊ฐœ์›” ๋™์•ˆ์— ์ฃผ์–ธ์–ด๋กœ ์‚ฌ์šฉํ–ˆ๋˜ Java๊ฐ€ ์•„๋‹Œ Php์–ธ์–ด๊ฐ€ ํšŒ์‚ฌ์˜ ์ฃผ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด์— ํ•ด๋‹นํ•˜๋Š” ๊ณผ์ œ๋ฅผ ๋ถ€์—ฌ๋ฅผ ๋ฐ›์•˜์œผ๋ฉฐ, ์•ฝ 3๊ฐœ์›” ๋™์•ˆ Php ํ”„๋ ˆ์ž„์›Œํฌ์ธ Laravel ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Blog ๊ด€๋ จ API๋ฅผ ๊ฐœ๋ฐœ์„ ํ•˜์˜€๋‹ค.

 

Backend Spec

 

์ฒซ๋ฒˆ์งธ ๋‹ฌ์—๋Š” ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๋ฐ ํšŒ์›๊ฐ€์ž…์— ๋Œ€ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ •์˜ ํ•˜์˜€๋‹ค. ์™œ๋ƒํ•˜๋ฉด Laravel ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š” ๊ธฐ์กด Spring Boot๋ณด๋‹ค ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง€์›์„ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ์— ํ•ด๋‹น ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉ์„ ํ•˜๋‹ค๋ณด๋‹ˆ ๋งŽ์€ ๊ธฐ๊ฐ„๋“ค ๊ฑธ๋ ธ๋‹ค. 

 

1์ฃผ์ฐจ์—๋Š” ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„์— ๋Œ€ํ•˜์—ฌ ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•ด์•ผํ–ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ผ๋ผ๋ฒจ์—์„œ ์ง€์›ํ•˜๋Š” Autnetication์ด๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์ดํ•ด๋„๊ฐ€ ์ „ํ˜€ ์—†์–ด ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐพ์œผ๋ฉด์„œ ์ปค์Šคํ…€์Šค๋Ÿฝ๊ฒŒ ๊ฐœ๋ฐœ์ด ์ง„ํ–‰ํ•˜๋А๋ผ ๋Šฆ์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

1์ฃผ์ฐจ

 

  • Laravel์€ ๊ธฐ๋ณธ ํŒจ์Šค์›Œ๋“œ ํ˜•์‹์œผ๋กœ๋Š” Bcrypt๋ฅผ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ DB์— ์ €์žฅ ๋œ ๊ฐ’๊ณผ ๊ฐœ๋ฐœ ์ƒ์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” MD5 ๋กœ์งํ•˜๊ณ  ๋ฐ์ดํ„ฐ ๋งค์นญ์ด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋ถ€๋ถ„์— ๋Œ€ํ•˜์—ฌ ์ปค์Šคํ…€์ด ํ•„์š”ํ•˜์˜€๋‹ค.
  • ๋กœ๊ทธ์ธ ์‹œ JWT ํ† ํฐ์ด ๋ฐœํ–‰์„ ํ•ด์•ผํ•˜๋Š”๋ฐ, Laravel๋Š” ์ตœ๊ทผ 8๋ฒ„์ „ ๋ถ€ํ„ฐ Sanctum์ด๋ผ๋Š” ๋„๊ตฌ๋ฅผ ์ง€์›ํ•˜๋ฉด์„œ Laravel ๊ตฌ๋ฒ„์ „์—์„œ ์™ธ๋ถ€๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ jwt-auth๋ฅผ ์‚ฌ์šฉํ•ด์•ผ์ง€๋งŒ, jwt ํ† ํฐ์„ ๋ฐœํ–‰ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

2์ฃผ์ฐจ์—์„œ๋ถ€ํ„ฐ๋Š” ๋ณธ๊ฒฉ์ ์œผ๋กœ Laravel๋งŒ์˜ Auth, Middelware, Route ๋“ฑ์„ ํ•˜์—ฌ 1์ฃผ์ฐจ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋ง๊ณผ ํ•จ๊ป˜ API๋ฅผ ๊ฐœ๋ฐœ ์ง„ํ–‰ ํ•˜์˜€๋‹ค.

 

2์ฃผ์ฐจ

 

3์ฃผ์ฐจ์—๋Š” ๊ธฐ์กด ๊ฐœ๋ฐœ ์ง„ํ–‰ํ•˜์˜€๋˜ ์ฝ”๋“œ ์ปจ๋ฒ ์ด์…˜์ด ์ง„ํ–‰ ํ•˜์˜€๋‹ค. 1์ฃผ์ฐจ์—์„œ ๊ฐœ๋ฐœ ํ•˜์˜€๋˜ ๋กœ๊ทธ์ธ ์ปค์Šคํ…€ ๋ถ€๋ถ„์„ ๋‹ค์‹œ ์žฌ์ˆ˜์ •ํ•˜๋„๋ก ์ปจํŽŒ์„ ๋ฐ›์•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ์— ๋Œ€ํ•˜์—ฌ ๊ฐœ๋ฐœ ๋ฐ ์ปจ๋ฒ ์ด์…˜์ด ์ง„ํ–‰ ๋˜์—ˆ๋‹ค.

 

3์ฃผ์ฐจ

 

๋กœ๊ทธ์ธ ํ”„๋กœ์„ธ์Šค

 

์ด๋ ‡๊ฒŒ ์ˆ˜์Šต๊ณผ์ œ๋ฅผ ํ•œ ๋‹ฌ์„ ํ•˜๋‹ค๋ณด๋‹ˆ ๋งŽ์€ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋˜๊ฑธ๋กœ ๊ธฐ์–ตํ•œ๋‹ค. ์›๋ž˜ ์–ธ์–ด์˜ ์žฅ๋ฒฝ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ด ๋งก์•˜๋˜ ์‚ฌ๋žŒ ์ค‘์— ํ•˜๋‚˜๋กœ์จ, ์–ธ์–ด๋ฅผ ๊ทธ๋ƒฅ ์ผ๋ฐ˜์ ์„ ๋ฐฐ์šฐ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ฒŒ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ค์—ˆ๋˜ ํ•œ๋‹ฌ์ด์˜€๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๊ผญ ํ•˜๋‚˜์˜ ์–ธ์–ด๋งŒ ํŒŒ์„œ ๋งŒ๋Šฅ ๋ฐ•์‚ฌ๊ฐ€ ๋  ๊บผ ์•„๋‹ˆ๋ฉด ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ฅผ ์–ธ์–ด๋ฅผ ์•Œ๋ฉด์„œ ์–ด๋–ป๊ฒŒ ํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•˜์—ฌ ๋งŽ์€ ๊ณ ๋ฏผ๊ณผ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋ฅผ ์งœ์•ผ์ง€ Bug๋„ ์•ˆ๋‚˜ํƒ€๋ฉด์„œ, ๋‹ค๋ฅธ 3์ž๊ฐ€ ๋ณผ ๋•Œ ์ฃผ์„์—†์ด๋„ ๊ทธ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์ดํ•ด ํ•  ์ˆ˜ ์žˆ์„๊นŒ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์„ ํ•˜๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š”๊ฒŒ ๊ฐ€์žฅ ํฐ ๊ณ ๋ฏผ์ด๋ผ๊ณ  ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค

๋ฐ˜์‘ํ˜•