๐Ÿšฉ1์ฐจ ํ”„๋กœ์ ํŠธ๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค

์ด์ง€์—ฐยท2020๋…„ 8์›” 28์ผ
1

โœ…์œ„์ฝ”๋“œ์—์„œ 1์ฐจ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค.

2020๋…„ 8์›” 18์ผ ~ 2020๋…„ 8์›” 28์ผ (11์ผ) ์•ฝ 2์ฃผ๋™์•ˆ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํŒ€ ์†Œ๊ฐœ

ํŒ€๋ช…: Dev-X

ํŒ€์›์€ ์ด 5๋ช…์œผ๋กœ ๊ตฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋ฐฑ์•ค๋“œ part - ๊น€๊ธฐ์šฑ, ์ด์ง€์—ฐ
ํ”„๋ก ํŠธ์—”๋“œ part - ์ดํ˜ธํ˜„, ์†ก๋‹ค์Šฌ(PM), ํ™ฉ์—ฐ์šฑ

Spacex ํด๋ก  ํ”„๋กœ์ ํŠธ

๐Ÿค—spacex๊ฐ€ ์ƒ์†Œํ•  ์ˆ˜ ์žˆ์–ด ๊ฐ„๋žตํ•˜๊ฒŒ ์†Œ๊ฐœ๋ฅผ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ผ๋ก  ๋จธ์Šคํฌ์— ์˜ํ•ด 2002๋…„ ์„ค๋ฆฝ๋˜์—ˆ์œผ๋ฉฐ, ๋ฏธ๊ตญ์˜ ๋ฏผ๊ฐ„ ์šฐ์ฃผ๊ธฐ์—…์œผ๋กœ ์žฌ์‚ฌ์šฉ ๋กœ์ผ“์„ ๊ฐœ๋ฐœํ•˜์—ฌ ๋กœ์ผ“ ๋ฐœ์‚ฌ๋น„์šฉ์„ ๊ธฐ์กด์˜ 10๋ถ„์˜ 1 ์ˆ˜์ค€์œผ๋กœ ์ค„์ด๊ฒ ๋‹ค๋Š” ๊ฒƒ์œผ๋กœ ๊ธฐ์ˆ  ๊ฐœ๋ฐœ ๋ฐฉํ–ฅ์œผ๋กœ ์žก์•˜์Šต๋‹ˆ๋‹ค.

์šฐ์ฃผ ์ •๊ฑฐ์žฅ ๋ณด๊ธ‰ ํ”„๋กœ์ ํŠธ์— ์„ ์ •๋˜์–ด ๋Œ€๊ทœ๋ชจ ํˆฌ์ž๋ฅผ ๋ฐ›์•„ ์„ธ๊ณ„์˜ ํ๋ฆ„์„ ๋ฐ”๊ฟ”๋‚˜๊ฐ”๊ณ  ํ˜„์žฌ๊นŒ์ง€ ํ•ญ๊ณต์šฐ์ฃผ์‚ฐ์—…์—์„œ ์œ ์ผ๋ฌด์ดํ•œ ๋Œ€๋‹จํ•œ ๊ธฐ์—…์ž…๋‹ˆ๋‹ค.๐Ÿ‘

spacex ์‚ฌ์ดํŠธ
์‚ฌ์ดํŠธ๋Š” spacex์˜ ์†Œ๊ฐœ ๋ฐ ์—ญ์‚ฌ๋‚ด์šฉ, shop ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

Back-End ์ ์šฉ๊ธฐ์ˆ 

  • Python, Django Framework
  • Beautifulsoup, Selenium
  • Bcrypt
  • PyJWT
  • Decorator
  • AqueryTool, MySQL
  • AWS EC2,RDS
  • CORS headers
  • S3
  • Linux

ํ˜‘์—… TOOL

  • Git, GitHub
  • Trello
  • Slack
  • Postman
  • AWS

๋™์˜์ƒ

ํ”„๋กœ์ ํŠธ์—์„œ ๋งก์€ ์—ญํ• 

  • Database modeling๋ฅผ ERD๋ชจ๋ธ๋กœ ์„ค๊ณ„

  • Endpoint : user - ๋กœ๊ทธ์ธ,ํšŒ์›๊ฐ€์ž…, order - ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‹ด๊ธฐ/๋ชฉ๋ก/์‚ญ์ œ

  • Bcrypt, PyJWT : ํšŒ์›๊ฐ€์ž… ์‹œ ๊ธฐ์ž…ํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™” ๋ฐ ํ† ํฐ ๋ฐœํ–‰

  • LoginDecorator : ๋ฐœํ–‰ํ•œ ํ† ํฐ์„ ํ†ตํ•œ ๋“ฑ๋กํšŒ์› ์ธ์ฆ/์ธ๊ฐ€, ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์—”๋“œํฌ์ธํŠธ ์ ์šฉ

  • UnitTest : ์ดํ›„ ์ž‘์—… ์˜ˆ์ •

  • RESTful API๋ฅผ ์ดํ•ดํ•˜๊ณ  URL์ฃผ์†Œ๋ฅผ RESTFUL์‹์œผ๋กœ ๊ตฌํ˜„

[devx.url]

[order.url]

  • HTTP : GET, POST, DELETE, PETCH ๋ฉ”์†Œ๋“œ์˜ ์ฐจ์ด์ ์„ ์•Œ๊ณ  ํ”„๋ก ํŠธ์—์„œ ๋„˜์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌ

  • MYSQL : Database ์ƒ์„ฑ, Django์™€ ์—ฐ๊ฒฐ

๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์€ ์ฝ”๋“œ/ํ•จ์ˆ˜/๋กœ์ง

OrderAddView

  • Decorator๋กœ ๋กœ๊ทธ์ธ ์ƒํƒœ ์ธ์ง€ ์•„๋‹Œ์ง€ ํ™•์ธ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋ก ํŠธ ๋‹จ์—์„œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ถ”๊ฐ€ ๋ฒ„ํŠผ์œผ๋กœ ๋ˆ„๋ฅด๋ฉด ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ json์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๋“ค์–ด์˜จ prdouct_id๊ฐ€ ์กด์žฌํ•˜๋Š” ์ƒํ’ˆ์ธ์ง€ ์•„๋‹Œ์ง€ filter().exits() ๋ฉ”์„œ๋“œ๋กœ ํ™•์ธ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ, ์กด์žฌํ•œ๋‹ค๋ฉด Order์— ๋„ฃ์„ ์™ธ๋ž˜ํ‚ค์ธ User์ •๋ณด์™€ product์ •๋ณด๋ฅผ ๊ฐ๊ฐ getํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋•Œ, User์ •๋ณด๋Š” decorator์—์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” request์•ˆ์— user์ •๋ณด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • product๋Š” request.body์— ๋‹ด๊ฒจ ์˜จ ์ •๋ณด๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ดํ›„ ๋‚˜๋จธ์ง€ color, size, quantity๋Š” request.body์— ๋‹ด๊ธด ์ •๋ณด๋ฅผ ํ†ตํ•ด์„œ order๊ฐ์ฒด๋กœ ๋งŒ๋“ค๊ณ  DB์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

OrderGetView

  • decorator์—์„œ ์ €์žฅํ•œ user์ •๋ณด๋ฅผ ํ†ตํ•ด์„œ user_id๋ฅผ ๊ฐ€์ ธ์™€์„œ Orderํ…Œ์ด๋ธ”์—์„œ ํ•ด๋‹น ์œ ์ €์˜ ์ฃผ๋ฌธ๋งŒ ํ•„ํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.
  • ์™ธ๋ž˜ํ‚ค์ธ productํ…Œ์ด๋ธ”์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ selected_related๋ฅผ ์ด์šฉํ•ด์„œ order์˜ product_id์— ๋Œ€ํ•œ productํ…Œ์ด๋ธ”์˜ name,price ๊ฐ’์€ ์ถ”๊ฐ€๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • values()๋ฉ”์†Œ๋“œ๋Š” selectํ•  ์ปฌ๋Ÿผ๋ชฉ๋ก์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • all()๋ฉ”์†Œ๋“œ๋Š” ์กฐ๊ฑด์— ๋งž๋Š” ๋ชจ๋“  ํ–‰์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
  • ๊ฐ€์ ธ์˜จ order๋ชฉ๋ก์„ listํ˜•์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  • list๋ฅผ for๋ฌธ์œผ๋กœ ๋Œ๋ฆฝ๋‹ˆ๋‹ค. why?
    order๋งˆ๋‹ค ์™ธ๋ž˜ํ‚ค๋กœ ์—ฐ๊ฒฐ๋œ product_id ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ํ•„ํ„ฐ๋งํ•ด์„œ imageํ…Œ์ด๋ธ”์—์„œ image์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์˜ค๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค.
    ์ด๋•Œ, imageํ…Œ์ด๋ธ”์ด productํ…Œ์ด๋ธ”์„ ์ •์ฐธ์กฐํ•˜๊ณ  productํ…Œ์ด๋ธ”์ด imageํ…Œ์ด๋ธ”์„ ์—ญ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— productํ…Œ์ด๋ธ”๋กœ ์กฐํšŒํ•˜๊ธฐ ๋•Œ๋ฌธ์— prefetch_related๋ฅผ ์ด์šฉํ•ด์„œ image์ปฌ๋Ÿผ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • ์กฐ๊ฑด์— ๋งž๋Š” ์ปฌ๋Ÿผ์„ ํ•œ๊ฐœ์”ฉ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— get()๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • ์ดํ›„, dictionary์•ˆ์— image์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด
    order['image'] = images['image__image'] ๊ณผ ๊ฐ™์€ ์ฒ˜๋ฆฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ๋กœ ๋ณด๋‚ผ ๋ฆฌ์ŠคํŠธ result_list์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

OrderDelView

  • decorator์—์„œ ์ €์žฅํ•œ user์ •๋ณด๋ฅผ ํ†ตํ•ด์„œ user_id๋ฅผ ๊ฐ€์ ธ์™€์„œ Orderํ…Œ์ด๋ธ”์—์„œ ํ•ด๋‹น ์œ ์ €์˜ ์ฃผ๋ฌธ๋งŒ ํ•„ํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.
  • request body์—์„œ ๋‹ด์€ ์ •๋ณด์™€ user_id ๊ฐ–๊ณ ์˜ต๋‹ˆ๋‹ค.
  • ํ”„๋ก ํŠธ๋‹จ์—์„œ ์‚ญ์ œ๋ฅผ ๋ˆ„๋ฅด๋ฉด Order ๊ฐ์ฒด์—์„œ order_id๋ฅผ getํ•ด์™€์„œ order๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๐Ÿ‘Œ

profile
Everyday STEP BY STEP

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