← 돌아가기

Services & APIs

The legacy typhoon service runs on a Spring backend; internal apps use Next.js/Node with SQLite; research pipelines and data collectors are Python. Each service is kept small and independently deployable.

Spring Node.js / Next.js Python SQLite

Deployed services

Four web services run behind the same Nginx front door, each on its own domain and certificate. Front-end details are on the Front page.

ish.typhoon.kr research portal
ish.typhoon.krStatic HTML · Nginx · realtime JSON manifests
KTRI institute website
KTRI websiteInstitute public site · search API · live counters
typhoon.kr Typhoon Research Center service
typhoon.krReact SPA · Spring backend
TRC-NET internal dashboard
TRC-NETNext.js · Node · SQLite · PM2

Web server & TLS

Per-domain Nginx virtual hosts with individual SSL certificates and an HTTPS API proxy. Wildcard vhosts were removed so each service is isolated, and requests to unregistered hostnames are dropped at the server.

Nginx SSL per domain Domain isolation

Scheduling & processes

Recurring collection and post-processing run under cron, PM2, and systemd, with duplicate-run cleanup between schedulers. Collectors are idempotent — unique-path upserts and seen-record checks prevent duplicate ingestion.

cron PM2 systemd Idempotent collectors

Data layer

Large raw files stay on the filesystem while a metadata database (10 tables) indexes paths, models, data types, and timestamps — a hybrid that keeps 1982–2025 legacy archives searchable without moving them. 16 scheduled jobs collect and post-process KMA, JTWC, RSMC, GK2A, OSTIA, and HYCOM data.

Filesystem + metadata DB 10 tables 16 scheduled jobs 1982–2025 backfill

Monitoring

A dashboard tracks server status, GPU utilization, cluster nodes, and process health, with OOM and resource-pressure issues diagnosed from collected metrics.

Server dashboard GPU / node metrics