I think it is a fair statement to convey that software engineers in 2021 are not only working hard but working smart. Building upon lessons learned over the last five years, applications and services are now created as dynamic as possible and are designed to meet laser-focused business needs.This same approach has found its way into the DevOps spectrum, where what I often refer to as “* as code” allows components to be created declaratively. The approach leverages the same git version control system that feature developers have been using for over 15 years for their source code. DevOps engineers have also made tremendous strides at delivering continuous integration (CI) pipelines that provide packaged software that is ready for delivery.However, to this day, the continuous delivery (CD) aspect still presents challenges. Challenges which expose gaps that often get in the way of a successful deployment. A couple of those challenges which I often see firsthand are:
- No easy way to pre-check deployments, which can cause a successful deployment in one environment to fail, while not failing in other environments.
- Rolling back to a prior deployment is not really a rollback, but a redeployment to an earlier version of a provided commit—not a rollback to a prior state of the full application or service.
These gaps need to be addressed to fully complete the software development lifecycle.
Why Spinnaker is Great
is an open source solution that focuses on multi-cloud continuous delivery and deployment, targeting all the major cloud service providers (AWS, Azure, Google). Focusing on the CD aspect of CI/CD, Spinnaker works with all the industry-leading CI tooling.Spinnaker shores up the gaps noted above by performing automated pre-checks for planned deployments. Once the pre-check stage is complete, Spinnaker deploys a canary and then monitors the telemetry emitted by the canary, keeping an eye out for variation between the canary and the existing fleet. If successful, Spinnaker will utilize blue/green deployments for the remainder of the application landscape.Using Spinnaker, rollbacks can be automated and actually revert the entire application or service back to the prior state. This is in contrast to simply re-deploying an existing version as a new version. Taking the true rollback approach yields a less disturbing impact on the application ecosystem overall and reduces the potential for external impacts associated with simply redeploying an older version as a new version.Spinnaker is trusted by a who's who list of IT household names, including Adobe, Airbnb, Comcast, Netflix, SAP, TransUnion, and Salesforce.However, the biggest challenge to Spinnaker is that it is a very complicated platform that presents a hefty learning curve. Below, is an illustration of the Spinnaker design and architecture:
How Armory Can Help
was created to not only simplify the Spinnaker solution, but to actually extend the value of the multi-cloud continuous delivery and deployment platform. Some of the key features that Armory introduces into the CD aspect of the application lifecycle are noted below:Introduces sophisticated pipelines as code, taking things a step further by allowing centralized pipelines.
- Facilitates scaling options to easily add/remove elements like: Development environments, Application instances, Changes to the deployment landscape, and Cluster sizing
- Better Kubernetes Management using the
- Policy engine which allows for custom policies
These enhancements open up what DevOps engineers can do with Spinnaker without the requirement of a hefty investment in time to build similar options in the native product.
How Armory Provides Value
The prior section provided some high-level features of how Armory can assist the CD aspect of the application lifecycle. There is perceived value in these features, but the biggest challenge is to get from “zero to Spinnaker” without consuming a sprint’s worth of time.Below are some key aspects in how anyone can see value early in the assessment process of an Armory trial.
Minnaker
Armory’s open source project is designed to take the confusion out of Spinnaker by automatically creating a fully functional environment in approximately 10 minutes, including the latest version of Armory, too! Yes, zero to Spinnaker and Armory in 600 seconds. In fact, using my MacBook Pro I was able to follow these instructions without any issues:
Once finished, I was able to access the Spinnaker installation using the following instructions:
Those interested in the finer details can access the “Get Started” page offered by Spinnaker themselves:
Totally Declarative Design
With Spinnaker and Armory running, it is possible to start building out the intended design using a declarative approach via the (YAML Ain't Markup Language) data serialization language using Dinghy. Below, is an example of a Dinghyfile utilized to deliver “Pipelines as Code”:
{
"application": "helloworldapp",
"globals": {
"save_app_on_update": true
},
"spec": {
"appmetadata": {
"dataSources": {
"enabled": [
"securityGroups",
"loadBalancers",
"executions",
"serverGroups"
],
"disabled": [
"canaryConfigs"
]
},
"cloudProviders": [
"kubernetes",
"aws"
],
"customBanners": [
{
"backgroundColor": "var(--color-alert)",
"enabled": true,
"text": "Your custom banner text",
"textColor": "var(--color-text-on-dark)"
}
]
}
},
"pipelines": [
{
"application": "helloworldapp",
"name": "my-pipeline-name",
"stages": [
{
"name": "one",
"type": "wait",
"waitTime": 10
}
]
}
]
}
The results of the YAML design can then be included in git-based repositories, which can then be used in the implementations from sandbox all the way through production.
Honorable Mention
There are several other items that I would classify as honorable mentions to keep in mind when considering the value that Armory brings to the table:
- Deployment Prechecks: With the underlying Spinnaker implementation, the fear of a missed configuration or dependency is eased with deployment prechecks.
- Developer-Focused Enablement: Armory makes it possible for the most-knowledge team to own a given service, from end to end, leveraging the declarative design.
- True Rollback: With the Spinnaker/Armory design, it is 100% possible to roll back a given service, including its dependencies. The rollback design can even be automated via observables monitoring the landscape.
Application-Centric Dashboard (add-on Product)
Customers utilizing can create an application-centric dashboard, which provides an overall view into the Armory/Spinnaker implementation. Below, is an example of what can appear in the Continuous Verification tab:
Those interested in Accelerate or DevOps Research and Assessment (DORA) metrics may recognize the mean time to recover (MTTR) analysis which is included in the example above, which is part of the Splunk integration and not part of the Armory product.
Conclusion
Starting in 2021, I began focusing on the following mission statement which I feel can apply to any IT professional:
“Focus your time on delivering features/functionality which extends the value of your intellectual property. Leverage frameworks, products, and services for everything else.”
- J. Vester
The Armory solution certainly falls into the classification of a service which allows feature teams to continue to focus on delivering business value, while simplifying a somewhat complicated continuous delivery (CD) solution. Armory provides additional value such as:
- Declarative design using Dinghy and YAML
- Minnaker allows quick start in just 10 minutes
- Application-wide scaling options
- True rollback functionality
Anyone seeking a CD solution targeting the major cloud providers should include Armory to the short list of products and services to evaluate. The manner in which Armory extends the proven Spinnaker solution will simplify the delivery aspects of the software development lifecycle, providing additional features along the way.Have a really great day!