5.chap 1
5.chap 1
DevOps
DevOps word in itself is a combination of two words one is “Development,” and the other is
“Operations.” It is neither an application nor a tool; instead, it is just a culture that
collaboratively promotes development and operation. As a result of DevOps implementation,
the speed to deliver applications and services has increased.
DevOps enables organizations to serve their customers powerfully and better in the market.
In other words, we can say that DevOps is the process of alignment of IT and development
operations with better and improved communication
There are many stories about the DevOps origins, but it is not created out of the whole cloth.
Its seeds were planted many years ago and recently nurtured by expert IT professionals in
several disciplines. Two primary ancestors of DevOps are given below:
DevOps implementation has increased the rate of software delivery and revenue for business
stakeholders. The following listed reasons are the most considerable ones that led to the
creation of DevOps.
Before DevOps, operation and development teams worked in an isolated environment.
Testing and Deployment activities were primarily performed, isolated after the
design-build step, which took more time than the actual project completion time.
Team members usually spend a significant amount of time in deploying, testing,
designing, and building the projects
Human production errors were deployed during manual code conduction.
Operations and coding teams generally had different timelines and did not have
proper synchronization, which resulted in further delay.
To avoid the hassles mentioned above and non-collaborative performance measures, there
was an urgent need for robust IT technology like DevOps to satisfy business owners and
stakeholders.
Let us compare the waterfall model with DevOps to see what changes DevOps brings to IT.
Take a few assumptions for this comparison, like the application has to make live in the next
two weeks, and more than 80% of the coding is complete. We assume that the application has
been launched recently, and the process of buying servers to ship the code has just begun.
Traditional IT DevOps
Projections about Projections about failover, data center locations, redundancy, and storage requirements
failover, data center are 100% clear because of accurate inputs given by the development team.
locations, redundancy,
and storage
requirements are not
precise as no inputs are
available from the
development team,
even if they have in-
depth knowledge of the
application.
In old software
development
processes, the
operations team has no
In DevOps, the operations team has a complete idea of the development progress.
idea of the
The operations and development teams work together to develop a monitoring plan
development team's
that caters to the current business, and IT needs.
progress. The operation
team has to prepare a
monitoring plan as per
their understanding.
This is the first stage of the DevOps lifecycle in which applications' development occurs
constantly. The entire development process is broken down into small steps or development
cycles. As a result of this, the speed of software development and delivery is increased.
ii). Testing
Selenium-like testing tools are used to speed up the overall testing process by quickly
identifying errors and fixing bugs.
iii). Integration
New functionalities are integrated with the prevailing code, and new code tes
iv). Deployment
Continuous deployment is part of the DevOps lifecycle. When it is performed in the right
way, then it can affect the overall functioning of a high-traffic website.
v). Monitoring
These are the building blocks for any DevOps application. As per DevOps culture, a group of
Engineers is responsible for each stage of DevOps application development, including the
developer, system admin, testing, and others.
Agile
Agile is an iterative approach to project management and software development that helps
teams deliver value to their customers faster and with fewer headaches. Instead of betting
everything on a "big bang" launch, an agile team delivers work in small, but consumable,
increments. Requirements, plans, and results are evaluated continuously so teams have a
natural mechanism for responding to change quickly.
Benefits of Agile Methodology
Faster. Speed is one of the biggest benefits of Agile Methodology. A faster software
development life cycle means less time between paying and getting paid. That, in turn, means
a more profitable business.
Increased customer satisfaction. With Agile, customers don’t wait for months or years, only
to get exactly what they didn’t want. Instead, they get iterations of something very close to
what they want, very fast. The system adjusts quickly to refine the successful customer
solution, adapting as it goes to changes in the overall environment.
Values employees. Employees whose ideas are valued are vastly more productive than those
who are ordered to follow a set of rules. The Agile Methodology respects employees by
giving them the goal, then trusting them to reach it. Since they’re the ones with their hands on
the controls and the ones who see the obstacles that crop up every day, employees are in the
best position to respond to challenges and meet the goals at hand.
Eliminates rework. By involving the customer at more than just the phases of requirements
and delivery, the project remains on-task and in-tune with customer needs at every step. This
means less backtracking and less “out on a limb” time between the time we do the work and
the time the customer suggests revisions.
The most popular and common examples are Scrum, eXtreme Programming (XP), Feature
Driven Development (FDD), Dynamic Systems Development Method (DSDM), Adaptive
Software Development (ASD), Crystal, and Lean Software Development (LSD).
History of Devops
DevOps was the brainchild of Patrick Debois. Patrick wanted to learn IT from every
perspective possible. In 2007, while he was working in charge of testing a large data centre
migration project, he had to encounter the tedious process of going back and forth with the
development and testing silos. It was too time-consuming and the divide between the two
departments was huge.
Later in 2009, Patrick stumbled upon a talk entitled "10+ Deploys a day: Dev and Ops
cooperation at Flickr" and instantly came to the realization that it was what he was
searching for. As a result, he decided to band together a group of developers and
administrators to further discuss the topic. Naming the event DevOpsDays, it garnered the
attention of people all over the internet and soon after, numerous enterprises started to
embrace the idea of DevOps resulting from the conference.
Since the inception of DevOps in 2007-2008, it has multiplied while being adopted by
companies like Amazon, Netflix, and Adobe to name a few.
It is important to know where DevOps comes from so that we can know how DevOps is still
standing strong even after a decade after Patricks’s conference. The idea was born from the
mind of developers, testers, and operation leaders who wanted to discuss the concerns about
their industry and propose solutions on how to best get work accomplished. It was made
possible by the people whom it intended to help.
If you think DevOps is a good solution for your organization and want it implemented right
on the first try itself, 4Labs Technologies is the IT solution partner you need. With a proven
track record and impeccable results, we are confident enough in finding the right solution for
you.
Linux OS
Linux® is an open source operating system (OS). An operating system is the software that
directly manages a system’s hardware and resources, like CPU, memory, and storage. The
OS sits between applications and hardware and makes the connections between all of your
software and the physical resources that do the work.
Every version of the Linux OS manages hardware resources, launches and handles
applications, and provides some form of user interface. The enormous community
for developers and wide range of distributions means that a Linux version is
available for almost any task, and Linux has penetrated many areas of computing.
For example, Linux has emerged as a popular OS for web servers such as Apache,
as well as for network operations, scientific computing tasks that require huge
compute clusters, running databases, desktop and endpoint computing, and running
mobile devices with OS versions like Android.
The Linux OS can be found in many different settings, supporting many different
use cases. Linux is used in the following ways:
Server OS for web servers, database servers, file servers, email servers and any
other type of shared server. Designed to support high-volume and
multithreading applications, Linux is well-suited for all types of server
applications.
Headless server OS for systems that do not require a graphical user interface
(GUI) or directly connected terminal and keyboard. Headless systems are often
used for remotely managed networking server and other devices.
DevOps Tools
DevOps is the next evolution of agile methodologies. A cultural shift that brings development
and operations teams together. DevOps is a practice that involves a cultural change, new
management principles, and technology tools that help to implement best practices.
When it comes to a DevOps toolchain, organizations should look for tools that improve
collaboration, reduce context-switching, introduce automation, and leverage observability
and monitoring to ship better software, faster.
Regardless of the type of DevOps toolchain an organization uses, a DevOps process needs to
use the right tools to address the key phases of the DevOps lifecycle:
Discover
Plan
Build
Test
Monitor
Operate
Continuous feedback
With an open DevOps toolchain, the selected tools touch multiple phases of the DevOps
lifecycle. The following sections showcase some of the most popular tools for DevOps, but
given the nature of the market, this list changes frequently. Providers add new capabilities
that enable them to span more phases of the DevOps lifecycle, new integrations are
announced each quarter, and in some cases, providers consolidate their offerings to focus on a
specific problem for their users.
Discover
In the Discover phase, a DevOps team researches and defines the scope of a project. In
particular, it involves activities such as user research, establishing goals, and defining
success.
Tools like Mural and Miro empower the entire software team to gather ideas and conduct
research. Jira Product Discovery organizes this information into actionable inputs and
prioritizes actions for development teams. As you’re prioritizing, you’ll also need to keep
your backlog of user feedback in mind.
Plan
Taking a page out of the agile handbook, we recommend tools that allow development and
operations teams to break work down into smaller, manageable chunks for quicker
deployments. This allows you to learn from users sooner and helps with optimizing a product
based on the feedback. Look for tools that provide sprint planning, issue tracking, and allow
collaboration, such as Jira.
And don’t forget about integrations and feature flags. Wherever you decide to scope your
feature or project, it should be converted into user stories in your development backlog.
Feature flags are if-statements in the code base that enable teams to turn features on and off.
Build
While Puppet and Chef primarily benefit operations, developers use open source tools like
Kubernetes and Docker to provision individual development environments. Coding against
virtual, disposable replicas of production helps you get more work done.
Infrastructure as code
Developers create modular applications because they’re more reliable and maintainable. So
why not extend that thinking to IT infrastructure? This can be difficult to apply to systems
because they are always changing. So we get around that by using code for provisioning.
Infrastructure as code means re-provisioning is faster than repairing – and more consistent
and reproducible. It also means you can easily spin up variations of your development
environment with similar configuration as production. Provisioning code can be applied and
reapplied to put a server into a known baseline. It can be stored in version control. It can be
tested, incorporated into CI (continuous integration), and peer-reviewed.
When institutional knowledge is, well, codified in code, the need for run books and internal
documentation fades. What emerges are repeatable processes, and reliable systems.
It’s important to have source control of your code. Source control tools help store the code in
different chains so you can see every change and collaborate more easily by sharing those
changes. Rather than waiting on change approval boards before deploying to production, you
can improve code quality and throughput with peer reviews done via pull requests.
Continuous Delivery
Continuous integration is the practice of checking in code to a shared repository several times
a day, and testing it each time. That way, you automatically detect problems early, fix them
when they’re easiest to fix, and roll out new features to your users as early as possible.
Code review by pull-requests requires branching and is all the rage. The DevOps North Star
is a workflow that results in fewer and faster branches and maintains testing rigor without
sacrificing development speed.
Test
Testing tools span many needs and capabilities, including exploratory testing, test
management, and orchestration. However, for the DevOps toolchain, automation is an
essential function. Automated testing pays off over time by speeding up your development
and testing cycles in the long run. And in a DevOps environment, it’s important for another
reason: awareness.
Test automation can increase software quality and reduce risk by doing it early and often.
Development teams can execute automated tests repeatedly, covering several areas such as
UI testing, security scanning, or load testing. They also yield reports and trend graphs that
help identify risky areas.
Risk is a fact of life in software development, but you can’t mitigate what you can’t
anticipate. Do your operations team a favor and let them peek under the hood with you. Look
for tools that support wallboards, and let everyone involved in the project comment on
specific build or deployment results. Extra points for tools that make it easy to get Operations
involved in blitz testing and exploratory testing.
Deploy
One of the most stressful parts of shipping software is getting all the
change, test, and deployment information for an upcoming release into one place. The last thing
anyone needs before a release is a long meeting to report on status. This is where release dashboards
come in.
Look for tools with a single dashboard integrated with your code repository and deployment
tools. Find something that gives you full visibility on branches, builds, pull requests, and
deployment warnings in one place.
Operate
There are two types of monitoring that should be automated: server monitoring and
application performance monitoring.
Manually “topping” a box or hitting your API with a test is fine for spot-checking. But to
understand trends and the overall health of your application (and environments), you need
software that is listening and recording data 24/7. Ongoing observability is a key capability
for successful DevOps teams.
Look for tools that integrate with your group chat client so alerts go straight to your team’s
room, or a dedicated room for incidents.
Continuous Feedback
Customers are already telling you whether you’ve built the right thing – you just have to
listen. Continuous feedback includes both the culture and processes to collect feedback
regularly, and tools to drive insights from the feedback. Continuous feedback practices
include collecting and reviewing NPS data, churn surveys, bug reports, support tickets, and
even tweets. In a DevOps culture, everyone on the product team has access to user comments
because they help guide everything from release planning to exploratory testing sessions.