The triple effect of cloud adoption, DevOps and CI/CD has dealt a blow to the old tried-and-tested means of infrastructure provisioning and configuration. Thanks to the increasing size of software, its dependencies and support of various platforms, these predominantly manual and script-based tasks have been getting increasingly cumbersome, time-consuming and error-prone.
This is where Infrastructure as code (IAC) and Configuration as code (CAC) come to the rescue. They enable the automation of many aspects of infrastructure provisioning, maintenance and software configuration tasks. As familiarity and confidence in IAC and CAC grows, organizations increasingly understand the advantages in terms of speed, standardization and flexibility when supporting a CI/CD pipeline. But, where to start?
Choosing the right set of tools
One size does not fit all so there may not be one tool or tool-combination that works for all types of applications and environments. This is particularly true of infrastructure and configuration as code. However, there are tested and proven combinations of tools that work which are recommended for certain types of applications, technology stacks, deployment environments and use cases. We’ll take a look at a couple of these in more depth later, but first, let’s examine the factors that play an important role in tool selection.
1. On premise vs cloud
Cloud offers high availability and auto-scaling benefits, while on premise is a comparatively cheap option. A hybrid approach should also be considered, keeping some critical components on cloud.
2. Security
Ensure the management of roles and permissions meets the needs of the organization.
3. Technology
Be aware of vendor lock-in. Select tools which offer support for a number of technologies so that future projects can also benefit.
4. Open source vs proprietary
Weigh up the benefits of any paid and proprietary tools against their open source counterparts. When considering open source, look for community support and activity.
5. New entrants
Regularly review the new entrants and trending tools on the market. They are often innovators who have actively addressed the weaknesses of industry-leading tools.
6. Feedback
Creating working feedback loops is especially important for CI/CD. Check that tools support feedback notifications for multiple channels, e.g. email, instant message and support for team collaboration tools like Slack or HipChat.
7. Analytics
Usage data and other important analytics metrics provide key data to help make informed business decisions. Know what each tool offers and how it aids the team’s data analytics.
8. Maturity
The last thing an organization needs is to experience teething problems from immature tools that were not properly tested. Check industry feedback and recommendations carefully.
9. Community support
Whether it is a paid-for technology or open source, be sure of the level of support you’ll be getting. Inadequate support can lead to delays that block the entire deployment pipeline – and yet can be avoided through either paid support services or with the help of a dynamic support community.
Ready to take the plunge? Check out our tool selector
There are so many different methods used for software deployment, testing and delivery. And for each type of infrastructure – cloud or on premise or hybrid – there are many tools and technologies available to choose. We’ve researched the leading ones in each category so you don’t have to. Take a look at our handy tool selector:
Get off to a strong start with cool tool combinations
Here are two proven tool combinations to smooth the transition and speed up delivery.
1. Vagrant + Docker + Ansible
This tool allows developers to package the development environment and push it across the organization or team.
Pros:
Cons:
Ideal Use Case:
Imagine the scene…a new project has kicked off and the development team needs be on board with systems involving JDK 8, My SQL, IDE and Apache Tomcat. If then many development hours are wasted doing so. Instead of every developer preparing for the development environment, this combination allows the team to provide a consistent development environment and save many hours.
2. Terraform + AWS + Jenkins
This tool combination is ideal for deploying staging and production environment software.
Pros:
Cons:
Ideal Use Case:
A team has developed an application that has a number of software dependencies with specific configurations; the staging and production environment are maintained on AWS. Here, we can use Terraform to create any new instances, services and configure them without touching the AWS GUI or referring to AWS API or CLI commands. The existing services can be scaled or destroyed and any output values that need to be passed as input to another service can be fully automated.
If infrastructure and configuration as code is something your organization is grappling with, or you simply want to check how the team is doing against industry best practices, why not schedule a or get in touch today?
Continuous delivery has become fundamental to business agility in the digital age. Accelerating release cycles enables organizations to meet increasing customer demand, respond to...
“We’re not ready for such a big change to our application development.” “Not another software upheaval!” “I can’t find the budget or the resource to make the...
The term “Infrastructure-as-Code” is often associated with DevOps. But if you’ve ever wondered what exactly is involved, and how it can benefit your enterprise, then read...