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 http://www.baystreetblog.com/wp-content/uploads/2016/01/7206414716_775221df73_o.jpg
Regulations & compliance @boyanio
No errors allowed @boyanio
Long decision-making process @boyanio
@boyanio https://blog.weekdone.com/team-goal-setting-questions-to-ask/
Goal: delivering value to our members on a frequent basis @boyanio
How does one create a development process from the scratch? @boyanio
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
Trunk-based development PR PR feature-a feature-b master 1.1.0 1.1.1 2.0.0 @boyanio
Long-lived branches disguise the big picture @boyanio http://www.bbc.co.uk/london/travel/downloads/tube_map.gif
“Continuous integration (CI) is the practice of merging all developer working copies to a shared mainline several times a day ” Wikipedia @boyanio https://en.wikipedia.org/wiki/Continuous_integration
Continuous Integration Feedback </> Code Unit Push Build analysis tests Run VCS Watch @boyanio
Always deployable https://cdn.vox-cdn.com/thumbor/FvSVfmTI5xV8JN74IAkp_R2dmtk=/0x0:2000x1333/1200x800/filters:focal(0x0:2000x1333)/cdn.vox- @boyanio cdn.com/uploads/chorus_image/image/49709579/Blue_Origin_New_Shepard_launch.0.0.jpg
Continuous Integration Feedback </> Code Unit Push Build Package analysis tests Run VCS Watch @boyanio
Fact 1. Continuous integration does not guarantee you built the right thing @boyanio
We want X Let’s build Y @boyanio https://www.quora.com/How-do-I-develop-an-Agile-methodology-mindset-while-implementing-a-project
Fact 2. Continuous integration does not guarantee you built the thing right @boyanio
public class BasketTests { [Fact] public void ThrowsWhenNullIsPassedToAdd() { var basket = new Basket(); Assert.Throws<ArgumentNullException>( () => basket.Add(null)); } } @boyanio
@boyanio
Creating a development process means creating a development culture @boyanio
Building trust @boyanio https://hackernoon.com/the-worlds-trust-issues-and-the-value-of-crypto-976bc1b2080
Manual tests Manual tests GUI tests vs. Integration Automated tests tests Unit tests @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 @boyanio
Using Gherkin syntax 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 @boyanio
@boyanio
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/
@boyanio
Manual deployment is dangerous https://d2v9y0dukr6mq2.cloudfront.net/video/thumbnail/S8v_HKLYirmlowrd/videoblocks-builder-welds-parts-outdoors-installation-and-production-in-slow-motion-in-afternoon- @boyanio man-work-in-gloves-protective-clothing-in-the-pit-dangerous-manual-labor-outside-merge-structure-of-details_sufbahncl_thumbnail-full08.png
Automated deployment to any environment Fetch Install Verify Provide package package installation feedback @boyanio
Identical environment set-up @boyanio
Build once, deploy everywhere @boyanio
Octopus Deploy @boyanio
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
How often shall we deploy to production? @boyanio
The fear of deployment @boyanio https://pbs.twimg.com/media/DMuLK82V4AAd1Po.jpg
When you fear something, you should do it often enough. Then it becomes trivial. @boyanio
Days between deploying to Production 50 40 30 20 10 0 @boyanio
Release Deploy The act of making single or The act of installing and multiple features available to a configuring a software wider audience package onto a target system @boyanio
Feature toggles let you deploy often without releasing immediately OFF ON @boyanio
Zero downtime deployment using blue-green deployment approach Version 1.1.0 Load balancer Version 1.0.0 @boyanio
@boyanio https://flexagon.com/solutions/continuous-delivery/
Q: Shall we move to Continuous Deployment? A: We can, but we don’t have to @boyanio
How robust is the deployment pipeline? @boyanio
The deployment pipeline supports the established agile practices and desired goals @boyanio https://hundred5.com
Keep things simple Keep things identical Build trust in your delivery Automate the repeatable Don’t hype, make it work for you @boyanio
Robust deployment pipeline is about confidence in your value delivery Boyan Mihaylov @boyanio https://boyan.io
Recommend
More recommend