WAUG 클론 코딩

유동헌·2021년 5월 30일
0

지난 2주간 진행했었던 글로벌 여행 액티비티 예약 플랫폼 와그(WAUG) 사이트 클론 코딩에 대한 개인 회고록입니다.

사이트 규모를 축소하여 클로닝 하였습니다.

기간

2 weeks

사용된 기술 요약

Aquery 툴 이용하여 모델링 구축 (도시 1개 정해 그 안의 숙소, 활동, 식당 등만 구현)

csv 활용하여 데이터 베이스 구축

정규표현식을 사용한 email, password vaildation 작성

회원가입 시 bcrypt 사용하여 단방향 암호화 진행

로그인 시 jwt(JSON Web Token) 토큰 발행

카카오에서 제공하는 API 사용하여 카카오 소셜 로그인 구현

python - decorator 구현하여 로그인이 유지될 수 있도록 처리

상품 리스트 조회 시 특정 조건에 맞게 filtering 할 수 있도록 처리

상품 리스트 조회 시 pagenation 적용해 상품 갯수 조절하도록 처리

작성된 전체 코드에 unittest 적용

EC2, docker 사용해 배포

모델링 & 데이터 생성

WAUG라는 사이트가 보기 보다 정보가 많은 사이트였고, 제 생각보다 많은 기능들을 얽혀 있어 처음에 모델링을 시작하기가 어려웠습니다(이 과정에서는 팀원들의 도움을 많이 받았습니다). users / products / 그 외 주문, 후기 등으로 구성을 하였지만 모두 다 구현하지는 못했습니다.

데이터는 google sheet를 이용하여 실제 WAUG 사이트의 데이터를 하나 하나 긁어 대략 50개 정도의 products와 그 연결 테이블들의 데이터를 구성하였습니다. 이 과정에서 csv를 사용, 언제든지 데이터를 쉽게 만들 수 있도록 처리해 놓고 본격적인 view 작성을 하였습니다.

한 가지 아쉬운 점이 있다면, csv 말고 django-seed를 사용해 데이터 베이스를 생성하려고 했으나 django-seed로는 유의미한 데이터를 생성하기가 불가능하여 사용해보지 못했다는 점입니다. django-seed 이용해 단순 csv와의 차이, faker의 개념 등을 공부하고 적용해 보고 싶었으나 아쉬웠습니다.

회원가입 & 로그인

회원가입과 로그인은 배웠던 내용을 복습하고 참고 자료를 보지 않고 처음부터 끝까지 작성하는 것에 의미를 두고 진행하였습니다. 정규식 표현에 대해서는 이번에 새롭게 공부하고 이를 적용해 보았으나 공부한 수준이 높진 않아 아주 간단하게 구현해 보았습니다.

jwt를 사용해 토큰을 발행하고 이 토큰을 header에 담는 과정과 이를 코드로 작성하는 방법에 대해 많이 배울 수 있었습니다. 기계적으로 작성했던 코드를 이제는 이해를 바탕으로 작성하는 경험을 할 수도 있었습니다.

카카오 소셜 로그인

회원가입과 로그인을 대하는 태도를 복습에 둔 것은 카카오 소셜 로그인이라는 새로운 기술을 시도해 보기 위함이었습니다.

외부 API를 이용하기 위해 공식 문서를 보고 천천히 따라해 보았고 좋은 경험이 되었습니다. 또한 토큰이 어디서 어디로 흐르는지(?)에 대해 보다 더 깊은 이해를 할 수 있었습니다. 네이버 및 구글 등 다른 소셜 로그인도 도전해 보면 좋았겠지만.. 밑에서 서술하게 될 유닛테스트에 시간을 너무 많이 빼앗겨 다른 소셜 로그인은 시도해 보지 못했습니다. 카카오 소셜 로그인 또한 구현 수준이 그렇게 높진 않아서, 조금 더 보강이 되어야 할 것 같습니다.

상품 관련 영역

개인적으로 product쪽 view를 작성하며 재미가 있었습니다. 조건을 만들고 적용하고, postman을 사용하여 결과를 바로 받아보는 과정이 그랬던 것 같습니다. Q객체를 사용해 쉽게 조건을 만들 수가 있다는 점, offset, limit를 사용해 원하는 상품과 갯수를 전달할 수 있다는 점 등을 공부하고 정리 할 수 있었습니다.

UNITTEST

프로젝트를 진행하며 가장 많이 찾아보고, 가장 많은 에러를 볼 수 있었던 파트였던 것 같습니다. 개념이 생소하다고 해야하나? 필요성이 느껴지지 않았다고 해야하나? 부가적인 컨텐츠인 것 같은데 실제로는 가장 많은 시간을 쏟아 부었던 파트였습니다. 지금은 unittest에 대한 오해(?)가 많이 풀렸지만.. 할 때는 정말 힘들었었습니다. 몇 가지 제대로 깨달은 것이 있다면! view보다 print를 더 많이 찍어야하고, setUp 데이터를 잘 만들어야 하고, 그리고 처음에 괜히 unittest.TestCase를 상속받으려고 해서 고생을 많이 했다는 점.. 앞으로는 unittest를 작성하며 실수를 많이 줄일 수 있을 것 같습니다.

POSTMAN으로 API 정리

https://documenter.getpostman.com/view/15461593/TzXzDcye

이번 프로젝트 때는 postman를 적극 활용해 제가 만든 API를 시도해 본 과정을 결과로 남길 수 있었습니다. 따로 문서화까지 마친 상태여서, 보기에도 깔끔해 보여 좋은 것 같습니다!

RDS, EC2, DOCKER

아마존의 서비스들(RDS, EC2)을 사용하고 docker까지 이용해 로컬 서버 없이 외부 서버를 이용해 보았습니다. 기존에 이미 작성되어 있던 글들을 따라 한 것이기 때문에 큰 어려움은 없었지만, 기초 컴퓨터 지식이 필요한 부분들이 눈에 띄어 앞으로의 학습 방향을 설정하는데 도움이 된 것 같습니다. 통신이 어떻게 이뤄지는지, 계속 써오고 있었던 가상 환경이 정확히 무엇인지 등등, 공부해야 할 점이 많다고 느꼈습니다.

마무리

기본적인 부분만 잡고 가자는 취지로 임했기 때문에 추가적인 기능 구현은 하나도 하지 못했습니다. 또한 혼자 진행한 프로젝트였기 때문에 협업 과정에서 배울 수 있는 점들은 챙기지 못했었습니다.

하지만 혼자하는 만큼 그에 대한 장점도 있었고, 제가 작성하는 코드에 대한 이해, 기술에 대해 이해할 수 있느 기회는 많았던 것 같습니다.

아쉬운점

사용해 보지 못한 기술적인 부분에 대한 아쉬움은 다음과 같습니다.

  • product detail view 작성 시... 코드 지저분함
  • product / convenience 부분 정리를 하지 못함
  • pagenatinon은 찾아보니 방법이 많았는데, 가장 간단한 적용해보았음
  • 비밀번호 찾기 기능 view
  • 단방향 암호화? 양방향으로 하면? 사용자가 직접 비밀번호를 고칠 수도 있나?

해당 기술들에 대해서는 차후 학습을 마친 후에 추가 구현을 해 볼 것입니다.

profile
지뢰찾기 개발자

0개의 댓글