Nowadays, DevOps has emerged as a philosophy for integrating the infrastructure and development technology areas. Based on the Continuous Integration and Continuous Delivery principles, this new philosophy has evolved quickly, and many organizations have adopted it.
Continuous Integration is the principle which support the process of integrating all the code from developers and continuously check if nothing has break. This is intended for detecting faster the bugs and code breaks.
Continuous Delivery support the process of continuously build and deliver a potential release of software.
Accomplishing these two principles is not so difficult either you opt to implement a custom toolchain like Jenkins as a primary build server or using an integrated tool as the renew Azure DevOps (earlier called VSTS).
A custom toolchain has the disadvantage that you have a set of different tools hence you must implement each one and configure the integration between all of them while in the other hand you could use an integrated environment which offers all the tools needed to get your pipelines up and running very quickly which also allows you to make queries across all stages of the Application Development Lifecycle as Azure DevOps does.
One thing to notice is that also can have Azure DevOps on premise, called DevOps Server, previously known as Team Foundation Server (TFS). Therefore, you can implement your own servers in-house (inside your organization) instead of using the Cloud choice with no regard about the tools because is the same set in both cases.
Azure DevOps provides the following tools:
- Azure Boards
- Azure Repos
- Azure Pipelines
- Azure Test Plans
- Azure Artifacts
Keep up-to-date with the information most important for your team. With a wide list of widgets to integrate with your dashboard, you can create a custom dashboard for every team in your project, this can help each team to keep the eyes on the information they just need to focus for completing the sprint and meeting the goal of it.
As team, you will need to stay connected between each other and collaborating in the necessary tasks to complete a project. With Azure Boards you can manage, plan and control the work that is done, and which hasn’t been finished already but, the most important two are, you can know which member team is overload and what tasks are at risk for staying uncompleted by the end of the Sprint.
It offers a great flexibility for customizing the boards and you can create separate boards for each team which is involved in the development of the project (product), this helps the teams to have complete autonomy over the way for representing all the work that needs to be done.
Keep code shared with this tool which provides the elements required to make code repositories and allows you to create the complete structure for code integrations thinking out of continuous integration. Either you use TFS or Git for sharing your code as both are available, you can create branch for each environment such as develop (develop), staging (staging), production (master), you can tag you code for each feature in the integration branch which allows you to go back in code, you can secure your branches of each environment by adding some policies for commits or the need to make a pull request to merge code and you also can view and manage the commits made to any of the branches.
Once you already complete a user story and commit your code, is the time to integrate them with the other commits made by other member teams. In this moment, you’ve already configured your pipeline in the Azure Pipelines component which let you specify the steps required to build, test and deliver the new feature.
“Azure Pipelines combines continuous integration (CI) and continuous delivery (CD) to constantly and consistently test and build your code and ship it to any target.” – What is Azure Pipelines? (https://goo.gl/4iBHRg)
As a general concept a pipeline is the process which describe the required steps for building, testing and delivering an application no matter its kind.
Azure Test Plans
All of us know what matters to client is the quality also this is our problem. You can implement unit testing within your projects to test the functionality itself but when it comes to deploy an application which will be use by clients or any other systems, we need to be sure that every integration of a piece of code, doesn’t break anything else, even more, you need to assure that the application can support a bunch of transaction within a short period of time.
You could use Azure Test Plans which allows you to make load testing within the app and services. A load test is what we use to determine if the application, when release to production, would have the capacity for supporting lots of transactions per second. Also, this not only depends on the applications, the infrastructure is crucial here too.
Share your packages easily with the Azure Artifacts tool which let you create, manage and protect your packages created from your code. You can create a package for compressing functionality with one single Nuget or Maven file then share across this with all your projects.
Instead of having a big project with a complex structure, you can separate your functionalities into packages which then you can add as reference to your projects and let Azure Pipelines take care of the integration.
Next Article Teaser
Sounds great to you? Don't you know where to start? Want to implement your first pipeline? It sounds great for me, if it does to you, stay tune to read my next article about the implementation and some tips on using this tools.