๐ŸŒŸ2์ฐจ ํ”„๋กœ์ ํŠธ - Patagonia๐ŸŒŸ

GyungHo Goยท2020๋…„ 6์›” 22์ผ
0

Wecode Project

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

์†Œ๊ฐœ

ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ

  • patagonia.com ์‚ฌ์ดํŠธ์˜ interface ์™€ ๋™์ผํ•˜๊ฒŒ ํ™”๋ฉด ๊ตฌํ˜„ํ•˜๊ธฐ
  • Hooks์™€ styled-components๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ , ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด๋ณด๊ธฐ
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด slide์™€ scroll๋“ฑ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ
  • pagination๊ณผ filter๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ
  • ๋ฐ˜์‘ํ˜• ์›นํŽ˜์ด์ง€ ๊ตฌํ˜„
  • ๋‹ค์Œ ์†Œ์…œ๋กœ๊ทธ์ธ ๊ตฌํ˜„

์‚ฌ์šฉ๋œ ๊ธฐ์ˆ 

front-End
React.js
Hooks(useState, useEffect)
Styled-Components
Router-dom

Back-End
Django web framework : Python 3.8
Scrapping : BeautifulSoup, Selenium
Hash : bcrypt
Encrytion : JWT(Jason Web Token)
Deployment : AWS EC2, RDS with Docker

๋‹ด๋‹นํ•œ ๋ถ€๋ถ„

  • ๋ฉ”์ธ ํŽ˜์ด์ง€ nav๋ฐ”, footer, ๋ฐ˜์‘ํ˜• ์›น
  • ์ œํ’ˆ ๋ฉ”์ธ ํŽ˜์ด์ง€

ํ”„๋กœ์ ํŠธ ํ›„ ๋Š๋‚€์ 

์ž˜ํ•œ ๋ถ€๋ถ„

  • ์ต์ˆ™ํ•ด์ ธ ์žˆ๋˜ classํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ ๋” ๋‚˜์•„๊ฐ€ Hooks์™€ styled-component๋ฅผ ์งง์€ ์‹œ๊ฐ„์— ๋น ๋ฅด๊ฒŒ ์ตํžˆ๊ณ , ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์— ์„ฑ๊ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์˜€๋‹ค.
  • 1์ฐจ ํ”„๋กœ์ ํŠธ ๋•Œ๋ณด๋‹ค BackEnd์™€ ๋” ๋งŽ์€ ์†Œํ†ต์„ ํ•˜์˜€๊ณ , API๋ฐ›์•„ map๊ณผ filter๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.
  • 1์ฐจ ํ”„๋กœ์ ํŠธ ๋•Œ ํ•˜์ง€ ๋ชปํ–ˆ๋˜ mock data๋ฅผ ๋งŒ๋“ค์–ด ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•˜์˜€๋‹ค.
  • ์„ฑ๊ณต์ ์ธ ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ์„ธํŒ…
  • ๊ธฐ์กด์˜ git์—์„œ rebase ๊ธฐ๋Šฅ๊นŒ์ง€ ํ•œ๋ฒˆ์˜ ์‹ค์ˆ˜์—†์ด ๋งˆ์ณค๋‹ค๋Š”์ 
  • pagination ๊ตฌํ˜„
  • ๋ฐ˜์‘ํ˜• ์›นํŽ˜์ด์ง€ ๊ตฌํ˜„

์•„์‰ฌ์šด ๋ถ€๋ถ„

  • ํ”„๋กœ์ ํŠธ ์ค‘๊ฐ„์— ๋ฐฐ์› ๋˜ redux๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์ง€ ๋ชปํ•œ ์ 
  • Map์„ ์‚ฌ์šฉํ•˜์˜€์ง€๋งŒ ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฃจ๋Š”๋ฐ ์žˆ์–ด์„œ ์–ด์ƒ‰ํ•œ ์ 
  • styled-components์˜ props ์‚ฌ์šฉ์— ๋ถ€์กฑํ•œ ์ 
  • frontend๋ผ๋ฆฌ์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ๋ถ€์กฑํ–ˆ๋˜ ์ 

