1차 프로젝트 후기

soojung61·2일 전
2

project

목록 보기
1/3

위코드에서의 1차 프로젝트가 끝났습니다 ❗️
2020년 7월 20일 ~ 2020년 7월 31일 약 2주동안 진행되었으며, 백엔드를 맡았습니다.


Converse 클론 프로젝트

이번 프로젝트는 컨버스를 클론하는 프로젝트입니다.
개발 인원은 프론트엔드 3명과 백엔드 1명이었습니다.


Back-End 적용기술

  • Python, Django web framework
  • Bcrypt
  • jwt
  • MySQL
  • AWS EC2, RDS
  • CORS headers
  • Gmail smtp

프로젝트에서 맡은 역할

백엔드 1명으로 프로젝트를 진행했기에, 백엔드 모든 부분을 맡아서 진행했습니다.


User App

회원가입 및 로그인

  • 회원가입 시 이메일 및 비밀번호 유효성 검사
  • bcrypt 암호화
  • jwt Access Token 전송
  • Gmail smtp를 통해 회원가입 시 이메일 인증 기능
  • unit test

Product App

메인페이지 상품 리스트
상품 전체리스트
검색바

  • 상품 전체 이름 리스트 전달하여 프론트에서 추천 검색어 기능 구현
    검색기능
    상품 전체리스트에서 필터 기능
    제품 상세리스트

Instagram App

인스타그램 게시글 api

Order App

장바구니

  • 장바구니에 상품 추가
  • 장바구니 수량 업데이트
  • 장바구니 비우기

기록하고 싶은 코드

상품 리스트에서 필터기능

처음에 필터 기능을 구현하려 했을 때, 상품 전체리스트, 카테고리별 리스트에서 필터기능을 구현하려다 보니 코드가 너무 길어지고 반복되는 코드가 너무 많았습니다. 거기에 상품 검색 후 필터링 하려다보니 반복에 반복을 계속하게 되고..

요청에 들어오는 조건마다 다 if문으로 filter에 다른 조건을 주다보니 코드가 길어졌습니다.
그래서 요청으로 들어오는 조건을 제일 위에서 처리해줬습니다.
상품 전체보기 리스트에서 필터 api 요청이 들어오면 category_name 을 모든 ShoeCategory의 values list로 지정해줬습니다.

검색창에서 필터링 할 경우 쿼리스트링으로 name=(검색어) 이렇게 들어오는데, 검색어가 없을 시 '' 으로 지정해주어 모든 제품을 포함하도록 했습니다.

이렇게하면 위의 긴 코드가 반복없이 짧아질 수 있었습니다.
프로젝트 후에 공부하면서 장고 orm 중 Q를 이용해서 query를 add 할 수 있는 방법이 있던데, 나중에 그 방법으로 코드를 더 수정할 예정입니다.


회원가입 시 이메일, 비밀번호 유효성 검사

회원가입 시 이메일, 비밀번호 유효성 검사를 해야했고,
로그인 시에도 이메일은 유효성검사를 하기 위해서 따로 validation 함수를 선언하여 그안에 lambda 식을 가진 list를 만들었습니다.

validation 오류가 날 시 True를 리턴하고, 검사를 다 통과하면 False를 리턴하여,
SignUpView, SignInView에서 리턴값에 따른 오류를 리턴하는 방식입니다.

회고

좋았던 점

  1. 백엔드 혼자 진행하였기에 초기 셋팅부터 배포까지 모두 다 진행해보면서, 전부 다 경험해 볼 수 있었습니다.
  2. Postman으로 API를 문서화하여 프론트엔드와의 소통 시 불편함을 덜었습니다.
  3. 처음 모델링 시 많은 고민을 하고 DB를 구축하여 DB를 계속 수정하는 일이 없었습니다. 후에 장바구니 기능을 추가하면서 DB를 한번 수정하긴 했지만, 큰 작업은 아니어서 프로젝트에 큰 영향을 끼치진 않았습니다.

아쉬운 점

  1. 혼자 진행하다 보니 혼자 고민해야하는게 제일 힘들었습니다. table 이름이나, column 명 등.. 사소한 고민이지만 혼자 고민해야 했습니다. 😂
  2. gmail smtp로 메일 인증을 진행하는 부분에서 시간의 여유가 있으면 비동기식으로 구현해보고 싶었는데, 시간 부족으로 구현하지 못했습니다. 그래도 프론트 쪽에서 response 받기 전까지 애니메이션(?) 나오는 화면을 구현해줘서 해결했습니다.
  3. 배포를 마지막날에 하여 그 전까지는 하나의 서버로 프론트엔드와 연동해보느라 한번에 모든 api를 연동하지 못한다는게 아쉬웠습니다. 2차 프로젝트 때에는 배포를 먼저 진행하여 서버로 인해 겪는 문제점을 줄이고 싶습니다.

앞으로

2차 프로젝트 때에는 장고의 더 많은 기능을 사용해보고 싶습니다.
celery를 이용하여 비동기 처리도 해보고 싶고, 성능에 더 많은 신경을 쓰고 싶습니다.
2차 프로젝트 후기를 쓸 때는 더욱 성장한 나를 보고 싶습니다. 😄

profile
개발자 공부중입니다 :)

2개의 댓글

comment-user-thumbnail
2일 전

15G90000

답글 달기
comment-user-thumbnail
2일 전

👏👏👏

답글 달기