학습 기록_Day12 - boostcampwm-2022/web33-Mildo GitHub Wiki
🩺 의사결정
50개의 데이터를 불러오는 방식
방식
-
데이터베이스를 시간 순서로 정렬 후 가져오기
- 데이터가 점점 많아질 경우 정렬 속도가 느려질 것 같음
-
최근 시간을 서버에 변수로 저장하기
- crontab 서버에서 시간을 변수로 가지고 있는데, 이렇게 되면 api 서버에선 시간이 저장된 변수를 접근할 수 없음
-
API에서 데이터를 불러올 때마다 area 스키마에
updatedAt
같은 필드를 생성해서 50개의 데이터를 모두 업데이트-
한 번 불러올 때마다 50개의 데이터를 모두 업데이트 해야 됨 → 비효율적
-
24시간 이내의 데이터를 불러올 때는 Embeded 형식으로 넣으면 됨
ex) { 오전1시: 2022-11-22T00:20:00, 오전2시: … }
-
-
시간 컬렉션을 만들어서 그 컬렉션에 계속 최근 시간을 넣기
-
redis 사용 (챌린지)
- 최근 시간을 가지고 있는 것보다 최근 장소 50곳 또는 24시간 이내 장소 밀도를 모두 업데이트하여 저장
- 24시간 이내의 정보를 빠르게 제공해주는 것이 우리 서비스에 있어서 중요한 부분이기 때문에 가장 적합하다고 보임
- 이걸 하려면 크론탭 서버를 빨리 구축해야 함
- 러닝커브가 발생할 것 같음
- RabbitMQ라는 메시지 큐 기반 데이터베이스도 있는데 러닝커브가 적다고 함
결론
- 24시간 이내의 데이터를 빠르게 제공해야 하는 우리 서비스에서 5번이 가장 적합해보임
- 다만, 5번 방법으로 하면 현재 상황에서 MongoDB에 굳이 저장할 필요가 없음
- 하지만 크리스마스 같은 특정 기간에 사람이 얼마나 모이는지 정보를 제공하는 것을 확장성으로 생각했을 때, 과거의 모든 정보를 저장해놓을 필요가 있으므로 MongoDB는 계속 사용하기로 결정
🚧 Trouble Shooting
.env 파일 push 오류
첫 번째 문제
dev
브랜치에서 PR 템플릿을 만들기 위해 폴더를 만들고 문서 생성dev
브랜치의.gitignore
에.env
파일이 포함되지 않아 이후 커밋에.env
파일이 포함되어 remote 저장소에 올라감- 서울 실시간 도시 데이터 API 인증키를 변경할 수 있다는 사실을 몰랐기 때문에
git filter
사용git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch web33-Mildo/server/.env' --prune-empty -- --all
두 번째 문제
git filter
가 적용되지 않아.env
파일이 커밋 내역에서 제거되지 않음- 서울 실시간 도시 데이터 API 인증키를 변경할 수 있다는 사실을 알고 환경변수들을 다 변경하기로 결정
- 제일 최근에 수정된 브랜치인
feature/mongodb-schema
브랜치에dev
브랜치를 merge
세 번째 문제
- 반대로
dev
브랜치에feature/mongodb-schema
브랜치를 merge하려고 했으나origin/dev
브랜치로 checkout 되지 않는 오류 발생 - 로컬에 있던
dev
브랜치 삭제 후origin/dev
로 체크아웃
네 번째 문제
git filter
로 많은 커밋 내용이 변경되었기 때문에 merge가 되지 않음--allow-unrelated-histories
옵션으로 커밋 기록과 상관없이 mergegit merge origin feature/mongodb-schema --allow-unrelated-histories
내일 할 일
- 이슈 분배