In this article, we talk to Curnan Reidy, Team Leader for Software Development and Matching Engine Product Manager at Spanish Point Technologies. He discusses Continuous Integration/Continuous Deployment (CI/CD), Azure DevOps and the value CI/CD has for developers and customers.
I am the team leader for our software development teams and product manager for our Matching Engine application. There are approximately twelve developers over three teams. Part of my role is as a system designer and principal developer. As a team leader I am responsible of mentoring team members. Spanish Point carries out software development within our other teams, such as Dynamics, SharePoint Online / Office 365 and Power BI / Machine Learning but these developers report to team leader for each of these teams.
Much of my team’s work is custom application development. We are not bound to develop using a particular Microsoft technology. We work with the customer to understand their system and write bespoke custom applications. Currently, our team develops applications used globally for music industry customers such as CMRRA, CISAC and various music right organisations.
We began adopting the CI/CD approach about four years ago and have built or migrated our custom applications to this process. Key projects such as the Next Generation ISWC system are being built using CI/CD. This ongoing project began in January 2019 and is expected to go live later this year.
What is a typical development process using CI/CD for your team?
While we previously used Visual Studio – TFS, we now build applications using CI/CD and Azure DevOps. We can efficiently provide more value and quality for customers through this. For our projects, such as the Next Generation ISWC system, we have a centralised Git code repository that has various branches. From the main branch of code we have various sub-branches. This allows us to manage multiple developers and if needed multiple teams working on the same system simultaneously.
Rather than writing code in isolation and awaiting deployments to test, developers create new branches from this main branch. They add new features and bug fixes by creating a pull request. Whenever a pull request is submitted, preset unit tests are automatically triggered. This pull request is then reviewed by senior developers, such as myself, who may add comments or reject the pull request and suggest changes. The developer can then resolve issues and make the required changes and resubmit. I can then approve the pull request and the code is merged into the major branch. Many of our projects are client facing, such as the ISWC project, so these pipelines run at the same time to ensure that accurate code is deployed to the correct environment.
What are the benefits of CI/CD?
There are major benefits for both our customers and our development teams. For customers, quality assurance is improved vastly through CI/CD. As the team leader, I can review developers’ code before it is deployed to the customer environment. Additionally, in Azure DevOps unit tests are set to review each pull request automatically. It is the responsibility of our developers to create unit tests for the code and functionality they are creating. These unit tests are included in the automated testing for code check in and builds. And further included in test plans that are executed during the build phases. Test plans and automated unit tests are shared with the customer, who can add additional test requirements. For example, in the Next Gen ISWC system we have circa 500 automated tests. When .net code is submitted approximately 400 automated tests are run and must be passed before the developer’s code is merged with the main branch. For python code there are approximately 100 automated tests.
From a day to day perspective, my team can work more efficiently. When writing code locally, it is difficult to test before deploying to a real environment. However, in Azure DevOps they do not have to wait for scheduled deployments to test and make changes to their code. Based on real time unit tests and team lead feedback, developers can make the required changes. Local code can then be deployed to the dev environment faster, in our team within 10 minutes, rather than waiting on long deployment schedules. CI/CD also impacts customers as the time between deployments is radically reduced, for example from once a month to multiple times a week.
In the case of the ISWC system over 550 automated tests completed across unit and integration tests.
How does CI/CD in Azure DevOps support agile development?
Azure DevOps supports agile development processes. Within DevOps, there are Azure Boards, akin to Kanban boards, which we use to manage our work. Reviewing the complete specification, we create agile epics for each specific section of the system we are building. This is broken down into a backlog of items, which contain the tasks or bug fixes which are required as part of this section of the build. The work is completed in sprints with new tasks divided out every two weeks.
The connectivity within Azure DevOps means that each task is linked to the branches created. When developers complete a pull request for the work, it is associated automatically with the task on the project Azure Board. All work can be easily tracked and managed.
How does the Azure environment drive innovation?
Azure continues to release new solutions and features that are highly innovative. Currently, we use a range of features. Two of note are Azure Search, which allows for fast search queries and Azure Databricks which supports the processing of large volumes of data. The basis of these features lies in open source technologies that Microsoft have built into an Azure service. As a Microsoft product, these are both now managed services, making integration much easier.
How do interested organisations get started with custom application development?
For organisations considering custom applications built using CI/CD, it is important to understand their current applications and technologies. I recommend attending one of our webinars or having an exploratory consultation with our team.
Want to learn more?
Join our upcoming webinar: CI/CD: Build, Test, and Deploy to the Cloud with Azure Pipelines