A Cloud Optimized GeoTIFF (COG) is still a GeoTIFF. Any software that reads GeoTIFFs reads COGs. The "cloud optimized" part is a promise about how the bytes are arranged inside the file, and that arrangement is what lets a browser or a script read a small window of a 10 GB image without downloading the rest.
Combine those with HTTP range requests, the standard header that asks a web server for "bytes 4,096,000 to 4,161,535", and plain object storage becomes an imagery server. No tile service, no database: QGIS, GDAL, rasterio and web clients simply fetch the ranges they need.
Since GDAL 3.1 there is a dedicated driver, so conversion is one command:
gdal_translate input.tif output.tif -of COG -co COMPRESS=DEFLATE
Choose the compression to match the data: DEFLATE or ZSTD for analytic rasters where exact values matter, JPEG or WEBP inside a COG for visual basemaps where size matters more. To verify a file someone hands you, rio cogeo validate (from the rio-cogeo package) checks the layout rather than trusting the name.
For the common case, though — orthophotos, elevation models, satellite scenes that are written once and read for years — a folder of validated COGs behind any HTTP endpoint is the simplest imagery infrastructure that actually works, and it pairs naturally with a STAC catalog describing what each file is.
Image: seaweed farms off South Korea's south coast, Landsat 8, 2014. NASA Earth Observatory (public domain).