본문 바로가기

카테고리 없음

Wanted Preonboarding - 3주차(1)

이번 과제는 Batch task를 구현하는게 핵심이었다.

 

공공데이터 OpenAPI를 통해 임상시험 자료를 불러오고, 해당 자료에 대한 업데이트를 제공하는 서비스를 만들어야 하는데, 공공데이터 OpenAPI에서는 직접 업데이트 여부에 대한 알림을 주지 않기에 Polling방식의 Batch task를 설계해야 했다.

 

Polling 방식 특성상 OpenAPI를 통해 불러온 자료가 실제로 업데이트 되어있는지 확인하려면 직접적인 데이터 비교가 유일한 방법이다. 다만 데이터를 날것 그대로 비교하는 경우, 시간적 비용이 천문학적으로 커지게되니, 파일과 데이터의 무결성 검사에 사용되는 MD5 해싱을 사용했다. 이를 통해 해시 값의 변경 여부에 따라 업데이트가 필요한지에 대해 결정하였다.

 

Polling을 구현하는 방법은 스켸줄러를 활용했다. 리눅스 시스템에 기본으로 설치된 cron과 crontab을 활용하여 진행할 수 있지만, 코드의 관리와 유지보수를 위해 동일한 인터페이스와 기능을 가진 node-cron 라이브러리를 활용하여 코드 안에 삽입했다.