[Django] Wecode 1차 프로젝트 - "LA ROCHE-POSAY" 클론 프로젝트 후기✨

sol ahn·2020년 8월 2일
0

Projects

목록 보기
1/3

프로젝트 소개 :

  • 개요
    민감성 피부를 위한 화장품을 연구・개발하고 생산하는 프랑스의 코스메틱 브랜드 '라로슈포제'의 웹사이트 클론 프로젝트

  • 개발기간
    2020.07.20 - 2020.07.31

  • 개발인원
    la roche-cream team
    Front-end : 이지윤, 박민규, 최태희
    Back-end : 안솔, 한승엽

  • 프로젝트 github
    Front-end github
    Back-end github


프로젝트 데모 영상 :


사용한 기술 :

공통

git & github
AWS EC2, RDS
Trello(프로젝트 관리)

Front-end

javascript
react.js
sass

Back-end

python
django
mysql
cors headers
jwt
bycrypt
selenium
beautifulsoup4


내가 맡은 역할 & 부분 :

💡 주로 user app을 담당하여 기능을 구현했다.

1) 사이트 전체 모델링
2) 제품 상세 페이지 속 제품 정보 하단의 html tag 크롤링
3) django 프로젝트 초기세팅
4) 회원가입/로그인 API 구현
5) 아이디 중복체크 API 구현
6) 로그인 인증 데코레이터 작성
7) 로그인한 유저 정보 API 구현
8) 상품 찜하기 API 구현
9) 장바구니 API 구현
10) AWS EC2 서버 배포 및 RDS 구축


기록하고 싶은 코드 :

❤️ 상품 찜하기

LikeProductView는 상품의 찜하기와 찜하기 취소를 수행하고 유저가 찜한 상품의 목록을 보여주는 View이다. 우선 로그인 인증 데코레이터를 통해 해당 유저가 유효한 토큰을 갖고 있는지 확인한다.
로그인한 유저가 해당 상품의 하트를 누르는 순간 POST 메소드가 호출되어 DB에 찜한 상품의 데이터가 저장되며, 다시 하트를 누르면 반대로 DB에서 해당 상품의 데이터가 삭제되도록 로직을 구성했다.
그리고 로그인한 유저의 찜한 상품 페이지에 GET 메소드로 찜한 상품의 데이터를 list에 담아 리턴해주었다.

🧺 장바구니

CartProductView는 장바구니 기능으로 LikeProductView를 응용하여 작성하였다. 마찬가지로 로그인 인증 데코레이터를 달아주어 토큰을 검증하였다. 장바구니에 유저가 선택한 상품이 없으면 추가해주었고, 이미 해당 상품이 담겨있다면 'ALREADY_EXIST_PRODUCT'라는 메시지를 리턴해주었다.


프로젝트 소감 :

짤막한 회고록 💬

사실 회원가입/로그인 API를 겨우 구현해낸 상태에서 준비 없이 바로 프로젝트에 돌입하게 되어 당황스럽고 걱정도 많았다. 과연 내가 할 수 있을까? 무사히 프로젝트를 끝마칠 수 있을까? 프로젝트를 진행하는 내내 끝없는 고민의 굴레 속에서 괴로워했다. 시간은 턱없이 부족하고, 개발해야 하는 기능은 산더미 같았다.
하지만 의식적으로 "그래, 나는 할 수 있어. 안되면 되게 하자." 라고 생각하며 버텼다. 부족한 시간은 잠을 줄여가며 채웠고, 필요한 내용은 필사적으로 구글링해서 찾아냈다. 그래도 모르는 것은 멘토님들과 동기들에게 물어보고 또 물어봤다.
결국 내가 예상한 것보다 더 많은 기능을 구현해냈고, 프론트엔드와도 빠르게 연결되어서 발표까지 무사히 마칠 수 있었다.
프로젝트가 끝난 시점에서 지난 시간들을 돌이켜보니, 하루하루가 나에겐 도전하고, 좌절하고, 극복하는 과정의 연속이었다. 그동안 스트레스도 많이 받고 건강도 약간..잃었지만..나의 한계를 뛰어넘었던 그 순간들은 영원히 기억에 남을 것이다.

🤗 잘한 점 🤗

팀 전체적으로 scrum 방식을 잘 활용해서 시간을 효율적으로 관리하려고 노력했다.
또한 프론트엔드와 계속 소통하면서 페이지 하나, 기능 하나 구현할 때마다 데이터를 어떻게 주고 받을지 상의하여 시행착오를 줄여나갔다. 더불어 다들 지치고 힘들었을텐데 프로젝트 기간동안 새벽 늦게까지 남아서 서로 독려하며 포기하지 않고 끝까지 해낸 팀원들에게 감사하다.

😔 아쉬웠던 점 😔

건물을 지을 때는 기반을 잘 닦는게 중요하듯이, 소프트웨어 개발에는 모델링이 무엇보다도 중요하다. 나름대로 app별로 구분하고 테이블 간의 관계를 고심하면서 모델링을 짰지만, 군데군데 관계를 잘못 설정해서 모델링을 계속 수정해야했다.
그리고 아무래도 기능을 구현해내는데 급급하다 보니 코드의 가독성과 정교함, 성능 등에 대해서는 거의 신경쓰지 못했다.

🤔 개선할 점 🤔

  1. 2차 프로젝트에서는 초기 모델링에 더 많은 시간을 투자해서 프로젝트 설계를 탄탄하게 할 계획이다.
  2. 웹 크롤링에 할애하는 시간을 단축할 수 있도록 필요한 데이터를 확실하게 설정해야겠다.
  3. 기능을 구현하는데 급급하지 않고, 클린 코드를 작성할 수 있도록 노력해야겠다.
  4. 2차 프로젝트에서는 시간과 능력의 한계상 구현하지 못했던 기능들을 구현해보고 싶다.
    ex) 필터링, 결제, 검색기능 등등

프로젝트를 마치며..

프로젝트를 진행하는 동안 하루하루는 길고, 2주는 빠르게 흘러가는 요상한 시간의 흐름을 체험했다. 팀 프로젝트인데다가 데드라인이 정해져 있었기 때문에 어떻게든 제 몫을 해내기 위해 닥치는대로 공부하고 정신없이 개발했더니 끝나자마자 피로가 몰려왔다.
하지만 후회하지 않을 만큼 최선을 다했고, 예상보다 결과물이 좋게 나와서 고생한 보람을 느꼈다. 다음 프로젝트에서는 한층 발전된 모습으로 더 훌륭한 성과를 낼 수 있기를 기대한다.

세상 열심히 발표하는 나..
profile
아는 만큼 재밌는 개발자 🤓

0개의 댓글