Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Continuous Delivery
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
81
DDD - o jeden krok za dalego
lszydlo
0
1.5k
Architectural Anti-patterns
lszydlo
1
470
Other Decks in Technology
See All in Technology
JavaScript 研修 (2026)
recruitengineers
PRO
2
600
同じWAFが、攻撃の“形”は弾く── 正当な“形”の不正は通す
kuroneko13
0
220
My broken English still works: speaking at global OSS events
naruoga
0
110
Model Studio CLI × Token Plan
maigo999
0
190
ソフトウェアサプライチェーンの構造的リスクとコンテナ環境の保護
kyohmizu
4
370
Webアクセシビリティ入門 2026
recruitengineers
PRO
3
630
強化学習「理論」入門
enakai00
3
3.6k
PLATEAU で バーチャル花火大会
tatsuya1970
0
160
MIRU 2026 チュートリアル
keisuke198619
0
970
【AG-UI × A2UI × MCP Apps】Generative UIをやさしく解説する
nrinetcom
PRO
1
140
FPGAが実現する遠方宇宙の高空間分解能天体撮影 -大型地上望遠鏡の視力を補正する「補償光学」とは?-
komei_mt
0
280
モダンフロントエンド 開発研修
recruitengineers
PRO
4
740
Featured
See All Featured
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
210
Scaling GitHub
holman
464
140k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
470
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
390
Accessibility Awareness
sabderemane
1
180
Practical Orchestrator
shlominoach
191
12k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
490
Exploring anti-patterns in Rails
aemeredith
3
460
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
Crafting Experiences
bethany
1
250
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
490
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