학습 기록_Day12 - boostcampwm-2022/web33-Mildo GitHub Wiki

🩺 의사결정

50개의 데이터를 불러오는 방식

방식

  1. 데이터베이스를 시간 순서로 정렬 후 가져오기

    • 데이터가 점점 많아질 경우 정렬 속도가 느려질 것 같음
  2. 최근 시간을 서버에 변수로 저장하기

    • crontab 서버에서 시간을 변수로 가지고 있는데, 이렇게 되면 api 서버에선 시간이 저장된 변수를 접근할 수 없음
  3. API에서 데이터를 불러올 때마다 area 스키마에 updatedAt 같은 필드를 생성해서 50개의 데이터를 모두 업데이트

    • 한 번 불러올 때마다 50개의 데이터를 모두 업데이트 해야 됨 → 비효율적

    • 24시간 이내의 데이터를 불러올 때는 Embeded 형식으로 넣으면 됨

      ex) { 오전1시: 2022-11-22T00:20:00, 오전2시: … }

  4. 시간 컬렉션을 만들어서 그 컬렉션에 계속 최근 시간을 넣기

  5. 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 옵션으로 커밋 기록과 상관없이 merge
    • git merge origin feature/mongodb-schema --allow-unrelated-histories

내일 할 일

  • 이슈 분배