기존에 진행했던, 날씨별 옷 추천 프로젝트인 '입기 좋은 날'에서 OpenWeather API를 통한 시간대를 가져오는 과정이 있다.
프로젝트에 대해 알고 싶으시면 아래를 클릭..!
입기 좋은 날 -> Click!!
계속해서 진행해보자면, 자꾸 불러오는 시간이 잘못되어서 나오는 문제가 발생했다.
이 부분에서는 timezone이 달라서 그런가 해서 Asia/Seoul 로도 바꿔보고, 직접 UTC+9를 해봤는데도 불러오는 시간에 대한 데이터가 똑같았다.
혹시나 해서 서버에 date를 찍어봐도 다음과 같이 올바른 시간이 나왔다..

뭘까 하다가 하다가 문득 환경이 구축된 컨테이너 내부 시간은 다를 수도 있잖아 라는 생각으로 찍어봤더니..

아하ㅏ.. 이러면 쉽게 해결되겠다. 시간 설정으로 넘어갔다.
우선, backend의 deployment를 아래와 같이 수정해줬다.

이렇게 하면, timezone 설정이 localtime에 맞춰지게 되었다고 찾아보고 작성해줬는데.
결과는 똑같이 문제가 발생했다.
이유는 도커파일에서 Alpine Linux 이미지를 사용하고 있었기 때문이다.
Alpine Linux는 이미지 경량화를 위하여 시간대 데이터 패키지를 포함하지 않고 있었다.
따라서 deployment에서 작성해준 부분은 아예 존재하지 않았던 것이다.
시간대 데이터뿐 아니라 다른 데이터 패키지들도 여러 개가 포함되어 있지 않다.
나는 Alpine Linux 이미지를 변경하고 싶지는 않았기에 따로 설치해주는 작업을 추가해주었다.
설치함과 동시에 TimeZone을 Asia/Seoul로 바꿔주었다.


현재 내 도커파일은 멀티 스테이지 빌드를 구현했기 때문에 실행부분에 따로 적어주었다.
위의 작업들을 거치고 나서 컨테이너의 시간을 확인했을때, 서울의 기본 시간이 나오는 것을 확인했다.

클라이언트가 받는 데이터도 정상적으로 반환받았다.


지정한 위치의 지정한 시간 날씨 데이터 및 공기 데이터를 토대로 옷을 추천해주는 장면이다.
하나의 요청에 API 요청이 3개, 4개가 들어있다 보니 조금 애를 먹었고 그 중에 필요한 데이터들을 골라내는 작업이 조금 어려웠다.
OpenWeather API 무료로 사용할 수 있는 Key에서는 지정 시간 데이터를 주진 않고, 최대 5일까지의 데이터를 제공하기에 사용자가 지정한 시간에서 가장 가까운 데이터를 선정했고.
지정한 시간 ~ 다음날 00시 까지의 데이터로 하루의 일교차 등을 판단해주었다.
현재는 옷에 대한 추천 알고리즘이 우리들이 지정했던 데이터로 이루어져 있지만, 자동화 시키는 방법도 생각을 하면 좋을 것 같다.
