modern continuous delivery · continuous delivery “ a set of practices and principles in software...

34
Modern Continuous Delivery Modern Continuous Delivery deploy to production deploy to production from commit #1 from commit #1

Upload: others

Post on 22-Jun-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Modern Continuous DeliveryModern Continuous Delivery

“ deploy to productiondeploy to productionfrom commit #1from commit #1

Page 3: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Continuous DeliveryContinuous Delivery“ a set of practices and principles in software engineering

aimed at building, testing, and releasing software safely, faster, more frequently, and in a sustainable way.

Source: painless.software/continuous-delivery

Page 4: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Continuous DeliveryContinuous Delivery“ a set of practices and principles in software engineering

aimed at building, testing, and releasing software safely, faster, more frequently, and in a sustainable way.

“ the goal is to put the release schedule in the hands of the business, not in the hands of IT.

Source: painless.software/continuous-delivery

Page 5: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Continuous DeliveryContinuous Delivery“ a set of practices and principles in software engineering

aimed at building, testing, and releasing software safely, faster, more frequently, and in a sustainable way.

“ the goal is to put the release schedule in the hands of the business, not in the hands of IT.

Source: painless.software/continuous-delivery

?? ??

Continuous

Continuous

inte

gratio

n

inte

gratio

n

Page 6: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Continuous DeliveryContinuous Delivery“ a set of practices and principles in software engineering

aimed at building, testing, and releasing software safely, faster, more frequently, and in a sustainable way.

“ the goal is to put the release schedule in the hands of the business, not in the hands of IT.

Source: painless.software/continuous-delivery

?? ??

Continuous

Continuous

inte

gratio

n

inte

gratio

n

?? ??

Continuous

Continuous

deployment

deployment

Page 7: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Modern?Modern?

Page 8: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Modern?Modern?Immutable infrastructureImmutable infrastructure

Page 9: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Modern?Modern?Immutable infrastructureImmutable infrastructure

Container orchestrationContainer orchestration

Page 10: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Modern?Modern?Immutable infrastructureImmutable infrastructure

Container orchestrationContainer orchestration

Version control + automationVersion control + automation

Page 11: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Modern?Modern?Immutable infrastructureImmutable infrastructure

Container orchestrationContainer orchestration

Version control + automationVersion control + automation

Cloud-native applicationsCloud-native applications

Page 12: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Choice or Lock-in?Choice or Lock-in?

Page 13: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

1. Clean code1. Clean code

2. Deploy to production2. Deploy to production from commit #1from commit #1

There must be a better way!There must be a better way!

Page 15: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Responsibility LayersResponsibility Layers

Page 16: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Responsibility LayersResponsibility Layers

ApplicationApplication

Page 17: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Responsibility LayersResponsibility Layers

ApplicationApplication

DevelopmentDevelopment

Page 18: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Responsibility LayersResponsibility Layers

ApplicationApplication

DevelopmentDevelopment

DeploymentDeployment

Page 19: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Responsibility LayersResponsibility Layers

ApplicationApplication

DevelopmentDevelopment

DeploymentDeployment

AutomationAutomation

Page 20: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

ApplicationApplication

One environment!12-factor app.

Build with features.Compose in environments.

11

Page 21: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

DevelopmentDevelopment

Make it easy!Standard practices.

No comprehensive instructions.Simple & user-friendly!

33

Page 22: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

DeploymentDeployment

Make it beautiful!Easy to explain.

Generate + seal your secrets,or seal + commit your secrets.

22

Page 23: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

AutomationAutomation

Keep it simple!What you would do manually.

Tell a story!ASAP

44

Page 24: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

ASAP!ASAP!as simple as possibleas simple as possible

Page 25: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Deploy to production!Deploy to production!often + from commit #1often + from commit #1

Page 26: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Iterate!Iterate!... and improve... and improve

Page 27: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Agile, please.Agile, please.test-driven, pair-programmingtest-driven, pair-programming

Page 28: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Free your softwareFree your softwareno secrets, no security holesno secrets, no security holes

Page 29: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

“ The only way to go fastThe only way to go fast is to go well.is to go well.

--- Robert C. Martin

Source: , 2015Technology and Friends, Episode 354

Page 31: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. 

Pythonistas OathPythonistas Oath

11

Page 32: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one­­ only one ­­obvious way to do it. Although that way may not be obvious at first sight.

Pythonistas OathPythonistas Oath

22

Page 33: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea.

Pythonistas OathPythonistas Oath

33

Page 34: Modern Continuous Delivery · Continuous Delivery “ a set of practices and principles in software engineering aimed at building , testing , and releasing software safely , faster

Continuous delivery is a honking great idea. If you deploy to production from commit #1.  Let's do it! ­­ I start today.

Pythonistas OathPythonistas Oath

44

Python