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:
These gaps need to be addressed to fully complete the software development lifecycle.
Spinnaker 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:
Armory 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.
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.
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 Minnaker 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:
https://github.com/armory/minnaker#installation
Once finished, I was able to access the Spinnaker installation using the following instructions:
https://github.com/armory/minnaker#accessing-spinnaker
Those interested in the finer details can access the “Get Started” page offered by Spinnaker themselves:
https://spinnaker.io/guides/user/get-started/
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 (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:
Application-Centric Dashboard (add-on Product)
Customers utilizing Splunk 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.
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:
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!