한 개발자가 회원가입이나 결제 없이 전 세계 모든 해항과 공항—항구 3,804개와 공항 9,640개—을 나열한 무료 검색 가능 인덱스를 공개했습니다. theportindex.online 사이트에서는 데이터를 검색하거나 CSV 또는 JSON 형식으로 전체 데이터셋을 다운로드할 수 있습니다.

이 인덱스가 필요했던 이유

제작자는 전 세계 해항의 깨끗하고 최신화된 목록을 찾으려 했으나 난관에 부딪혔습니다. 대부분의 상용 서비스는 유료이며, 공개된 목록은 수년 전 데이터인 경우가 많았습니다. 불완전하거나 오래된 데이터에 의존하면 분석가들이 스프레드시트를 정리하는 데 수 시간을 허비하게 되며, 이는 업계 전체적으로 큰 비용 부담이 됩니다. 개발자는 미국 정부의 항구 인덱스, 국제 위치 코드 디렉토리, 크라우드소싱 공항 데이터베이스라는 세 가지 공개 소스를 통합하여 누구나 즉시 사용할 수 있는 단일화된 참조 자료를 구축했습니다.

데이터 소스

  • NGA World Port Index – 모든 공인 해항에 대한 기본 정보를 제공하는 미국 정부의 편집물입니다.
  • UN/LOCODE – 항구와 공항에 표준화된 식별자를 추가하는 유엔(UN)의 위치 코드 시스템입니다.
  • OurAirports – 활주로 길이와 좌표를 포함하여 커뮤니티가 관리하는 공항 정보 모음입니다.

각 소스는 서로 다른 측면의 정보를 제공하지만, 단독으로는 즉시 사용 가능한 검색형 카탈로그를 제공하지 못합니다. 이를 병합하는 과정은 단순한 복사-붙여넣기 이상이었습니다. 개발자는 불일치하는 데이터, 중복 항목, 누락된 필드를 해결해야 했습니다.

데이터 정제: 세 가지 값진 교훈

  1. 포함된 줄 바꿈은 단순한 파서를 망가뜨립니다 – 따옴표로 묶인 필드 내에 줄 바꿈이 포함된 CSV 파일은 기본적인 "줄 바꿈 기준 분할" 명령으로 나눌 수 없습니다. 행을 온전하게 유지하려면 적절한 CSV 파서가 필수적입니다.
  2. 이상치는 실수를 숨깁니다 – 일부 석유 터미널의 수심이 900m로 기재되어 있었는데, 이는 항구가 아닌 계류 부표에 해당하는 수치였습니다. 수심 기반 순위의 신뢰성을 유지하기 위해 비현실적인 숫자를 필터링하는 작업이 필요했습니다.
  3. 0은 종종 자리 표시자(placeholder)입니다 – 수심이 0으로 기록된 것은 대개 수심이 얕은 것이 아니라 측정이 불가능함을 의미합니다. 0을 누락된 데이터로 처리해야 수심에 의존하는 모든 분석의 무결성을 보존할 수 있습니다.

단순한 수치를 넘어선 가치 창출

이 인덱스는 단순히 좌표를 나열하는 것 이상의 역할을 합니다. 항구의 경우, 수심을 안전하게 접안할 수 있는 선박의 종류로 변환하여 단일 지표를 실질적인 의사 결정 보조 도구로 만듭니다. 공항의 경우, 활주로 길이를 해당 공항에서 운항 가능한 항공기 유형과 매핑하여 조종사와 계획가가 역량을 한눈에 파악할 수 있게 합니다.

공간 그리드(spatial grid)를 통해 모든 항구를 가장 가까운 공항과 연결(또는 그 반대)함으로써 사이트를 탐색 도구로 변모시켰습니다. 예를 들어, 사용자는 특정 항구에서 차로 짧은 거리 내에 있는 공항이 어디인지 확인할 수 있으며, 이는 복합 운송 계획 수립에 유용한 기능입니다.

대규모 정적 사이트 엔진 구축

프런트엔드 전체는 정적 생성을 지원하는 Next.js로 구동됩니다. 빌드 과정에서 각 항구와 공항을 위한 약 14,000개의 페이지가 사전 렌더링됩니다. 데이터베이스나 서버 측 로직이 없기 때문에 사이트 운영에 따른 지속적인 컴퓨팅 비용이 발생하지 않으며, 전 세계에 페이지를 즉시 제공하는 콘텐츠 전송 네트워크(CDN)를 통해 운영됩니다.

SEO 함정과 '저품질 콘텐츠' 해결법

수천 개의 템플릿 페이지를 업로드하면 검색 엔진이 이를 "저품질 콘텐츠(thin content)"로 간주하여 순위를 떨어뜨리는 등 경고를 보낼 수 있습니다. 개발자는 AdSense 신청이 거절되었을 때 이 문제에 직면했습니다. 해결책은 방문자에게는 전체 페이지를 공개하되, 각 카테고리에서 품질이 높은 상위 400개 페이지를 제외한 모든 페이지에 noindex 지시어를 추가하는 것이었습니다. 이를 통해 크롤러에게 가장 가치 있는 페이지들만 검색 결과에 나타나도록 알려줌으로써, 전체 데이터셋을 제공하면서도 사이트의 신뢰성을 유지할 수 있었습니다.

수혜 대상 및 한계

  • 물류 기업은 여러 개의 PDF를 뒤질 필요 없이 화물선이 항구의 수심 제한에 적합한지 빠르게 확인할 수 있습니다.
  • 항공 노선 계획가는 활주로와 항공기 매핑 정보에 즉시 접근할 수 있어 노선 타당성 조사에 유용합니다.
  • 개발자 및 연구자는 맞춤형 도구에 가져올 수 있는 깨끗하고 기계 판독이 가능한 데이터 덤프를 얻을 수 있습니다.

프로젝트의 향후 계획

제작자는 추가 기능에 대한 커뮤니티의 피드백을 기다리고 있습니다.

요약

데이터 정제의 번거로움을 해결하고, 추론 레이어를 추가하며, 정적 생성을 통해 서버 비용을 절감함으로써, 개발자는 주기적인 업데이트를 감수하고 검색 엔진 가이드라인을 주의 깊게 살필 의향이 있다면 가벼운 아키텍처만으로도 전 세계적으로 유용한 도구를 제공할 수 있음을 보여줍니다.