0% found this document useful (0 votes)
18 views4 pages

Unit 2

The document outlines the DevOps lifecycle, emphasizing the collaboration between development and operations through various phases such as Continuous Development, Integration, Testing, Monitoring, Feedback, and Deployment. It also discusses architectural considerations, including monolithic versus modular approaches, separation of concerns, and handling database migrations. Additionally, it highlights the importance of resilience in DevOps systems, focusing on infrastructure automation, monitoring, disaster recovery, continuous testing, and high availability.

Uploaded by

lemel52930
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views4 pages

Unit 2

The document outlines the DevOps lifecycle, emphasizing the collaboration between development and operations through various phases such as Continuous Development, Integration, Testing, Monitoring, Feedback, and Deployment. It also discusses architectural considerations, including monolithic versus modular approaches, separation of concerns, and handling database migrations. Additionally, it highlights the importance of resilience in DevOps systems, focusing on infrastructure automation, monitoring, disaster recovery, continuous testing, and high availability.

Uploaded by

lemel52930
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

DevOps Lifecycle;defines an agile relationship between operations and Development.

It is a process that is
practiced by the development team and operational engineers together from beginning to the final stage of
the product;Continuous Development;
This phase involves the planning and
coding of the software. The vision of the
project is decided during the planning
phase. And the developers begin
developing the code for the application.
There are no DevOps tools that are
required for planning, but there are
several tools for maintaining the
code;Continuous Integration;This stage
is the heart of the entire DevOps
lifecycle. It is a software development
practice in which the developers require
to commit changes to the source code
more frequently. This may be on a daily or weekly basis. Then every commit is built, and this allows early
detection of problems if they are present. Building code is not only involved compilation, but it also
includes unit testing, integration testing, code review, and packaging;Continuous Testing;This phase, where
the developed software is continuously testing for bugs. For constant testing, automation testing tools such
as TestNG, JUnit,Selenium, etc are used. These tools allow QAs to test multiple code-bases thoroughly in
parallel to ensure that there is no flaw in the functionality. In this phase, Docker Containers can be used for
simulating the test environment;Continuous Monitoring;is a phase that involves all the operational factors of
the entire DevOps process, where important information about the use of the software is recorded and
carefully processed to find out trends and identify problem areas. Usually, the monitoring is integrated within
the operational capabilities of the software application;Continuous Feedback;The application development is
consistently improved by analyzing the results from the operations of the software. This is carried out by
placing the critical phase of constant feedback between the operations and the development of the next
version of the current software application;Continuous Deployement;In this phase, the code is deployed to
the production servers. Also, it is essential to ensure that the code is correctly used on all the servers;The new
code is deployed continuously, and configuration management tools play an essential role in executing tasks
frequently and quickly. Here are some popular tools which are used in this phase, such as Chef, Puppet,
Ansible, and SaltStack.

Architecture Rules of Thumb;There is always a bottleneck;Your data model is linked to the scalability of your
application;Scalability is mainly linked with cost. When you get to a large scale, consider systems where this
relationship does not track linearly;Favour systems that require little tuning to make fast;Use infrastructure as
code;Use a PaaS if you’re at less than 100k MAUs;Outsource systems outside of the market you are in. Don’t
roll your own CMS or Auth, even if it costs you tonnes;You have three levers, quality, cost and time. You have
to balance them accordingly;Design your APIs as open-source contracts;Start with a simple system first (Gall’s
law).
Devops influence on Architecture;The DevOps model goes through several phases governed by cross-
discipline teams. Those phases are as follows;Planning,Identify,andTrack;Using the latest in project
management tools and agile practices, track ideas and workflows visually;This gives all important stakeholders
a clear pathway to prioritization and better results;With better oversight, project managers can ensure teams
are on the right track and aware of potential obstacles and pitfalls;All applicable teams can better work
together to solve any problems in the development process;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;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;Benefits;A properly implemented
DevOps approach comes with a number of benefits. These include the following that we selected to
highlight;Decrease Cost;Increased Productivity and ReleaseTime;Customers are Served;It Gets More Efficient
with time.

Monolithic Scenario; software is designed to be self-contained, wherein the program's components or


