[Project]Watcha Pedia TeamProject ๐Ÿš€

Inah-_-ยท2021๋…„ 4์›” 11์ผ
2

Projects

๋ชฉ๋ก ๋ณด๊ธฐ
2/2
post-thumbnail

Watcha Pedia Project

Lush Project์™€ ๋™์ผํ•˜๊ฒŒ ํ”„๋กœ์ ํŠธ๋Š” ์ˆœ์ˆ˜ ๊ฐœ๋ฐœ์‹œ๊ฐ„์˜ ๋น„์ค‘์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ด๋ฏธ ์„œ๋น„์Šค ์ค‘์ธ ์‚ฌ์ดํŠธ์˜
๊ธฐํš์ด๋‚˜ ๋””์ž์ธ์„ ํด๋ก ํ•˜์—ฌ ์ง„ํ–‰ํ–ˆ๋‹ค.
๋กœ์ง์ด๋‚˜ ๊ตฌํ˜„๋ฐฉ๋ฒ•์€ ์ง์ ‘ ์ฝ”๋”ฉํ•œ๋‹ค.

์™“์ฑ ํ”ผ๋””์•„๋Š” ํ•œ๊ตญ์˜ ๋ฒค์ฒ˜ํšŒ์‚ฌ์—์„œ ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋ฉฐ
์˜ํ™”๋ฅผ ์ถ”์ฒœํ•ด์ฃผ๋Š” ์„œ๋น„์Šค๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์ด ๋ณธ ์˜ํ™”์— ๋Œ€ํ•ด ๋ณ„์ ์„ ๋‚จ๊ธฐ๋ฉด
์ทจํ–ฅ์„ ๋ถ„์„ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ข‹์•„ํ• ๋งŒํ•œ ์˜ํ™”๋ฅผ ์•Œ์•„์„œ ์ถ”์ฒœํ•ด์ฃผ๊ณ ,
์˜ํ™”์— ๋Œ€ํ•œ ์ฝ”๋ฉ˜ํŠธ, ํ•ด๋‹น ์ฝ”๋ฉ˜ํŠธ์˜ ์ข‹์•„์š” ํ‘œ์‹œ, ํ•ด๋‹น ์ฝ”๋ฉ˜ํŠธ์˜ ๋Œ€๋Œ“๊ธ€ ๋“ฑ ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค.

์ œ์ผ ์žฌ๋ฏธ์žˆ๋‹ค๊ณ  ๋Š๊ปด์ง„ ๊ธฐ๋Šฅ์€ '์ปฌ๋ ‰์…˜' ๊ธฐ๋Šฅ์ธ๋ฐ,
์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์˜ํ™”์˜ ์ปฌ๋ ‰์…˜์„ ๋งŒ๋“ค์–ด
๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค. ์ด ์ ์ด ๊ต‰์žฅํžˆ ํฅ๋ฏธ๋กญ๊ฒŒ ๋Š๊ปด์กŒ๋‹ค.

์ด ๊ธฐ๋Šฅ์„ ๊ผญ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ ์‹œ๊ฐ„์ƒ ์ปฌ๋ ‰์…˜์„ ์™„๋ฒฝํžˆ ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ•ด์„œ ์•„์‰ฌ์› ๋‹ค.
๋ฌผ๋ก  ์šฐ๋ฆฌํŒ€ ๋ชจ๋‘ ๋ชฉํ‘œํ•œ ๊ธฐ๋Šฅ๋“ค์€ 80% ์ด์ƒ ๊ตฌํ˜„ ํ–ˆ์ง€๋งŒ,
ํŒ€์›๋ถ„๋“ค ๋ชจ๋‘ ์•„์‰ฌ์šด ์ ์ด ๋งŽ์•„ ์ถ”ํ›„์— ๋ฆฌํŒฉํ† ๋ง์„ ๊ผญ ์ง„ํ–‰ํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

โš–๏ธ Project Detail

๊ธฐ๊ฐ„

2021.03.29 ~ 2021.04.11

์ธ์›

ํ”„๋ก ํŠธ์—”๋“œ 3๋ช… + ๋ฐฑ์—”๋“œ 2๋ช…
Front GitHubใ€€ใ€€Backend GitHub

