SlideShare a Scribd company logo
1 of 20
Download to read offline
Robust Systems
or:
Abusing credit card features to not fuck
the customer
Who Am I?
• Steve Smith!
• An Atlassian for 7+ years!
• Founded the sysadmin team!
• Developer for the last 4
Background
•
•
•
•
•

Atlassian built its own order system.!
Replaced a purely manual system.!
Has processed $700 million to date.!
3 developers for most of its life.!
Devs are also the admins.
The problem
•
•
•
•

Atlassian is growing.!
Amount of manual intervention growing with it.!
IPO and SOX compliance looming.!
We’re lazy, we want an ops-free system.
The problem
•
•

Parts of the system were non-transactional.!
Partially processed orders required manual
cleanup.
The plan
•
•
•

An atomic ordering system.!
Full commit or full roll-back (as far as possible).!
“Don’t fuck the customer”!
The design
•
•
•

Break into smallest possible operations.!
Make these operations idempotent.!
Make asynchronous throughout.
The implementation
•
•
•

Asynchronous events persist across failures.!
All asynchronous and DB operations are bound.!
Use 2-phase/XA transactions for everything.
The credit card
problem
•
•
•

When do I charge the credit card?!
Single operation, hard to roll-back.!
Remember, you have to assume your systems
will fail catastrophically.
Credit cards and failure
•
•

To early, failure fucks the customer.!
Too late, we don’t get paid, and we need to
clean-up.
Abusing credit card
features

You know that pre-authorisation thing hotels do?
Abusing credit card
features
•

Ensure funds are available, but don’t charge.
Making charges 2-phase
•
•

They have automatic roll-back on timeout.!
Credit card pre-auths look a lot like the XA 2phase commit spec.
Phase-1
•

•

During order setup perform a pre-auth for the
order amount.!
The credit card provider then guarantees the
payment, but doesn’t capture the funds.
Phase-2
•
•

Final capture operation is asynchronous.!
But only occurs once we have committed to
completing the order.
Failure modes
•

On any error we force a cancellation event.
Failure modes
•

On catastrophic failure the authorisation times
out.
Failure is always an
option
•

You have to assume your systems will fail…
Failure is always an
option
•

… and when they fail they can’t fuck the
customer (or you).
Steve Smith
@tarkasteve
ssmith@atlassian.com

More Related Content

Similar to Devops London 2013 - Robust systems or, not fucking the customer

Design for Scale / Surge 2010
Design for Scale / Surge 2010Design for Scale / Surge 2010
Design for Scale / Surge 2010Christopher Brown
 
OpenNebulaConf 2013 - Monitoring of OpenNebula installations by Florian Heigl
OpenNebulaConf 2013 - Monitoring of OpenNebula installations by Florian Heigl OpenNebulaConf 2013 - Monitoring of OpenNebula installations by Florian Heigl
OpenNebulaConf 2013 - Monitoring of OpenNebula installations by Florian Heigl OpenNebula Project
 
Monitoring of OpenNebula installations
Monitoring of OpenNebula installationsMonitoring of OpenNebula installations
Monitoring of OpenNebula installationsNETWAYS
 
London Atlassian User Group - February 2014
London Atlassian User Group - February 2014London Atlassian User Group - February 2014
London Atlassian User Group - February 2014Steve Smith
 
Website Project Cryptobay
Website Project CryptobayWebsite Project Cryptobay
Website Project CryptobaySelf employed
 
Stop Feeding IBM i Performance Hogs - Robot
Stop Feeding IBM i Performance Hogs - RobotStop Feeding IBM i Performance Hogs - Robot
Stop Feeding IBM i Performance Hogs - RobotHelpSystems
 
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014Matthew Cobby
 
ATM TRASACTION SYSTEM.pptx
ATM TRASACTION SYSTEM.pptxATM TRASACTION SYSTEM.pptx
ATM TRASACTION SYSTEM.pptxRastogiAman
 
Handling Massive Traffic with Python
Handling Massive Traffic with PythonHandling Massive Traffic with Python
Handling Massive Traffic with PythonÒscar Vilaplana
 
Shitlist-driven development and other tricks for working on large codebases
Shitlist-driven development and other tricks for working on large codebasesShitlist-driven development and other tricks for working on large codebases
Shitlist-driven development and other tricks for working on large codebasesFlorian Weingarten
 
Lecture 8 - What is Game AI? Final Thoughts
Lecture 8 - What is Game AI? Final ThoughtsLecture 8 - What is Game AI? Final Thoughts
Lecture 8 - What is Game AI? Final ThoughtsLuke Dicken
 
Automate Server Mastery by Stack Advisors - Automation Nation 2018
Automate Server Mastery by Stack Advisors - Automation Nation 2018Automate Server Mastery by Stack Advisors - Automation Nation 2018
Automate Server Mastery by Stack Advisors - Automation Nation 2018Scott Wilson
 
Nosqloakland 20091102.1
Nosqloakland 20091102.1Nosqloakland 20091102.1
Nosqloakland 20091102.1NorthScale
 
