안녕하세요. 여행 중 시차로 인한 불편함을 최소화하고 여행자들이 더 즐거운 여행을 경험할 수 있도록 돕는 서비스, "LagLess"입니다. 이 글을 통해 프로젝트의 배경, 주요 기능, 개발 중 만난 오류 등을 소개하고자 합니다.
프로젝트 배경
여행을 좋아하는 많은 사람들이 공통으로 겪는 문제 중 하나가 바로 '시차 적응'입니다. 시차로 인해 체력이 떨어지거나, 원하는 시간에 잠을 못 자는 등의 불편함을 겪습니다. 이런 문제를 해결하기 위해 "LagLess"를 개발하게 되었습니다.
주요 기능
- 취침 시간 최적화 추천: 여행 전날 취침, 비행기 내 낮잠, 그리고 도착 후 첫날의 취침 시간을 최적화하여 추천합니다. 이를 통해 사용자들은 여행 중 피로를 최소화하고 편안한 여행을 즐길 수 있습니다.
- 여행 일정 리마인더: 여행 전에 사용자에게 여행 일정을 리마인드하는 이메일 알림 서비스를 제공합니다.
- 결과 페이지 저장: 사용자가 오프라인에서도 결과 페이지를 이미지로 저장할 수 있도록 지원합니다. 사용자들은 여행 일정을 쉽게 확인할 수 있습니다.
사용 기술
Next.js 14, Vercel, Redis(upstash, KV Database), MongoDB
DB를 나눈 이유
현재 Redis(upstash, KV Database), MongoDB 총 3개로 데이터를 나눠 저장하고 있습니다.
1. MongoDB
- 이메일 서비스: 사용자가 서비스에 가입하면서 제공한 이메일 주소를 저장하는 용도로 사용됩니다.
2. Upstash
- 결과 저장: 사용자가 서비스를 이용하여 조회한 결과값을 저장합니다. 사용자가 이전에 조회한 데이터를 쉽게 확인하고 재사용할 수 있도록 관리됩니다.
- 공유 기능: 서비스 내에서 결과를 공유할 수 있는 기능이 있어, 데이터를 따로 저장하여 관리합니다.
3. KV Database
- 항공권 데이터: 사용자가 항공권을 조회할 때 크롤링된 항공권 정보를 저장합니다. 이는 사용자가 중복 조회하거나 여러 번 조회할 때 기존에 가져온 항공권 정보를 빠르게 제공하기 위해 저장됩니다.
Redis를 선택한 이유는 데이터의 값이 단순하고, 영구적으로 데이터를 저장할 필요가 없는 경우에 적합하기 때문입니다. 또한, Redis는 빠른 속도와 메모리 기반의 저장 방식을 통해 데이터 접근에 효율적입니다.
향후 서비스가 확장되고 사용자가 증가할 경우, Upstash에 저장된 데이터를 다른 데이터베이스로 이전할 예정입니다. 이렇게 함으로써 용량 제한에 따른 제약을 극복하고, 더 많은 데이터를 안정적으로 관리할 수 있을 것으로 기대됩니다.
개발중 만난 오류
- Vercel Cron Job과 Get API 등록 Vercel에서 Cron Job을 설정하고 API가 정적으로 배포되서 발생한 문제입니다. 이를 동적 API로 변경하여 해결했습니다.
- 결과 화면 이미지 저장 Safari와 LazyLoad의 CORS 정책으로 인해 발생한 문제입니다. 이를 해결하기 위해 CORS 정책에 위배될 수 있는 외부 URL과 페이지의 모든 LazyLoad 이미지를 캔버스에 포함시키지 않도록 조치했습니다.
- 라이브러리 오류 라이브러리를 사용하여 timezone을 가져왔는데, 해당 라이브러리는 첫 번째 값을 가져와서 발생한 오류가 있었습니다. 이를 해결하기 위해 기존 라이브러리 코드에 조건을 추가하여 오류를 해결했습니다.
- 다국어 처리 다국어 처리를 위해 next-intl 라이브러리를 사용하려 했으나, Next.js의 버전 업데이트로 인해 발생한 호환성 문제로 인해 수정이 필요했습니다. 이를 해결하기 위해 공식 문서와 커뮤니티의 도움을 받아 수정하고, NextIntlClientProvider를 통해 message를 전달하여 문제를 해결했습니다.
향후 계획
앞으로도 계속해서 사용자의 피드백을 반영하여 서비스를 개선해 나가고자 합니다.
어떤 점이 좋았는지, 아니면 개선이 필요한 부분은 무엇인지 알려주시면 감사하겠습니다.
예시 항공편 (다른 항공편으로도 가능합니다)
(인천 -> 베이징)
날짜 : 2024.02.27
항공편 : CA138
(베이징 -> 두바이)
날짜 : 2024.02.27
항공편 : CA941
(인천 -> 뉴욕)
날짜 : 2024.02.28
항공편 : OZ222
(뉴욕 -> 파리)
날짜 : 2024.02.28
항공편 : AF3634
댓글