Backend Flow

  • Planning Meeting - ์ „์ฒด์ ์ธ ๊ณ„ํš๊ณผ ํ˜‘์—…ํˆด ์„ธํŒ…
  • AQueryTool - ์ž‘์„ฑ ํ›„ ํ”„๋ก ํŠธ๋ถ„๋“ค์—๊ฒŒ ์ „์ฒด์ ์ธ ํ…Œ์ด๋ธ”๊ณผ ํ‚ค๊ฐ’ ๊ณต์œ 
  • MySQL - csvํŒŒ์ผ ์ƒ์„ฑ ํ›„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—…๋กœ๋” ์ž‘์„ฑ
  • API - ๋กœ์ง์„ ์ž‘์„ฑํ•˜๋ฉฐ ๋งก์€ ๊ธฐ๋Šฅ์˜ ๋‹ด๋‹น์ž๋ผ๋ฆฌ ํ‚ค๊ฐ’, ํ†ต์‹ 
  • AWS - RDS์™€ EC2์ƒ์„ฑ
  • Docker - Docker ์ด๋ฏธ์ง€ ์ƒ์„ฑํ•˜์—ฌ ์„œ๋ฒ„ ๋ฐฐํฌ

Project Architecture

  • Python
  • Django
  • AQuery
  • MySQL
  • Bcrypt
  • JWT
  • Cors headers
  • Docker
  • Gunicorn
  • AWS (RDS, EC2)

ํ˜‘์—… ํˆด

  • Git & GitHub
  • Trello
  • AQuery
  • Slack

๋‹ด๋‹นํ•œ ๊ธฐ๋Šฅ - UserApp

  • ์ผ๋ฐ˜ ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž… & ์นด์นด์˜ค ๋กœ๊ทธ์ธ API (UnitTest ์™„๋ฃŒ)
  • ์‚ฌ์šฉ์ž ๋งˆ์ดํŽ˜์ด์ง€ API (UnitTest ์™„๋ฃŒ)
  • ์‚ฌ์šฉ์ž๊ฐ€ ํ‰๊ฐ€ํ•œ ์˜ํ™” ๋ฆฌ์ŠคํŠธ API (UnitTest ์™„๋ฃŒ)
  • ๊ทธ ์™ธ ์‹œ๊ฐ„์ด ๋ถ€์กฑํ•˜์—ฌ UnitTest์„ ๋งˆ์น˜์ง€ ๋ชปํ•œ ๊ณ„์ •๊ด€๋ จ API
  • Comment, MovieCollection

๐Ÿ™Œ What did We Learn?

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋ฐฐ์šด ์ 


์ œ์ผ ํฌ๊ฒŒ ๋ฐฐ์šด ์  ์ค‘ ํ•˜๋‚˜๋Š” ๋ฐ”๋กœ 'ํ˜‘์—…'์ด๋‹ค.


1์ฐจ ํ”„๋กœ์ ํŠธ ๋•Œ์˜ ์•„์‰ฌ์› ๋˜ ์ ์„ ๋ฐ”๋กœ์žก๊ณ , ํ˜‘์—…ํ•˜๊ณ  ํ†ต์‹ ํ•˜๋ฉฐ
์ง„ํ–‰ํ–ˆ๋˜ ํ”„๋กœ์ ํŠธ. ํ•˜๋ฃจ์˜ ์‹œ์ž‘์„ ์Šคํƒ ๋“œ์—… ๋ฏธํŒ…์œผ๋กœ ํ•˜์—ฌ
๋”์šฑ ๊ตฌ์ฒด์ ์ธ ์ง„ํ–‰ ํ˜„ํ™ฉ์„ ๋…ผ์˜ํ•˜๊ณ , ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•˜์—ฌ ๊ตฌํ˜„์— ๋งŽ์€ ์‹œ๊ฐ„์ด ํ• ์• ๋  ๊ฒƒ ๊ฐ™์€
๊ธฐ๋Šฅ์€ ๋ฐ”๋กœ๋ฐ”๋กœ 2์ˆœ์œ„ ์ถ”๊ฐ€ ๊ตฌํ˜„์‚ฌํ•ญ์œผ๋กœ ๋บ๋‹ค.

ํ•„์ˆ˜ ๊ตฌํ˜„์‚ฌํ•ญ์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‘์–ด ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•œ Front์™€ Back์ด
๋งž์ถฐ๋ด์•ผ ํ•  ์‚ฌํ•ญ์„ Trello ํ‹ฐ์ผ“์— ์ž‘์„ฑํ•ด๋‘์—ˆ๋‹ค.

