DevOps (Development & Operations) is an enterprise software development phrase used to mean a type of agile relationship between development and IT operations.
The goal of DevOps is to change and improve the relationship by advocating better communication and collaboration between these two business units.
Before we discuss DevOps pipelines lets review what a container.
What are Containers?
Containers are Virtualization at OS Layer
Separates operating system from app code and dependencies
Isolates individual processes
Docker and Kubernetes
A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another.
Below is an example of how a container is structured.
For Example = A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.
Continuous Integration (CI) is the practice of merging all developer working copies to a shared mainline (Pipeline) several times a day.
Benefits of CI are efficiency, reduce risk, remove manual processes
For Example on Google Cloud Platform we have some great tools listed below.
What are Pipelines
The pipeline breaks down the software delivery process into stages. Each stage is aimed at verifying the quality of new features from a different angle to validate the new functionality and prevent errors from affecting your users.
The pipeline should provide feedback to the team and visibility into the flow of changes to everyone involved in delivering the new feature
Comparing Pipelines CI/CD
What is a CD Pipeline?
Continuous Delivery is the ability to get changes of all types—including new features, configuration changes, bug fixes and experiments—into production, or into the hands of users, safely and quickly in a sustainable way
Benefits are lower risks release, faster market time, high quality and lower costs.
A typical CD pipeline will include the following stages: build automation and continuous integration; test automation; and deployment automation.
- Build automation and Continuous Integration
The pipeline starts by building the binaries to create the deliverables that will be passed to the subsequent stages. New features implemented by the developers are integrated into the central code base on a continuous basis, built and unit tested. This is the most direct feedback cycle that informs the development team about the health of their application code.Up to 60% OFF courses & certifications, Plus a FREE T-Shirt w/ the Linux Foundation!
Throughout this stage, the new version of an application is rigorously tested to ensure that it meets all desired system qualities. It is important that all relevant aspects — whether functionality, security, performance or compliance — are verified by the pipeline. The stage may involve different types of automated or (initially, at least) manual activities.
- Continuous Deployment
A deployment is required every time the application is installed in an environment for testing, but the most critical moment for deployment automation is rollout time.
Since the preceding stages have verified the overall quality of the system, this is a low-risk step. The deployment can be staged, with the new version being initially released to a subset of the production environment and monitored before being completely rolled out.
The deployment is automated, allowing for the reliable delivery of new functionality to users within minutes, if needed.
DevOps on GCP Course = Discounted
Your Pipeline Needs Platform Provisioning and Configuration Management
The deployment pipeline is supported by platform provisioning and system configuration management, which allow teams to create, maintain and tear down complete environments automatically or at the push of a button.
Automated platform provisioning ensures that your candidate applications are deployed to, and tests carried out against, correctly configured and reproducible environments. It also facilitates horizontal scalability and allows the business to try out new products in a sandbox environment at any time.
Orchestrating it all: Release and Pipeline Orchestration
The multiple stages in a deployment pipeline involve different groups of people collaborating and supervising the release of the new version of your application. Release and pipeline orchestration provides a top-level view of the entire pipeline, allowing you to define and control the stages and gain insight into the overall software delivery process.
By carrying out value stream mappings on your releases, you can highlight any remaining inefficiencies and hot spots, and pinpoint opportunities to improve your pipeline.
Don’t Add New Functionality Until You Get The Quality Right!
Continuous Delivery is about enabling your organization to bring new features to production, one by one, quickly and reliably. That means that every individual feature needs to be tested prior to rollout, ensuring the feature meets the quality requirements of the overall system.REGISTER TODAY FOR YOUR KUBERNETES FOR DEVELOPERS (LFD259) COURSE AND CKAD CERTIFICATION TODAY! $499!
In a traditional environment, development teams typically try to implement an entire new version in one go, addressing software quality properties (such as robustness, extensibility, maintainability) only when the project is close to completion. However, as deadlines loom and budget pressures grow, quality is often the first thing that is compromised
With CD, each new feature is required to meet the level of quality expected for the system as a whole, right from the start. Only once this quality level has been reached can the feature be moved to production.
Getting Started With Continuous Delivery
Obviously, organizations cannot and should not rush into adopting Continuous Delivery all at once throughout all their business units. The best approach is to focus on improving your biggest delivery bottleneck.
CD will automatically show you what the next bottleneck is. This puts you on a measurable improvement path.
The main goal of using Continuous Delivery is to roll out new features and functionalities that are better than previous iterations — gradually incorporating and refining the CD principle throughout the organization. Go slowly, go smoothly — and watch the improvements!