Capabilities
Capabilities enhance your application by adding on abilities to the base application. They are also the glue that connect applications to the rest of the supporting infrastructure. The composable nature allows you to construct complex applications from simple building blocks.
Some examples of capabilities are:
- Connect your application to a datastore such as postgres or redis
- Expose your application via a public url
- Trigger a serverless function based on an event or schedule
When you add a capability to your application, this capability will be launched in each environment. You can provide specific configuration for some capabilities but many don't require any configuration.
Capabilities make it much easier to ensure that your application is configured consistently across all environments. By taking care of the tedious and sensitive configuration, you can be confident your application will work as expected as you promote it from dev to staging to prod. When you launch preview environments, this also ensures that Nullstone will launch all the infrastructure needed for a fully functional application and requires no additional setup.
Types of Capabilities
Capabilities are broken down into 6 categories:
Datastores
Connect your application to datastores such as Postgres, MySQL, Redis, and more.
Subdomains
Expose your application via a public url. Examples include load balancer, CDN, or API Gateway. These allow you to host your applications at specific urls and route specific traffic to your applications.
Secrets
Inject secret keys into applications such as a JWT Key or an APP_KEY for Laravel.
Events
For serverless applications, we can trigger a serverless function to run based on events or a schedule.
Sidecars
Run a container sidecar to augment the abilities of your application. One example is an Nginx sidecar to serve static assets for your Rails application.
Telemetry
Stream logs or metrics information to providers such as Datadog, NewRelic, or Splunk.
Adding Capabilities
Each application has a Capabilities
tab where you can view, edit, and add capabilities.