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
lszydlo
May 26, 2017
Technology
87
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
460
Other Decks in Technology
See All in Technology
UIパーツの設計を「型」から読み解く 〜TSKaigiのセッションから得た学び〜
yud0uhu
0
100
AIをフル活用してオンコール機能のプロトタイプを2日で作った話 / Building an AI-Powered On-Call Prototype in Just Two Days
nari_ex
0
140
トークン最適化のためのユーザーストーリー分析 / User Story Analysis for Token Optimization
oomatomo
0
120
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
300
脱SaaS!FDEを支えるプロビジョニングと分離設計
knih
0
300
Hatena Engineer Seminar 37 jj1uzh
jj1uzh
0
140
GitHub Copilot運用のリアル ~AI Credit時代にどう向き合うか~
takafumisu2uk1
0
480
“詰む”前に仕組みを作れ 〜技術の波に溺れないためのキャッチアップ術〜
takasyou
7
4.2k
From Prompt Engineering to Loop Engineering
shibuiwilliam
1
270
事業会社における 機械学習・推薦システム技術の活用事例と必要な能力 / ml-recsys-in-layerx-wantedly-2026
yuya4
0
160
飲食店もAIで。レジ締めやハンディシステムをつくってる話 / Using AI for restaurant management
vtryo
0
200
Multi-Agent並列開発を 安全に回すための技術 / Technology for Safely Multi-Agent Parallel Development
tooppoo
0
210
Featured
See All Featured
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
450
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Scaling GitHub
holman
464
140k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
220
How STYLIGHT went responsive
nonsquared
100
6.2k
Designing for Performance
lara
611
70k
Six Lessons from altMBA
skipperchong
29
4.3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Un-Boring Meetings
codingconduct
0
320
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
140
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