In software development, it is common to want to share code or even pre-built components that execute specific tasks. For example, if a developer has built a function that performs a complex calculation, you may wish to share that with other developers as an artifact so that they can re-use it.
This is different from sharing code within a Git repository. The code in a repository can be easily modified by the developer consuming it and then the updates are sent back to the repository – in other words, they allow collaborative coding.
Artifacts may be compiled or obfuscated so that the original code cannot be easily updated, and they are designed to be used as is. Because of this, artifacts will be versioned, and any changes will be distributed as a new version.
Azure Artifacts provides a place to store your artifacts so that they can be easily shared with your teams. As part of the DevOps platform, they can be fully integrated into your build pipelines – for example, you could set up a pipeline to automatically build, version, and publish your artifact whenever a code change is made.
This section has been a high-level view of Azure DevOps and in particular how we can use Azure Repos and Azure Pipelines to manage and automate deployments from code. Azure DevOps and agile development practices are a big subject that is covered in detail in the book Azure DevOps Explained, by Sjoukje Zaal, published by Packt.
From an architectural perspective, understanding the process flow of code management and automated releases can be used in our overall solution designs. For example, when considering backup and disaster recovery scenarios, an automated pipeline that deploys your infrastructure components could form part of that strategy.
Summary
In this chapter, we have seen how everything in Azure can be managed by a series of REST APIs and how these are protected using your Azure account.
We saw how we integrate directly with these APIs or via command-line tools such as Azure PowerShell or the Azure CLI. We also looked at how we can use command-line tools and the Azure portal to automate and standardize deployments with ARM templates, which allow us to set specific configurations.
Finally, we looked at using Azure DevOps to manage and version control code and perform automated, repeatable deployments.
This chapter finishes our look at operations and monitoring. In Chapter 18, Engaging with Real-World Customers, we take our architectures beyond the exam to look at customer considerations, cost optimizations, and what types of challenges we face when dealing with large enterprises.
Exam scenario
MegaCorp Inc. is building a new platform in Azure for customers to view details of their own accounts. The solution will be built over time with regular releases and updates; therefore, the management team wishes to embrace agile development methodologies.
The project team will consist of two teams of developers with five developers in each team, and work will be assigned to each team at the start of every two-week sprint.
The project lead is concerned about developers overwriting each other’s code or causing other conflicts. They also want to ensure that there is always a working copy of the core code base at any one time.
Each team has a senior developer who must review any code changes prior to a release. Because the deployment mechanism will change regularly as the solution grows, they also need a way to track and manage changes made to it as well.
Advise on how these requirements can be met as part of the solution design.
Leave a Reply