5. Building block view¶
5.1 Database (sub-project 1)¶
| Responsibility | Host the GeoServer configuration schema (catalog, resources, WPS statuses) and the data schemas of the producing services |
| Ours | geoserver role and schema, search_path, reader roles on the data schemas, initialization Jobs |
| Operator's | PostgreSQL/TimescaleDB instance, PostGIS extension if the provided account is not superuser, backups, high availability |
| Interfaces | JDBC via JNDI (jdbc/geoserver, jdbc/<data>); SQL via psql for the Jobs |
| Artifacts | poc/01-database/, guide 1, ADR-0004 |
5.2 GeoServer image (sub-project 2)¶
| Responsibility | Serve the OGC services; load its entire configuration from the database; initialize the catalog through code |
| Contents | Official GeoServer 3.0.1 + wps, wps-jdbc, gwc-s3, control-flow, gs-jdbcconfig, gs-jdbcstore, geoserver-init plugin, JNDI server.xml, bootstrap-datadir.sh |
| Interfaces | HTTP 8080 (OGC, REST, UI); JNDI jdbc/geoserver (R/W) and jdbc/meteo (R) |
| Local state | Nothing durable: emptyDir data dir regenerated at boot |
| Artifacts | poc/02-geoserver-image/, guide 2, ADR-0005, ADR-0006 |
5.3 Cluster (sub-project 3)¶
| Responsibility | Make N replicas operate as a single GeoServer: change propagation, IP-free discovery, UI sessions, shared WPS |
| Contents | gs-hz-cluster module (Maven bundle), headless Service geoserver-hz, affinity-enabled Ingress, WPS RWX PVC, PDB, geoserver-cluster-env ConfigMap |
| Interfaces | Hazelcast 5701 between pods; HTTP 8080 via Service/Ingress |
| Artifacts | poc/03-clustering/, guide 3, ADR-0008 |
5.4 S3 object storage (sub-project 4)¶
| Responsibility | Shared tile cache (gwc-tiles bucket) and COG rasters (rasters bucket) |
| Ours | Default S3 blobstore and COG stores created by the plugin; COG production (ingestion) |
| Operator's | S3-compatible service, buckets, credentials, retention |
| Interfaces | S3 API (path-style) from the pods; gwc-s3 and S3 RangeReader (IIO_S3_AWS_*) |
| Artifacts | poc/04-s3/, guide 4, ADR-0009 |
5.5 Ingestion service and mosaics (sub-project 5)¶
| Responsibility | Produce the COGs on S3, maintain the granule index and the quantity reference table, create the mosaic views |
| Contents | Python + GDAL container (ingest.py), mosaic schema, Jobs; on the GeoServer side: plugin (MOSAICS) |
| Interfaces | S3 (write), SQL (ingestion account); GeoServer reads the index through jdbc/meteo and the COGs through range reads |
| Artifacts | poc/05-ingestion/, guide 5, ADR-0010 |
5.6 Decoded observations (sub-project 6)¶
| Responsibility | Store decoded surface observations (canonical unit, source unit kept) and expose them as time-qualified layers |
| Contents | Schema obs (station, observation hypertable, publication views), decoder simulator, VECTOR_LAYERS plugin publication |
| Interfaces | SQL (decoder account, write); jdbc/meteo (GeoServer, read-only); WMS TIME / WFS / CQL |
| Artifacts | poc/06-vector/, guide 6, ADR-0011 |
5.7 Basemaps (sub-project 7)¶
| Responsibility | Background layers: hosted reference data (Natural Earth) and optional cascaded external WMS, both S3-tile-cached |
| Contents | Schema basemap + ogr2ogr load Job; plugin: per-schema datastore, code-managed SLD style, WMSStore cascade |
| Interfaces | SQL (basemap role, load); jdbc/meteo (read); external WMS (cascade); WMS/WMTS out |
| Artifacts | poc/07-basemaps/, guide 7, ADR-0012 |
5.8 Processing (sub-project 8)¶
| Responsibility | Turn point observations into continuous fields; host the in-house processes |
| Contents | meteo-wps module (meteo:IDWInterpolation, WPS + rendering transformation), obs-idw-temperature style, sparse-interpolation study |
| Interfaces | WPS Execute; SLD <Transformation> on observation layers |
| Artifacts | poc/08-processing/, poc/02-geoserver-image/meteo-wps/, guide 8, ADR-0013 |
| Future work | Production first-guess + corrections process combining mosaics and observations (ADR-0013) |