๊ฐœ์„ ๋ฐฉ์•ˆ

  • 1์ฐจ ํ”„๋กœ์ ํŠธ ๋•Œ๋ณด๋‹ค ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๋„ ์ข‹์•„์ง€๊ณ  ๊น”๋”ํ•ด์ง€๊ธด ํ–ˆ์ง€๋งŒ ์•„์ง ๋งŽ์ด ๋ถ€์กฑํ•˜๋‹ค. ์ฝ”๋“œํ•˜๋‚˜ํ•˜๋‚˜ ์“ธ ๋•Œ ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ ์“ธ์ˆ˜์žˆ๊ฒŒ ๋…ธ๋ ฅํ•ด์•ผ๊ฒ ๋‹ค.
  • ๊ธฐ์—…ํ˜‘์—…๋‚˜๊ฐ€์„œ redux๋ฅผ ๋‹ค์‹œ ๊ณต๋ถ€ํ•˜๊ณ , ์ถ”ํ›„์— Refactoring์„ ํ• ๋•Œ ๋ฐ˜๋“œ์‹œ ์ ์šฉ์‹œ์ผœ๋ณผ๊ฒƒ
  • hooks์™€ styled-component๋ฅผ ๋” ๊นŠ์ด์žˆ๊ฒŒ ๊ณต๋ถ€ํ• ๊ฒƒ

๊ธฐ๋กํ•˜๊ณ  ์‹ถ์€ ์ฝ”๋“œ

๋งˆ๋ฌด๋ฆฌ

1์ฐจ ํ”„๋กœ์ ํŠธ์˜ ์•„์‰ฌ์›€๊ณผ ํ”ผ๋กœ๊ฐ์„ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ์ฑ„ 2์ฐจ ํ”„๋กœ์ ํŠธ์— ๋“ค์–ด๊ฐ”๋‹ค. 1์ฐจ ๋•Œ๋ณด๋‹ค 1๋ช… ์ค„์–ด๋“  frontend์˜ ์ž๋ฆฌ๊ฐ€ ๋งค์šฐ ํฌ๊ฒŒ ๋Š๊ปด์งˆ๊นŒ๋ด ํ”„๋กœ์ ํŠธ ์ดˆ๋ฐ˜๋ถ€ํ„ฐ ๊ฑฑ์ •์ด ๋งŽ์•˜๋‹ค. patagonia ์‚ฌ์ดํŠธ์˜ ํฌ๊ธฐ์™€ ๊ตฌํ˜„ํ•ด๋ณผ๋งŒํ•œ ๊ธฐ๋Šฅ๋“ค์— ๋น„ํ•ด frontend์˜ ์ธ์›์€ ๋‹จ 2๋ช…์œผ๋กœ ๋ถ€์กฑํ•ด๋ณด์˜€๋‹ค. ๊ทธ๋ž˜๋„ ์ฒซ sprint meeting๋•Œ ์ตœ๋Œ€ํ•œ ์ŠคํŒฉ๋‹ค์šด์„ ํ–ˆ๊ณ , ๋‹จ ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€๋ฅผ ํ•˜๋”๋ผ๋„ ๊ทธ ์•ˆ์—์žˆ๋Š” ๊ธฐ๋Šฅ์— ์ง‘์ค‘ํ•˜์ž๊ณ  ํ•˜์˜€๋‹ค.

