[Synerge] tripNbnb - 여행&숙박 클론코딩

joyful·2021년 3월 4일
0

회고록

목록 보기
1/2
post-thumbnail

📌 프로젝트 소개

Airbnb와 Tripadvisor의 웹사이트를 참고하여 숙박 및 여행 관련 서비스를 제공하는 웹 사이트 구축 프로젝트를 진행했다.

📌 적용 기술

  • React / TypeScript
  • django / Python
  • kakao api - 로그인, 맵
  • naver api - 이미지
  • netlify
  • heroku
  • git, github
  • slack

📌 프로젝트에서 수행한 역할

  • 데이터 모델링
  • DB 구축
  • 예약 관련 기능
  • 구현한 기능 test
  • heroku 배포 및 관리

📌 좋았던 점

협업 툴 및 정기 회의를 통한 진행
코로나 이슈도 있고, 각자 사는 지역이 달라 비대면으로 진행하게 되었다. 정기회의 전까지 slack을 통하여 소소한 부분에 대하여 서로 의사소통을 하고, 일주일에 두 번(월, 목) 정기회의를 google meet으로 진행했는데, 이 때는 서로 각자 진행한 부분 및 이슈 그리고 다음 회의때까지 진행할 부분에 대해 의논함으로써 원격진행의 단점을 나름 잘 보완한 것 같아 만족스러웠다.

협업에 대한 경험
협업에 대한 경험이 없었기에 한 번 경험해보고 싶어서 프로젝트를 진행하게 되었다.
제일 기억에 남는 부분이 있다면, 개인적으로 진행할 때랑은 달리 협업에서는 무조건 대화 및 조율이 필요하다는 것이었다.
처음에는 '이런 부분까지 얘기를 나눠야 하는건가?' 싶었는데, 진행하다보니 사소한 부분까지도 확실하게 얘기해주는 것이 매우 중요하다는 것을 깨달았다.

다양한 툴 사용
이번 프로젝트를 진행하면서 제일 좋았던 점을 꼽자면, 다양한 툴을 경험해볼 수 있었다는 점이다. 부끄럽지만, 개발자를 희망하면서도 개발툴은 아니지만 wsl에서의 ubuntu라던가 django, git, slack, heroku도 이번에 모두 처음 경험했다. 확실히 책만 따라할때와는 차원이 달랐는데, 사소한 부분들까지 에러가 나서 처리하느라 골치아팠던 기억이 난다. 그래도 해결했을때의 쾌감이란..! 이래서 못 놓나보다.

📌 아쉬웠던 점

어설펐던 모델링
프로젝트를 진행하다보니 알게된건데, 생각보다 모델링이 많이 중요하다는 것이었다.
처음에 어떻게 진행해야 할 지 막막한 상태였고, 일단은 부딪혀보자는 결론과 함께 크게 구현해야 할 몇 가지만 모델링을 한 상태로 진행하게 되었다.
그렇게 하다보니 모델링이 제대로 이루어지지 않은 것들이 하나씩 눈에 보이기 시작했다. 작게는 필드를 추가하거나 삭제한다던지, 크게는 관계를 수정해야하는 경우가 생기기도 했다.
다른 팀원과 함께 다음 프로젝트를 진행한다면 모델링부터 탄탄히 하자고 다짐했다.

CORS 관련 에러
백엔드 서버에서 DEBUG mode를 false로 적용할 경우 서버가 제대로 작동하지 않는 문제가 있었다. 이 부분은 heroku에서 설정을 해줌으로써 해결이 되었으나, 여전히 cors 관련한 에러가 발생한다. cors 설정 관련 패키지들을 설치하여 모두 진행해봤으나 역시 실패..(이 외에도 여러가지 진행해보았으나 모두 실패.. 설명하려면 너무 길어져서 생략하려고 한다)
이 부분은 나중에라도 가능하다면 해결하고 싶다.

이미지 사이즈 조정
우리가 구현한 기능 중 리스트 형태로 장소를 검색하는 부분이 있었다. 네이버 api를 이용하여 이미지 크롤링을 했는데, 리스트에서 이미지를 나타낼 때 사이즈를 조절하는 부분에서 막혔다.
이것저것 찾아보면서 적용해보긴 했지만(이 부분 역시 설명하려면 너무 길어져서 생략하려고 한다) 결국 실패해서 샘플 이미지 하나 띄워두는 것으로 일단은 마무리를 했다.
이 부분 역시 가능하다면 나중에라도 해결하고 싶다.


📌 기록하고 싶은 코드

✔ len() 메소드

QuerySet의 결과 목록의 길이를 반환하는 함수.
처음에는 exists() 메소드를 사용하였으나, 조건문에서 인식을 못하길래 len() 메소드로 변경해주었더니 잘 실행되었다.

✔ HTTP 응답코드

서버가 클라이언트 요청을 처리하고 난 후 상태에 따라 반환하는 코드.
유용하게 사용하였던 응답코드만 나열하자면

  • 200 : 요청은 정상이고, 본문은 요청된 리소스를 포함 (Ok)
  • 201 : 서버가 요청된 클라이언트의 정보를 정상적으로 저장 (Created)
  • 204 : 클라이언트로 반환되는 데이터가 없을 때, 즉, 빈 콘텐츠 제공 (No contetnt)
  • 409 : 클라이언트 요청에 대해 서버에서 충돌 요소가 발생 (Conflict)

이 중 제일 고민했던 부분은 예약 정보가 존재하는 경우에 대한 상태 표시였는데, 예약 정보가 존재한다라는 것은 결국 일종의 예약 정보라는 자원을 점유한 것에 대한 충돌이기 때문에 409 상태코드가 가장 적합하다고 판단했다.

✔ create() 메소드

객체 생성 후 저장까지 한 번에 가능한 메소드.
따로 save() 메소드를 사용하지 않아도 된다는 점이 획기적이었다.

✔ json을 통한 클라이언트와의 통신

클라이언트와 서버간 자원을 주고받는 형식을 json으로 통일하였다. 그동안 존재는 알고 있었지만 개인 프로젝트를 진행하면서 한 번도 사용해 본 적 없었기에, 처음엔 공부하면서 막막했다. 그래도 이것저것 찾아보고 도움도 받고 직접 분석하다보니 사용할 수 있는 정도는 되었다! 그리고 실제로 json data를 주고 받고 하는 과정을 눈으로 직접 보니 신기하고 재밌었다.

profile
기쁘게 코딩하고 싶은 백엔드 개발자

0개의 댓글