FREITAG 클론 2차 프로젝트 후기

finelinefe·2020년 11월 12일
1

프로젝트후기

목록 보기
2/3


프라이탁 소개 🎤

프라이탁 사이트는 생활에서 잘 볼 수 있는 폐트럭의 타포린, 안전벨트 등등 우리 실생활에서 볼 수 있는 재료들을 활용해 생활방수에 강하고 어디서든지 사용할 수 있는 편안한 가방을 만든 것에서 시작했다. 세계 여러 곳에 지사와 리셀러가 있고 깔끔한 디자인과 커스텀마다 다른 다양한 색상은 보다 더 많은 사용자의 니즈를 충족시킬 수 있을거라 생각했다. 게다가 프라이탁만의 깔끔한 UI 디자인과 특유의 bold한 글씨는 프라이탁만의 고유 개성을 살려주기 때문에 이 사이트를 클론하기로 결정했다. 😊


프로젝트 기간

2020.10.05 ~ 2020.10.16
FREITAG 백엔드주소


프로젝트 참여자 및 구성원 👨‍👩‍👦‍👦

백엔드 : 정다솜, 김수현

프론트엔드 : 임은수, 김상준, 이지형, 고재원


기술 스택

  • Django
  • Python
  • PyJWT
  • Bcrypt
  • Aquery
  • MySQL

프로젝트 협업 툴

  • Trello
  • Git & Github
  • postman

1차때도 이어 2차때도 사용한 트렐로는 아주 익숙해졌다! 카드를 옮기는 그 희열. 하나씩 오른쪽으로 치우칠수록 프로젝트가 마무리 되어간다는 기대감이 들었다. 😊


구현사항

  • 프로젝트 장고 초기설정
  • 크롤링 및 DB Dump(product)
  • 상품 리스트 뷰
  • 상품 개별 상세페이지 뷰
  • App별 unit test 작성

모델링 ✍🏻

프라이탁의 경우 SHOP - BAGS, ACCESSORIES, APPAREL FEMALE 등등 라인별로 보여지는 페이지가 다른 편이었다. 때문에 통일성을 강조하기 위해 상품 영역을 기존의 BAGS / APPAREL 라인으로 나누기 보다는 어패럴 라인의 남성-셔츠 / 여성-티셔츠로 세분화하기로 결정했다. 기존의 다대다 -> 중간테이블 관계를 가지는 테이블은 회색, 상품과 관련된 부분은 하늘색, 결제와 주문관계는 자주색, 사용자와 배송지를 관리하는 부분은 주황색, 카트 부분은 보라색으로 가독성을 높여 모델링을 함께 진행했다. 😊


크롤링 이슈, 그래서 방법은? ❗️❗️

1차 프로젝트때에는 셀레늄, 뷰티풀수프와 같이 크롤링이 가능하여 데이터를 뽑아오는것이 가능했지만 학습 목적, 배포 목적, 상업적 이용 목적이 전혀 없음에도 불구하고 크롤링을 하는 것이 법원 판결 결과 저작권 침해 문제가 된다는 소식 때문에 임의로 손 크롤링✍🏻 을 하기로 했다! 결론적으로 직접 긁는것도 중요했지만 작성하는 것 또한 매우 의미있었다 생각이 들었다. 세부적으로 점점 쪼개서 csv파일을 작성하고, 그 결과 쪼개서 덤프하는 것도 나쁘지 않았고 크롤링과 덤핑에 어려움을 느꼈는데 생각보다 쉬웠다는 생각이 들었다! 💡


기억나는 코드 👁

selected_product = Product.objects.select_related('series').prefetch_related
('subimage_set','series__size_set').get(pk = product_id)

데이터베이스의 모든 테이블이 서로 정참조 할 수는 없는 노릇이다. 하지만 상품의 상세페이지에는 상품 자체테이블에 없는 내용도 불러와야 하는 경우가 많다. 그렇기 때문에 다른 테이블을 방문 할 때마다 횟수가 늘게 되는데 selected_related / prefetch_related를 사용해 캐싱함으로써 DB hit 수를 줄일 수 있다.

