목록으로

Programming Notes

Car-ffeine #3: 주기적인 데이터 요청, 효율적인 업데이트와 삽입 전략

안녕하세요! 우테코 Car-ffeine 팀의 제이입니다. 저희 팀은 전기차 충전소 정보를 활용하여 사용자들에게 편리한 서비스를 제공하는 것을 목표로 프로젝트를 진행하고 있습니다. 이번 글에서는 프로젝트 진행 중 겪었던 데이터 처리 문제를 공유하고, 이를 해결하기 위해 고민했던...

안녕하세요! 우테코 Car-ffeine 팀의 제이입니다. 저희 팀은 전기차 충전소 정보를 활용하여 사용자들에게 편리한 서비스를 제공하는 것을 목표로 프로젝트를 진행하고 있습니다. 이번 글에서는 프로젝트 진행 중 겪었던 데이터 처리 문제를 공유하고, 이를 해결하기 위해 고민했던 과정과 적용한 전략에 대해 이야기해보려 합니다. 혹시 부족하거나 개선할 부분이 있다면 언제든 피드백 부탁드립니다!

데이터, 우리의 친구이자 숙적

Car-ffeine 팀의 핵심은 전기차 충전소 공공 API를 활용하여 사용자들에게 유용한 정보를 제공하는 것입니다. 특히 충전소의 실시간 혼잡도 정보는 사용자 경험에 큰 영향을 미치기 때문에 매우 중요합니다. 이 혼잡도 정보를 제공하기 위해서는 다음과 같은 과정을 거쳐야 합니다.

  1. 초기 데이터 확보: 프로젝트를 처음 시작할 때 공공 API로부터 모든 충전소 데이터를 가져와 데이터베이스에 저장합니다.
  2. 주기적인 업데이트: 혼잡도는 실시간으로 변동되므로, 주기적으로 API를 호출하여 최신 정보를 업데이트해야 합니다.

여기서 문제가 발생했습니다. 공공 API는 제한된 호출 횟수를 가지고 있었고, 전국에 있는 수많은 충전소 데이터를 매번 전체 업데이트하는 것은 비효율적이었습니다. 또한, 데이터베이스에 불필요한 부하를 줄 수 있다는 점도 고려해야 했습니다. 단순히 모든 데이터를 삭제하고 다시 삽입하는 방식은 좋은 해결책이 아니라고 판단했습니다.

효율적인 데이터 관리를 위한 여정

저희 팀은 이 문제를 해결하기 위해 다양한 방법을 고민했습니다. 가장 중요하게 생각한 점은 API 호출 횟수를 최소화하면서 데이터베이스 부하를 줄이는 것이었습니다. 몇 가지 아이디어를 떠올렸고, 각각의 장단점을 비교하며 최적의 전략을 찾기 위해 노력했습니다.

가장 먼저 고려한 방법은 差分(차분) 업데이트였습니다. API로부터 변경된 데이터만 가져와 데이터베이스에 반영하는 방식입니다. 이를 위해 각 충전소 데이터에 고유한 식별자를 부여하고, API 응답에서 해당 식별자를 기준으로 변경 여부를 판단했습니다. 변경된 데이터만 업데이트하거나, 새로운 데이터만 삽입함으로써 전체 데이터를 갱신하는 비효율성을 개선할 수 있었습니다.

차분 업데이트를 구현하기 위해 몇 가지 단계를 거쳤습니다. 먼저 API 응답 데이터 구조를 분석하여 변경을 감지할 수 있는 필드를 파악했습니다. 예를 들어, '최종 수정 일시'와 같은 필드를 활용하여 데이터 변경 여부를 판단할 수 있었습니다. 데이터베이스에는 각 충전소 데이터의 마지막 업데이트 시간을 저장하고, API 응답과 비교하여 변경된 데이터만 업데이트하도록 구현했습니다.

하지만 완벽한 방법은 아니었습니다. API에서 변경된 데이터를 명확하게 식별할 수 없는 경우도 있었고, 데이터 누락이나 불일치 문제가 발생할 가능성도 있었습니다. 그래서 차분 업데이트를 보완하기 위해 추가적인 검증 단계를 도입했습니다. 주기적으로 전체 데이터를 검증하고, 누락되거나 잘못된 데이터는 수정하는 방식으로 데이터의 정확성을 높였습니다.

또 다른 고민은 데이터베이스 인덱싱이었습니다. 데이터베이스에서 특정 충전소를 빠르게 찾고 업데이트하기 위해 적절한 인덱스를 설정하는 것이 중요했습니다. 자주 사용되는 필드(예: 충전소 ID, 주소)에 인덱스를 설정하여 데이터 검색 속도를 향상시키고, 데이터베이스 부하를 줄일 수 있었습니다.

작은 개선들이 모여 큰 변화를

결론적으로 저희 팀은 差分 업데이트와 주기적인 전체 데이터 검증, 그리고 적절한 데이터베이스 인덱싱 전략을 통해 주기적인 데이터 요청 문제를 효율적으로 해결할 수 있었습니다. API 호출 횟수를 줄이고, 데이터베이스 부하를 최소화하면서 최신 정보를 사용자들에게 제공할 수 있게 되었습니다.

물론 아직 개선해야 할 부분들이 많습니다. 앞으로 API 호출 실패에 대한 예외 처리, 데이터 동기화 문제 해결, 데이터 처리 성능 최적화 등 더 많은 과제들을 해결해야 합니다. 하지만 이번 경험을 통해 얻은 지식과 노하우를 바탕으로 앞으로 더 나은 서비스를 제공할 수 있도록 노력하겠습니다.

이 글이 전기차 충전소 정보 서비스를 개발하는 다른 개발자들에게 조금이나마 도움이 되기를 바랍니다. 그리고 저희 Car-ffeine 팀의 여정에 많은 관심과 응원 부탁드립니다!