PROJECT | 나의 첫 프로젝트 회고

송치헌·2021년 9월 12일
5

PROJECT | In Wecode

목록 보기
1/2

conda create -n "1차 프로젝트" team="우아한 남매들"

🅸🅽🆃🆁🅾🅳🆄🅲🆃🅸🅾🅽

위코드에서 진행한 1차 프로젝트

학교를 다니며 팀 프로젝트로 게임을 만든 적은 있었지만 오랫동안 다니던 학교를 떠나 이렇게 큰(?) 프로젝트를 해본 것은 처음이었다.
(크다고 할 수는 없지만 내 기준에서는 굉장히 큰 프로젝트였다.)

FE 3명과 BE 3명, 총 6명이서 마켓컬리를 클론 코딩하여 우리만의 웹 페이지를 만드는 프로젝트이다.

처음 마켓컬리를 딱 봤을 때는
'음...해볼만 한데?'
라는 어리석은 생각을 했다.

팀이 발표된 후 가장 처음으로 한 것은 Planning Meeting 이다.

아직은 어색한 팀원들과 모여 인사를 나누고 프로젝트를 전체적으로 어떻게 관리하고 운영할 것인지 얘기를 나눴다.

"먼저 어떤 기능을 구현할 것인지 정하고 프/백 나눠서 구현한 뒤에 나중에 합쳐보죠"

정확히는 기억이 안나지만 이런 느낌의 방식으로 진행하자고 한 것 같다.

Planning Meeting을 진행하며 Trello에서 각자 어떤 기능을 맡을 것인지 정하고 티켓을 만들었다.

우리 팀의 이름은 Woowahan Siblings!!! (우아한 형제들에서 영감을 받아 우아한 남매들이라고 영수님께서 정해주셨다.)

우리가 만들 웹의 이름은 별밤마켓 이다.
마켓컬리가 원래 새벽 배송으로 유명한데 마켓컬리에서 '샛별 배송'이라는 예쁜 이름으로 배송을 했다. 또 거기에 영감을 받아 우리 웹 사이트의 이름은 별밤마켓이 되었다.

먼저 백엔드끼리 어떤 기능을 구현할 것이고 각자 어떤 부분을 맡아서 할지 정했다.

  1. 로그인 / 회원가입 (거의 필수적으로 구현해야할 기능이었다.)
  2. 상품(상품 조회, 상품 등록 등, 이것도 당연히 구현해야할 기능이다.)
  3. 장바구니 (엄청 필수는 아니지만 이커머스 사이트에서 꼭 필요한 기능이다.)

    사다리를 탔던 것으로 기억하는데, 나는 장바구니 기능을 맡게 되었다.

그 후 바로 각자 티켓을 정하여 Trello에 올리고 멘토님들에게 리뷰를 받았다.

"상품을 장바구니에 담았으면 주문을 해야하지 않을까요?"

장바구니 기능까지만 구현하고 결제 시스템을 구현하기 힘들다는 이유로 주문하기 기능을 제외했지만 너무 생각이 짧았다.

결제를 했다고 가정하고 만들면 되는 것이기 때문이었다.

아무튼 다시 내부 회의를 통해 다시 기능을 추가하고 데이터 모델링을 시작하기러 했다.


conda activate "1차 프로젝트"

🅱🅰🅲🅺🅻🅾🅶

  • 1차 Sprint

    • 각자 구현할 기능 정하기 (F : Front-end / B : Back-end)

      • 이지영(F), 김정수(B) : 로그인 / 회원가입 (F, B)
      • 김승찬(F), 고영수(B) : 상품 관리(B), 메인 페이지 / 상세 페이지 (F)
      • 김세준(F), 송치헌(B) : 장바구니(F, B), 상세 페이지(F)
    • 1주차 Sprint때 구현할 기능 정하기

      • ERD Modeling
      • 로그인 / 회원가입
      • 상품 데이터(상품 정보) csv파일에 작성하기 - 1인당 약 50개씩
      • 메인 페이지
  • 2차 Sprint

    • 2주차 Sprint때 구현할 기능 정하기

      • 상세 페이지에 보여줄 Products View 작성
      • 인가 기능
      • 장바구니 C/R/U/D
      • 상세 페이지
    • 프론트와 백 연결하기

    • API Documentation 작성

    • AWS 배포


