Introduction to Azure DevOps
- 30th March 2020
- Debbie Edwards
What is Azure?
Azure is Microsoft's Cloud computing platform. It hosts hundreds of Services in over 58 regions (e.g. North Europe,West US, UK South) and available in over 140 countries.
As you can see, lots of Azure services have already been consumed throughout these blogs. Azure SQL Databases, Azure Data Lake gen2, Azure Blob Storage, Azure Data Factory, Azure Logic Apps, Cognitive Services etc.
Business Processes are split into Infrastructure as a Service Iaas (VMs etc) , Platform as a Service PaaS (See the services above) and Software as a Servie SaaS (Office 365, DropBox, etc)
You can save money by moving to this OpEx model (Operational Expenditure) from the CapEx model (Capital Expenditure) because you pay for what you need as you go, rather that having to spend money on your hardware, software, data centers etc
Cloud Services use Economies of Scale, in that Azure can do everything at a lower cost because its operating at such a large scale and these savings are passed to customers.
On Demand Provisioning
When there are suddenly more demands on your service you don't have to buy in more hardware etc. You can simply provision extra resources very quickly
Scalability in Minutes
Once demand goes down you can easily scale down and reduce your costs. Unlike on Premises when you have to have maximum hardware requirements just in case.
Pay as you Consume
You only pay for what you use
You can focus on your business needs and not on the hardware specs (Networking, physical servers, patching etc)
Every unit of usage is managed and measurable.
What is DevOps?
A set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production, also ensuring high quality
Testing, Reviews, Moving to production. This is the place where developers and the Operations team meet and work together
If we don't work within a DevOps Framework. What do we do?
Developers will build their apps, etc and finally add it into Source Control
Source Control or Version Control allows you to track and manage code changes. Source Control Management Systems provide a history of development. They can help resolve conflicts when merging code from different sources
Once in Source Code the Testing team can take the source code and create their own builds to do testing
This will then be pushed back to the development team and will go back and forwards until everyone is happy. Here we can see that the environments we are using are Dev and Test
Once Complete, it is released into Production.
This is a very siloed approach. Everyone is working separately and things can take time and you will get bottlenecks
Everyone works together. You become a team and time to market becomes faster. Developers and Operations are working as a single team
Each stage uses specific tools from a variety of providers and here are a few examples
Eclipse, Visual Studio, Team Foundation Services, Jira, Git
Maven, Gradle, Apache Ant
Puppet, Chef, Ansible, SaltStack
New Relic, SENSU, Splunk, Nagios
We need all these tools to work together so we don't need to do any manual intervention. This means that you can choose the ones that you have experience in.
Components of Azure DevOps
People with a Scrum and Project Management background will know how to create the features within the Boards. Epics, Stories, Tasks etc
Developers create and work on tasks. Bugs can be logged here by the testers
Push the development into Source Control to store your information. Check in your code within Azure Repos.
There are lots of repositories to choose from in Repos to suit your needs like GIT or TFS
Developers build code and that code need to get to the Repos via a Pipeline. The code is built within the Pipeline.
The code is then released into Dev, Test, Prod, Q&A etc, And from, say the test or Dev environments we can........
Azure Test Plans
Test, using Azure Test plans. For example, if you have deployed a web service, you want to make sure its behaving correctly. Once tested the code will go back to the pipeline to be built and pushed to another environment
Collect dependencies and put them into Azure Artifacts
What are dependencies?
Dependencies are logical relationships between activities or tasks that means that the completion of one task is reliant on another.
The artifact that is used to track work on the Azure board.
So you create work items here and interact with them on the board
Work with Epics, Features, Tasks, Bugs etc.
Includes support for Scrum (agile process framework for managing complex work with an emphasis on software development) and Kanban (a method for managing and improving work across human systems. Balances demands with capacity)
How do you prioritise your work items?
Say your Sprint is 20 days (2 weeks) What work can be accomplished within this sprint?
Overall picture of the particular sprint or release
We can use GIT or Team Foundation Server TFS. The example uses GIT
You create your own branch from the master branch. Do your testing and changes and push back from your branch to the master branch.
Where is your Code? Its in GiT
Select the GiT source like Azure Repos GIT or GiTHub etc
Get the code from the master branch
How do you want to build the project?
Next provide the Solution path and the Azure Subscription that you want to deploy to
This takes the source code from the GiT repository and builds the source code.
The build will then give you logs to show you how the build of the project happened
Next time when you check in code, it will automatically trigger the pipeline to build the code
Then the build needs to be Released via a Release Pipeline
This is where you release to the correct Azure Subscription and the code will be deployed. You can also add in approvals to ensure you get the pre approval required to release the code.
This is just a whistle stop tour of Dev Ops. Test Plans and Artifacts haven't been discussed in much detail but it gives you the basics of what is included in DevOps and how you can start to think about using it.
What do you create in Azure and can it be handled within DevOps?
Can we start using the Boards?
How do we can started with Azure Devops?
Which teams members have the right interests in the specific DevOps areas?
If you would like more information or to discuss Azure with one of our team get in touch! call us on 01246389000 or email us on firstname.lastname@example.org