DevOps - Unit - 1
DevOps - Unit - 1
• Introduction to SDLC
• Agile Model
• Introduction to Devops
• DevOps Features
• DevOps Architecture
• DevOps Lifecycle
• Understanding Workflow and principles
• Introduction to DevOps tools
• Build Automation
• Delivery Automation
• Understanding Code Quality
• Automation of CI/CD
DevOps Definition
• DevOps is the combination of cultural philosophies,
practices, and tools that increases an organization’s ability
to deliver applications and services at high velocity.
• Planning
• Requirements Analysis
• Design
• Coding
• Unit Testing and
• Acceptance Testing.
At the end of the iteration, a working product is
displayed to the customer and important
stakeholders.
What is Agile?
• Agile model believes that every project needs to
be handled differently and the existing methods
need to be tailored to best suit the project
requirements.
• In Agile, the tasks are divided to time boxes (small
time frames) to deliver specific features for a
release.
• Iterative approach is taken and working software
build is delivered after each iteration.
• Each build is incremental in terms of features; the
final build holds all the features required by the
customer.
The graphical illustration of the Agile Model
Following are the Agile Manifesto principles −
Agile Model – Pros
• The advantages of the Agile Model are as follows −
• Is a very realistic approach to software development.
• Promotes teamwork and cross training.
• Functionality can be developed rapidly and
demonstrated.
• Suitable for fixed or changing requirements
• Delivers early partial working solutions.
• Minimal rules, documentation easily employed.
• Enables concurrent development and delivery within
an overall planned context.
• Little or no planning required.
• Easy to manage.
• Gives flexibility to developers.
The disadvantages of the Agile Model are as
follows −
2) Collaboration
• DevOps is a collaboration of the Development and
Operations team. It improves the working model
of the teams and they become more productive
with their productivity, which strengthens
accountability and ownership.
3) Integration
• Software Applications need to be integrated with
other components in the environment. The
integration phase is where the existing code is
combined/merged with new features/functionality
and then tested. Continuous integration and testing
enable continuous development.
4) Configuration management
• Configuration management helps in building
robust and stable systems for the engineering
teams using tools that can automatically manage
and monitor updates to the configuration data.
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.
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.
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 Lifecycle
• DevOps 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.
• 1) 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.
• Examples : GitHub,Git,GitLab,Apache
Subversion (SVN)
• 2) 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.
• The code supporting new functionality is
continuously integrated with the existing code.
• Therefore, there is continuous development of
software.
• The updated code needs to be integrated
continuously and smoothly with the systems to
reflect changes to the end-users.
3) 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.
4) Continuous Monitoring
• 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.
5) 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.
6) Continuous Deployment
• 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.
7) Continuous Operations
All DevOps operations are based on the continuity with complete
automation of the release process and allow the organization to
accelerate the overall time to market continuingly.
Understanding DevOps Workflow and principles
• DevOps Workflow
• DevOps workflow provides a visual overview
of the sequence in which input is provided.
Also, it tells about which one action is
performed, and output is generated for an
operations process.
Sequential Job Execution