Quarterly Zerops update — wildcard domains, CDN, external access to DBs, RAM granularity and more
It's been three months since our last update reviewing what happened in 2024, so it's time to show what we've been up to since.
Table of contents
- Wildcard domains
- External access to databases
- Integrated CDN (v0.1)
- More granular RAM scaling
- Manual pipeline triggers / retrigggers
- Improved shared storage service
- Automatic recurring top-ups
- Increased resource limits
- Typesense & Ruby service
- CLI improvements
- Static service headers configuration
- What's next
Wildcard domains
This feature had been on our roadmap for almost two years. Zerops handles SSL certification through Let's Encrypt, but the DNS challenge we were using didn't allow for wildcard certifications. At last, we've implemented a solution that allows us to handle wildcard certifications and is straightforward for users.
External access to databases
At the beginning, we made a conscious decision to make databases available only inside the private network of the project. This was both for performance and security reasons. Databases were simply not meant to be a standalone component of Zerops. But the reality is, there are use cases for external access beyond using it as a standalone service (e.g., third party services analyzing your DB data). So at last, starting with Postgres, we've enabled direct external access to the databases through IP addresses assigned to the project.
Integrated CDN (v0.1)
Our primary goal for this year is to make Zerops global, which means the ability to select which datacenter a project runs in, run containers within different regions, and use a built-in CDN. We've released an experimental first version of the CDN, which allows you to set up content delivery for static files, as well as files uploaded to your object storage service. In the next version of the CDN, we expect to add support for caching whole static websites and improve support of cache headers.
More granular RAM scaling
You can now set your RAM (and RAM scaling) in 125 MB steps, making Zerops ever more efficient and price-conscious.
Manual pipeline triggers / retriggers
Our import function has a buildFromGit param, which allows you to trigger a one-time deployment from a public git repository once a service was imported, and a zeropsYml param, which allows you to trigger a pipeline without any code (which can then be fetched inside the build process). Now we've added the same functionality to service add from the wizard, as well as the ability to trigger the pipeline using a public git repository or custom pipeline configuration subsequently. We've also added an option to re-trigger the last pipeline with different env variables.
Improved shared storage service
Containers are volatile — they get created, removed, moved—which is why you should never save anything to local filesystem and instead use object storage. But sometimes you simply need a persistent mounted folder, which is what our shared service provides. Now we've changed the underlying technology, improving stability and performance.
Automatic recurring top-ups
Now you don't have to manually refill your credits; you can set up weekly or monthly recurring top-ups based on your actual consumption and respecting your defined maximum charge limit.
Increased resource limits
You can now set the max. amount of containers to 10 (up from 6), max CPUs per container to 8 (up from 5), max RAM per container to 48GB (up from 32GB) and max Disk per container to 250GB (up from 100 GB).
Typesense & Ruby service
Typesense is a lightning-fast open source search, an alternative to Algolia, and we now support it in both HA and non-HA setups. And Ruby, the last popular runtime missing a native support on Zerops, now finally here.
CLI improvements
- Push command now has the ability to stream build/prepare logs
- There's a new
workspaceStateflag that deploys all (default), staged, or clean files - CLI now also supports
.zcli.ymlto define default variables/scope for the project
Static service headers configuration
Our service for static apps now supports headers property for custom headers, and cors shorthand for Access-Control specific headers.
zerops:
- setup: app
run:
base: static
routing:
# Content of default Access-Control headers: Allow-Origin, Allow-Methods, Allow-Headers, Expose-Headers
# Value must be enclosed in single quotes, and may be suffixed by `always`
cors: "'* always'"
# Only exception to mandatory single quotes is plain *, which gets wrapped into '*'
cors: "*" # this is equal to "'*'"
redirects:
- ...
headers:
# If a header is added for a path that doesn't exist in redirects,
# it automatically gets default `try_files $uri $uri.html $uri/index.html /index.html =404;`
- for: /some/path
values:
My-Custom-Header: Hello
# If user adds a header for an existing path (including default `/*`) it gets merged
- for: /*
values:
My-Custom-Header: Hello2
What's next?
- Forwarding of container statistics to OpenTelemetry systems
- Speed improvements of our Docker service
- VMs with GPUs
- CDN v1.0
- Migration containers
- Continuous work on preparation for support of multiple regions