Bridging the gap between development and operations
The concept of DevOps is simple. It enables the software development and operations team to work together more efficiently. It has become a common approach to software production as its benefits have become clear.
There are three key ingredients to fully realise a DevOps strategy:
People – predominantly development and operations teams, but also culturally across the entire business
Process – how software is integrated, deployed, fixed, tested, released, monitored and managed - and the communication around this
Tools – the tools that link dev and ops, and maximise the automation of process
The actual components used can vary from business to business and do not all need to be implemented to get the desired effect.
Since the process of DevOps is so wide ranging - covering the delivery pipeline from end to end – we have summarised the key components of Eastpoint’s DevOps services:
- Continuous integration
- Continuous delivery/continuous deployment
- Continuous monitoring
Continuously adapting to requirement changes, improvements or fixes requires us to continuously integrate these requirements without compromising the quality of the product.
There are no set rules on the amount of tests needed as part of continuous integration and it depends on various factors - the number of available test engineers, the cost of adding the tests in the first instance and maintaining the regression suites (tests run on existing functionality), etc. Test tools are constantly maturing, and AI-based automation is a major growth area.
We can further break down continuous integration as follows:
Integration with project management tools
We use Azure DevOps for the entire process, including project management. It was previously called VSTS until it was expanded to offer a much wider DevOps solution.
This tool manages requirements, the backlog, and once the product is developed, it is used for testing and deployment. It also enables continuous integration (see next section) and you can run automated tests on the cloud with this tool.
Other popular project management tools – such as JIRA - can also be integrated into the DevOps solution.
Automated build/build automation
This refers to automation of the software build. The automation defines the required steps such as compiling source code, packaging the compiled code and uploading the final built software as build artefacts for future use. As these processes are automated it will be consistent every time a change is made to the source code.
Thus, we avoid the common pitfalls of manually building/compiling the source code:
- Due to many build steps, there is a chance of missing a necessary build step during manual compilation of the software.
- Building the right source code. Manually choosing the source code branch may result in missing features or using incorrect code base.
This is the process of running automated tests (such as unit tests and UI tests) repeatedly for every change or update to the product, as part of the software delivery pipeline.
It helps to find any defects early in the development phase. Azure DevOps provides various pre-defined tasks which helps us to configure these automated tests.
Continuously adapting to changing requirements means we must react quickly and efficiently to reduce the time to market.
The words 'delivery' and 'deployment' are often used interchangeably but they are different. Continuous deployment is where the features are deployed to an environment (i.e. either dev, test or production) in an automated way. Continuous delivery focuses on delivering the feature to the client/product owner and necessarily deploying to production.
Continuous Delivery provides control to the product owner. Once approved, the feature is released to production.
In brief, continuous deployment and delivery...
- Is an extension of continuous integration, making sure the new features are released to your customer quickly
- Automates the release process, deploying the application at any point of time with click of a button
- Allows the business/product owners to be part of the process, by providing necessary tools to approve the features for production without any manual deployment knowledge needed. Azure DevOps can be set up to allow product owners to approve the release to production when they are happy
- Provides the option to release daily, weekly, fortnightly or whatever suits your business requirement
- Allows for every change/update that passes all stages in the pipeline to be released to the end user with no human intervention and only a failed test stops the changes being deployed to production
Continuous monitoring can be defined as a process which provides a feedback to the CI/CD process. It keeps our CI/CD pipeline flowing smoothly and efficiently.
Due to the automated nature of the CI/CD pipeline, it is necessary to monitor the processes and environments continuously and take appropriate measures to resolve any issues. Continuous monitoring can be done manually or in an automated way, but it makes sense to automate this monitoring to spot the issue as early as possible.