0% found this document useful (0 votes)
31 views30 pages

SOC CICD Introduction

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

SOC CICD Introduction

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

CONTINUOUS INTEGRATION AND CONTINUOUS DELIVERY

USING DevOps
1

R20-B.Tech-III/I
Common to IT, CSE, CSE (AI&ML)

Prepared by:
Ambarisha Malladi, Asst. Prof.,
Department of IT, Tirumala Engineering College (Autonomous)
(An ISO 9001:2015 Certified Institution, Accredited by NAAC with grade A+ & NBA)
Jonnalagadda (V), Narasaraopet-522601, AP, India
Course Outcomes
2

 At the end of the Course, Student will be able to:


 Understand the why, what and how of DevOps
adoption
 Attain literacy on Devops

 Align capabilities required in the team

 Create an automated CICD pipeline using a stack of


tools
Roadmap
3

 Motivation - Complexity in Software development


 Get Acquainted
 Agile Development
 Introduction to DevOps
Motivation - Complexity in Software
development
4

 These days, computers are utilized in solving many mission-


critical problems and they are playing a vital role in the fields
of Space, Defense, Research, Engineering, Medicine, Industry,
Business, and even in Music, Games, and Painting, …
 For example, Inter-Continental Ballistic Missiles (ICBM) in
defense and launching of satellites in space cannot be
controlled without computers.
Motivation - Complexity in Software
development (Cont)
5

 Factors influencing the complexity of software


development are:
Motivation - Complexity in Software
development (Cont)
6

 Stakeholders in a software product are usually concerned


with two broad categories of characteristics of software:
Functionality and Attributes
 Stakeholders are also interested in seeing that the attributes
of a software product meet some minimum level. Typical
attributes are:
 Maintainability: This is a measure of how easy a system is to maintain
during its deployed life.
 Dependability: This is a measure of how “trustworthy” the software is -
safety, reliability, availability and security of a system.
 Efficiency: Time – development, integration and testing, deployment,
maintenance.
 Usability: Usability is a measure of how easy the system is to use.
Motivation - Complexity in Software
development (Cont)
7

 Existing models and methods were found unsuitable


because, a change in requirement, analysis, or design phase
can cause the programming to start from the beginning once
again.
 The objective is build robust, secure, reliable, flexible,
modifiable, reusable software components, and cost-effective
software product.
Get Acquainted
8

 What is Software Engineering?


 Software engineering is an engineering discipline that is concerned
with all aspects of software production.
 What is Software Process?
 A software process is a sequence of activities that leads to the
production of a software product - Software specification (Constraints
and Operations), Software development (Design and programming),
Software validation (Ensuring what the customer requires), Software
evolution (modifications to reflect changing customer/society
requirements)
Get Acquainted (Cont)
9

 These generic models are not definitive descriptions of


software processes.
 They are abstractions of the process that can be used to
explain different approaches to software development.
 The waterfall model
 Incremental development (rapid feedback across activities) -
fundamental part of agile approaches.
 Evolutionary models – Prototype, Spiral, Concurrent models
 Component-Based Development, Formal Methods Model,
Aspect-Oriented Software Development, Rational Unified
Process
Agile Development
10

 The philosophy encourages customer satisfaction and early


incremental delivery of software - small, highly motivated
project teams, informal methods, minimal software
engineering, work products, and overall development
simplicity.
 The development guidelines stress delivery over analysis and
design and active and continuous communication between
developers and customers.
 The basic framework activities—communication, planning,
modeling, construction, and deployment—remain.
Agile Development (Cont)
11

 Both the customer and the software engineer have the same
view - the only really important work product is an
operational “software increment” that is delivered to the
customer on the appropriate commitment date.
 If the agile team agrees that the process works, and the team
produces deliverable software increments that satisfy the
customer, you’ve done it right.
 Extreme Programming (XP), the most widely used approach