Revisiting atm vulnerabilities for our fun and vendor’s
Revisiting atm vulnerabilities for our fun and vendor’sRevisiting atm vulnerabilities for our fun and vendor’s
Revisiting atm vulnerabilities for our fun and vendor’sOlga Kochetova
 
Interactions complicate debugging
Interactions complicate debuggingInteractions complicate debugging
Interactions complicate debuggingSyed Zaid Irshad
 
The challenges of live events scalability
The challenges of live events scalabilityThe challenges of live events scalability
The challenges of live events scalabilityGuy Tomer
 
Project report on (atm MAnagment system)
Project report on (atm MAnagment system)Project report on (atm MAnagment system)
Project report on (atm MAnagment system)Muhammad Umer Lari
 
Operating Consul as an Early Adopter
Operating Consul as an Early AdopterOperating Consul as an Early Adopter
Operating Consul as an Early AdopterNelson Elhage
 
6/18/14 Billing & Payments Engineering Meetup I
6/18/14 Billing & Payments Engineering Meetup I6/18/14 Billing & Payments Engineering Meetup I
6/18/14 Billing & Payments Engineering Meetup IMathieu Chauvin
 

Similar to Devops London 2013 - Robust systems or, not fucking the customer (20)

Design for Scale / Surge 2010
Design for Scale / Surge 2010Design for Scale / Surge 2010
Design for Scale / Surge 2010
 
OpenNebulaConf 2013 - Monitoring of OpenNebula installations by Florian Heigl
OpenNebulaConf 2013 - Monitoring of OpenNebula installations by Florian Heigl OpenNebulaConf 2013 - Monitoring of OpenNebula installations by Florian Heigl
OpenNebulaConf 2013 - Monitoring of OpenNebula installations by Florian Heigl
 
Monitoring of OpenNebula installations
Monitoring of OpenNebula installationsMonitoring of OpenNebula installations
Monitoring of OpenNebula installations
 
London Atlassian User Group - February 2014
London Atlassian User Group - February 2014London Atlassian User Group - February 2014
London Atlassian User Group - February 2014
 
Website Project Cryptobay
Website Project CryptobayWebsite Project Cryptobay
Website Project Cryptobay
 
Stop Feeding IBM i Performance Hogs - Robot
Stop Feeding IBM i Performance Hogs - RobotStop Feeding IBM i Performance Hogs - Robot
Stop Feeding IBM i Performance Hogs - Robot
 
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
 
ATM TRASACTION SYSTEM.pptx
ATM TRASACTION SYSTEM.pptxATM TRASACTION SYSTEM.pptx
ATM TRASACTION SYSTEM.pptx
 
Handling Massive Traffic with Python
Handling Massive Traffic with PythonHandling Massive Traffic with Python
Handling Massive Traffic with Python
 
Shitlist-driven development and other tricks for working on large codebases
Shitlist-driven development and other tricks for working on large codebasesShitlist-driven development and other tricks for working on large codebases
Shitlist-driven development and other tricks for working on large codebases
 
Lecture 8 - What is Game AI? Final Thoughts
Lecture 8 - What is Game AI? Final ThoughtsLecture 8 - What is Game AI? Final Thoughts
Lecture 8 - What is Game AI? Final Thoughts
 
Automate Server Mastery by Stack Advisors - Automation Nation 2018
Automate Server Mastery by Stack Advisors - Automation Nation 2018Automate Server Mastery by Stack Advisors - Automation Nation 2018
Automate Server Mastery by Stack Advisors - Automation Nation 2018
 
Nosqloakland 20091102.1
Nosqloakland 20091102.1Nosqloakland 20091102.1
Nosqloakland 20091102.1
 
Revisiting atm vulnerabilities for our fun and vendor’s
Revisiting atm vulnerabilities for our fun and vendor’sRevisiting atm vulnerabilities for our fun and vendor’s
Revisiting atm vulnerabilities for our fun and vendor’s
 
Interactions complicate debugging
Interactions complicate debuggingInteractions complicate debugging
Interactions complicate debugging
 
The challenges of live events scalability
The challenges of live events scalabilityThe challenges of live events scalability
The challenges of live events scalability
 
Project report on (atm MAnagment system)
Project report on (atm MAnagment system)Project report on (atm MAnagment system)
Project report on (atm MAnagment system)
 
Operating Consul as an Early Adopter
Operating Consul as an Early AdopterOperating Consul as an Early Adopter
Operating Consul as an Early Adopter
 
6/18/14 Billing & Payments Engineering Meetup I
6/18/14 Billing & Payments Engineering Meetup I6/18/14 Billing & Payments Engineering Meetup I
6/18/14 Billing & Payments Engineering Meetup I
 
Siat
SiatSiat
Siat
 

More from Steve Smith

Understanding git: Voxxed Vienna 2016
Understanding git: Voxxed Vienna 2016Understanding git: Voxxed Vienna 2016
Understanding git: Voxxed Vienna 2016Steve Smith
 
Continuous talk, AnsibleFest London 2016
Continuous talk, AnsibleFest London 2016Continuous talk, AnsibleFest London 2016
Continuous talk, AnsibleFest London 2016Steve Smith
 
