Configuration
When we say $PLACEHOLDER_NAME$, there are really two things we could mean:
- $PLACEHOLDER_NAME$ Platform, which is a server that we either run for you in the cloud or you can run yourself. It includes a database, a web server, load balancing, and all the other features you see in this documentation.
- $PLACEHOLDER_NAME$ Library, which is a collection of functions and classes for various languages that can be used to call APIs and manage resources on a platform.
The platform itself has two different types of "storage":
- Configuration: This is the static configuration. In practice it is usually changed rarely (often manually), and contains information such as resource configurations including database schemas, SSL certificates, API keys/secrets, AB testing, etc.
- Content: The actual data of your resources, such as all database rows, logs, etc.
In this article, we take a closer look at how the platform configuration works.
Modifying the configuration
The most common way to modify configuration files using the library is by defining resources. This is typed, declarative, and version controlled. However, not all operations are supported by this approach. Particularly:
- Non-destructive operations (backwards-compatible), such as creating a new resource, upgrading it to a new version, or marking something as deletable, are supported by the library, Dashboard, and CLI.
- Destructive operations (backwards-incompatible), such as deleting a resource or finalizing a migration, are not supported from the library (unless using the
.destructive
property) and must be done through the CLI or Dashboard.
There are two reasons for this limitation: On one hand, making data deletion an explicit two-step process helps prevent accidental data loss.
But there's also a practical reason: Your newest deployment of a service may no longer need a resource that is still required by an older deployment. If code could delete them, that would break the older version and hence prevent AB-testing and zero-downtime/gradual rollouts (which rely on running both versions at the same time), and reverting buggy updates would be harder as rollbacks become impossible.