Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Peter Bittner Peter Bittner Developer Developer of people, companies and code of people, companies and code @peterbittner, [email protected] behave-django pyclean djangocms-maps ansible-role-software django-probes django-apptemplates codeship-yaml django-organice PythonTurtle painless/tox django-bootstrap-static

Slide 3

Slide 3 text

Continuous Delivery Continuous 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

Slide 4

Slide 4 text

Continuous Delivery Continuous 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

Slide 5

Slide 5 text

Continuous Delivery Continuous 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 integration integration

Slide 6

Slide 6 text

Continuous Delivery Continuous 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 integration integration ?? ?? Continuous Continuous deploym ent deploym ent

Slide 7

Slide 7 text

Modern? Modern?

Slide 8

Slide 8 text

Modern? Modern? Immutable infrastructure Immutable infrastructure

Slide 9

Slide 9 text

Modern? Modern? Immutable infrastructure Immutable infrastructure Container orchestration Container orchestration

Slide 10

Slide 10 text

Modern? Modern? Immutable infrastructure Immutable infrastructure Container orchestration Container orchestration Version control + automation Version control + automation

Slide 11

Slide 11 text

Modern? Modern? Immutable infrastructure Immutable infrastructure Container orchestration Container orchestration Version control + automation Version control + automation Cloud-native applications Cloud-native applications

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

1. Clean code 1. Clean code 2. Deploy to production 2. Deploy to production from commit #1 from commit #1 There must be a better way! There must be a better way!

Slide 14

Slide 14 text

Demo Demo

Slide 15

Slide 15 text

Responsibility Layers Responsibility Layers

Slide 16

Slide 16 text

Responsibility Layers Responsibility Layers Application Application

Slide 17

Slide 17 text

Responsibility Layers Responsibility Layers Application Application Development Development

Slide 18

Slide 18 text

Responsibility Layers Responsibility Layers Application Application Development Development Deployment Deployment

Slide 19

Slide 19 text

Responsibility Layers Responsibility Layers Application Application Development Development Deployment Deployment Automation Automation

Slide 20

Slide 20 text

Application Application One environment! 12-factor app. Build with features. Compose in environments. 1 1

Slide 21

Slide 21 text

Development Development Make it easy! Standard practices. No comprehensive instructions. Simple & user-friendly! 3 3

Slide 22

Slide 22 text

Deployment Deployment Make it beautiful! Easy to explain. Generate + seal your secrets, or seal + commit your secrets. 2 2

Slide 23

Slide 23 text

Automation Automation Keep it simple! What you would do manually. Tell a story! ASAP 4 4

Slide 24

Slide 24 text

ASAP! ASAP! as simple as possible as simple as possible

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

Free your software Free your software no secrets, no security holes no secrets, no security holes

Slide 29

Slide 29 text

“ The only way to go fast The only way to go fast is to go well. is to go well. --- Robert C. Martin Source: , 2015 Technology and Friends, Episode 354

Slide 30

Slide 30 text

Thank you! Thank you! for your precious time for your precious time Painless Software Painless Software Less pain, more fun.

Slide 31

Slide 31 text

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 Oath Pythonistas Oath 1 1

Slide 32

Slide 32 text

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 Oath Pythonistas Oath 2 2

Slide 33

Slide 33 text

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 Oath Pythonistas Oath 3 3

Slide 34

Slide 34 text

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