Bamboo is a continuous integration (CI) server that can be used to automate the release management for a software application, creating a continuous delivery pipeline. What does this mean? CI is a software development methodology in which a build, unit tests and integration tests are performed, or triggered, whenever code is committed to the repository, to ensure that new changes integrate well into the existing code base. Integration builds provide early ‘fail fast’ feedback on the quality of new changes. Release management describes the steps that are typically performed to release a software application, including building and functional testing, tagging releases, assigning versions, and deploying and activating the new version in production
Do you use this tool in organisation? We want to hear from you! Please rate how much this tool is leveraged to support the processes in your organisation. You do not need to identify the organisation.
Please remember. It is not about the “potential capability” of the tool. You have to rate the actual usage within your organisation
1 or 2: only a subset of processes are supported by the tool
3: The tool supports our needs. But we start observing some limitations.
4: The tool supports our current and future needs.
5: The tool supports our current and future needs. Integrates well with the eco-systems of other tools.
DevOps is an approach that automates the processes between software application development and IT operational support teams. DevOps proposes a collaborative culture between development and operational teams to build, package, test, and release applications more frequently and efficiently.
Though DevOps approach is broader than tool automation, technology plays a pivotal role in the success of DevOps.
DevOps is started as a “movement” to bridge the cultural division between Development and Operations teams. DevOps leverages the Lean and Agile principles heavily. DevOps practices are included in COBIT 2019 and ITIL 4.
However, it should be noted that for an enterprise that has legacy and heterogenous development needs, DevOps need to coexist with their existing hierarchical Service Management frameworks.
DevOps approach started in 2009 and well received by the industry. While there are mature tools in DevOps, the organisation needs to use a “tools stack” that includes multiple tools to implement key aspects of DevOps. The practitioners develop the skills through practical work experience, complemented by generic and tool specific training. There is no assessment that supports DevOps. Please refer the Rating Criteria.
One of the common issue is to integrating DevOps with organisations existing processes like Change Management. One of the way to achieve the process integration is to treat DevOps process as a “standard change” in which the risks of continual delivery is assessed and managed.
COBIT domains that are related to DevOps are:
Build, Acquire and Implement
Deliver, Service and Support
Monitor, Evaluate and Assess
There is no standard terminology that defines DevOps processes. The processes are build around the principles of collaboration, integration and automation.
Continual Development: Plan Code Build
Development phase of DevOps includes processes for planning, coding and building the product. Typically Agile Project Methodology is used to develop the product involving multiple sprints. Jira tool is one of the examples that facilitates Agile planning.
Source repository and version control is achieved through tools like Git and Ant, Maven, Gradle are some of the tools used for for building/ packaging the code.
This is the stage where the developed software is continuously tested. For Continuous testing, automation testing tools like Seleniumare used. These tools allow parallel testing of the code base. In this phase, use of Docker containers for simulating ‘test environment’ is common. Once the code is tested, it is continuously integrated with the existing code.
In Continual Integration phase the newly developed code is integrated with the existing code base. Since there is continual development of software, the updated code needs to be integrated continuously to provide visibility of changed functionality to the end users. The changed code, should also ensure that there are no errors in the runtime environment, allowing the DevOps team to test the changes and check how it reacts with other changes. Using tools like, Jenkins, one can pull the latest code revision from GIT repository and produce a build which can finally be deployed to test or production server. It can be set to trigger a new build automatically as soon as there is a change in the GIT repository or can be triggered manually on click of a button.
It is the stage where the code is deployed to the production environment. The DevOps team will need to ensure that the code is correctly deployed on all the servers. Since the new code is deployed on a continuous basis, configuration management tools play an important role for executing tasks quickly and frequently. Puppet, Chef are examples of tools that are used in this stage. Container tools also play an important role in maintaining consistency of the code base in development, test, staging and production environments. Docker and Vagrant are examples of container tools. Besides ensuing consistency, the container tools also help in scaling-up and scaling-down of instances easily.
Continuous Feedback: Operate and Monitor
Agility and feedback is an essential feedback is an essential component of DevOps lifecycle. The operational performance monitoring can also be achieved by making use of dedicated monitoring tools which will continuously monitor the application performance and highlight issues. Some of the typical tools used are Splunk, ELK Stack, Nagios.
There are many tools in the DevOps space. XebiaLabs shows a “periodic table” of 120 tools.
The following table shows some of the common tools used in the DevOps lifecycle 1 .
Tools that facilitate Agile Project Planning
Source Repository/verison control
Version control system for tracking changes in files and coordinating work among multiple people. Tacks and provides control over changes to source code, infrastructure configurations, machine learning models.
Gradle maven Bamboo
Build automation tools allow to compile code, download required libraries, check for dependencies, run tests, and package compiled code into deployable artifacts such as a JAR, WAR, and ZIP files.
Selenium WireMock Artillery Bamboo
Automated functional testing, system testing, load testing. Automated testing is fast, not prone to human errors, and allows frequent execution of tests to support Continuous Integtration
Integrate changes from different developers in the team, and keep your application deployable at any point or even automatically release to a test or production environment if the latest version passes all automated tests.
Manage cloud server consistency using automated configuration enforcement. Treat infrastructure as code that can be provisioned and configured in a repeatable way. The idea is to avoid the configuration drift that makes it so difficult for developers and system administrators to reconcile why an application works in one environment (or server), and not another.
SFIA skill “Systems Integration and Build” is aligned with DevOps as the skill includes build automation and Continuous Integration.
The purpose of change management is process is to control the life cycle of all changes, enabling beneficial changes to be made with minimum disruption to IT Services.
The objectives of change management are to:
Respond to the customer’s changing business needs in an efficient manner
Manage the risk of introducing a changed service to a live environment effectively
Ensure are changes are classified and evaluated according to their risk profile
Related Framework/process – tips for integration
DevOps is related to Change Management. In many large enterprises, ITIL and DevOps need to coexist. One way of achieve this process integration is to treat DevOps as a standard change.
In a standard change the risks of introducing a new change in the live environment is well understood. As a result, the change need not be presented at the normal approval process.
Another related process to consider to implement DevOps is Release Management. The DevOps related processes can be described as a Release Model.
The Release Model will clearly describe the development, testing, deployment and monitoring activities. The objective is to demonstrate that the risk is understood and managed without going through the approval boards for each release.