์ผ๋‹จ, ํ˜‘์—…์ด ์ž˜ ๋˜์–ด์„œ ๊ทธ๋Ÿฐ์ง€ ๋„ˆ๋ฌด๋„ˆ๋ฌด ์žฌ๋ฏธ์žˆ๊ณ  1์ฐจ ๋•Œ ๋ณด๋‹ค ์ˆ˜์›”ํ•˜๊ฒŒ ์ง„ํ–‰๋˜์—ˆ๋‹ค.
1์ฐจ ํ”„๋กœ์ ํŠธ๋•Œ์˜ ๋ง‰์—ฐํ•จ์—์„œ ์˜ค๋Š” ์ŠคํŠธ๋ ˆ์Šค๋„ ์—†์—ˆ์„ ๋ฟ๋”๋Ÿฌ

๋‹ค๋“ค ํ•œ๋ฒˆ ํ•ด๋ด์„œ ๊ทธ๋Ÿฐ์ง€ ใ…‹ใ…‹ใ…‹๐Ÿ’–
??? : "์ด๊ฑฐ ํ‚ค๊ฐ’ ๋ฐ”๋กœ ์ ์šฉํ• ๊ฒŒ์š”~"
??? : "์„œ๋ฒ„ ํ†ต์‹  ๊ฐ€๋Šฅ?"
?? : "๋‹น๊ทผ๐Ÿฅ•"
?? : "์ด API๋Š” ๋ฆฌ์ŠคํŠธ๋กœ ๋ฟŒ๋ ค์ ธ์š” ๋ฐ์ดํ„ฐ๋ช…์€ movie_info_data์ž…๋‹ˆ๋‹ค~"
??? : "๐Ÿ‘Œ"

ํ‹ฐํ‚คํƒ€์นด ์ž˜ ๋งž์•˜๋˜ ์šฐ๋ฆฌ ์™“๋”ํ”ผ๋””์•„ํŒ€ ๐Ÿฅฐ

๋ˆ„๊ตฌ ํ•˜๋‚˜ ์ŠคํŠธ๋ ˆ์Šค ๋ฐ›์„ ๊ฑฐ ๊ฐ™์œผ๋ฉด ๋ฐ”๋กœ๋ฐ”๋กœ ์บ์น˜ํ•ด์„œ ์ŠคํŠธ๋ ˆ์Šค ๋ฐ›์„ ํ•„์š” ์—†๋‹ค๊ณ ,
ํž˜๋“ค๋ฉด ๋‚˜๋ˆ ์„œ ํ•ด๋„ ๋˜๊ณ , ์ง€๊ธˆ ๋‹น์žฅ ์•ˆํ•ด๋„ ๋œ๋‹ค๊ณ ,
๊ฒฉ๋ ค๊ฐ€ ๋„˜์ณํ˜๋ €๋˜ ํ”„๋กœ์ ํŠธ์˜€๋‹ค.

๋ชจ๋ธ๋ง ์‹ ์˜ ํ•œ์ˆ˜

์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชจ๋ธ๋ง์„ ๋„˜ ์ž˜์งœ์„œ ๋กœ์ง ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์ด ๋ณ„๋กœ ์—†์—ˆ๋‹ค.
๋ฌผ๋ก  Product APP์˜ ๋กœ์ง์ด ๋” ๋ณต์žกํ•˜๋‹ค.

๋‚˜๋Š” 1์ฐจ ํ”„๋กœ์ ํŠธ ๋•Œ ProductAPP์„ ๋งก์•„์„œ
์ด๋ฒˆ ํ”„๋กœ์ ํŠธ ๋•Œ์—๋Š” UserAPP์„ ๋งก๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ,

๋ณ‘์ˆ˜๋‹˜(Backend)์ด ์˜†์—์„œ prefetch_related์™€ ์‹ธ์šฐ๋Š”๊ฑธ ๋ณด๊ณ 
์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ์˜ UserAPP์€ ์•„์ฃผ ์กฐ๊ธˆ ์‰ฌ์šดํŽธ์ด๊ตฌ๋‚˜ ์ƒ๊ฐํ–ˆ๋‹ค.

