How times have changed. It wasn’t so long ago most organizations developed software using the waterfall method — and only released software on solid media, such as compact discs. There was no real business need for an agile, fast-paced release cycle, and companies responded slower to changing requirements.
The fanfare around the release of ‘major’ versions is still a great marketing tool to relaunch or refresh a brand, and big releases are still the norm in many companies. Software makers still ship bugs customers must endure until next year’s version (if they don’t take their business elsewhere).
Yet, many software packages have adopted the continuous delivery (CD) or progressive delivery (PD) methodology, instantly shipping their code to production. New features and fixes arrive automatically on the user’s device as frequent updates. That bug users complain about today may even be fixed next week and forgotten not long after.
Companies who embrace CD and PD have deployments that are, well, just more boring. When these software makers fix bugs quickly and add new features frequently, customers stay happy and the releases remain drama-free.
The Importance of Automation
Keeping your software in a releasable state is essential to CD. As such, you’ll now have the confidence to increase your feature delivery cadence and reap the benefits of swift feedback loops and high codebase quality. Problems tend to rear their heads early, and studies link CD to increased productivity.
Without automated CD, deployments are risky. Inconsistent processes and manual steps become a source of pain. Often, two developers on the same team have different methods of deploying the same software. Many manual deployments are based on scripts teams have written, then moved on to other jobs, and deployed by others with little understanding of the scripts.
In contrast, standardizing and automating production ensures you maximize your product’s uptime and ship what you intend. Rolling back is also best automated, so, rather than patching in the small hours of the morning after something goes wrong, your deployment team can roll back to the stable version at the push of a button. This option gives your team confidence to deploy with higher frequency.
After all, the whole idea here is that automation is synonymous with reliability. So, we ensure we automate more and minimize deployment’s risky manual aspects. And, having decided to embrace automation, we take action to reduce problems.
Let’s look at breaking up your monolith and implementing some best practices for CD, which helps your transition and turns software delivery from a risky, stressful event to a boring, everyday occurrence.
Break Up the Monolith
One way to make deployments boring is to avoid moving a monolithic application into the cloud. Instead, plan on splitting it up into microservices. This task is worth the time investment and is pretty straightforward to do, especially since you don’t have to do it all at once.
Approach the task first by putting the whole app in a Docker container. Then, gradually split off pieces into separate microservices, with each service running in its own container. This fragmentation on its own doesn’t make deployments better, but it helps ensure the app is made up of smaller pieces that are easy to develop, test, control, and deploy.
Your software engineers will thank you as they worry less about making changes to the codebase for fear of breaking something elsewhere. Self-contained microservices are a joy to work on.
There are many other benefits to microservices, too. Your deployments will be smaller and more manageable. Conquering this monolith also empowers teams to deploy at a time that is right for them. No more hanging around waiting for the whole monolith to be production-ready. Even this sense of achievement will have a knock-on effect on cadence.
Deploying Microservices with Kubernetes
Now your app is chunked into microservices in Docker containers, and you need a way to manage them. Kubernetes is one of the go-to tools to orchestrate, scale, and manage such processes. It monitors your containers’ health and reacts to node failures and other events.
One tip to help make deployment run smoothly is to configure Kubernetes with a YAML or JSON file. Don’t forget to keep these configuration files in source control for restoration, if needed. Configuration files also help detect configuration drift, where one team makes tweaks for reasons perhaps only they know or stored on a scrap of paper.
Making the most of the technology available to set standards makes the process run smoothly. Working with many technologies can be daunting, but bringing it all together with Armory, you can harness the power of various packages to build CD pipelines seamlessly. Using Armory’s built-in guardrails ensures your team implements best practices, resiliency, security, and compliance.
Introducing checks on deployment is also key to preserving consumer confidence. No one wants to damage brand reputation, but any deployment has the potential to push a substandard product. For this reason, organizations have checklists of tasks and final safeguards before pushing to production. Armory acts like the clipboard, ensuring the product adheres to corporate policy and compliance.
Armory’s Policy Engine helps prevent security vulnerabilities from creeping into production. For example, some companies may have a “division of responsibility” policy: The person who writes the code can’t be the same person who deploys it. You may rely on monitoring, audit trails, and alerting to catch policy violations, but these manual steps are prone to weakness. An automated system can implement these checks and halt deployment if there is a problem, and you can easily add this kind of policy enforcement to your pipeline with Armory.
When automating CD with Armory, you no longer have to wait for a senior dev to get back from vacation to deploy. Company culture changes from disparate teams working in isolation to empowerment across teams – making everyone (from dev to ops and beyond) feel like they’re an essential part of the process. Additionally, your engineers won’t have to worry about being paged after hours because someone found errors just before deployment.
What About When Something Does Go Wrong?
Armory supports a variety of deployment strategies — for example, blue-green (Netflix calls it red-black). As soon as your deployment successfully passes checks, you disable the previous version in this deployment strategy.
This is a valuable strategy to follow since the previous version is only disabled, not destroyed. You can roll back if needed, and users only hit one service at any time. If a rollback is necessary, all it takes is a simple click of a button task.
You can now afford to reduce manual quality assurance and try damage limitation with canary deployment instead. In the canary deployment strategy, you limit deployment to a specific number of users, then widen that reach when you confirm that it is safe.
There are no longer fixed release dates that cause stress and frequently changing deliverables with this prolonged deployment. As a developer, it’s frustrating knowing you have repaired a bug, but it takes two weeks to get it out. While bugs and edge cases do still come up in continuous deployment, your team can respond to them quickly.
Continuous deployment offers many benefits, and when you deploy frequently, automation helps ensure consistency. If it sounds like safe, testable, and controllable deployments will make your life easier, consider Armory. It’s purpose-built to ensure deployments are as easy as possible. Harnessing the power of the ever-expanding tools available for modern deployment, Armory extends Spinnaker with enterprise-grade features.
You’ll have the power of Armory’s Policy Engine to enforce policies governing what developers are allowed to do. These policies maximize your control. Deliver your helpful product to users with a button click, with the safety of a platform that has your back.
All this tooling can help keep deployments uneventful and boring, enabling you to direct your energy toward innovation instead. To see Armory in action, request a demo today.
If you’re interested in developing expert technical content that performs, let’s have a conversation today.