CI/CD and Deployment Strategies in Software Development

 
CI/CD Overview
 
Agenda
 
CI&CD Overview
Continuous Integration
Continuous Delivery & Continuous Deployment
Deployment Strategies
 
CI & CD Overview
 
Continuous Integration
 
Continuous Integration (CI) is a development practice
where developers integrate code into a shared
repository frequently, preferably several times a day.
Each integration can then be verified by an
automated build and automated tests.
One of the key benefits of integrating regularly is that
you can detect errors quickly and locate them more
easily.
 
Continuous Delivery
 
Continuous Delivery is the next
extension of continuous integration.
The delivery phase is responsible for
packaging an artifact together to be
delivered to end users.
This build phase is kept ‘green,’
 
Continuous Deployment
 
Continuous Deployment is the final phase of the pipeline.
The deployment phase is responsible for automatically
launching and distributing the software artifact to end users.
This will happen through scripts or tools that automatically
move the artifact to public servers.
 
What’s difference?
 
Real case study
 
Micro-service application
Multiple instances application
Zero downtime
Performance testing with real traffic
Reduce deployment risks
Support marketing campaign
 
 
Deployment Strategies
 
R
e
c
r
e
a
t
e
:
 
V
e
r
s
i
o
n
 
A
 
i
s
 
t
e
r
m
i
n
a
t
e
d
 
t
h
e
n
 
v
e
r
s
i
o
n
 
B
 
i
s
 
r
o
l
l
e
d
 
o
u
t
.
R
a
m
p
e
d
 
(
a
l
s
o
 
k
n
o
w
n
 
a
s
 
r
o
l
l
i
n
g
-
u
p
d
a
t
e
 
o
r
 
i
n
c
r
e
m
e
n
t
a
l
)
:
 
V
e
r
s
i
o
n
B
 
i
s
 
s
l
o
w
l
y
 
r
o
l
l
e
d
 
o
u
t
 
a
n
d
 
r
e
p
l
a
c
i
n
g
 
v
e
r
s
i
o
n
 
A
.
B
l
u
e
/
G
r
e
e
n
:
 
V
e
r
s
i
o
n
 
B
 
i
s
 
r
e
l
e
a
s
e
d
 
a
l
o
n
g
s
i
d
e
 
v
e
r
s
i
o
n
 
A
,
 
t
h
e
n
t
h
e
 
t
r
a
f
f
i
c
 
i
s
 
s
w
i
t
c
h
e
d
 
t
o
 
v
e
r
s
i
o
n
 
B
.
C
a
n
a
r
y
:
 
V
e
r
s
i
o
n
 
B
 
i
s
 
r
e
l
e
a
s
e
d
 
t
o
 
a
 
s
u
b
s
e
t
 
o
f
 
u
s
e
r
s
,
 
t
h
e
n
p
r
o
c
e
e
d
 
t
o
 
a
 
f
u
l
l
 
r
o
l
l
o
u
t
.
A
/
B
 
t
e
s
t
i
n
g
:
 
V
e
r
s
i
o
n
 
B
 
i
s
 
r
e
l
e
a
s
e
d
 
t
o
 
a
 
s
u
b
s
e
t
 
o
f
 
u
s
e
r
s
 
u
n
d
e
r
s
p
e
c
i
f
i
c
 
c
o
n
d
i
t
i
o
n
.
S
h
a
d
o
w
:
 
V
e
r
s
i
o
n
 
B
 
r
e
c
e
i
v
e
s
 
r
e
a
l
-
w
o
r
l
d
 
t
r
a
f
f
i
c
 
a
l
o
n
g
s
i
d
e
 
v
e
r
s
i
o
n
A
 
a
n
d
 
d
o
e
s
n
t
 
i
m
p
a
c
t
 
t
h
e
 
r
e
s
p
o
n
s
e
.
 
Deployment Strategies
 
R
e
c
r
e
a
t
e
:
 
V
e
r
s
i
o
n
 
A
 
i
s
 
