Continuous Integration, Continuous Delivery, and Continuous Deployment provide a very powerful set of solutions for integration of software changes.
While the automation of software integration and delivery to development, staging, or production is the primary purpose or CI/CD, these efforts also empower teams to capture knowledge on how to properly build, package, and test an organization’s solutions.
CI/CD for knowledge management
In manufacturing or traditional engineering, expert systems have been leveraged in capturing knowledge/best practices for the manufacture of automobiles, airplanes, and other complex assemblies.
In today's software organizations, delivery of software can have a high degree of complexity as well. For example in a single Spring-Boot microservice, an organization could be using the following set of technologies to automate delivery:
- Source Code Management: Git
- Dependency Management: Apache Maven
- Language: Spring-Boot
- Artifact Management: JFrog Artifactory
- Test Automation: JUnit, Smartbear Ready!API
- CI / CD Server: Atlassian Bamboo
- Agile Lifecycle: Atlassian JIRA
- Infrastructure Automation: Docker / DockerHub
- Cloud Solutions: AWS EC2 Container Services, AWS RDS, AWS VPC
Each solution provides a part of the "manufacturing" of a Spring-Boot API in AWS. At its core, the CI/CD Server leverages a plan or pipeline to coordinate the activities of monitoring the Source Code Management solution and executing a sequence of steps to eventually deliver the API.
If we dig into each stage within the plan or pipeline we will see dependency management, artifact management, test automation, and infrastructure automation in action. Explicit definitions or configuration are used to capture rules, policies, and dependencies.
How do these tools help?
In the past many organizations documented this in a build and run book and had a Release team that executed these steps. Now the artifacts and tools demonstrate this process and thus capture the knowledge necessary to build complex systems.
In addition, the use of Agile tooling provides an audit trail of activities performed to create software and link back to the Source Code Management solution.
What does this look like in action?
I recently had the opportunity to partner with SmartBear Software on a new educational resource: The Beginner’s Guide to Agile API Development: A Look at DevOps, CI, and CD in API Delivery. In addition to providing an introduction to agile software delivery methods, I also look at how selecting and implementing the right tools can transform your API delivery strategy.
We look at:
- Shifts in the API development landscape, and the challenges and opportunities they present to organizations seeking to evolve
- What is DevOps? How are API teams structured in DevOps organizations?
- What are Continuous Integration/Continuous Delivery in the context of DevOps? How can you determine which methodology is most suitable for your API team?
- Best practices for modern software delivery, and a thorough explanation of the tooling that goes along with it
Interested in learning more? You can download the resource today for free.