1차 프로젝트 후기

Sung Jun Jin·2020년 5월 10일
0

1차 팀프로젝트

목록 보기
2/2

위코드 7기 1차 프로젝트로 2주간 컨버스 공식 온라인 스토어 clone 프로젝트를 진행했다. 나는 백엔드 포지션으로 DB 모델링 (MySQL), 크롤링, Django를 사용한 API 설계를 담당했다.

개발기간 : 2020.04.20 ~ 2020.05.01
인원 : 프론트엔드 3명, 백엔드 3명
Github : 링크
Demo 영상 (데모 이미지를 클릭하면 youtube로 넘어갑니다)

내가 맡은 API

  • 회원가입 / 로그인
  • 제품 상세보기
  • 회원별 장바구니 등록 및 목록 가져오기
  • 메인화면 제품 보여주기
  • 매장정보 보여주기

기록하고 싶은 코드

컨버스 홈페이지의 메인화면 endpoint를 설계했다. 아래는 홈페이지 메인화면의 일부분이다, 불규칙적인 크기의 이미지들과 제목, 텍스트가 있고 옆에는 같은 제품 시리즈군으로 묶인 상품들이 있다. 같은 시리즈군으로 묶인 상품 리스트를 제외하고는 규칙성이 딱히 보이지 않는 구성이었다.

프론트엔드 측에서 메인 화면의 이미지들을 순서대로 넘겨달라는 요청을 받았고 나는 무작정 그 순서를 맞추기 위해 메인화면 DB를 만들고, DB에서 억지로 primary key를 사용해 이미지, 제목, 텍스트를 추출하는 코드를 작성했다. 그리고 실제로 짠 코드의 일부분이다...

실제로 이 코드를 작성하면서 과연 이 코드가 무사히 merge될 수 있을까라는 의구심이 계속 들었고, 아니나 다를까 멘토님께서 코드를 전면 수정해야 할 것 같다는 피드백을 받았다. 메인 화면에서 유일하게 규칙성이 있는 제품 시리즈별 상품 리스트만 endpoint로 설계해 넘겨주기로 했고 프론트엔드가 여러번 fetch를 사용해 원하는 시리즈의 제품을 가져오는 방식으로 수정했다. 그리고 그 난해했던 코드가 이렇게 깔끔하게 바뀌었다.

class MainPageView(View):
    def post(self,request):
        try:
            data = json.loads(request.body)
            size = int(data['one'])
            products = Product.objects.prefetch_related('media_set').filter(name__contains = data['category'], is_main_page = True)[:size]
            cards = [{
                'name'  : product.name,
                'code'  : product.code,
                'price' : product.price,
                'url'   : product.media_set.values('media_url').first()['media_url'],
                'hover' : product.media_set.values('media_url')[1]['media_url'],
            } for product in products]

            return JsonResponse({'cards' : cards}, status = 200)

        except KeyError:
            return JsonResponse({'Message' : 'INVALID_KEY'}, status = 400)

1차 프로젝트 기간 중 나는 시간에 쫓기면서, 사실 내가 만족할수 있는 코드를 짜는거보다 기능 구현에 더 초점을 뒀다. 위 사태를 직접 경험하면서 효율적인 코드와 방식에 대한 고민의 중요성을 확실하게 느낄수 있었고, 2차 프로젝트 기간에는 물론 기능 구현도 중요하겠지만, 보다 더 효율적이고 간결한 코드를 설계하는것에 대해 더 집중을 해보려고 한다.

느낀점

모델링과 크롤링을 최대한 빨리 끝내놓고 싶었다. 하지만 세상 일 뜻대로 되는거 하나도 없다고 생각보다 많은 시간을 써 스스로 조급한 마음을 가지고 있었다. 이후 프로젝트를 진행하면서 급하게 설계한 모델의 문제점들이 보이기 시작했고 중간중간 모델을 다시 수정하느라 아까운 시간을 낭비했다. 그래서 조금만 더 여유를 두고 애초에 제대로된 모델을 짰으면 하는 아쉬움이 남는다.

학부생때를 통틀어서 이렇게 많은 팀원들과 협업을 해본적이 없었다. 내가 전공에 대한 흥미를 뒤늦게 알아차린것도, 게을러서 기회를 많이 잡지 못한 점도 있다. 우리팀 프론트엔드 팀원들과는 항상 웃으며 재밌게 코딩했다. 남자 5명이 구석에서 항상 드립으로 끊임없는 삽질로 인해 괴로웠던 상황들을 웃음으로 승화(?)시켰다. 그래서 그런지 개인적으로 잠을 못자서 피곤한거 빼고는 너무 즐거웠던 2주였다.

profile
주니어 개발쟈🤦‍♂️

0개의 댓글