Exp-1 DevOpsLab
Exp-1 DevOpsLab
Fig 1:DevOps
DevOps principles:
Culture
DevOps is initially the culture and mindset forging strong collaborative bonds
between software development and infrastructure operations teams. This culture
is built upon the following pillars.
Automation of processes
Automating as many development, testing, configuration, and deployment
procedures as possible is the golden rule of DevOps. It allows specialists to get
rid of time-consuming repetitive work and focus on other important activities
that can’t be automated by their nature.
Sharing
Sharing is caring. This phrase explains the DevOps philosophy better than
anything else as it highlights the importance of collaboration. It is crucial to
share feedback, best practices, and knowledge among teams since this promotes
transparency, creates collective intelligence and eliminates constraints. You
don’t want to put the whole development process on pause just because the only
person who knows how to handle certain tasks went on a vacation or quitted.
To break down the process even more, let’s have a look at the core practices
that constitute the DevOps:
Agile planning
In contrast to traditional approaches of project management, Agile planning
organizes work in short iterations (e.g. sprints) to increase the number of
releases. This means that the team has only high-level objectives outlined, while
making detailed planning for two iterations in advance. This allows for
flexibility and pivots once the ideas are tested on an early product increment.
Check our Agile infographics to learn more about different methods applied.
Continuous development
The concept of continuous “everything” embraces continuous or iterative
software development, meaning that all the development work is divided into
small portions for better and faster production. Engineers commit code in small
chunks multiple times a day for it to be easily tested.
Continuous deployment
At this stage, the code is deployed to run in production on a public server. Code
must be deployed in a way that doesn’t affect already functioning features and
can be available for a large number of users. Frequent deployment allows for a
“fail fast” approach, meaning that the new features are tested and verified early.
There are various automated tools that help engineers deploy a product
increment. The most popular are Chef, Puppet, Azure Resource Manager, and
Google Cloud Deployment Manager.
Continuous monitoring
The final stage of the DevOps lifecycle is oriented to the assessment of the
whole cycle. The goal of monitoring is detecting the problematic areas of a
process and analyzing the feedback from the team and users to report existing
inaccuracies and improve the product’s functioning.
Infrastructure as a code
Infrastructure as a code (IaC) is an infrastructure management approach that
makes continuous delivery and DevOps possible. It entails using scripts to
automatically set the deployment environment (networks, virtual machines, etc.)
to the needed configuration regardless of its initial state.
Containerization
Virtual machines emulate hardware behavior to share computing resources of a
physical machine, which enables running multiple application environments or
operating systems (Linux and Windows Server) on a single physical server or
distributing an application across multiple physical machines.
Containers, on the other hand, are more lightweight and packaged with all
runtime components (files, libraries, etc.) but they don’t include whole
operating systems, only the minimum required resources. Containers are used
within DevOps to instantly deploy applications across various environments and
are well combined with the IaC approach described above. A container can be
tested as a unit before deployment. Currently, Docker provides the most popular
container toolset.
Microservices
The microservice architectural approach entails building one application as a set
of independent services that communicate with each other, but are configured
individually. Building an application this way, you can isolate any arising
problems ensuring that a failure in one service doesn’t break the rest of the
application functions. With the high rate of deployment, microservices allow for
keeping the whole system stable, while fixing the problems in isolation. Learn
more about microservices and modernizing legacy monolithic architectures in
our article.
Cloud infrastructure
Today most organizations use hybrid clouds, a combination of public and
private ones. But the shift towards fully public clouds (i.e. managed by an
external provider such as AWS or Microsoft Azure) continues. While cloud
infrastructure isn’t a must for DevOps adoption, it provides flexibility, toolsets,
and scalability to applications. With the recent introduction of serverless
architectures on clouds, DevOps-driven teams can dramatically reduce their
effort by basically eliminating server-management operations.