🅸🅽 🅿🆁🅾🅶🆁🅴🆂🆂

  • First Week

    • ERD Modeling

    • ✅ 회원가입

      • email, ID, password validation
      • 중복확인 기능
    • ✅ 로그인

      • 비밀번호 암호화(bcrypt 사용)
      • Token 발행(jwt 사용)
        • Token 만료시간 적용
    • ✅ 상품 데이터 입력

      • csv파일에 상품 데이터 입력
      • db_uploader.py 파일 작성하여 한번에 DB에 전송
    • ✅ 상품 조회

      • 메인 페이지
  • Second Week

    • ✅ 장바구니

      • 장바구니에 담기, 수정 기능
        • 장바구니에 이미 해당 상품이 존재하면 수량 업데이트 기능 구현
      • 장바구니 삭제 기능
        • query parameter 이용하여 1개 이상의 상품 선택 삭제 기능 구현
      • 인가 기능
        • 로그인시 발행되는 jwt를 이용하여 인가된 유저인지 확인하여 인가된 유저가 아니면 로그인을 할 수 있게 기능 구현
        • decorator 함수를 작성하여 매 요청마다 인가 기능이 작동하게끔 구현함
    • ✅ 상세 페이지

      • 상품 상세 정보에서 관련된 상품 10개 랜덤 출력 기능
    • ✅ API Documentation 명세 작성

    • ✅ AWS 배포


🅳🅾🅽🅴

  • RESULT



🅾🆅🅴🆁🆅🅸🅴🆆

  • 프로젝트 설명

    • 마켓컬리 웹 사이트를 클론코딩하는 프로젝트
  • 팀명

    • 우아한 남매들(Woowahan Siblings)
  • 팀원

    • 고영수(PM, Back-end)
    • 김정수(Back-end)
    • 송치헌(Back-end)
    • 김세준(Front-end)
    • 김승찬(Front-end)
    • 이지영(Front-end)
  • 웹 사이트 이름

    • 별밤마켓(BBmarket)
  • 프로젝트 진행 기간

    • 2021.08.30 ~ 2021.09.10 (총 2주)
  • 내가 구현한 내용

    • Authorization(인가) 기능 - 토큰을 발급받은 사용자만 허가된 엔드포인트 접근 가능
    • 토큰 만료(Expiration) 기능 - 일정 시간이 흐른 뒤 토큰이 만료되어 소멸되게 하는 기능(팀원과 다같이 작업)
    • 장바구니 CRUD
      • Create - 장바구니에 상품 추가 기능
      • Read - 해당 유저가 담은 장바구니 상품 목록 조회 기능
      • Update - 담으려는 상품이 이미 장바구니에 존재하면 똑같은 상품에 새로 추가되는 것이 아닌 수량만 추가되게 하는 기능
      • Delete - 선택한 상품 삭제하는 기능. Query parameter로 구현(팀원과 다같이 작업)
    • 관련 상품(Related Products) 랜덤 조회 기능 - 상품 상세 페이지에 들어가면 나오는 main_category가 같은 상품을 랜덤하게 10개 보여주는 기능. double underscore 사용함(팀원과 다같이 작업)
  • 사용 기술

    • Front
      • HTML/CSS
      • Javascript
      • React
      • Router
      • Sass
      • AWS
    • Back
      • Python
      • Django
      • Mysql
      • Jwt & Bcrypt
      • Postman
      • AWS
  • Tools

    • Git, Github
    • Trello
    • Postman
    • AWS
  • 잘한 점

    • 백엔드 팀원들과 소통
    • 백엔드 팀원들과의 팀워크(구현중에 한 명이 막히는 부분이 생기면 각자 하던 작업을 멈추고 다같이 문제 해결하는데 집중)
    • 적절한 업무 분담
    • 빠른 의사 결정
    • 스크럼 방법론을 잘 적용하여 기능을 최대한 쪼개서 잘 구현하였고, 무리한 계획을 세우지 않음
  • 아쉬운 점

    • 시간 관리 실패 - 욕심부리지 않고 많은 기능을 구현하지 않았음에도 시간이 오래 걸렸다.
    • 프론트와 백의 소통 부재 - 1주차가 끝나가는 시점에서 진행사항이 어느정도인지 서로 감을 잡지 못함
    • 리팩토링 - 마찬가지로 시간이 부족하여 리팩토링을 하지 못함
    • django에서 제공되는 여러 메소드, 기능들을 다양하게 사용하지 못함
  • 결과 만족도

    ⭐️⭐️⭐️⭐️ (4점 / 5점)


