위코드 부트캠프 2차 프로젝트 후기

강민성·2022년 1월 24일
0
post-thumbnail

Wegabox 사이트


(AWS 정책 이슈로 잠시 배포를 중단한 관계로 사이트 링크는 올리지 않음)

팀워크 & 커뮤니케이션

커뮤니케이션

프론트엔드와의 커뮤니케이션

  • 예매 페이지를 구현하는 과정에서, 내가 구현한 코드가 의도대로 정확한 데이터를 데이터베이스에서 불러오는지 확인하기 위해서는 여러 번의 테스트가 필요했다. 예매 페이지에서 선택할 수 있는 옵션이 여러 개(날짜, 지역, 극장)였으며, 또한 날짜+지역을 선택했을 때와 날짜+극장을 선택했을 때 등 각각의 경우에 따라 적용하는 필터링 조건이 다양했다. 이 부분을 구현하면서 자가 통신으로 여러 번 테스트를 해 보긴 했지만 잡지 못한 버그가 종종 있었다. 그런데 프론트엔드에서 예매를 담당해주신 팀원분이 통신으로 나온 데이터가 다를 때 바로바로 알려주신 덕분에 버그를 보다 빠르게 발견하고 해결할 수 있었다.

백엔드와의 커뮤니케이션

  • 1차 프로젝트 때와 마찬가지로, 다른 팀원분이 어려움을 겪고 계시면 서로 도움이 되려고 노력했다. 팀원분께서 아이디어를 주신 덕에 내 블로커를 해결하기도 하고, 힘이 닿는 데까지 내가 도움을 드리기도 했다.

팀워크

  • 1주차 주말에 팀원분들께서 주말에 함께 모여 작업을 해 주신 덕분에 필수 구현 사항을 빠르게 마치고 여유 있게 배포까지 진행할 수 있었다.
  • 공동의 논의거리가 있을 때 팀원분들이 모두 적극적으로 함께 의견을 나누어주셔서 감사했다. 서로의 역량과 경험을 합쳐서 혼자서는 하기 힘든 성과를 낸다는 것이 협업의 가장 큰 매력인 것 같다.

새로 구현해본 기능

소셜 로그인

  • 카카오 API를 사용하여, 사용자가 카카오 계정으로 사이트에 로그인할 수 있는 소셜 로그인 기능을 구현했다.
  • 프론트에서 받은 access_token을 카카오 API에 요청하여 유저 정보를 조회하고, 그 유저 정보가 DB에 있는지 확인하고 get_or_create로 DB에 유저를 등록하거나, 이미 등록되어있다면 기존의 유저 정보를 가져오는 코드를 작성했다.
  • 또한 유저의 PK(Primary Key)를 payload로 하여 jwt 토큰을 생성하고, 그 jwt 토큰을 복호화하는 데코레이터를 구현하여 로그인이 필요할 때 사용할 수 있도록 했다.

예매

  • 예매 페이지에서 사용자가 예매 옵션(상영일, 영화, 지역, 극장)을 선택하면 선택한 옵션들에 따라 예매 정보가 필터링되게 하는 멀티 필터링 기능을 구현했다.
  • 사용자가 원하는 상영 스케줄을 선택하여 예매할 수 있는 예매 기능을 구현했다.
  • Q객체를 활용하여 사용자가 선택한 옵션에 따라 서로 다른 데이터가 필터링되어 프론트로 리턴되도록 했다.
  • 상영 스케줄을 선택하면 데코레이터를 통해 받아온 유저 id와, 유저가 선택한 스케줄 id로 예매 데이터를 생성하도록 했다.

리팩토링을 통해 개선한 코드

캡슐화(encapsulation)

규칙성 없이 흩어져있던 코드를 클래스로 분리하거나 함수화하여 가독성과 확장성을 높일 수 있었다.

소셜로그인

예매

새로운 경험 & 성장 포인트

기술적인 영역

  • 외부 API를 활용하여 이전에 구현해보지 못한 기능(소셜로그인)을 구현했다.
  • 다중 필터링 기능을 통해 보다 복잡한 조건으로 데이터를 가공하는 경험을 했다.
  • django의 CRUD와 field lookup 활용, Q객체 사용에 대해 심화된 공부와 연습을 할 수 있었다.
  • 캡슐화를 통해 보다 객체지향적인 코드를 짜는 연습을 했다.
  • ERD 설계의 방향성에 대해 깊게 고민해볼 수 있었다.

협업 영역

  • 보다 체계적인 Scrum으로 업무를 진행하는 경험을 했다.
profile
Back-end Junior Developer

0개의 댓글