functions are tightly coupled rather than loosely coupled, like in modular software programs;Each component
and its associated components must all be present for code to be executed or compiled and for the software
to run;Monolithic applications are single-tiered, which means multiple components are combined into one
large application;They tend to have large codebases, which can be cumbersome to manage over time;Further
more, if one program component must be updated, other elements may also require rewriting, and the whole
application has to be recompiled and tested;What is monolithic architecture?;A monolithic architecture is the
traditional unified model for the design of
a software program. Monolithic, in this
context, means "composed all in one piece."
According to the Cambridge dictionary,
the adjective monolithic also means both
"too large" and "unable to be changed.";
Benefits;Many applications are still created
using this development paradigm;For one,
monolithic programs may have
better throughput than modular
applications;Easier to test and debug;
Multiple copies of the application can be
placed behind a load balancer to scale it
horizontally; monolithic approach is usually
better for simple, lightweight
applications;Drawbacks;Delay application
development and deployment;Difficult to understand;Developers must compile the entire codebase and
redeploy the full application rather than just the part that was updated;Application's size increase startup time
and add to delays.
Separation of concerns;is a software architecture design pattern/principle for separating an application into
distinct sections, so each section addresses a separate concern. At its essence, Separation of concerns is about
order. The overall goal of separation of concerns is to establish a well-organized system where each part
fulfills a meaningful and intuitive role while maximizing its ability to adapt to change;How is separation of
concerns achieved;Separation of concerns in software architecture is achieved by the establishment of
boundaries. A boundary is any logical or physical constraint which delineates a given set of responsibilities.
Some examples of boundaries would include the use of methods, objects, components, and services to define
core behavior within an application; projects, solutions, and folder hierarchies for source organization;
application layers and tiers for processing organization;Advantages;Lack of duplication and singularity of
purpose of the individual components render the overall system easier to maintain;The system becomes more
stable as a byproduct of the increased maintainability;The strategies required to ensure that each component
only concerns itself with a single set of cohesive responsibilities often result in natural extensibility points;The
decoupling which results from requiring components to focus on a single purpose leads to components which
are more easily reused in other systems, or different contexts within the same system;The increase in
maintainability and extensibility can have a major impact on the marketability and adoption rate of the
system;There are several flavors of Separation of Concerns. Horizontal Separation, Vertical Separation, Data
Separation and Aspect Separation. In this article, we will restrict ourselves to Horizontal and Aspect separation
of concern.

Handling database migrations;Database schemas define the structure and interrelations of data managed by
relational databases;While it is important to develop a well-thought out schema at the beginning of your
projects, evolving requirements make changes to your initial schema difficult or impossible to avoid; State
based migration;software
creates artifacts that
describe how to recreate
the desired database state
from scratch;The files that
it produces can be applied
to an empty relational
database system to bring it
fully up to date;After the
artifacts describing the
desired state are created,
the actual migration
involves comparing the generated files against the current state of the database;This process allows the
software to analyze the difference between the two states and generate a new file or files to bring the current
database schema in line with the schema described by the files;These change operations are then applied to
the database to reach the goal state;Change based migrations;The major alternative to state based migrations
is a change based migration system;Change based migrations also produce files that alter the existing
structures in a database to arrive at the desired state;Because change based migrations work by outlining the
operations required from a known database state to the desired one, an unbroken chain of migration files is
necessary from the initial starting point.
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;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; 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;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;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;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;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;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;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 Resilience;refers to the ability of a DevOps system to withstand and recover from failures and
disruptions. This means ensuring that the systems and processes used in DevOps are robust, scalable, and able
to adapt to changing conditions. Some of the key components of DevOps resilience include;Infrastructure
automation; Automating infrastructure deployment, scaling, and management helps to ensure that systems
are deployed consistently and are easier to manage in case of failures or disruptions;Monitoring and logging;
Monitoring systems, applications, and infrastructure in real-time and collecting logs can help detect and
diagnose issues quickly, reducing downtime;Disaster recovery; Having a well-designed disaster recovery plan
and regularly testing it can help ensure that systems can quickly recover from disruptions;Continuous testing;
Continuously testing systems and applications can help identify and fix issues before they become critical;High
availability;Designing systems for high availability helps to ensure that systems remain up and running even in
the event of failures or disruptions;By focusing on these components, DevOps teams can create a resilient and
adaptive DevOps system that is able to deliver high-quality applications and services, even in the face of
failures and disruptions.

You might also like