๊ทธ๋ž˜๋„ ๋ชจ๋ธ๋ง์„ ์ •๋ง ์œ ์—ฐํ•˜๊ฒŒ, ์–ด๋Š ํ…Œ์ด๋ธ”์—์„œ๋“  ์ฐธ์กฐ๊ฐ€ ์‰ฝ๊ฒŒ๋” ์งœ์„œ
์ƒ๋‹นํžˆ ๋งŒ์กฑ์Šค๋Ÿฝ๋‹ค.

๐Ÿฅบ ์•„์‰ฌ์› ์ง€๋งŒ ํ•œ๋ฐœ ์„ฑ์žฅํ•œ ์ 

๋‘๋‘ฅ! ์นด์นด์˜ค API

๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๋ฉฐ ํ˜ผ์ž ๋ฌด์—‡์„ ๊ฐœ๋ฐœํ•ด๋ณธ๊ฒŒ ์ฒ˜์Œ์ด์ง€ ์•Š์•˜๋‚˜ ์‹ถ๋‹ค.
์ผ๋‹จ ์†Œ์…œ๋กœ๊ทธ์ธ์„ ํ•ด๋ด์•ผ๊ฒ ๋‹ค๊ณ  ๋งˆ์Œ ๋จน์€ ํ›„,
ํ˜น์‹œ๋‚˜ ๋ชปํ•  ๊ฐ€๋Šฅ์„ฑ์„ ์—ผ๋ คํ•˜์—ฌ ์ผ๋ฐ˜ ํšŒ์›๊ฐ€์ž…๊ณผ ๋กœ๊ทธ์ธ์˜ ์œ ๋‹›ํ…Œ์ŠคํŠธ๊นŒ์ง€ ๋งˆ์นœ ํ›„ ์ง„ํ–‰ํ•˜์˜€๋‹ค.

๋‚ด๊ฐ€ ๊ตฌํ˜„๋ชปํ•ด์„œ ํ”„๋กœ์ ํŠธ ์‚ฌ์ดํŠธ์— ํšŒ์›๊ฐ€์ž…๊ณผ ๋กœ๊ทธ์ธ์ด ์—†์œผ๋ฉด ์•ˆ๋˜๋‹ˆ๊นŒ

์ฒ˜์Œ์—” ์นด์นด์˜ค ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉฐ Flow๋ฅผ ์ดํ•ดํ•˜๋ ค๊ณ  ์• ์ผ๋‹ค.
Front์™€ Back์˜ ๊ตฌํ˜„ ๊ฒฝ๊ณ„๋ฅผ ์ฐพ๋Š”๊ฒŒ ์–ด๋ ค์› ๋‹ค.

์นด์นด์˜ค ๋กœ๊ทธ์ธ์„ ๋งก์€ ์„ ์•„๋‹˜(Front)๊ณผ ํ•จ๊ป˜ ์ธ์ฆ์ฝ”๋“œ๋ถ€ํ„ฐ ํ† ํฐ๊นŒ์ง€ ํ† ๋ก ํ•ด๊ฐ€๋ฉฐ ๊ตฌํ˜„ํ–ˆ๋˜
์ŠคํŠธ๋ ˆ์Šค:์ฆ๊ฑฐ์›€ 3:7์˜ ๋น„์œจ๋กœ ์ง„ํ–‰ํ–ˆ๋˜ API์˜€๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ๋Š” ์„ ์•„๋‹˜์ด ์นด์นด์˜ค ํšŒ์›์˜ ํ† ํฐ์„ ๋‚˜์—๊ฒŒ ์ด์ฃผ๋ฉด,
์ด ํ† ํฐ๊ฐ’์˜ ํšŒ์› ์ •๋ณด๋ฅผ ์นด์นด์˜ค์—๊ฒŒ ์š”์ฒญํ•œ๋‹ค.
์ด ์š”์ฒญํ•˜์—ฌ ๋ฐ›์€ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๋‚ด DB์— ์กฐํšŒํ•˜์—ฌ
์ •๋ณด๊ฐ€ ์žˆ์œผ๋ฉด ๋ฐ”๋กœ ๋กœ๊ทธ์ธ, ์—†์œผ๋ฉด ์ •๋ณด๋ฅผ DB์— ์ €์žฅํ•˜์—ฌ ํšŒ์›๊ฐ€์ž… ์‹œํ‚ค๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

