Cloud lead at In The Pocket. Senior web developer with a passion for mobile.
The transformation is happening to millions of companies and affecting billions of users and devices. It offers companies the agility they need to deploy and manage their products and platforms in our fast-changing world.
Public cloud providers are still growing rapidly and new serverless cloud services are popping up like mushrooms, appearing in literally every available sector you can imagine, including IoT, ML, big data, healthcare, finance and so on.
These managed services allow your developers to write, deploy and run your app or service without the hassle of infrastructure management. And that leaves developers free to spend their time coding.
According to the RightScale State of the Cloud Report 2019, serverless is the fastest growing extended cloud service for the second year in a row, with 50 percent growth.
With a multi-cloud approach, workloads can be freely distributed among different public cloud providers. You can run your digital platform on Azure, for example, train your ML models on Google Cloud and run your IoT platform on AWS or any other combination.
This allows companies to avoid vendor lock-in and pick the best service along with the best prices for their products. You can even combine them with your private cloud as a hybrid cloud solution.
When creating and delivering software, writing code is only one piece of the puzzle. Software is an ongoing evolution: it constantly evolves with the addition of new features, bug fixes, and new architectures.
This means software delivery is a continuous lifecycle and not a one-off event. Managing deployments and the setup of a cloud environment is often a time-consuming process, and this is where infrastructure automation really shines.
While serverless solutions are absolutely the future, it is important to keep a grip on the total infrastructure architecture and the working method. Application code and infrastructure are starting to grow towards each other and DevOps practices are moving over to the development teams.
In the old days, infrastructure was typically managed by a dedicated IT team that would process tasks created by the development team (often handed over blindly and with no sense of shared responsibility).
This led to frustration on both sides. Miscommunication, risky and infrequent deploys, scaling issues and chaos are only a few examples of the problems they encountered.
Cloud providers have become a popular choiceWe deploy to production more often and fasterThe scale of digital platforms and their underlying services are growingMulti-cloud and hybrid cloud solutions are on the rise
A big advantage of public cloud providers is that they are completely API driven, which opens a whole new world for new techniques and tools in infrastructure automation. One of those is Infrastructure as Code (IaC).
With IaC, you automate repeatable tasks like provisioning, configuration, and deployment for one machine or even millions of machines. The key is to treat your server infrastructure the same way you treat software source code.
According to the RightScale State of the Cloud Report 2019:
“The scale of infrastructure is becoming much, much bigger because instead of a handful of large instances, organizations might have many smaller instances, so there are many more things they need to provision, and this infrastructure tends to be cyclic.”
This is the result of new ways of working like microservice architectures, where you make use of loosely coupled services. Those services can be developed, deployed and maintained separately from one other.
Infrastructure as Code is trending and it can be seen as similar to how we treat application code.
That makes it possible to use the same techniques that developers have been working with for years. It opens up a whole new, agile way of working to reduce risks, decrease costs and deploy faster.
Terraform is one of the most popular growing platforms to support infrastructure lifecycle automation across an entire hybrid and multi-cloud infrastructure. It’s an open-source, IaC tool created in 2014 by HashiCorp.
1. Reusable / Modular
With Infrastructure as Code, you can write once and then reuse your well-secured architecture many times. This means that one template can be used as the basis for multiple services, multiple accounts, in multiple regions around the world.
2. Improved Collaboration
The infrastructure configuration files can be treated as source code, enabling a broad ecosystem of development tools. Write, review, version, and collaborate on code using your preferred tooling, and the result will be a complete history of your entire setup.
All changes are made in code which is managed in your
version control system, providing a detailed audit trail for all changes. Besides the audit trail, this will also give you the ability to collaborate, peer-review, and test IaC code before it goes live.
Plan changes ahead before the actual release, without drama or stress. You don’t even have to navigate to the web console (user interface cloud provider) to compare parameters. This makes it easy to review infrastructure changes before going live, resulting in a confidence boost for the whole team.
5. Multi-cloud & hybrid cloud
Multi-cloud workloads can be shared along with multiple public cloud providers. But it can become quite difficult to manage multiple cloud services along with multiple public and private cloud providers. Infrastructure as Code enables you to manage all your cloud services with one single tool.
Continuous testing, integration, delivery, and deployment processes are a great way to handle all the changes that may be made to your infrastructure code. Automated system tests can be set up to run each time a change is made. You can limit access to automation tools in order to prevent manual changes. Infrastructure as Code automation removes the risk associated with human error, and as such decreases downtime and increases reliability.
With Infrastructure as Code, the code itself represents the documentation of the infrastructure and will always be up to date. When combined with versioning it becomes a very powerful way of documenting your infrastructure. Of course, a minimum of additional documentation is still recommended (e.g. diagrams).
8. Disaster Recovery
It would be a big mistake to assume you can completely prevent disastrous failures and human errors. Someone someday is bound to impact a service in production accidentally. Failure stories are nothing to be ashamed of if you are prepared to roll back or recover from failures quickly. By implementing Infrastructure as Code you can recover from failures easily and quickly.
As every company is turning into a software company, the need to deliver applications faster and with less overhead is growing. Every digital platform is different and for most organizations, cloud automation is just beginning. Cloud automation processes have evolved as a robust way of working to manage complex cloud architectures.
Without a clear path, it becomes difficult to keep up the pace and scale at which we ship products today and in the future. IaC is the path that will make sure you get there in one piece.
Download our Shift report
The latest edition contains 10 articles on the next big trends in digital, from creative artificial intelligence and the AR cloud to antifragility and cross-platform development.