t
e
r
m
i
n
a
t
e
d
t
h
e
n
 
v
e
r
s
i
o
n
 
B
 
i
s
 
r
o
l
l
e
d
 
o
u
t
.
Pros:
-
Easy to setup.
-
Application state entirely renewed.
Cons:
-
High impact on the user, expect
downtime that depends on both
shutdown and boot duration of the
application.
 
 
 
Deployment Strategies
 
R
a
m
p
e
d
 
(
a
l
s
o
 
k
n
o
w
n
 
a
s
 
r
o
l
l
i
n
g
-
u
p
d
a
t
e
 
o
r
 
i
n
c
r
e
m
e
n
t
a
l
)
:
 
V
e
r
s
i
o
n
 
B
 
i
s
s
l
o
w
l
y
 
r
o
l
l
e
d
 
o
u
t
 
a
n
d
 
r
e
p
l
a
c
i
n
g
v
e
r
s
i
o
n
 
A
.
Pros:
-
Easy to set up.
-
Version is slowly released across
instances.
-
Convenient for stateful applications that
can handle rebalancing of the data.
Cons:
-
Rollout/rollback can take time.
-
No control over traffic.
 
 
Deployment Strategies
 
B
l
u
e
/
G
r
e
e
n
:
 
V
e
r
s
i
o
n
 
B
 
i
s
 
r
e
l
e
a
s
e
d
a
l
o
n
g
s
i
d
e
 
v
e
r
s
i
o
n
 
A
,
 
t
h
e
n
 
t
h
e
 
t
r
a
f
f
i
c
i
s
 
s
w
i
t
c
h
e
d
 
t
o
 
v
e
r
s
i
o
n
 
B
.
Pros:
-
Instant roll-out/rollback.
-
Avoid versioning issue, the entire
application state is changed in one go.
Cons:
-
Expensive as it requires double the
resources.
-
Proper test of the entire platform
should be done before releasing to
production.
 
 
Deployment Strategies
 
C
a
n
a
r
y
:
 
V
e
r
s
i
o
n
 
B
 
i
s
 
r
e
l
e
a
s
e
d
 
t
o
 
a
s
u
b
s
e
t
 
o
f
 
u
s
e
r
s
,
 
t
h
e
n
 
p
r
o
c
e
e
d
 
t
o
 
a
f
u
l
l
 
r
o
l
l
 
o
u
t
Pros:
-
Version released for a subset of
users.
-
Convenient for error rate and
performance monitoring.
-
Fast rollback.
Con:
-
Slow roll out
 
 
Deployment Strategies
 
A
/
B
 
t
e
s
t
i
n
g
:
 
V
e
r
s
i
o
n
 
B
 
i
s
r
e
l
e
a
s
e
d
 
t
o
 
a
 
s
u
b
s
e
t
 
o
f
 
u
s
e
r
s
u
n
d
e
r
 
s
p
e
c
i
f
i
c
 
c
o
n
d
i
t
i
o
n
.
Pros:
-
Several versions run in parallel.
-
Full control over the traffic
distribution.
Cons:
-
Requires intelligent load
balancer.
 
 
Deployment Strategies
 
S
h
a
d
o
w
:
 
V
e
r
s
i
o
n
 
B
 
r
e
c
e
i
v
e
s
 
r
e
a
l
-
w
o
r
l
d
 
t
r
a
f
f
i
c
 
a
l
o
n
g
s
i
d
e
v
e
r
s
i
o
n
 
A
 
a
n
d
 
d
o
e
s
n
t
 
i
m
p
a
c
t
 
t
h
e
 
r
e
s
p
o
n
s
e
.
Pros:
-
Performance testing of the application with production traffic.
-
No impact on the user.
-
No roll out until the stability and performance of the application
meet the requirements.
Cons:
-
Expensive as it requires double the resources.
-
Not a true user test and can be misleading.
-
Complex to setup.
-
Requires mocking service for certain cases.
 
 
 
Deployment strategies metric
 
