I work remotely for my clients and I’ve found that working from home just isn’t that productive for me. I find that I focus better at a coffee shop, making the $3 spent daily on coffee well worth it. So why should you care? I spend more on coffee than I do on DevOps every month.
As you may know, we are a development shop that provides Continuous Delivery for every client product we build. Even so, with the cloud solutions available today, we just don’t need a DevOps team. Maybe after reading this article you won’t need one either.
We use AWS for our client implementations. AWS is an industry juggernaut and led the way with cloud solutions, but Azure and Google Cloud (GCP) round out the big three. You likely have your preferred cloud provider, but all provide similar solutions to the AWS services presented here.
Automating your Infrastructure
You need an environment where your software product can run. It’s a requirement for every software product. This generally involves databases, servers, security, and a host of other potential services. Those who were in IT before cloud platforms can remember creating tickets with an infrastructure team staffed with DBAs and infrastructure technicians. The setup could take weeks and potentially months! You had to plan ahead and make sure to submit your exact specifications: table structures, hardware requirements, connectivity, etc. Any changes could result in significant delays.
Those days are gone, or at least I hope they are for the sake of your organization.* Cloud environments allow you to spin up infrastructure at the click of a button, setting up your entire infrastructure stack in an instant. Unless you’re building something completely novel, a cloud provider will have a service to support your needs. AWS now has so many offerings that the biggest challenge is making sure we’re using the most modern supporting service!
* If not, contact us, we can certainly help. I’ve helped advise many organizations during their cloud transition.
The real payoff comes with the automation provided by infrastructure as code (IaC) services. These will differ by cloud provider, but examples include AWS CloudFormation, Azure Resource Manager, or GCP Deployment Manager.** AWS CloudFormation has been around since 2011 and AWS services provide deep integration with it.
** Terraform is the most popular cloud-agnostic solution here. If you are deploying to multiple cloud environments, this may be the best solution for you.
You can use CloudFormation to automate the creation of your entire deployment environment stack. You can then simply make changes to the environment by updating your CloudFormation templates and running those change sets against the stack. In fact, we can spin up a clone environment for a developer to test against in just a few minutes!
That said, we have an ace up our sleeve here. We have internal AWS CloudFormation templates that we’ve created to help us jumpstart a project. With a few simple tweaks, it’s possible to spin up the environment for a brand new project. I’ll be sharing one of those templates in the coming weeks with a how-to, so stay tuned.
Building and Releasing your Software
Now that you have an environment to deploy to, you need to get your software deployed there. You can do this manually, but that would hamper our automation strategy. You have several options here, but all are centered around creating a build pipeline. The build pipeline is our mechanism for continuous delivery. Every time the pipeline runs it builds our code, tests it, creates a release artifact, and deploys it out to an environment.
If you use GitHub or BitBucket as your source code repositories, they have hooks built in that allow your build pipeline to be defined. Simply providing a pipeline configuration file for a specific branch is enough to get the pipeline up and running. The configuration file can define multiple branches that deploy to a specific environment. This allows you to easily define a pipeline for development, staging, production and even feature branch environments.
Build pipelines can also be defined in AWS through their AWS CodePipeline service. Microsoft Azure provides Azure Pipelines, and GCP provides Cloud Build. If you have complex build requirements or environment configurations, these tools can provide more support than Git hooks. I’ll simply say that your mileage may vary here.
The Long and Short of It
While I spend more on coffee than I do on DevOps, there are a few caveats:
- I’m certainly paying for a DevOps team, it’s simply that those fees are built into what I’m paying my cloud provider. I’m effectively outsourcing my DevOps team.
- Tuning your cloud solution will determine how much you are truly paying for your outsourced DevOps team. If you need some assistance with performance and cost tuning, hiring a DevOps resource of your own may be necessary.
- We have some built-in intellectual property that provides us a competitive advantage by simplifying our initial infrastructure setup. I will be providing more details and how-tos on some of the tooling we use in upcoming articles.
Is your software development team performing at its peak? We can help! Schedule a free consultation to find out more.