to agile software development.
Agile Development (Cont)
12
Agile Development (Cont)
13

 Other Agile Process Models:


 Adaptive Software Development (ASD)
 Scrum
 Dynamic Systems Development Method (DSDM)
 Crystal
 Feature Drive Development (FDD)
 Lean Software Development (LSD)
 Agile Modeling (AM)
 Agile Unified Process (AUP)
Introduction to DevOps
14

 DevOps is a software development practice that promotes


collaboration between development and operations,
resulting in faster and more reliable software delivery.
 Commonly referred to as a culture, DevOps connects people,
process, and technology to deliver continuous value.
 Connecting development and operations leads to increased
visibility, more accurate requirements, improved
communication, and faster time to market.
 DevOps bridges the gap between development and
operations, creating significant efficiencies across the
development and deployment of software.
Introduction to DevOps (Cont)
15

 The term DevOps is the blend of


two words "Development" and
"Operations“.
 Permits a single team to handle the
complete application of the
development cycle namely
development, testing, monitoring,
and deployment whilst rendering
the features, updates, and fixes in
harmony with the business goals
and objectives.
Note: DevOps and agile can be used
together to create a highly efficient
software development environment.
Architecture of DevOps
16

 DevOps has no individual, fixed architecture. Still, there are


some important architecture principles that DevOps
organizations should bear in mind.
Fundamentals of DevOps Practice
17

 Agile planning and lean project management:


 Agile development is a delivery approach that relates to lean
manufacturing.
 The development is completed in short, incremental sprints.
 Although it is different than DevOps, the two approaches are not
mutually exclusive—agile practices and tools can help drive efficiencies
within the development team, contributing to the overall DevOps
culture.
Fundamentals of DevOps Practice (Cont)
18

 Micro services:
 It is a well-planned approach that supports building single apps as a
package for small services.
 All the services in these applications are capable of communicating
through well-defined interfaces.
 It utilizes the lightweight mechanism which is mostly the HTTP-
oriented API.
 Cloud Platforms
 These enable IT to allocate resources within the cloud (virtual
environments) rather than on-premises.
 As a result, users can get to resources with greater speed and
flexibility.
Fundamentals of DevOps Practice (Cont)
19

 Virtualization
 In the days before virtualization, servers were physical hardware, and
you needed to purchase a second if one wasn’t enough.
 However, virtualization empowers teams to create virtual servers:
software developers can build virtual environments on current on-site
or cloud servers instead of investing in new hardware.
 This eliminates a potential bottleneck for agile teams, while teams can
leverage automated provisioning to access essential resources within
minutes.
Fundamentals of DevOps Practice (Cont)
20

 Version Control
 With a team working together, version control is a crucial part of
accurate, efficient software development.
 A version control system—such as Git—takes a snapshot of your files,
letting you permanently go back to any version at any time.
 With a version control system, you can be confident you won’t run into
conflicts with the changes you’re working on.
Fundamentals of DevOps Practice (Cont)
21

 Continuous integration:
 Continuous integration is the process of automating builds and testing
that occur as the code is completed and committed to the system.
 Once the code is committed, it follows an automated process that
provides validation—and then commits only tested and validated code
into the main source code, which is often referred to as the master
branch, main, or trunk.
 Continuous integration automates this process, which leads to
significant efficiencies.
 Any bugs are identified early on, prior to merging any code with the
master branch.
Fundamentals of DevOps Practice (Cont)
22

 Continuous delivery:
 Continuous delivery is the fundamental practice that occurs within
DevOps enabling the delivery of fast, reliable software.
 While the process is similar to the overarching concept of DevOps,
continuous delivery is the framework where every component of code
is tested, validated, and committed as they are completed, resulting in
the ability to deliver software at any time.
 Continuous integration is a process that is a component of continuous
delivery.
Fundamentals of DevOps Practice (Cont)
23

 Infrastructure as code:
 Provisioning and configuration of resources is a key part of