Source: https://thenewstack.io/deployment-strategies/
Slide Note
Embed
Share

Continuous Integration (CI) involves frequent code integration, automated testing, and error detection. Continuous Delivery (CD) extends CI by packaging artifacts for end users, while Continuous Deployment automatically deploys software. Explore deployment strategies like Blue/Green, Canary, and A/B testing to manage software releases effectively.

  • Software Development
  • CI/CD
  • Deployment Strategies
  • Automation
  • Testing

Uploaded on Sep 07, 2024 | 1 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. CI/CD Overview

  2. Agenda CI&CD Overview Continuous Integration Continuous Delivery & Continuous Deployment Deployment Strategies

  3. CI & CD Overview

  4. Continuous Integration Continuous Integration (CI) is a development practice where developers integrate code into a shared repository frequently, preferably several times a day. Each integration can then be verified by an automated build and automated tests. One of the key benefits of integrating regularly is that you can detect errors quickly and locate them more easily.

  5. Continuous Delivery Continuous Delivery is the next extension of continuous integration. The delivery phase is responsible for packaging an artifact together to be delivered to end users. This build phase is kept green,

  6. Continuous Deployment Continuous Deployment is the final phase of the pipeline. The deployment phase is responsible for automatically launching and distributing the software artifact to end users. This will happen through scripts or tools that automatically move the artifact to public servers.

  7. Whats difference?

  8. Real case study Micro-service application Multiple instances application Zero downtime Performance testing with real traffic Reduce deployment risks Support marketing campaign

  9. Deployment Strategies Recreate: Version A is terminated then version B is rolled out. Ramped (also known as rolling-update or incremental): Version B is slowly rolled out and replacing version A. Blue/Green: Version B is released alongside version A, then the traffic is switched to version B. Canary: Version B is released to a subset of users, then proceed to a full rollout. A/B testing: Version B is released to a subset of users under specific condition. Shadow: Version B receives real-world traffic alongside version A and doesn t impact the response.

  10. Deployment Strategies Recreate: Version A is terminated then version B is rolled out. Pros: - Easy to setup. - Application state entirely renewed. Cons: - High impact on the user, expect downtime that depends on both shutdown and boot duration of the application.

  11. Deployment Strategies Ramped (also known as rolling- update or incremental): Version B is slowly rolled out and replacing version A. Pros: - Easy to set up. - Version is slowly released across instances. - Convenient for stateful applications that can handle rebalancing of the data. Cons: - Rollout/rollback can take time. - No control over traffic.

  12. Deployment Strategies Blue/Green: Version B is released alongside version A, then the traffic is switched to version B. Pros: - Instant roll-out/rollback. - Avoid versioning issue, the entire application state is changed in one go. Cons: - Expensive as it requires double the resources. - Proper test of the entire platform should be done before releasing to production.

  13. Deployment Strategies Canary: Version B is released to a subset of users, then proceed to a full roll out Pros: - Version released for a subset of users. - Convenient for error rate and performance monitoring. - Fast rollback. Con: - Slow roll out

  14. Deployment Strategies A/B testing: Version B is released to a subset of users under specific condition. Pros: - Several versions run in parallel. - Full control over the traffic distribution. Cons: - Requires intelligent load balancer.

  15. Deployment Strategies Shadow: Version B receives real-world traffic alongside version A and doesn t impact the response. Pros: - Performance testing of the application with production traffic. - No impact on the user. - No roll out until the stability and performance of the application meet the requirements. Cons: - Expensive as it requires double the resources. - Not a true user test and can be misleading. - Complex to setup. - Requires mocking service for certain cases.

  16. Deployment strategies metric Strategy Zero downtime Real traffic testing Targeted users Cloud cost Rollback duration Negative impact on user Complexity of setup No No No Recreate Yes No No Ramped (rolling update) Yes No No Blue/green Yes Yes No Canary Yes Yes Yes A/B Testing Yes Yes No Shadow Source: https://thenewstack.io/deployment-strategies/

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#