Tools and Disciplines
There are a number of tools and techniques that will aid your software organization in quickly developing these key capabilities for release management.
As an emerging standard for cloud native application packaging, whether SaaS or on-prem, Docker is a key method for ensuring you’re delivering the same application artifacts not only to SaaS and on-prem environments, but also across specific on-prem release channels.
Similar to docker, Kubernetes is quickly becoming the standard for orchestrating packaged applications. Defining your application as Kubernetes manifests is a great way to deliver to your own cloud-native infrastructure, while also ensuring you’ll be ready to deploy to a Kubernetes-based Modern On-prem environment.
While Helm is great for 1st-party application delivery, it often falls short when delivering an application to a third party (and to any on-prem environment).
The principles behind 12-factor apps are valuable when shipping a cloud-native application, although some ideas like “config should always be in environment variables” have fallen out of favor due to security concerns. Among some of the most valuable principles for delivering reliable, self-healing applications are disposability and concurrency.
Swappable External Components
We dive into great detail in minimizing the
if is_onprem: ... statements in an application in our guide on
swappable external components.
Modern On-prem Tools for Vendors
- Docker Registries ( Quay, Dockerhub)
- Replicated Vendor
- Kubectl preflight
- Kubectl support-bundle
- Cloud-native Databases: ( cockroachdb, Yugabyte, tidb, Vitess)
- Operator Framework
- TensorFlow Federated
- Open Cloud Architecture
- Chaos Engineering
- Pact Testing
- ServiceMesh ( Istio, linkerd, Consul)