회고를 마치며

"빨리 가려면 혼자가고 멀리 가려면 함께가라"

wecode 24기 윤현묵

인생의 멘토 현묵님이 자주 하시는 말씀이다. 이번에 느낀 점이 딱 이 말이지 않았을까

프로젝트를 같이 하려면 프론트와 백이 서로 어느정도 진행되었는지, 현재 막힌 부분은 어디인지, 이런 저런 얘기를 하며 진행해 나갔어야 했지만

"프론트는 봐도 모르니까...", "다들 열심히 하시는거 같은데 알아서 잘 하겠지"

라는 안일한 생각으로 내 할 일만 열심히 했던 것 같다. 정말 '더도 말고 덜도 말고 1인분만 하자' 라는 마음가짐이었다.

하지만 이런 마인드는 결국 1인분 조차 만들지 못하게 하는 마인드이다.

내가 아무리 멋있는 접시를 만들었어도 요리사가 국물 요리를 만들었으면 접시에 담을 수 있는 양은 얼마 없다.

요리사가 어떤 요리를 만들 것인지, 얼마나 만들 것인지를 알아야 그에 맞는 접시를 만들 수 있고, 반대로 내가 어떤 재료를 이용해 접시를 만들지, 접시의 크기는 얼마나 되는지 알아야 그에 맞는 요리를 내놓을 수 있다.

이번 1차 프로젝트를 하며 가장 아쉬웠던 점은 프론트와 백의 소통 부재이다. 2주차 화요일, 수요일이 되어서야 연결을 시작해 보았으니...구현은 했지만 결국 적용하지 못한 기능들도 있다.

이번 프로젝트를 통해 느낀 점은

  1. 소통이 가장 중요하다.
  2. 무리한 계획은 세우지 말자.
  3. 시간 관리를 철저히 하자.
  4. 기능 테스트를 많이 해보자.
  5. 그날 그날 작성한 내용을 꼭 정리하자.

이 외에도 많은 것을 느꼈지만 2차 프로젝트에는 꼭 고쳐야할 나의 행동이다.


팀원들께 한마디

2주라는 짧다면 짧고 길다면 긴 시간동안 힘들었을텐데 내색 한번 안하고 같이 고생해주셔서 감사합니다! 첫 프로젝트였고 많이 부족했지만 모르는 내용이 있으면 다들 하던 것 멈추고 제게 와서 같이 고민해 주는 모습을 보며 정말 팀원들을 잘 만났다고 생각합니다.

걱정도 많이 했지만 결과물을 보며 '이게 정말 우리가 만든 프로젝트가 맞는걸까? 퀄리티가 굉장히 높구나' 라며 감탄했습니다 ㅠㅠ(진심입니다 :))

마지막으로 다들 정말 고생많으셨고 감사합니다!

우아한 남매들 화이팅!!!!!


conda deactivate

profile
https://oraange.tistory.com/ 여기에도 많이 놀러와 주세요

2개의 댓글

comment-user-thumbnail
2021년 9월 12일

치헌님과 함께해서 재밌었습니다 !! 고생많으셨어요 !

1개의 답글