ํ”„๋กœ์ ํŠธ ์ดˆ๋ฐ˜์— Hooks์™€ styled-components๋ฅผ ๊ฐ™์ด ๊ณต๋ถ€ํ•˜๋ฉด์„œ ํ”„๋กœ์ ํŠธ์— ์ƒˆ๋กญ๊ฒŒ ์ ์šฉ์‹œํ‚ค๋Š”๋ฐ ์ž‘์—… ์†๋„๊ฐ€ ๋ฌด์ฒ™์ด๋‚˜ ๋”๋Ž ๋‹ค. ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ณ  ์ผ๋‹จ ์จ๋ณด๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•˜์˜€๋Š”๋ฐ, ์—ญ์‹œ ์ฝ”๋“œ๋Š” ์ผ๋‹จ ์จ๋ด์•ผ ์•„๋Š”๊ฒƒ์ผ๊นŒ. ์–ธ์ œ๊นŒ์ง€ ๋‚จ์ด์“ด ์ฝ”๋“œ๋‚˜ ๋™์˜์ƒ๋งŒ ๋ณด๊ณ  ์žˆ์„์ˆœ ์—†์œผ๋‹ˆ๊นŒ ๋ฌด์ž‘์ • ์ฝ”๋“œ์— ์ ์šฉ์‹œ์ผœ๋ณด์•˜๋Š”๋ฐ ์ฒ˜์Œ์—๋Š” ์ด๊ฑธ ์™œ์“ฐ์ง€? ๋ถˆํŽธํ•œ๋ฐ? ํ•˜๋‹ค๊ฐ€ ์ ์  ์ต์ˆ™ํ•ด์ง€๊ณ , ์ด๊ฑธ ์™œ์“ฐ๋Š”์ง€ ์ดํ•ดํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์•„์ง ๋ถ€์กฑํ•˜๋‹ค. styled-component์—์„œ props๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์ต์ˆ™ํ•˜์ง€์•Š๋‹ค. ๋Š์ž„์—†์ด ๊ณต๋ถ€ํ•˜๋Š” ์ฃผ๋‹ˆ์–ด๊ฐœ๋ฐœ์ž...

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ standup meeting๋•Œ ๋‚ด๊ฐ€ ์–˜๊ธฐ ํ–ˆ๋˜ ๊ฒŒ ์žˆ์—ˆ๋‹ค.
์ฝ”๋“œ๋ฅผ ์ตœ๋Œ€ํ•œ ํšจ์œจ์ ์œผ๋กœ ์จ๋ณด์ž. ๊ฒฐ๊ตญ ์šฐ๋ฆฌ๊ฐ€ ์ทจ์งํ•  ๋•Œ ๋ฉด์ ‘๊ด€๋“ค์ด ๋ณด๋Š”๊ฒƒ์€ ๊ฒฐ๊ณผ๋ฌผ์ด ๋ณด๋‹ค ๋‚ด ์ฝ”๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฐ€๋…์„ฑ ์ข‹๊ณ , ํšจ์œจ์ ์ธ ์ฝ”๋”ฉ์„ ํ•˜๋Š”๋ฐ ์•„์ง ๋ถ€์กฑํ•˜์ง€๋งŒ git์— ์˜ฌ๋ฆฐ ๋‚ด ์ฝ”๋“œ๋ฅผ ๋ณธ ๋ฉ˜ํ† ๋‹˜๋“ค์˜ ๋ฐ˜์‘์ด ์ข‹์•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋Œ์•„์˜ค๋Š” ๋ง "๊ฒฝํ˜ธ๋‹˜ ์ง„์งœ ์ฝ”๋“œ ๊น”๋”ํ•ด์กŒ์–ด์š”. ์ž˜ํ•˜๊ณ ์žˆ์–ด์š”." ํฌ... ๊ทธ๋ž˜๋„ ๋‚ด๊ฐ€ ์„ฑ์žฅํ•˜๊ณ  ์žˆ๊ตฌ๋‚˜.. ๊ธฐ๋Šฅ ํ•˜๋‚˜ ๋” ๊ตฌํ˜„๋œ๊ฒƒ๋ณด๋‹ค ๋ฉ˜ํ† ๋‹˜์ด ์ฝ”๋“œ๊ฐ€ ๋งŽ์ด ๊น”๋”ํ•ด์กŒ๋‹ค๊ณ , ์ž˜ํ•˜๊ณ ์žˆ๋‹ค๋Š” ๋งํ•œ๋งˆ๋””๊ฐ€ ๋” ๊ธฐ๋ปค๋‹ค.

