Chapter 2
Chapter 2
DevOps Model
The DevOps model goes through several phases governed by cross-discipline
teams. Those phases are as follows:
Development Phase
Version control systems help developers continuously code, ensuring one patch
connects seamlessly with the master branch. Each complete feature triggers the
developer to submit a request that, if approved, allows the changes to replace
existing code. Development is ongoing.
Testing Phase
After a build is completed in development, it is sent to QA testing. Catching
bugs is important to the user experience, in DevOps bug testing happens early
and often. Practices like continuous integration allow developers to use
automation to build and test as a cornerstone of continuous development.
Deployment Phase
In the deployment phase, most businesses strive to achieve continuous delivery.
This means enterprises have mastered the art of manual deployment. After bugs
have been detected and resolved, and the user experience has been perfected, a
final team is responsible for the manual deployment. By contrast, continuous
deployment is a DevOps approach that automates deployment after QA testing
has been completed.
Management Phase
During the post-deployment management phase, organizations monitor and
maintain the DevOps architecture in place. This is achieved by reading and
interpreting data from users, ensuring security, availability and more.
Finding the right platform for you could be as easy as speaking to the experts
at BMC for DevOps solutions.
Continuous Delivery
Finally, DevOps architecture is created on the premise of continuous delivery.
That is, any practices set in play to foster communication and collaboration
between teams should be working toward the frequent and routine delivery of
quality tested software. This can be automated, as in the case of continuous
deployment as described above.
Here are a few positions enterprises should seek to fill if they are making a
switch to DevOps architecture for software releases:
1. DevOps Architect
2. Release Manager
3. Automation Specialist
4. Integration Specialist
5. Software Developer
6. QA Tester
7. Database Engineer
8. Project Manager
These are just a few important roles that aid the DevOps process. The needs of
each organization will dictate which roles are the most critical to overall
success.
Decrease Cost
Of primary concern for businesses is operational cost, DevOps helps
organizations keep their costs low. Because efficiency gets a boost with DevOps
practices, software production increases and businesses see decreases in overall
cost for production.
Increased Productivity and Release Time
With shorter development cycles and streamlined processes, teams are more
productive and software is deployed more quickly.
Customers are Served
User experience, and by design, user feedback is important to the DevOps
process. By gathering information from clients and acting on it, those who
practice DevOps ensure that clients wants and needs get honored, and customer
satisfaction reaches new highs.
It Gets More Efficient with Time
DevOps simplifies the development lifecycle, which in previous iterations had
been increasingly complex. This ensures greater efficiency throughout a
DevOps organization, as does the fact that gathering requirements also gets
easier. In DevOps, requirements gathering is a streamlined process, a culture of
accountability, collaboration and transparency makes requirements gathering a
smooth going team effort where no stone is left unturned.
DEPLOYMENT:
What is continuous deployment? Continuous deployment (CD) is an automated software
release practice where code changes are deployed to different stages as they pass predefined
tests. The goal of CD is to facilitate faster releases by using automation to help remove the
need for human intervention as much as possible during the deployment process.
When it comes to software development, businesses today often face two big challenges:
shipping software fast and innovating at scale. DevOps seeks to help solve these problems by
applying automation throughout the software development lifecycle (SDLC) to facilitate the
quick delivery of more reliable and secure software.
And when it’s successfully implemented, it works. DevOps organizations that adopt CD have
been found to ship code faster and outperform other companies by 4-5x.
Still, implementing CD can be a radical shift from spending days, or even weeks preparing
for a software release. But businesses that make the investment in time, resources, and
tooling see concrete advantages.
Pro tip: This guide assumes you understand continuous integration and the concept of
automated pipelines. If you're unclear on these DevOps practices, try reading our guide.
DevOps seeks to increase the speed of innovation and value delivery by applying automation
to every stage of the SDLC. With that view, continuous deployment stands as the ultimate
goal of DevOps: A completely automated SDLC where every code change is pushed to
production if it passes a predefined set of tests.
In some ways, building an automated pipeline is one of the easiest parts of adopting a
continuous deployment model. But very few organizations start their DevOps journey by
building a continuous deployment practice due to the cultural change it signifies, and the
maturity of the testing suite it requires.
In that light, it’s best to understand the process and journey it takes to achieve a
fully functioning continuous deployment practice.
The graphic below shows a high-level journey map for how organizations
typically start thinking about automating the SDLC.
Once code is verified via testing, the automated deployment process begins.
More advanced implementations will typically create automation workflows
that move code to deployment immediately after it is committed (of course, this
assumes it passes all predefined tests in the CI stage).
Monitoring
You’ll also want to spend time making sure your tests—be they unit,
functional, performance, application, or security tests—are effective. It’s
one thing to have large test coverage. It’s another thing to have good tests
that make your codebase stronger, and ensure that you have confidence in
your production code.
Invest in a continuous monitoring practice. A strong testing suite and
good testing coverage are critical in a continuous deployment practice.
But without real-time monitoring in your testing and production
environments, you’re at risk of missing the mark.
A code change or new feature may introduce unintended issues your tests
uncover before a deployment. And even if your tests show your codebase
is stable, infrastructure issues may crop up in production when user
activity introduces unexpected variables.
ORCHESTRATION:
Orchestration is the automated configuration, management, and
coordination of computer systems, applications, and services. Orchestration
helps IT to more easily manage complex tasks and workflows. IT teams must
manage many servers and applications, but doing so manually isn't a scalable
strategy
Why Invest in DevOps Orchestration?
DevOps teams must navigate across departments, requiring a solution where
their tools can also be piloted smartly. This situation calls for DevOps
orchestration solutions, which have the ability to combine numerous automated
elements from different DevOps toolkits.
With DevOps orchestration, teams can utilize their current in-use automation
tools while being able to engage under an overarching umbrella designed to pull
everything into a single workflow.
These are the key features DevOps orchestration tools need to remain
competitive.
Below is the summary of the evaluation criteria that guided my selection of the
top ten tools.
1. User Interface (UI): A tool’s UI/UX interface is typically its first contact with
its customer. Therefore, I looked for easy navigation with a clean, inviting, and
user-friendly layout.
2. Usability: DevOps orchestration tools handle fairly complex tasks like
configuring build processes. The best tools are relatively simple to use and
easy to learn and paired with rich features to work and collaborate effectively.
3. Integrations: The best DevOps tools have the ability to support a wide range
of popular tools and environments. It should offer compatible support for CI
tools and version control systems like GitHub, Jenkins, Bitbucket, and Docker.
It must build partner ecosystems to provide apps that aren’t in its wheelhouse.
4. Value for Pricing: Affordability is always a vital factor in making business
purchases. Therefore, I look for cost-effectiveness and the value for money a
tool provides.
So, to get to know DevOps better, we're looking at pipelines in DevOps. This
article will answer the question, "What is a pipeline in DevOps?". Additionally,
we will explore the components, phases, and stages of the DevOps pipeline and
even dedicate some time to explaining what the Azure DevOps pipeline is all
about.
What Is a Pipeline in DevOps?
A DevOps pipeline is the set of automated processes and tools that the
development and operations teams use to compile, construct, test, and deploy
software code faster and easier. However, the term "pipeline" isn't an exact fit;
it's more like an assembly line. For instance, an automobile that goes through
the factory assembly line undergoes continuous assembly. Workers first build a
chassis, add the engine, doors, tires, seats, and instrument panel, and finish it
with exterior paint.
The DevOps pipeline works like that, starting with writing the code and then
running tests to find bugs, errors, typos, and redundancies. DevOps teams then
put fixes and patches to address the issues, test them some more, and finally
release the working product to users.
Now that we’re familiar with the components of the DevOps pipeline, it’s time
to look at the phases, or stages, of the pipeline.
Develop: The developers write the software code and then push it into the
source control repository, after which the source code integration occurs.
Build: In the next stage, the application is built with the integrated source
code from the previous phase’s source code repository.
Test: In this phase, testers execute various tests (functional, system, unit) on
the build created in the previous stage. If the tests reveal issues, they’re
kicked back to the developer to be resolved.
Deploy: This final stage sees the deployment of the final version, conducted
when the production environment is created and configured.
Although each company or organization has its unique take on DevOps with its
own particular needs, there are five universally recognized steps to create a
DevOps pipeline.
An organization's first step is getting the right tools to build its CI/CD pipeline.
Although the choice will revolve around the company's specific
needs, Jenkins is a good solid choice since it's easily customizable to fit an
organization's situation. Other possibilities include GitLab, TeamCity, and
Bamboo.
Development teams need a sandbox, so to speak, to store and share their code,
create different versions of the app, and avoid merging conflicts. Git is a great
control management tool, enabling developers to keep their code in a shared
repository. Other alternatives include GitLab and BitBucket.
Here’s where the team’s software gets pushed to production. The least
complicated way to do this is to configure the build server to run a script that
deploys the application manually or automatically.
Many pipeline choices are available, such as the Azure DevOps pipeline, a
cloud service that offers a place to build and test code automatically. The Azure
DevOps build pipeline integrates well with resources such as Bitbucket Cloud,
Azure Repos Git & TFVC, GitHub, GitHub Enterprise, and Subversion.
This DevOps choice also works with most application types and languages and
allows developers to deploy code to multiple targets. In addition, developers can
use Azure pipeline variables to customize their environment if they need to
manage their builds' configuration values dynamically.
These two tools are the centerpiece of the DevOps pipeline and, as we've seen,
make up two of the seven components. CI/CD work together to create a
workflow conducive to reducing the cost and time needed for an app
development project.
The continuous delivery stage handles the incremental delivery of the software
and its updates into production. This phase boosts the frequency of releasing
new updates and features and promotes customer involvement by enhancing the
feedback loop.
AWS CodeDeploy
DeployBot
ElectricFlow
Jenkins
TeamCity
Visual Studio
However, here are three general steps DevOps teams should take when
implementing a DevOps pipeline:
1. Clearly define and establish your DevOps strategy. Bring everyone together
from every involved department and collaborate on setting the goals.
2. Incorporate Agile principles into your project. Agile emphasizes software
delivery in iterations, and it’s a great supplement to DevOps.
3. Make everything continuous. The DevOps foundation is built on continuity,
ensuring that deliverable times and code quality are consistently maintained
throughout every stage of the DevOps pipeline.
If an organization merges CI/CD with APM, they get the increased accuracy,
speed, and agility of the former, plus the enhanced business value of the latter.
https://www.bmc.com/blogs/devops-architecture/
https://resources.github.com/devops/fundamentals/ci-cd/
deployment/
https://yunsong0922.github.io/files/DevOps_Fundamentals.pdf
https://theqalead.com/tools/best-devops-orchestration-tools/
https://katalon.com/resources-center/blog/devops-orchestration-
investment