Is it possible to completely replace GeoServer with a combination of Cloud Optimised GeoTIFFs and precreated Mapbox Vector Tiles hosted in cloud storage?

We are thinking to replace our datasets that we host on GeoServer as TIFF and serve as WMS -> preprocessed COGs hosted in an S3 bucket.

We are thinking to replace our vector datasets that we host on GeoServer and serve as both WMS and WFS -> pre-processed MVTs hosted in an S3 bucket.

Are there any problems with this GeoServer-less approach? What can't be replaced using this approach?

For context - we will be consuming these datasets in our own custom application only, so we don't need to make them accessible as standard OGC web services for others.

1 Answer 1


Yes, but it'll be some work, and you need the level of control having your own application brings. If you wanted to make it work with a webpage, you'd need a stateless serving layer between S3 and the web browsers, and may want to consider this approach to avoid application work and increase performance.

Raster datasets

The general approach of COGs in S3 works well. Conventionally you'd put put your COGs in S3, then run something like TiTiler on AWS Lambda to generate xyz tiles, and a CDN in front of the tiles. You could take the logic for COGs and put it in your application, removing the need for any serving. I recommend at least trying a caching layer, and monitoring its cache hit ratio to see if it helps.

Vector data

Serving MVTs as objects in S3 with CloudFront in front of it works well, but comes with restrictions

  1. You have to pre-generate MVTs for your entire coverage area
  2. Updates to your data require regenerating all the tiles, or complicated update logic
  3. You are limited to 3500 requests/s from S3 per partition, so for high traffic levels will need to distribute tiles with a hash in the url (e.g. /{prefix}/{z}/{x}/{y}.mvt where prefix is {x} modulo 16 in concatenated with {y} modulo 16, both in lower-case hex)
  4. S3 is not well suited for lots of very tiny objects, and is expensive and slow if your data covers the planet. at a high zoom level

You should consider pmtiles for serving tiles from S3 if you have a lot of tiles, as it is better suited for this and is the vector equivalent of COGs.


In both cases, a CDN between your app and the backend is important. Consider if you should run a stateless service that turns the files in S3 into HTTP responses.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.