Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Continuous Delivery
Search
lszydlo
May 26, 2017
Technology
88
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Continuous Delivery
lszydlo
May 26, 2017
More Decks by lszydlo
See All by lszydlo
Dlaczego dowozimy wolno?
lszydlo
0
82
DDD - o jeden krok za dalego
lszydlo
0
1.6k
Architectural Anti-patterns
lszydlo
1
470
Other Decks in Technology
See All in Technology
Omarchy Quattro の日本語設定周り
simosako
2
160
range over func 2年間の軌跡 Issue #56413 はGoのエコシステムをどう変えたか
ryujicre8ive
0
110
Podは生きているのにGoだけが落ちる:GOGCとGOMEMLIMITで追うInvisible OOM Killの謎
tkc66buzz
1
640
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
170
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
170
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
0
460
SQL文一行も書けない人事がCortexもろもろを使って人事業務を楽にしてみる
ponponmikankan
1
220
AIオーケストレーションを活用した 開発ワークフローの設計と実践
bqnq
0
150
AI活用の現在地、 ちゃんと見えてますか?/XPfest-2026
visional_engineering_and_design
0
210
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
1
690
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
14
8.1k
NW運用でNWトポロジ可視化ツールに期待すること/shumoku-meetup1
corestate55
2
120
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
55
8.3k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
460
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
280
Building Applications with DynamoDB
mza
96
7.2k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
450
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
Code Reviewing Like a Champion
maltzj
528
40k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
560
Scaling GitHub
holman
464
140k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
690
Transcript
Łukasz Szydło
[email protected]
Continuous Delivery
Survey Quick survey
What is CD? Our highest priority is to satisfy the
customer through early and continuous delivery of valuable software.
Technics - automated testing - continuous integration - continuous inspection
- continuous deployment
Technics - automated testing - continuous integration - continuous inspection
- continuous deployment
Definition Release = Deploy
Definition Release = Deploy Release - make feature accessible to
users
Definition Release = Deploy Release - make feature accessible to
users Deploy - put code artifact on server
Definition Release != Deploy Release - make feature accessible to
users Deploy - put code artifact on server
How to release it? Release
Branches slow you down { “Source” : “http://www.whitewolfpack.com/2012/10/hapless-lion-cubs-clumsy-bid-to-climb.html”}
Branches slow you down { “Source” : “http://nvie.com/posts/a-successful-git-branching-model/”}
Branches slow you down { “Source” : “http://www.uni-2.co.uk/latest_news/7-best-things-to-get-your-hand-stuck-in/”}
Introducing changes Branches as Code
Introducing changes Feature Switches
Release
Introducing changes Branching by abstraction
Introducing changes class DefaultPurchaseService implements PurchaseService { public Money calculateRabat(OrderNumber
orderNo){ Order order = ordersRepository.load(orderNo); RabatPolicy rabatPolicy = rabatPolicyFactory.get(); Money rabatValue = order.calculateRabat(rabatPolicy); return rabatValue; } public void addProduct(OrderNumber orderNo, ProductNumber productNo, Quantity quantity){ Product product = productsRepository.load(productNo); Order order = ordersRepository.load(orderNo); order.addProduct(product, quantity,); ordersRepo.save(order); } }
Introducing changes class DefaultRabatPolicyFactory implements RabatPolicyFactory { Map<Name, RabatPolicy> map
= newMap() .put(“default”, new DefRP()) .put(“newShiny”, new NewRP()) public RabatPolicy create(){ if(featureSwitcher.isNewRabatPolicyActive()) { return map.get(newShiny); } else { return map.get(default); } } }
Definition Safety Net Automated tests Application monitoring
Automatic testing How much coverage is enought?
Automatic testing Bugs - user can’t complete some action -
user can complete action wrong
Automatic testing Input Output Application Logic
Automatic testing Web DB Application Logic
Automatic testing Web DB Application Logic
Architecture Web DB Application Logic
Architecture Web DB Application Logic Security Config External … …
Architecture Do you remember PC? { “Source” : “https://st-julians-itgs.wikispaces.com/file/view/Ports.png/168851031/Ports.png”}
Architecture Web DB Application Logic Security Config External … …
Ports&Adapters/Hexagonal/Onion Architecture { “Source” : “http://www.natpryce.com/articles/000772.html”}
About me Programmer/Architect/Consultant Writes code mostly in Java Specializes in
DDD, CD, BDD Trainer at Bottega IT Solutions Branch free since 2010 (with small break)
[email protected]
Q&A Q&A