environment operations.
 Through process automation and the use of tools that provide a
declarative definition of infrastructure—for example, text-based
definition files—teams can deploy and configure resources in a
reliable, repeatable way.
 The text-based definition files can be managed as code with version
control, allowing for easy rollback, re-creation, and teardown of
complex environments.
 Technologies such as Terraform or Ansible are common solutions for
the implementation of infrastructure as code.
Fundamentals of DevOps Practice (Cont)
24

 Monitoring and Logging:


 The scope of DevOps goes beyond development, maintaining
responsibility for the software through delivery, including software
performance.
 The entire process of DevOps creates a feedback loop, ultimately
providing data points that can both help improve a future project and
validate the decision to deploy the software.
 Monitoring and logging are key components that support validated
learning, which then supports the overall initiative to consistently
strive toward greater efficiency in the software development and
delivery process.
Fundamentals of DevOps Practice (Cont)
25

 Validated learning:
 Throughout the lifecycle, feedback and telemetry data is gathered to
help inform decisions for the next cycle.
 This information is referred to as validated learning. Validated learning
helps provide insight into new ways to reduce the amount of time per
cycle.
 The gathered data is then used to find ways to increase automation,
improve processes, and prepare for deployment more quickly and
efficiently.
DevSecOps
26

 DevSecOps refers to the integration of security practices into the


DevOps approach.
 Everyone involved is accountable for maintaining security, as
opposed to developers passing code on to a separate team
specializing in security in the final stages of the process.
 DevSecOps is intended to produce secure software in less time and
with less issues in the later stages (resulting in reduced rework).
 The following principles are generally regarded as being
fundamental to DevSecOps:
 Introducing security thinking at an early stage in the software
development process.
 Adding security thinking as an essential responsibility to development
teams rather than being the exclusive concern of a separate team.
 Automating security processes to aid the efficiency of the DevOps
workflow.
DevOps Tools
27

 In the case of automation:


 The Chef and Puppet are used for cross-platform configuration
management. These tools primarily handle the deployment,
configuration, infrastructure management, automation, and
management of the infrastructure.
 TeamCity, Jenkins, and Bamboo are the popular CI/CD software that
automates the tasks right from the beginning of the pipeline till the
deployment stage.
DevOps Tools (Cont)
28

 Specialized tools:
 For managing source code: Git (GitLab, GitHub), Bitbucket, CVS,
Subversion
 For managing configuration: Puppet, Chef, Ansible, CFEngine
 For release management: Jenkins, Travis, CircleCl, TeamCity, Gradle,
Bamboo
 For orchestration: Mesos, Zookeeper, Kubernetes
 For monitoring, virtualization, and containerization: Nagios, Icinga,
Monit, OpenStack, Vagrant, AWS, Docker, Kubernetes
 For logging and analyzing application lifecycle: Splunk (a popular
log management tool for DevOps), Datadog, SolarWinds Log
Analyzer
 Security Monitoring: Splunk, Suricata, Snort
Key Performance Indicators (KPIs) in
DevOps
29

 Deployment frequency: The aim is to perform small


deployments on a more frequent basis.
 Failed deployment rate: Try to cut the number of failed
deployments.
 Features released in a specific period: Many businesses think
in terms of months, but it can be any timeframe.
 Mean time to discovery (MTTD): The length of time that
passes before team members notice something has gone
wrong.
 Mean time to recovery (MTTR): The length of time that
passes before team members implement a fix.
Key Performance Indicators (KPIs) in
DevOps (Cont)
30

 Mean lead time (MLT): The length of time it takes from


requesting code to its implementation.
 Uptime: Measuring availability, including downtime that’s
planned and unplanned.
 Rate of escaping defects: The number of defects that reach
production as opposed to those QA teams catch.
 Performance of applications: Analyzing an application’s
performance after implementing a change compared to its
prior performance.

You might also like