ํ†ต์‹ ํ•˜์—ฌ ๋งž์ถฐ๋ดค์„ ๋•Œ SUCCESS ๋œจ๋˜ ์พŒ๊ฐ.. ์žŠ์„ ์ˆ˜ ์—†์ฝ


๐ŸŒˆ ๋งˆ์น˜๋ฉฐ...

๋งˆ์ง€๋ง‰ 2์ฐจ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ฌด์‚ฌํžˆ ๋์ด ๋‚˜๊ณ  ๋‹ค์Œ์ฃผ๋ถ€ํ„ฐ ๊ธฐ์—…ํ˜‘์—…์— ๋‚˜๊ฐ€๊ฒŒ ๋˜์—ˆ๋‹ค.
์šฐ๋ฆฌ ํŒ€์›๋“ค ๋ฌด์‚ฌํžˆ ๋‹ค๋…€์™€์„œ ๋งŒ๋‚˜๊ณ ..๐Ÿฅบ ๋ฐœ์ „ํ•œ ๋ชจ์Šต์œผ๋กœ ๊ฐ™์ด ์ฆ๊ฒ๊ฒŒ ๋ฆฌํŒฉํ† ๋ง ํ•˜๋Š”
๋‚ ์ด ์–ผ๋ฅธ ์™”์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.

์˜์ง€๊ฐ€ ๋งŽ์ด ๋๋˜ ๋ณ‘์ˆ˜๋‹˜, ํŒ€์˜ ๊ธฐ๋‘ฅ ์„ ์•„๋‹˜, ์˜๊ฒฌ ์ˆ˜๋ ด์— ๋„์›€์„ ์ฃผ์—ˆ๋˜ ์ค€์šฐ๋‹˜,
์Šคํƒ ๋“œ์—… ๋ฏธํŒ…์„ ์ž˜ ์ด๋Œ์–ด ์ฃผ์…จ๋˜ ์šฐ์˜๋‹˜! ๋‹ค๋“ค ๋ฉ‹์žˆ๋Š” ํŒ€์›๋“ค์ด์˜€๊ณ ,
ํ”„๋กœ์ ํŠธ์˜ ๊ฒฐ๊ณผ ๋˜ํ•œ ๋งŒ์กฑ์Šค๋Ÿฌ์› ๋‹ค.

๋‹ค๋“ค ๊ธฐ์—…ํ˜‘์—… ํ™”์ดํŒ…~!๐Ÿš€


profile
Backend Developer

5๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2021๋…„ 4์›” 11์ผ

SUCCESS ์งœ๋ฆฟํ•ด,,, ๐Ÿ’ฅ ์ธ์•„๋‹˜ ์‹ ๋‚˜ํ•˜๋Š” ํ‘œ์ • ์•„์ง๋„ ์ƒ๊ฐ๋‚˜๋„ค์š” ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹
๊ฐ™์ด ํ”„๋กœ์ ํŠธํ•ด์„œ ์ฆ๊ฑฐ์› ์–ด์š”! ์ธ์•„๋‹˜๋„ ๊ธฐ์—…ํ˜‘์—… ํ™”์ดํŒ…์ด์—์š”๐Ÿ˜Ž

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2021๋…„ 4์›” 11์ผ

์ธ์•„๋‹˜ "์‚ฝ์งˆ์€ ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค" ๋ˆˆ์— ํ™• ๋“ค์–ด์˜ค๋„ค์š” ๐Ÿคญ..!
ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„๊นŒ์ง€ ์ˆ˜๊ณ  ๋งŽ์œผ์…จ์Šต๋‹ˆ๋‹ค ๊ธฐ์—…ํ˜‘์—…์—์„œ๋„ ๋ฝœ์ดํŒ… !! ๐Ÿ‘๐Ÿป๐Ÿ‘๐Ÿป

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2021๋…„ 4์›” 26์ผ

์ธ๊ฐ„ ๋น„ํƒ€๋ฏผ ์ธ์•„๋‹˜์— ๊ธ์ • ์—๋„ˆ์ง€๊ฐ€ ๊ธ€์—์„œ๋„ ๋Š๊ปด์ง€๋„ค์š”~
๊ธฐ์—…ํ˜‘์—… ์ค‘์— ํฐ ํž˜ ์–ป๊ณ  ๊ฐ‘๋‹ˆ๋‹ค~~ ์ธ์•„๋‹˜ ํ™”์ดํŒ…!!

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