"size"        : [{
                   "id"   : sizes.id, # 추가 된 부분
                   "name" : sizes.name
                } for sizes in selected_product.series.size_set.all()],

사이즈의 경우 XS, S, M, L, FREE 등등 이름만 보여주면 될거라 생각했었다. 이는, UX를 경험하는 사용자의 입장에선 그렇지만 요청을 보내고 받아오는 클라이언트(프론트)의 경우엔 잘못된 로직이었다. 멘토님의 조언으로 사이즈가 가지는 개별의 id값을 넘겨줘야 그 사이즈를 클릭했을때 뜨는 고유한 페이지를 조회할 수 있기 때문에, 앞으로 이런 부분에 대해서는 id 값을 한번 더 생각해보는 계기가 됐다.


회고, 느낀점 👩🏻‍💻

1차 프로젝트와는 다르게 성장한 느낌이 들었다. 자신감도 생겼다. 전 프로젝트에서는 크롤링이 까다로운 사이트였고 동시에 크롤링과 덤핑을 잘 못했다는 느낌이 들어서 지레 겁만 먹었던 것 같다. 하지만 이번 프로젝트에서는 비록 손 크롤링이지만 직접 손으로 작성하면서 어떤 것을 긁어와야하는 필수적인 데이터인지, 어떤것은 꼭 들어가지 않아도 되는 항목인지. 또 CSV 파일을 나누면서 정규화를 직접 하고 있다는 느낌을 받았다. 결론적으로 덤핑도 대성공.

또 1차 프로젝트때는 다르게 다른 기능을 바꿔서 하는 백엔드인지라 상품리스트와 뷰페이지는 처음이었다. 뷰 페이지 개수로만 따지면 2개밖에 지나지 않을수도 있겠지만, 코드의 질과 프론트와 얘기하면서 맞춰보는 과정에서 새로운 점을 많이 얻을 수 있던 것 같다. (저와 같이 상품 처음 통신해주신 프론트 조원님 감사드립니다 😊)

초기세팅부터 모델링 협업, 그리고 크롤링과 덤핑, 본격적인 뷰 로직 짜기, 유닛테스트까지 한 뒤로는 전체적인 흐름을 알 수 있었다. 1,2차를 거치는 그 짧은 2주. 사실상 2주라는 시간이 짧지만 하던 당시에는 길고 어렵고 마치 어두운 터널을 지나는 상향등 없는 고장난 기차같은 느낌이 강했는데 지나고보니 모든 인생이 평탄할거라 생각하지만 뒤돌아보면 굽이진 길도 있었다는 말처럼. 거짓말처럼 자신감과 용기가 생겼다. 아마 이것이 위코드에서 3차 프로젝트 / 기업협업 / 자기공부 중에서 자기공부를 택하게 하는 원동력이 된 것 같기도 하다.

2차 프로젝트가 끝난지 어언 한달이 다되어가고 3차 마지막 한달을 다 앞둔 지금. 뒤늦게 미뤄둔 포스팅을 하고 있지만 2차 프로젝트 또한 1차만큼 깨달음과 뜻깊은 감정을 많이 느꼈기에 회고하면서도 기분이 새롭다. 당장 두어달 전 여기에 와서 파이썬을 처음 접한 나로써는 어찌됐든 잘 끝났고, 이만큼이면 장족의 발전이 아닌가 싶다.

결과적으로, 모든 조원의 배려와 같이 협업하고 모르는것을 찾아가는 과정에서 얻게되는 깨달음이 아마 클론프로젝트를 마칠 수 있게 한 것 같다. 우리 프라이탁 조원들에게 감사드립니다! 😊

profile
Backend Developer

0개의 댓글