What is DevOps? Where is the source code repository? Why is the service down?!
Whether you’re part of a team that includes DevOps, managing a DevOps project, or new to the tech world, you might have questions about DevOps that you’re afraid to ask. Fear not! This primer is for you. Read this guide to answer your DevOps questions and impress your team with your newfound knowledge.
What is DevOps?
DevOps is short for two words: Development and Operations. DevOps is a software development methodology where “Developers” and “Operators” work together to handle an application’s entire lifecycle through Continuous Delivery.
DevOps is responsible for handling an application’s lifecycle—development, integration, testing, deployments, and monitoring. Understanding each stage of the Continuous Delivery lifecycle is crucial to developing and delivering a successful app.
Stage 1: Continuous Development
Continuous development enables software code to be delivered to customers as soon as it is completed and tested. Like agile, continuous development began as a software development methodology. However, rather than improving software in one large batch, updates are made continuously, piece-by-piece. Those updates are stored in a code repository.
Tools generally used for this: Github, Gitlab, Bitbucket, SVN, Maven etc.
💡 Source Code Repository
If you’re a developer, you’ve definitely heard the name GitHub or BitBucket at least once—these are examples of code hosting service platforms.
A source code repository is an archive for the code, as well as the hosting facility for these software archives. The repository can store the project’s technical documentation, web pages, snippets, patches, etc. which can be accessed publicly (open-source) or privately.
What can a source code repository do?
Keeps your code safe
Offers a version control option to make sure all changes that were done to your code are tracked
Allows you to revert back to a previous version of your code if needed
Simplifies the process of unifying changes from developers’ collaboration
Provides and promotes teamwork principles since several developers can work together on the same projects, modules, and even code lines
Prepares your code for release to production
Keep the statistics and analytics of the changes in the code
Stage 2: Continuous Integration
The Continuous Integration stage of a Continuous Delivery pipeline is responsible for building code, testing changes, and publishing deployable artifacts. Continuous Integration allows new features to be ready for deployment as they become available. If your code implements a new feature, it is continuously integrated with the current code. The new code has to be merged with the latest one as the ongoing development continues, and the Continuous Integration automations should ensure that there are no bugs for it to function smoothly.
Tools generally used for this: GitHub Actions, GitLab Pipelines, TravisCI, Buildbot, Bamboo, CircleCI, and Jenkins, to name a few
Benefits of Continuous Integration
When teams integrate consistently they significantly reduce the number of potential risks because they always know the current state of the system
Software development teams have greater confidence in their work because the system can catch bugs and defects almost immediately
A single repository and automated build provide full visibility for everyone working on the project
Teams can coordinate and work on the issues at hand before they turn into bigger problems
💡 Continuous Integration Automation Pipelines
DevOps teams use automation pipeline tools to build software projects and test them continuously, allowing developers to integrate any changes in their projects easily. Continuous Integration pipelines allow you to consistently deliver your software by integrating your build, test, and publish pipeline definitions along-side your software code, and they enable organizations to accelerate their software development process with automation.
💡 Steps of Continuous Integration
Here’s how different pieces of this jigsaw puzzle would work together
An automation pipeline configuration is provided into a source code repository
Developers commit changes to the source code, found in the repository
A Pipeline Runner pulls any newly available code based on the commit
The Pipeline Runner builds the code into a deployable artifact file. In case the build fails, feedback is sent to the developers
The Pipeline Runner performs tests as defined by the pipeline configuration. If the test fails, feedback is sent to the developers
If the code is error-free, the built artifact is published to artifact storage and is ready for deployment
Stage 3: Continuous Deployment
The Continuous Deployment process deploys the code onto infrastructure for hosted environments. It is also crucial to ensure that the code is properly deployed on all servers.
Some tools generally used for this: Terraform, CloudFormation, Ansible, Helm, Chef, BitOps , etc.
Benefits of continuous deployment
It’s easier to measure progress when large releases are deployed in smaller chunks
Enhanced visibility and tracking helps in reducing developments risks
Releases become smaller and easier to understand
Identification and resolution of defects also becomes easier.
Better collaboration between the Development, QA, and Operations teams leads to higher quality deliverable and higher customer satisfaction
The feedback loop with the customers is faster since all the new features and enhancements are deployed to production as and when they are ready
Rapid deployment and feedback loop encourages the team to experiment and generate new ideas for improvisations and/or new feature development
💡 Hosting Infrastructure
Deployable artifacts need an environment to be deployed into. Many workloads require compute while some only need static files to be available to users or other systems.
Some types of compute include:
Virtual Machines (VMs) - VMs are essentially dynamically generated computers hosted by cloud providers, VMs can be defined with a desired operating system, CPU, and memory.
Containers - Similar to VMs, containers allow users to package software code with just the operating system (OS) libraries and dependencies required to run the code. This creates a single lightweight executable—called a container—that runs consistently on any infrastructure. Containers need to be managed at run-time by a container orchestrator like Kubernetes or AWS Elastic Container Service.
Serverless - Serverless functions allow applications to be split up into micro compute units by function rather than building everything into a single multi-purpose service. The underlying infrastructure is further abstracted so users do not need to think about the operating system. Serverless functions need to be managed by infrastructure that can run serverless functions like AWS Lambda or KNative.
Static file hosting types include:
AWS Simple Storage Service (S3) - S3 is a highly available object storage system. It’s essentially a globally distributable file system that can be used to store static assets like a pre-built Frontend web application. Other cloud providers offer similar object storage solutions such as Azure Blob Storage.
Content Delivery Networks (CDNs) - CDNs allow static assets to be stored and retrieved, and many CDN providers provide additional features such as caching, routing logic, and certificate management, and request throttling.
Stage 4: Continuous Testing
A vital part of Continuous Integration and Continuous Deployment is that the software developed is continuously tested for bugs. Several automation tools are used to test code developed continuously to detect any bugs. Docker containers can be used in this phase for simulating the test environment.
Tools generally used for this: Selenium, Travis, QuerySurge
Benefits of continuous testing
Accelerate software delivery
Continuous testing improves code quality
It helps to assess exact business risk coverage
It seamlessly integrates into DevOps Process
Helps to create an agile and reliable process in just hours instead of months
Accelerates time-to-market with a continuous feedback mechanism
Merges traditionally siloed teams to meet modern enterprise needs. Dissolves disconnect between development, testing, and operations teams
Test Automation helps to achieve consistency by maintaining the same configuration for all relevant tests
Emphasizes business expectations to mitigate business risks
Stage 5: Continuous Monitoring
In the final stage of the DevOps project lifecycle, Observability, the operations team manages accurate continuous monitoring tools to locate and correct the bugs/flaws in the software. Observability has three pillars: logs, metrics, and tracing. Application logging assists developers in tracking down error messages in running services, metrics track how services and infrastructure are performing, and tracing helps uncover latency and bottlenecks in complex multi-service requests.
Tools generally used for this: Nagios, Splunk, Prometheus, Datadog, Grafana, and ELK stack
Benefits of continuous monitoring
Many components of software operations can trigger devastating outcomes like breaches. Continuous monitoring aims to strengthen the transparency of such environments while keeping in place a vigilant system to monitor and resolve said issues.
Continuous monitoring aims to identify performance inconsistencies and error sources. It also resolves these problems using relevant solutions to safeguard the enterprise.
Continuous monitoring assists companies in keeping a tab of their user experience. CM is especially helpful in tracking user feedback after a recent change or update to a software or an application. This helps firms build and strengthen their business strategies.
DevOps, short for Developer Operations, is the practice of Developers and Operators working together to manage an application’s lifecycle through continuous delivery. From development to integration, testing to deployment, and monitoring for bugs, DevOps is a powerful methodology for software development.
Bitovi has consultants that can help. Drop into Bitovi's Community Discord, and talk to us in the
Need DevOps Consulting Services? Head over to DevOps Consulting - Bitovi , and book a free consultation.
More Sources of information: