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
音声コミュニティを守るAI監視基盤_ 90%以上の入力削減を支えたServerless設計と運用判断
shuheioka123
0
110
Datadog で始める トークンセーフティなAI 導⼊と定着
vkbaba
1
110
品質と信頼性を地続きにする
grimoh
3
1.3k
「今盗んで、後で解く」に備える ― AWSのポスト量子暗号入門
yama3133
2
260
GoのInterface内部構造から学ぶ!最高パフォーマンスを出すコード設計
yappli_developers
1
300
10年欲しかった音楽管理アプリを、AIと一緒に作りはじめた
judau
1
160
AIエージェント時代のPlatform as a Product —— テックリードがPdMとして回す発見・導入・計測 / Platform as a Product in the AI Agent Era
toshi0607
1
420
メルカリにおけるAI時代の高速プロトタイピング基盤「Arca」
ryotarai
16
12k
ScotSecure West 2026 - Glasgow
raybugg
0
190
GitHub Agentic Workflows を触ってみる
htkym
2
780
3人で1000GPU超を統合運用する?マルチクラウド&オンプレを跨ぐ、構築と運用のリアル!
kazukun0716
2
530
Antigravity SDK for the Java Developer
glaforge
0
220
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
55
8.3k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Writing Fast Ruby
sferik
630
63k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Practical Orchestrator
shlominoach
192
12k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
570
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
510
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
390
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