Crafting a robust deployment pipeline in finance Boyan Mihaylov - - PowerPoint PPT Presentation

crafting a robust deployment
SMART_READER_LITE
LIVE PREVIEW

Crafting a robust deployment pipeline in finance Boyan Mihaylov - - PowerPoint PPT Presentation

Crafting a robust deployment pipeline in finance Boyan Mihaylov Software architect and developer @boyanio https://boyan.io Establish in-house development at a pension fund @boyanio How does it feel inside a financial institution? @boyanio


slide-1
SLIDE 1

Crafting a robust deployment pipeline in finance

Boyan Mihaylov

Software architect and developer @boyanio https://boyan.io

slide-2
SLIDE 2

Establish in-house development at a pension fund

@boyanio

slide-3
SLIDE 3

How does it feel inside a financial institution?

@boyanio

http://www.baystreetblog.com/wp-content/uploads/2016/01/7206414716_775221df73_o.jpg

slide-4
SLIDE 4

Regulations & compliance

@boyanio

slide-5
SLIDE 5

No errors allowed

@boyanio

slide-6
SLIDE 6

Long decision-making process

@boyanio

slide-7
SLIDE 7

@boyanio

https://blog.weekdone.com/team-goal-setting-questions-to-ask/

slide-8
SLIDE 8

Goal: delivering value to our members on a frequent basis

@boyanio

slide-9
SLIDE 9

How does one create a development process from the scratch?

@boyanio

slide-10
SLIDE 10

Start simple, stay simple as long as possible

@boyanio

https://www.ca.com/en/blog-highlight/wp-content/blogs.dir/2/files/sites/6/2016/10/GettyImages-598070812-legos.jpg

slide-11
SLIDE 11

feature-b feature-a

Trunk-based development

@boyanio

master 1.1.0 2.0.0 1.1.1 PR PR

slide-12
SLIDE 12

Long-lived branches disguise the big picture

@boyanio

http://www.bbc.co.uk/london/travel/downloads/tube_map.gif

slide-13
SLIDE 13

“Continuous integration (CI) is the practice of merging all developer working copies to a shared mainline several times a day”

@boyanio

Wikipedia

https://en.wikipedia.org/wiki/Continuous_integration

slide-14
SLIDE 14

Continuous Integration

@boyanio

VCS

</> Feedback Push Watch Run Build Code analysis Unit tests

slide-15
SLIDE 15

Always deployable

@boyanio

https://cdn.vox-cdn.com/thumbor/FvSVfmTI5xV8JN74IAkp_R2dmtk=/0x0:2000x1333/1200x800/filters:focal(0x0:2000x1333)/cdn.vox- cdn.com/uploads/chorus_image/image/49709579/Blue_Origin_New_Shepard_launch.0.0.jpg

slide-16
SLIDE 16

Continuous Integration

@boyanio

VCS

</> Feedback Push Watch Run Build Code analysis Unit tests Package

slide-17
SLIDE 17

Fact 1. Continuous integration does not guarantee you built the right thing

@boyanio

slide-18
SLIDE 18

@boyanio

We want X Let’s build Y

https://www.quora.com/How-do-I-develop-an-Agile-methodology-mindset-while-implementing-a-project

slide-19
SLIDE 19

Fact 2. Continuous integration does not guarantee you built the thing right

@boyanio

slide-20
SLIDE 20

@boyanio

public class BasketTests { [Fact] public void ThrowsWhenNullIsPassedToAdd() { var basket = new Basket(); Assert.Throws<ArgumentNullException>( () => basket.Add(null)); } }

slide-21
SLIDE 21

@boyanio

slide-22
SLIDE 22

Creating a development process means creating a development culture

@boyanio

slide-23
SLIDE 23

Building trust

@boyanio

https://hackernoon.com/the-worlds-trust-issues-and-the-value-of-crypto-976bc1b2080

slide-24
SLIDE 24

@boyanio

Manual tests Unit tests Integration tests GUI tests vs. Automated tests Manual tests

