2st Project : 2022.07.04~2022.07.08
<2022.07.04 월요일>
스케줄
10am - 11am | Code Kata
11am - 12pm | 1차 프로젝트 팀 발표
1pm - 2pm | Planning Meeting
2pm - 4pm | Planning Meeting(with Devs)
4pm - 5pm | 1차 sprint
5pm - 6pm | 개발 환경 초기 세팅
주말에 뭐했나?
planning meeting
- 항공권 vs 숙소 둘중에 하나 선택 -> 숙소로 결정!
- 일반 로그인/회원가입이 아닌 소셜 로그인으로 구현
- 우선 카카오로 진행(sdk 말고 restapi 방식으로 진행)
- 이후에 구글, 페이스북 순서로 구현
- 숙소 눌렀을 때 나오는 페이지(숙소 리스트 페이지)를 메인페이지로 구현
- 숙소 상세 페이지
- 지도 api, 리뷰(후기), 사진(json 보다는 form 데이터(파일 데이터) 주고받기.)
- aws에 파일 스토리지 서비스를 사용해서, 여기에 이미지 파일 업로드.
- 댓글
- 생성, 수정, 삭제, 조회 (이미지 첨부) -> db에 저정하는게 아니라 다른 인프라에 저장해야 함
- 위시리스트 -> 추가 사항으로(하트 누른 부분만 필터링)
- 예약하기는 그냥 예약만. 결제 api는... 추가 사항으로.
- git -> merge 대신 rebase 사용.
- 도커. 배포과정. 유닛테스트 사용하게 될 것.
- 유닛테스트 -> 인테그레이션 테스트 기법, 서버를 실제로 띄워놓고 실행하는 것. 코드가 잘 돌아가는지 확인하는 코드. 백에서 아주 중요하다!!
- 구현하는 모든 기능마다 붙여야 한다.
- 테스트 코드까지 같이 pr에 올라가야 한다!!!
- 도커: 배포, 운영 시 얻는 장점 up!!! 중요하다!!! 목욜날 배포할것이다 aws 해보기.
- 오늘 내일 기능 정리. 바로 ERD 정리, models.py 올리기.
- github commit, pr 작성, commit에 반드시 기능 구현에 대해 알 수 있도록, pr도 봤을 때 이 기능을 만들어 pr만든 이유가 납득이 되어야 함. -> commit, pr에 대한 리뷰도 추가될 것.
- 2주차는 라이브 코드 리뷰 진행. 멘토님이랑 같이.
- 다음주 월요일에 기업 협업 리스트가 나오게 되면 지망 선택 후 이력서 제출하면 시간이 부족할 수 있다(월~화).
개선 사항
<2022.07.05 화요일>
스케줄
10am- 11am | daily standup meeting
10:30 - 12pm | Git Workflow
2pm - 4pm | 데이터모델링 리뷰
6pm - 7pm | Code Kata
daily standup meeting
모델링 개선사항
- 위도 경도
decimal로 저장. 소수점 자리수는 알아서 정하기.
- time table, guest table
언제든지 체크임 체크아웃 변경 가능.얼마나 정규화하느냐는 선택인데, 테이블이 늘어나지 않는 방향으로 하는게 낫다. 제약조건이 늘어나게 되는 거니까. 조회 요청이 거의 없는 테이블인데...삭제하자.
- img table
받아서 구축하는게 아니니 db에 저장. 두 테이블은 합쳐도 되지만, 관리할 때는 분리하는게 낫다. null이 많아지면 검색 효율도 떨어지고... (블로그 링크 참조) 확장성도 떨어진다. 만약 추가적인 컬럼을 만들고 싶어지면 어이구
file storage. 컴터에 이미지 폴더 만들어놓고 여기다가 이미지 저장해두는 것. 클라우드에서 대부분 제공해주는 서비스. aws의 s3. 버켓이라고 하는 폴더를 만들 수 있는데, 여기에다가 저장한다. api에서 파일 받아서, s3에 보내서 업로드를 하는데, 고유한 url이 생긴다. 이 url을 db에 저장하는 것!
-> 결국 s3도 세팅해야한다!
- quantity: 방 개수
room가 아니라 예약 테이블에서 관리해야 한다. 날짜를 프론트에서 받아서, 예약테이블 조회해서 방이 있는지 없는지.
- reservation rooms은 합치기
- additional charge는 빼기
- guest_info는 json 필드로 쓰기
- room이 날짜별로 비었는지 안비었는지 알아야하는데 -> 예약 날짜를 개수에서 빼면 방 몇개있는지 알 수 있다~
기타 사항
- 카카오 로그인에서 사용해 볼 수 있는 라이브러리
- requests 라는 라이브러리를 쓰면 우리가 client인것터럼
- boto3는 aws와 통신할 때 사용할 수 있는 라이브러리
- 상단 검색바에서 자동완성되는건 구현이 가능할까?
- api 호출 -> db필터링 -> 반환 하는 방법으로는 속도가... 하지만 검색 기능 구현 전까지는 이런 방법 사용. 지금은 이걸 써라! db에서 테이블 스캔하념 된다.
- elastic search 라고 있는데, 오픈소스 검색엔진. api에서 가저옴. 검색속도 왕왕빠르다!! 자주 검색되는건 테이블 전체 스캔해서 db 따로 만들어서, indexing이라고 하는 뭐 왕빠른 검색을 할..수..있다...
AWS를 쓸거면 open search라는 기술을 쓰면된다. 아니면 elastic search 쓰고...
<2022.07.06 수요일>
스케줄
10am- 11am | daily standup meeting
6pm - 7pm | Code Kata
daily standup meeting
- 오늘은 메인페이지, 검색페이지의 리스트 데이터를 보내는 api를 짜봐야겠다.
<2022.07.07 목요일>
스케줄
10am- 11am | daily standup meeting
10:30 - 12pm | Software Testing
2pm - 3pm | Django Unit Test
6pm - 7pm | Code Kata
daily standup meeting
- 메인페이지, 검색페이지의 리스트 데이터를 보내는 api PR 올리기.
- 검색기능/자동완성 기능 찾아보기.
질문사항
Q. 이 예약이 꽉찬 기준은 ProductList 에서 검색할때 설정한 날짜를 기준으로 예약불가여부를 판단하는데 이경우 QueryParams를 사용해야하나요??
A. 이 질문은 GET을 사용해서 상품정보를 받아오기 때문에, query string 사용해서 받아오면 될 것 같습니다.
Q. ex) ProductList에서 7월 23일 제주도를 검색하여서 제주도의 특정 호텔의 Product페이지로 넘어간다면 7월 23일에 예약이 가능한지 불가능한지 여부를 상세페이지에서 보여줍니다.
A. 불가능 여부가 상품에 표시되는건지 아니면 상품이 가지고 있는 각 룸에 표시되는건지 궁굼합니다!
<2022.07.08 금요일>
스케줄
10am- 11am | daily standup meeting
10:30 - 12pm | ORM 최적화
6pm - 7pm | Code Kata
daily standup meeting
주말에 할 것.
- 예약 일수에 따라 금액 올라가는거 구현
- sort 시에 숙소 별 최저가 sort가 아닌 sort된 조건에서 sort가 되는지 안되는지 확인
- 이력서 쓰기
<일주일 회고>