๊ณต๋ถ€ํ• ๊ฒŒ ๋” ์ƒ๊ฒผ๋‹ค. hooks, styled-component, redux..๊ทธ๋ฆฌ๊ณ  git..๋“ฑ๋“ฑ.. 1์ฐจ ํ”„๋กœ์ ํŠธ์˜ ์—ฌ์šด์ด ๋‹ค ๊ฐ€์‹œ๊ธฐ๋„ ์ „์— 2์ฐจ ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ๊ณ , ์ •์‹ ์—†์ด 2์ฃผ๊ฐ€ ๋์ด๋‚ฌ๋‹ค. ์ด์ œ ์ž๋ฆฌ๋ฅผ ๋นผ๊ณ  ๊ธฐ์—…ํ˜‘์—…์„ ๋‚˜๊ฐ„๋‹ค. ๋˜๋‹ค๋ฅธ ์–ด๋ ค์›€์ด ๋‹ฅ์น ๊ฒƒ์ด๊ณ , ๋‚˜๋Š” ๊ฒƒ์„ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€์•ผํ•œ๋‹ค. ํŒ€์›๋“ค๊ณผ ํ˜‘์—…ํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด์ง€๋งŒ ๊ฒฐ๊ตญ ์ฝ”๋“œ๋ฅผ ํ•˜๋Š”๊ฑด ๋‚˜๋‹ˆ๊นŒ. wecode์•ˆ์—์„œ ๋Š๋ผ๊ณ  ๋ฐฐ์› ๋˜ ๋ชจ๋“ ๊ฒƒ๋“ค์„ ๊ธฐ์—…ํ˜‘์—…์—์„œ ๋ชจ๋‘ ๋ฐœํœ˜ํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋ชป์ผ๋˜ ๋ธ”๋กœ๊ทธ๋„ ๋‹ค์‹œ ์จ์•ผํ•œ๋‹ค. ๋‚ด๊ฐ€ ๋ถ€์กฑํ•œ๊ฒŒ ๋ญ”์ง€ ์•„๋‹ˆ๊นŒ ๋น ๋ฅด๊ฒŒ ๊ฐœ์„ ํ•˜๊ณ , ๊ณต๋ถ€ํ• ๊ฒƒ์ด๋‹ค. ๊ณต๋ถ€...ํ• ...๊ฑฐ..ใ„ท..ใ….

.
.
.
.
๊ทธ๋ฆฌ๊ณ  ์ด ํ”„๋กœ์ ํŠธ ํ›„๊ธฐ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ง€๊ธˆ,
๋‚˜๋Š” ๊ธฐ์—…ํ˜‘์—…์— ๋‚˜์™€์žˆ๋‹ค.
๊ณ ํ”ผ์ž
ํšŒ์‚ฌ ๋ถ„์œ„๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์ข‹๋‹ค. ์ฒ˜์Œ์—๋Š” ํ”ผ์ž๋ธŒ๋žœ๋“œ์—์„œ ์™œ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•„์š”ํ•˜์ง€? ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์ž๋ฅผ ๋Œ€ํ•˜๋Š” ๊ทธ๋“ค์˜ ํƒœ๋„๋‚˜, ๊ธฐ์—…ํ˜‘์—…์„ ๋‚˜์˜จ 2๋‹ฌ์ฐจ ๊ฐœ๋ฐœ์ž๋“ค์„ ๋Œ€ํ•˜๋Š” ๊ณ ํ”ผ์ž์˜ ๋ชจ์Šต์— ๊ฐ๋™์„ ๋ฐ›์•˜๊ณ , ๋งŽ์ด ๋ฐฐ์šธ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ธ๊ณต์ง€๋Šฅ,AI๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์žˆ์„ ์ •๋„๋กœ ์•ž์œผ๋กœ๊ฐ€ ๊ธฐ๋Œ€๋˜๋Š” ํšŒ์‚ฌ์ด๋‹ค. ํ•œ๋‹ฌ ํ›„์— ๋ฐœ์ „๋œ ๋‚˜๋ฅผ ๊ธฐ๋Œ€ํ•ด ๋ณธ๋‹ค. ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ

profile
๊ธฐ๋กํ•˜๋Š” ์Šต๊ด€

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