slide-25
SLIDE 25

@boyanio

Steps to perform:

  • 1. Go to the homepage
  • 2. Log in as a member
  • 3. Go to the retirement page
  • 4. Go through the online retirement process
  • 5. Sign your choices

Confirm:

  • you got a confirmation e-mail
  • there is a summary document in the archive
  • there is a update request in the core system
slide-26
SLIDE 26

Using Gherkin syntax

@boyanio

Feature: Retirement Scenario: Complete retirement procedure Given I am a member of the pension fund And I am 67 years old When I log in on the web portal And I navigate to the retirement self-service And I fill in my details And I sign my choices Then I should get a confirmation e-mail And I should see a copy of my choices in my archive And I should see my monthly pension payouts

slide-27
SLIDE 27

@boyanio

slide-28
SLIDE 28

pro•duc•tion [pruh-duhk-shuhn] (n)

  • 1. This complex system of application code,

distributed services, servers, networking gear, etc., upon which we are going to try to carefully apply a complicated set of changes and hope that nothing goes wrong. Cross your finders…here goes.

@boyanio

https://www.slideshare.net/mikebrittain/principles-and-practices-in-continuous-deployment-at-etsy/

slide-29
SLIDE 29

@boyanio

slide-30
SLIDE 30

Manual deployment is dangerous

@boyanio

https://d2v9y0dukr6mq2.cloudfront.net/video/thumbnail/S8v_HKLYirmlowrd/videoblocks-builder-welds-parts-outdoors-installation-and-production-in-slow-motion-in-afternoon- man-work-in-gloves-protective-clothing-in-the-pit-dangerous-manual-labor-outside-merge-structure-of-details_sufbahncl_thumbnail-full08.png

slide-31
SLIDE 31

Automated deployment to any environment

@boyanio

Fetch package Install package Verify installation Provide feedback

slide-32
SLIDE 32

Identical environment set-up

@boyanio

slide-33
SLIDE 33

Build once, deploy everywhere

@boyanio

slide-34
SLIDE 34

Octopus Deploy

@boyanio

slide-35
SLIDE 35

Production deployment process

  • Deploy to a fictive-data test environment
  • Run automated UI tests
  • Promote to an acceptance test environment
  • Perform manual tests
  • Create RFC
  • Promote to production

@boyanio

slide-36
SLIDE 36

How often shall we deploy to production?

@boyanio

slide-37
SLIDE 37

The fear of deployment

@boyanio

https://pbs.twimg.com/media/DMuLK82V4AAd1Po.jpg

slide-38
SLIDE 38

When you fear something, you should do it often enough. Then it becomes trivial.

@boyanio

slide-39
SLIDE 39

Days between deploying to Production

@boyanio

10 20 30 40 50

slide-40
SLIDE 40

Release

@boyanio

The act of making single or multiple features available to a wider audience The act of installing and configuring a software package onto a target system

Deploy

slide-41
SLIDE 41

Feature toggles

let you deploy often without releasing immediately

@boyanio

OFF ON

slide-42
SLIDE 42

Zero downtime deployment

using blue-green deployment approach

@boyanio

Version 1.1.0 Version 1.0.0 Load balancer

slide-43
SLIDE 43

@boyanio

https://flexagon.com/solutions/continuous-delivery/

slide-44
SLIDE 44

Q: Shall we move to Continuous Deployment?

@boyanio

A: We can, but we don’t have to

slide-45
SLIDE 45

How robust is the deployment pipeline?

@boyanio

slide-46
SLIDE 46

The deployment pipeline supports the established agile practices and desired goals

@boyanio

https://hundred5.com

slide-47
SLIDE 47

Keep things simple Keep things identical Build trust in your delivery Automate the repeatable Don’t hype, make it work for you

@boyanio

slide-48
SLIDE 48

Robust deployment pipeline is about confidence in your value delivery

Boyan Mihaylov

@boyanio https://boyan.io