Knowledge is Power: Getting out of trouble by understanding Git
Knowledge is Power: Getting out of trouble by understanding GitKnowledge is Power: Getting out of trouble by understanding Git
Knowledge is Power: Getting out of trouble by understanding GitSteve Smith
 
Understanding Git - GOTO London 2015
Understanding Git - GOTO London 2015Understanding Git - GOTO London 2015
Understanding Git - GOTO London 2015Steve Smith
 
Dockercon2015 bamboo
Dockercon2015 bambooDockercon2015 bamboo
Dockercon2015 bambooSteve Smith
 
Practical Continuous Deployment, Devoxx UK 2015
Practical Continuous Deployment, Devoxx UK 2015Practical Continuous Deployment, Devoxx UK 2015
Practical Continuous Deployment, Devoxx UK 2015Steve Smith
 
AtlasCamp 2015 Docker continuous integration training
AtlasCamp 2015 Docker continuous integration trainingAtlasCamp 2015 Docker continuous integration training
AtlasCamp 2015 Docker continuous integration trainingSteve Smith
 
DeveloperWeek 2015: A Practical Introduction to Docker
DeveloperWeek 2015: A Practical Introduction to DockerDeveloperWeek 2015: A Practical Introduction to Docker
DeveloperWeek 2015: A Practical Introduction to DockerSteve Smith
 
Accessgrid XMPP rationale
Accessgrid XMPP rationaleAccessgrid XMPP rationale
Accessgrid XMPP rationaleSteve Smith
 
Accessgrid XMPP implementation
Accessgrid XMPP implementationAccessgrid XMPP implementation
Accessgrid XMPP implementationSteve Smith
 
Vislab presentation
Vislab presentationVislab presentation
Vislab presentationSteve Smith
 
APAC-05 XMPP AccessGrid presentation
APAC-05 XMPP AccessGrid presentationAPAC-05 XMPP AccessGrid presentation
APAC-05 XMPP AccessGrid presentationSteve Smith
 
Sydgraph presentation 2004
Sydgraph presentation 2004Sydgraph presentation 2004
Sydgraph presentation 2004Steve Smith
 
Devops London 2013 - Opening the inner circle
Devops London 2013 - Opening the inner circleDevops London 2013 - Opening the inner circle
Devops London 2013 - Opening the inner circleSteve Smith
 

More from Steve Smith (14)

Understanding git: Voxxed Vienna 2016
Understanding git: Voxxed Vienna 2016Understanding git: Voxxed Vienna 2016
Understanding git: Voxxed Vienna 2016
 
Continuous talk, AnsibleFest London 2016
Continuous talk, AnsibleFest London 2016Continuous talk, AnsibleFest London 2016
Continuous talk, AnsibleFest London 2016
 
Knowledge is Power: Getting out of trouble by understanding Git
Knowledge is Power: Getting out of trouble by understanding GitKnowledge is Power: Getting out of trouble by understanding Git
Knowledge is Power: Getting out of trouble by understanding Git
 
Understanding Git - GOTO London 2015
Understanding Git - GOTO London 2015Understanding Git - GOTO London 2015
Understanding Git - GOTO London 2015
 
Dockercon2015 bamboo
Dockercon2015 bambooDockercon2015 bamboo
Dockercon2015 bamboo
 
Practical Continuous Deployment, Devoxx UK 2015
Practical Continuous Deployment, Devoxx UK 2015Practical Continuous Deployment, Devoxx UK 2015
Practical Continuous Deployment, Devoxx UK 2015
 
AtlasCamp 2015 Docker continuous integration training
AtlasCamp 2015 Docker continuous integration trainingAtlasCamp 2015 Docker continuous integration training
AtlasCamp 2015 Docker continuous integration training
 
DeveloperWeek 2015: A Practical Introduction to Docker
DeveloperWeek 2015: A Practical Introduction to DockerDeveloperWeek 2015: A Practical Introduction to Docker
DeveloperWeek 2015: A Practical Introduction to Docker
 
Accessgrid XMPP rationale
Accessgrid XMPP rationaleAccessgrid XMPP rationale
Accessgrid XMPP rationale
 
Accessgrid XMPP implementation
Accessgrid XMPP implementationAccessgrid XMPP implementation
Accessgrid XMPP implementation
 
Vislab presentation
Vislab presentationVislab presentation
Vislab presentation
 
APAC-05 XMPP AccessGrid presentation
APAC-05 XMPP AccessGrid presentationAPAC-05 XMPP AccessGrid presentation
APAC-05 XMPP AccessGrid presentation
 
Sydgraph presentation 2004
Sydgraph presentation 2004Sydgraph presentation 2004
Sydgraph presentation 2004
 
Devops London 2013 - Opening the inner circle
Devops London 2013 - Opening the inner circleDevops London 2013 - Opening the inner circle
Devops London 2013 - Opening the inner circle
 

Recently uploaded

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 

Recently uploaded (20)

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 

Devops London 2013 - Robust systems or, not fucking the customer