DevOps enables organizations to shorten cycle times, foster collaboration, accelerate feedback loops, optimize resources, and more. To accomplish all of this, we work with organizations to make improvements across people, process, and tools. As part of our customer engagements, one of the items that we focus heavily on is the ability to manage infrastructure as a flexible resource. This practice transcends all 3 segments: People, Process, and Tools.
Historically, organizations have thought of their infrastructure as physical hardware. In the past decade, we’ve seen a shift towards virtualization, while still keeping and procuring new servers to host these virtual machines. Now we are seeing a new shift, towards the Cloud, and a change in mentality towards a model where we no longer worry about the hardware that will host our virtual machines, but rather, a model that allows us to strategically spin up new resources to help us create test environments or to scale out the many services that are used by our applications.
Infrastructure as Code
You can manage these resources manually or by using custom scripts and outdated tools, but over time, you may realize that your deployments may be slow or error-prone. We recommend that you moved towards treating infrastructure just like we treat software – code that can be managed and deployed as part of the same pipeline that is used to deploy your entire solution. This includes using sound practices with version control, continuous integration, test automation, and more.
Infrastructure as Code brings together your development and infrastructure teams. Developers will make changes to your infrastructure templates as resources are added, removed, or changed to support your solution. Those changes are reviewed or refined by your infrastructure team. This provides a great way to collaborate across your organization.
Azure’s Infrastructure as Code solution is called ARM (Azure Resource Manager) Templates. These are JSON files that describes your entire system – components such as virtual machines, storage, cache, web applications, databases, network components, and more. Using ARM templates provide you with a lot of benefits, such as:
- You can deploy, manage, and monitor all the resources for your solution as a group, rather than handling these resources individually.
- You can repeatedly deploy your solution throughout the development lifecycle and have confidence your resources are deployed in a consistent state.
- You can manage your infrastructure through declarative templates rather than scripts.
- You can define the dependencies between resources so they are deployed in the correct order.
- You can apply access control to all services in your resource group because Role-Based Access Control (RBAC) is natively integrated into the management platform.
- You can apply tags to resources to logically organize all the resources in your subscription.
- You can clarify your organization’s billing by viewing costs for a group of resources sharing the same tag.
As your organization shifts towards this model, you will see some very quick improvements that will give your team a higher confidence when it comes time to deploy and put you in a position to create new environments and resources, and ultimately, help you shorten your cycle time.
Nebbia Technology provides DevOps consulting and builds custom Azure-based software solutions. We are DevOps experts that will help your team get the most out of your tools and software development process. We are a cloud-first software company that focuses on Microsoft Azure. We build amazing products that leverage Azure while applying best practices in DevOps.