DevOps Architecture
Development and operations both play essential roles in order to deliver applications. The
deployment comprises analyzing the requirements, designing, developing, and testing of
the software components or frameworks.
The operation consists of the administrative processes, services, and support for the software.
When both the development and operations are combined with collaborating, then the
DevOps architecture is the solution to fix the gap between deployment and operation terms;
therefore, delivery can be faster.
DevOps architecture is used for the applications hosted on the cloud platform and large
distributed applications. Agile Development is used in the DevOps architecture so that
integration and delivery can be contiguous. When the development and operations team
works separately from each other, then it is time-consuming to design, test, and deploy. And
if the terms are not in sync with each other, then it may cause a delay in the delivery. So
DevOps enables the teams to change their shortcomings and increases productivity.
Below are the various components that are used in the DevOps architecture:
x
1) Build
Without DevOps, the cost of the consumption of the resources was evaluated based on the
pre-defined individual usage with fixed hardware allocation. And with DevOps, the usage of
cloud, sharing of resources comes into the picture, and the build is dependent upon the user's
need, which is a mechanism to control the usage of resources or capacity.
2) Code
Many good practices such as Git enables the code to be used, which ensures writing the code
for business, helps to track changes, getting notified about the reason behind the difference in
the actual and the expected output, and if necessary reverting to the original code developed.
The code can be appropriately arranged in files, folders, etc. And they can be reused.
3) Test
The application will be ready for production after testing. In the case of manual testing, it
consumes more time in testing and moving the code to the output. The testing can be
automated, which decreases the time for testing so that the time to deploy the code to
production can be reduced as automating the running of the scripts will remove many manual
steps.
4) Plan
DevOps use Agile methodology to plan the development. With the operations and
development team in sync, it helps in organizing the work to plan accordingly to increase
productivity.
5) Monitor
Continuous monitoring is used to identify any risk of failure. Also, it helps in tracking the
system accurately so that the health of the application can be checked. The monitoring
becomes more comfortable with services where the log data may get monitored through
many third-party tools such as Splunk.
6) Deploy
Many systems can support the scheduler for automated deployment. The cloud management
platform enables users to capture accurate insights and view the optimization scenario,
analytics on trends by the deployment of dashboards.
7) Operate
DevOps changes the way traditional approach of developing and testing separately. The
teams operate in a collaborative way where both the teams actively participate throughout the
service lifecycle. The operation team interacts with developers, and they come up with a
monitoring plan which serves the IT and business requirements.
8) Release
Deployment to an environment can be done by automation. But when the deployment is
made to the production environment, it is done by manual triggering. Many processes
involved in release management commonly used to do the deployment in the production
environment manually to lessen the impact on the customers.
DEVOPS ECO SYSTEM
What is DevOps and why it is gaining popularity?
DevOps (Development and Operations) is a culture that promotes collaboration
between the development and operations team to increase the organization’s
ability to deliver products or applications in an automated and repeatable way.
Today an increasing number of organizations are implementing DevOps, fueled
by reports of the benefits of DevOps which includes less time consumption to
deliver things to market, reduced costs, increased security, and higher quality of
products. So, it can be defined as a type of agile relationship between
development and IT operations with a basic goal to improve the relationship
between these two units.
Why DevOps?
It is a known fact that system administrators and developers do not look at
things with the same eye. On one hand, customers tend to pull them in an
entirely different direction and on the other hand, business users might be
demanding change concerning new services, features, and revenue streams
much more quickly. It is true that they might expect systems that are not only
stable but also free from interruptions and outages. It can cause some serious
problems as a company can end up in confusion not knowing what they should
prioritize. They might be wondering if they should focus on delivering the
changes swiftly or focus on dealing with the production environment that is
quite unstable or focus primarily on the environment that is stale and stable.
None of these choices is acceptable to executive enterprises. And none of them
permits a business to give customers the best solution. By using DevOps, you
can overcome this dilemma by integrating deployment and software
development. It includes everyone from business users to developers and test
engineers to system administrators.
Why DevOps is Gaining Popularity?
Minimal Time Accelerated Results
With DevOps, where operations and development teams are integrated,
applications can be developed and deployed much more rapidly. As per
business today, the success factor hinges largely on an organization’s ability to
deliver outcomes faster than the competition. Since changesets are smaller,
problems tend to be less complex.
Collaboration Reduces Differences
DevOps make sure that the difference between operations and developments is
eliminated by building a bridge to make them work together in a better way.
The software development culture then continuously focuses on combined
achievement rather than individual goals. The development environment
becomes progressively more seamless as all team members work toward shared
goals as it’s no longer a matter of tossing the application code over the wall and
hoping for the best.
Reduced Differences Increase Efficiency
Improved Collaboration increases efficiency. DevOps focuses on uniting the
efforts of both of these departments as well as other departments such as testing,
product management, and others in the team. Fast software delivery is crucial in
today’s digital age and a DevOps culture is a crucial aspect of this process.
Reduced Errors
DevOps reduces the chances of human errors during development and
operations process. It lowers the application failure rate with multiple
deployments in the process in a defined timeline by deploying frequent
iterations. The shorter development cycles associated with a strong DevOps
approach promotes more frequent code releases.
Stable operating environment
For any business or software platform, stability is the key. DevOps is
established to bring stability with reliability. Organizations with DevOps get
their deployment 30 times faster than their rivals with 50% lesser chances of
failure.
DevOps Tutorial
The DevOps is the combination of two words, one is Development and other is Operations.
It is a culture to promote the development and operation process collectively.
The DevOps tutorial will help you to learn DevOps basics and provide depth knowledge of
various DevOps tools such as Git, Ansible, Docker, Puppet, Jenkins, Chef, Nagios, and
Kubernetes.
What is DevOps?
The DevOps is a combination of two words, one is software Development, and second is
Operations. This allows a single team to handle the entire application lifecycle, from
development to testing, deployment, and operations. DevOps helps you to reduce the
disconnection between software developers, quality assurance (QA) engineers, and system
administrators.
DevOps promotes collaboration between Development and Operations team to deploy code
to production faster in an automated & repeatable way.
DevOps helps to increase organization speed to deliver applications and services. It also
allows organizations to serve their customers better and compete more strongly in the
market.
DevOps can also be defined as a sequence of development and IT operations with better
communication and collaboration.
DevOps has become one of the most valuable business disciplines for enterprises or
organizations. With the help of DevOps, quality, and speed of the application delivery has
improved to a great extent.
DevOps is nothing but a practice or methodology of making "Developers" and
"Operations" folks work together. DevOps represents a change in the IT culture with a
complete focus on rapid IT service delivery through the adoption of agile practices in the
context of a system-oriented approach.
DevOps is all about the integration of the operations and development process.
Organizations that have adopted DevOps noticed a 22% improvement in software quality
and a 17% improvement in application deployment frequency and achieve a 22% hike in
customer satisfaction. 19% of revenue hikes as a result of the successful DevOps
implementation.
Why DevOps?
Before going further, we need to understand why we need the DevOps over the other
methods.
The operation and development team worked in complete isolation.
After the design-build, the testing and deployment are performed respectively. That's
why they consumed more time than actual build cycles.
Without the use of DevOps, the team members are spending a large amount of time
on designing, testing, and deploying instead of building the project.
Manual code deployment leads to human errors in production.
Coding and operation teams have their separate timelines and are not in synch,
causing further delays.
DevOps History
In 2009, the first conference named DevOpsdays was held in Ghent Belgium.
Belgian consultant and Patrick Debois founded the conference.
In 2012, the state of DevOps report was launched and conceived by Alanna Brown at
Puppet.
In 2014, the annual State of DevOps report was published by Nicole Forsgren, Jez
Humble, Gene Kim, and others. They found DevOps adoption was accelerating in
2014 also.
In 2015, Nicole Forsgren, Gene Kim, and Jez Humble founded DORA (DevOps
Research and Assignment).
In 2017, Nicole Forsgren, Gene Kim, and Jez Humble published "Accelerate:
Building and Scaling High Performing Technology Organizations".
DevOps Architecture Features
Here are some key features of DevOps architecture, such as:
1) Automation
Automation can reduce time consumption, especially during the testing and deployment
phase. The productivity increases, and releases are made quicker by automation. This will
lead in catching bugs quickly so that it can be fixed easily. For contiguous delivery, each
code is defined through automated tests, cloud-based services, and builds. This promotes
production using automated deploys.
2) Collaboration
The Development and Operations team collaborates as a DevOps team, which improves the
cultural model as the teams become more productive with their productivity, which
strengthens accountability and ownership. The teams share their responsibilities and work
closely in sync, which in turn makes the deployment to production faster.
3) Integration
Applications need to be integrated with other components in the environment. The
integration phase is where the existing code is combined with new functionality and then
tested. Continuous integration and testing enable continuous development. The frequency in
the releases and micro-services leads to significant operational challenges. To overcome
such problems, continuous integration and delivery are implemented to deliver in a quicker,
safer, and reliable manner.
4) Configuration management
It ensures the application to interact with only those resources that are concerned with the
environment in which it runs. The configuration files are not created where the external
configuration to the application is separated from the source code. The configuration file can
be written during deployment, or they can be loaded at the run time, depending on the
environment in which it is running.
DevOps Advantages and Disadvantages
Here are some advantages and disadvantages that DevOps can have for business, such as:
Advantages
DevOps is an excellent approach for quick development and deployment of
applications.
It responds faster to the market changes to improve business growth.
DevOps escalate business profit by decreasing software delivery time and
transportation costs.
DevOps clears the descriptive process, which gives clarity on product development
and delivery.
It improves customer experience and satisfaction.
DevOps simplifies collaboration and places all tools in the cloud for customers to
access.
DevOps means collective responsibility, which leads to better team engagement and
productivity.
Disadvantages
DevOps professional or expert's developers are less available.
Developing with DevOps is so expensive.
Adopting new DevOps technology into the industries is hard to manage in short time.
Lack of DevOps knowledge can be a problem in the continuous integration of
automation projects.
PEOPLE ASPECTS
Agile software development has broken down some of the isolation between requirements, analysis,
development and testing teams. The objective of DevOps is to remove the silos between development
(including testing) and operations teams and bring about collaboration between the teams.
However, since there are separate teams and also the fact the team may have niche skills rather than
skills across the software development lifecycle, there could a phased approach to creating a pure
DevOps team. Here are some of the possible team structures.
Note:
Traditional speed: Refers to organizations where there are big business systems and how IT has been
running till Agile methods came in.
High speed IT: When businesses became IT centric with dynamic changes and digitization of
businesses happened, organizations had to change levers and adopt agility in projects.
Team structure model 1: Separate dev
and Ops teams
Key issue: Lack of collaboration between the teams as they are in silos.
However, it may not be possible to merge the teams, so the key is to improve the collaboration
through common interventions.
Salient Features
Development and operations are separate (may apply to QA teams also)
Interventions planned at regular intervals with no overhead processes
Teams keep separate backlogs but take each other’s stories in their backlogs
Ops team gets knowledge about upcoming features, major design changes, possible
impact on production
Dev team understands what causes outages/ defects better, improves Dev processes to
reduce impact (e.g. specific logging, perf testing for a cycle)
Dev team improves dev processes over time by understanding Ops defects/outages
better
Team structure model 2: One team with
Ops extension
When a pure DevOps team cannot be constructed, a model closer to the pure devOps team can
be constructed.
Salient Features
A horizontal Ops team forms a backbone for all development teams
It provides 24X7 support and performs the tasks which have larger impact on IT e.g.
patch deployment
Few Ops team members can become part of Dev team and perform tasks which are
application specific.
Ops team members can become part of Dev team
Ops representative will focus on all the Ops activities which are this team/application
specific while all centralized Ops activities will be taken by horizontal Ops team
When speed is increased, deployments are faster. Then teams realize that support service levels
start dropping. That is when teams understand the importance of collaboration between
development and ops teams.
Team structure model 3: Pure DevOps
The teams may be merged although DevOps skill set (end to end skills in a software lifecycle)
may not be readily available.
Salient features
Embedded team can be created by hiring people with blended skills or cross-training/on
the job learning by Dev & Ops teams for each other’s skills
Team has single backlog with both Dev & Ops tasks
Each team member is capable of selecting any item & work on it
PEOPLE ASPECTS
Agile software development has broken down some of the isolation between requirements, analysis,
development and testing teams. The objective of DevOps is to remove the silos between development
(including testing) and operations teams and bring about collaboration between the teams.
However, since there are separate teams and also the fact the team may have niche skills rather than
skills across the software development lifecycle, there could a phased approach to creating a pure
DevOps team. Here are some of the possible team structures.
Note:
Traditional speed: Refers to organizations where there are big business systems and how IT has been
running till Agile methods came in.
High speed IT: When businesses became IT centric with dynamic changes and digitization of
businesses happened, organizations had to change levers and adopt agility in projects.
Team structure model 1: Separate dev
and Ops teams
Key issue: Lack of collaboration between the teams as they are in silos.
However, it may not be possible to merge the teams, so the key is to improve the collaboration
through common interventions.
Salient Features
Development and operations are separate (may apply to QA teams also)
Interventions planned at regular intervals with no overhead processes
Teams keep separate backlogs but take each other’s stories in their backlogs
Ops team gets knowledge about upcoming features, major design changes, possible
impact on production
Dev team understands what causes outages/ defects better, improves Dev processes to
reduce impact (e.g. specific logging, perf testing for a cycle)
Dev team improves dev processes over time by understanding Ops defects/outages
better
Team structure model 2: One team with
Ops extension
When a pure DevOps team cannot be constructed, a model closer to the pure devOps team can
be constructed.
Salient Features
A horizontal Ops team forms a backbone for all development teams
It provides 24X7 support and performs the tasks which have larger impact on IT e.g.
patch deployment
Few Ops team members can become part of Dev team and perform tasks which are
application specific.
Ops team members can become part of Dev team
Ops representative will focus on all the Ops activities which are this team/application
specific while all centralized Ops activities will be taken by horizontal Ops team
When speed is increased, deployments are faster. Then teams realize that support service levels
start dropping. That is when teams understand the importance of collaboration between
development and ops teams.
Team structure model 3: Pure DevOps
The teams may be merged although DevOps skill set (end to end skills in a software lifecycle)
may not be readily available.
Salient features
Embedded team can be created by hiring people with blended skills or cross-training/on
the job learning by Dev & Ops teams for each other’s skills
Team has single backlog with both Dev & Ops tasks
Each team member is capable of selecting any item & work on it
TOOL STACK IMPLEMENTATION
The aim of choosing the tool stack is to build an automated pipeline using tools for performing the various software
development, testing, deployment and release activities. This helps in creating rapid, reliable and repeated releases
of working software with low risk and minimal manual overhead. Here are the principles to be considered while
choosing tools.
Principles to be considered
Repeatability : The automated pipeline needs to be executed frequently and multiple times with
consistency
Reliability : The automated pipeline should ensure reliable software
End to end automation : The activities from coding to release should be automated
100% source control : All the artifacts involved in the pipeline need to be version controlled (ex. Source
code, automated test cases, reports, binaries etc.)
Auto build quality : Pipeline should have quality auto-built by way of gating conditions
Done is released : Pipeline should ensure that “done-ness” as per the definition of done is only released
to production
Continuous feedback : Tools provide continuous feedback by way of reports
Customer appetite for tooling : The availability of budget from customer, existing tools and alliances,
technology used in the project, feasibility of automation
Note: Gating conditions represent the criterion to be met by the build cycle activity in order to move to the next
activity. For example, the source code should meet quality rules in order to move towards unit testing stage. These
conditions can be configured in and by various tools. They ensure only quality code gets integrated.
The DevOps and Lean coach now provide a snapshot of the tools that are available for the various activities as
shown in the figure below:
The tools stacks are evolving and there are many vendors in this area.
Practical tips
Tooling is a consulting exercise.
The DevOps and Lean coach suggests using the Java and open source stack for the system development at "Pura
Vida" for the reasons mentioned below.
Reasons
The tools involved in this stack are primarily open source, free and powerful
The project is an application development project using Java stack
Quick availability of these tools and no overhead of maintenance of licenses
The team is advised to get the OSS (Open Source Software) compliance for the open source tools prior to the
installation. OSS compliance refers to the compliance in terms of using approved and supported source code.
There should be a policy and process to check the usage, purchase (as all open source software is not free),
management and compliance(some can be used for training but payment is required if used commercially).Tools
like Black Duck help in checking OSS compliance.
He explains the various activities and tooling in this stack to the entire team.