SlideShare a Scribd company logo
1 of 63
The Only Workflow Platform
You'll Ever Need
Maxim Fateev
Case Study:
Tips
void addTip(Tip t) {
debitRider(t);
creditDriver(t);
}
DebitAccount
CreditAccount
void addTip(Tip t) {
debitRider(t);
creditDriver(t);
}
DebitAccount
CreditAccount
void addTip(Tip t) {
debitRider(t);
creditDriver(t);
}
DebitAccount
CreditAccount
void OnMessage(Tip t){
debitRider(t);
creditDriver(t);
}
DebitAccount
CreditAccount
Queue
void OnMessage(Tip t){
debitRider(t);
creditDriver(t);
}
DebitAccount
CreditAccount
Queue
void OnMessage(Tip t){
debitRider(t);
creditDriver(t);
}
DebitAccount
CreditAccount
Queue
void OnMessage(Tip t){
debitRider(t);
creditDriver(t);
}
DebitAccount
CreditAccount
Queue
void OnMessage(Tip t){
debitRider(t);
}
DebitAccount
CreditAccount
Queue
void OnMessage(Tip t){
creditDriver(t);
}
Queue
void OnMessage(Tip t){
debitRider(t);
}
DebitAccount
CreditAccount
Queue
void OnMessage(Tip t){
creditDriver(t);
}
Queue
Status of the
transaction?
void OnMessage(Tip t){
debitRider(t);
}
DebitAccount
CreditAccount
Queue
void OnMessage(Tip t){
creditDriver(t);
}
Queue
Status of the
transaction?
void OnMessage(Tip t){
debitRider(t);
updateDB(status);
}
DebitAccount
CreditAccount
Queue
void OnMessage(Tip t){
creditDriver(t);
updateDB(status);
}
Queue
Database
void OnMessage(Tip t){
debitRider(t);
updateDB(status);
}
DebitAccount
CreditAccount
Queue
void OnMessage(Tip t){
creditDriver(t);
updateDB(status);
}
Queue
Database
void OnMessage(Tip t){
updateDB(status);
debitRider(t);
}
DebitAccount
CreditAccount
Queue
void OnMessage(Tip t){
updateDB(status);
creditDriver(t);
}
Queue
Database
void OnMessage(Tip t){
updateDB(status);
debitRider(t);
}
DebitAccount
CreditAccount
Queue
void OnMessage(Tip t){
updateDB(status);
creditDriver(t);
}
Queue
Database
void addTip(Tip t) {
debitRider(t);
creditDriver(t);
}
DebitAccount
CreditAccount
void addTip(Tip t) {
debitRider(t)
creditDriver(t)
}
DebitRider
CreditDriver
Db
Queue
Queue
Queue
void addTip(Tip t) {
debitRider(t)
creditDriver(t)
}
DebitRider
CreditDriver
Db
Queue
Queue
Queue
void addTip(Tip t) {
debitRider(t)
creditDriver(t)
}
DebitRider
CreditDriver
Db
Queue
Queue
Queue
void addTip(Tip t) {
debitRider(t)
creditDriver(t)
}
DebitRider
CreditDriver
Db
Queue
Queue
Queue
void addTip(Tip t) {
debitRider(t)
creditDriver(t)
}
DebitRider
CreditDriver
Db
Queue
Queue
Queue
Cadence Programming Model
● Activities (aka Tasks)
● Workflows
Cadence Activities
● Any application specific code
● Potentially long lived (heartbeating)
● Can be implemented asynchronously
● Automatically retried according to a specified retry policy
● Routable to specific hosts or processes
● Dispatched through queues
● Per worker rate and parallelism limit
● Per queue rate limit
Cadence Activity
Cadence Workflows
● Virtual Objects in Java or Go
● Transactional
● Orchestrate Activities
● React to external events
● Stateful including local variables and stack
● Queryable
● Potentially Long Lived
● Durable Timers
Cadence Workflows
Cadence Workflows
Cadence Workflows
Cadence Workflows
Activity Retry
Compensation
Case Study: Driver Rewards
● Driver signs up if qualifies
● Eligibility is checked every 30 days
● Participation is lost if doesn’t meet the
rewards requirements when checked
● Service listens on trip completion events to
calculate average rating
void OnMessage(Trip t){
State s = loadFromDb(t.driverId);
s.addTrip(t);
saveToDb(s);
}
PartnerService
Queue
Database
void onTimer(String driverId){
State s = loadFromDb(driverId);
if (s.eligible) {
activate(driverId);
} else {
deactivate(driverId);
}
s.reset();
saveToDB(s);
scheduleTimer();
}
void OnMessage(Trip t){
State s = loadFromDb(t.driverId);
s.addTrip(t);
saveToDb(s);
}
PartnerService
Queue
Database
void onTimer(String driverId){
State s = loadFromDb(driverId);
if (s.eligible) {
activate(driverId);
} else {
deactivate(driverId);
}
s.reset();
saveToDB(s);
scheduleTimer();
}
Driver Rewards Workflow
Driver Rewards Workflow
Driver Rewards Workflow
Driver Rewards Workflow
Driver Rewards Workflow
Driver Rewards Workflow
Driver Rewards Workflow
Use Case: Uber Flow
● UI based workflows
● Graph execution engine.
● Each edge has conditions
attached
● Some state nodes are
associated with actions
Node1
Node3
Node5
Node2
Node4
condition1
condition2
condition4
condition3
Workflow1
Flow Workflow Definition
Node1
Node3
Node5
Node2
Node4
condition1
condition2
condition4
condition3
Workflow1 - Entity1
Flow Workflow Instance
Event1
Entity1
Node1
Node3
Node5
Node2
Node4
condition1
condition2
condition4
condition3
Workflow1 - Entity1
Flow Event Matching
Event1
Entity1
Node1
Node3
Node5
Node2
Node4
condition1
condition2
condition4
condition3
Workflow1 - Entity1
Flow Condition Evaluation
Event1
Entity1
Node1
Node3
Node5
Node2
Node4
condition1
condition2
condition4
condition3
Workflow1 - Entity1
PartnerService
PartnerService
PartnerService
PartnerService
Services
Flow Condition Evaluation
Event1
Entity1
Node1
Node3
Node5
Node2
Node4
condition1
condition2
condition4
condition3
Workflow1 - Entity1
Flow Condition Evaluation
Node1
Node3
Node5
Node2
Node4
condition1
condition2
condition4
condition3
Workflow1 - Entity1
Flow Action
Node1
Node3
Node5
Node2
Node4
condition1
condition2
condition4
condition3
Workflow1 - Entity1
Node Action:
Send email, give
incentive, etc.
Flow Action
● Potentially billions of entities
● ~ 50 workflows per entity
● ~ 10K external events per second
○ not counting duplicates
● Each event should be checked against all workflows for an entity
○ 50 * 10K = 500K condition evaluation per second
● On average one workflow per event generate an action
○ ~ 10K actions
Flow Scalability Requirements
void OnMessage(Message t){
List<String> workflows = getWorkflowsFor(t);
for (String workflow: workflows) {
State s = loadFromDb(workflow, t.entityId);
if (s.currentNode.evaluateConditions(t)) {
s.currentNode.executeAction();
saveToDb(s);
}
}
}
Services
Queue
Database
Services
Services
Services
Flow Original Implementation
void OnMessage(Message t){
List<String> workflows = getWorkflowsFor(t);
for (String workflow: workflows) {
State s = loadFromDb(workflow, t.entityId);
if (s.currentNode.evaluateConditions(t)) {
s.currentNode.executeAction();
saveToDb(s);
}
}
}
Services
Queue
Database
Services
Services
Services
Flow Original Implementation
List<State> workflows;
void OnMessage(Message t){
for (State workflow: workflows) {
if (s.currentNode.evaluateConditions(t)) {
s.currentNode.executeAction();
}
}
}
Services
Queue Services
Services
Services
Flow on Cadence
Flow on Cadence Advantages
● Reliable retries of condition evaluations
● Reliable retries of actions
● Database load is proportional to number of events per second.
○ Not (number of events) x (number of workflows per entity) which is 500K
● Cross datacenter failover
● Unified workflow engine
Flow Load Test
7500 events per second ingested
Flow Load Test
● 218000 per second condition evaluations
● 4400 actions per second
Cadence as a Platform
Cadence Service
BPMN
AWS States
Language
Airflow
DAG
Uber
Flow
Custom
DSL2
Java SDK Go SDK
JavApp1
JavaApp2
BPMNApp1
BPMNApp2
SLApp1
SLApp2
SLApp3
SLApp4
GoApp1
GoApp2
App1
App1
AirflowApp1
AirflowApp2
AirflowApp3
App1App1App1
DSL1App1
DSL1App2
DSL3App1
App1
App1
FlowApp1
FlowApp2
Custom
DSL1
Custom
DSL3
App1App1App1
DSL2App1
DSL2App2
More Uber Cadence Use Cases
● Freight load workflow
● Driver loyalty program
● Customer support workflows
● CI/CD/Deployment infrastructure
● End of month statement generation for each u4b customer
● Recalculate every hexagon on the city map every 1 minute for every city
● Tip processing in microservices architecture
● Managing Flink and Spark Jobs in Mesos or Yarn
● Customer loyalty Program
● Marketing email campaign management
● New datacenter provisioning
● Numerous other periodic jobs
Distributed Application Building Blocks
● Request Handlers
○ Microservices
○ Serverless
○ Actors
● Storage
○ Databases
○ Caches
● Queues
● Job Schedulers
● Consensus
○ Leader Election
○ Sharding
○ Distributed Locks
Distributed Application Building Blocks
● Request Handlers
○ Microservices
○ Serverless
○ Actors
● Storage
○ Databases
○ Caches
● Queues
● Job Schedulers
● Consensus
○ Leader Election
○ Sharding
○ Distributed Locks
Cadence Summary
● Higher level way of building distributed applications
○ Focus on business logic not plumbing
● Large scale
○ Billions of workflow instances
○ Tens of thousands of events per second
● High availability
○ Oblivious to node failures
○ Cross Datacenter Replication
● Unify all workflow solutions
○ Can support any existing workflow definition language
○ Perfect for DSL
● Open Source
○ http://cadenceworkflow.io
○ Apache 2.0 License

More Related Content

What's hot

Kafka streams windowing behind the curtain
Kafka streams windowing behind the curtain Kafka streams windowing behind the curtain
Kafka streams windowing behind the curtain confluent
 
(BDT318) How Netflix Handles Up To 8 Million Events Per Second
(BDT318) How Netflix Handles Up To 8 Million Events Per Second(BDT318) How Netflix Handles Up To 8 Million Events Per Second
(BDT318) How Netflix Handles Up To 8 Million Events Per SecondAmazon Web Services
 
JupyterHub: Learning at Scale
JupyterHub: Learning at ScaleJupyterHub: Learning at Scale
JupyterHub: Learning at ScaleCarol Willing
 
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...Daniel Bryant
 
Bridge to Cloud: Using Apache Kafka to Migrate to GCP
Bridge to Cloud: Using Apache Kafka to Migrate to GCPBridge to Cloud: Using Apache Kafka to Migrate to GCP
Bridge to Cloud: Using Apache Kafka to Migrate to GCPconfluent
 
Spark Summit EU talk by Luc Bourlier
Spark Summit EU talk by Luc BourlierSpark Summit EU talk by Luc Bourlier
Spark Summit EU talk by Luc BourlierSpark Summit
 
Simplifying Distributed Transactions with Sagas in Kafka (Stephen Zoio, Simpl...
Simplifying Distributed Transactions with Sagas in Kafka (Stephen Zoio, Simpl...Simplifying Distributed Transactions with Sagas in Kafka (Stephen Zoio, Simpl...
Simplifying Distributed Transactions with Sagas in Kafka (Stephen Zoio, Simpl...confluent
 
Machine Learning & Amazon SageMaker
Machine Learning & Amazon SageMakerMachine Learning & Amazon SageMaker
Machine Learning & Amazon SageMakerAmazon Web Services
 
Using ClickHouse for Experimentation
Using ClickHouse for ExperimentationUsing ClickHouse for Experimentation
Using ClickHouse for ExperimentationGleb Kanterov
 
Scaling Twitter
Scaling TwitterScaling Twitter
Scaling TwitterBlaine
 
The top 3 challenges running multi-tenant Flink at scale
The top 3 challenges running multi-tenant Flink at scaleThe top 3 challenges running multi-tenant Flink at scale
The top 3 challenges running multi-tenant Flink at scaleFlink Forward
 
Data Federation with Apache Spark
Data Federation with Apache SparkData Federation with Apache Spark
Data Federation with Apache SparkDataWorks Summit
 
Real-time Analytics with Trino and Apache Pinot
Real-time Analytics with Trino and Apache PinotReal-time Analytics with Trino and Apache Pinot
Real-time Analytics with Trino and Apache PinotXiang Fu
 
Accelerating Data Science With GPUs
Accelerating Data Science With GPUsAccelerating Data Science With GPUs
Accelerating Data Science With GPUsiguazio
 
Apache Beam and Google Cloud Dataflow - IDG - final
Apache Beam and Google Cloud Dataflow - IDG - finalApache Beam and Google Cloud Dataflow - IDG - final
Apache Beam and Google Cloud Dataflow - IDG - finalSub Szabolcs Feczak
 
Monitoring What Matters: The Prometheus Approach to Whitebox Monitoring (Berl...
Monitoring What Matters: The Prometheus Approach to Whitebox Monitoring (Berl...Monitoring What Matters: The Prometheus Approach to Whitebox Monitoring (Berl...
Monitoring What Matters: The Prometheus Approach to Whitebox Monitoring (Berl...Brian Brazil
 
Monitoring_with_Prometheus_Grafana_Tutorial
Monitoring_with_Prometheus_Grafana_TutorialMonitoring_with_Prometheus_Grafana_Tutorial
Monitoring_with_Prometheus_Grafana_TutorialTim Vaillancourt
 

What's hot (20)

Serverless with Google Cloud
Serverless with Google CloudServerless with Google Cloud
Serverless with Google Cloud
 
Kafka streams windowing behind the curtain
Kafka streams windowing behind the curtain Kafka streams windowing behind the curtain
Kafka streams windowing behind the curtain
 
(BDT318) How Netflix Handles Up To 8 Million Events Per Second
(BDT318) How Netflix Handles Up To 8 Million Events Per Second(BDT318) How Netflix Handles Up To 8 Million Events Per Second
(BDT318) How Netflix Handles Up To 8 Million Events Per Second
 
JupyterHub: Learning at Scale
JupyterHub: Learning at ScaleJupyterHub: Learning at Scale
JupyterHub: Learning at Scale
 
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
 
Bridge to Cloud: Using Apache Kafka to Migrate to GCP
Bridge to Cloud: Using Apache Kafka to Migrate to GCPBridge to Cloud: Using Apache Kafka to Migrate to GCP
Bridge to Cloud: Using Apache Kafka to Migrate to GCP
 
Spark Summit EU talk by Luc Bourlier
Spark Summit EU talk by Luc BourlierSpark Summit EU talk by Luc Bourlier
Spark Summit EU talk by Luc Bourlier
 
Simplifying Distributed Transactions with Sagas in Kafka (Stephen Zoio, Simpl...
Simplifying Distributed Transactions with Sagas in Kafka (Stephen Zoio, Simpl...Simplifying Distributed Transactions with Sagas in Kafka (Stephen Zoio, Simpl...
Simplifying Distributed Transactions with Sagas in Kafka (Stephen Zoio, Simpl...
 
Machine Learning & Amazon SageMaker
Machine Learning & Amazon SageMakerMachine Learning & Amazon SageMaker
Machine Learning & Amazon SageMaker
 
Using ClickHouse for Experimentation
Using ClickHouse for ExperimentationUsing ClickHouse for Experimentation
Using ClickHouse for Experimentation
 
Scaling Twitter
Scaling TwitterScaling Twitter
Scaling Twitter
 
The top 3 challenges running multi-tenant Flink at scale
The top 3 challenges running multi-tenant Flink at scaleThe top 3 challenges running multi-tenant Flink at scale
The top 3 challenges running multi-tenant Flink at scale
 
Data Federation with Apache Spark
Data Federation with Apache SparkData Federation with Apache Spark
Data Federation with Apache Spark
 
Real-time Analytics with Trino and Apache Pinot
Real-time Analytics with Trino and Apache PinotReal-time Analytics with Trino and Apache Pinot
Real-time Analytics with Trino and Apache Pinot
 
Accelerating Data Science With GPUs
Accelerating Data Science With GPUsAccelerating Data Science With GPUs
Accelerating Data Science With GPUs
 
Apache Beam and Google Cloud Dataflow - IDG - final
Apache Beam and Google Cloud Dataflow - IDG - finalApache Beam and Google Cloud Dataflow - IDG - final
Apache Beam and Google Cloud Dataflow - IDG - final
 
GitHub Presentation
GitHub PresentationGitHub Presentation
GitHub Presentation
 
Monitoring What Matters: The Prometheus Approach to Whitebox Monitoring (Berl...
Monitoring What Matters: The Prometheus Approach to Whitebox Monitoring (Berl...Monitoring What Matters: The Prometheus Approach to Whitebox Monitoring (Berl...
Monitoring What Matters: The Prometheus Approach to Whitebox Monitoring (Berl...
 
Monitoring_with_Prometheus_Grafana_Tutorial
Monitoring_with_Prometheus_Grafana_TutorialMonitoring_with_Prometheus_Grafana_Tutorial
Monitoring_with_Prometheus_Grafana_Tutorial
 
CI/CD with Github Actions
CI/CD with Github ActionsCI/CD with Github Actions
CI/CD with Github Actions
 

Similar to The Only Workflow Platform You'll Ever Need

The Art of The Event Streaming Application: Streams, Stream Processors and Sc...
The Art of The Event Streaming Application: Streams, Stream Processors and Sc...The Art of The Event Streaming Application: Streams, Stream Processors and Sc...
The Art of The Event Streaming Application: Streams, Stream Processors and Sc...confluent
 
Kakfa summit london 2019 - the art of the event-streaming app
Kakfa summit london 2019 - the art of the event-streaming appKakfa summit london 2019 - the art of the event-streaming app
Kakfa summit london 2019 - the art of the event-streaming appNeil Avery
 
Serverless GraphQL. AppSync 101
Serverless GraphQL. AppSync 101Serverless GraphQL. AppSync 101
Serverless GraphQL. AppSync 101Marcin Sodkiewicz
 
Slim Scalding - less memory is more capacity
Slim Scalding - less memory is more capacitySlim Scalding - less memory is more capacity
Slim Scalding - less memory is more capacityDataWorks Summit
 
#SlimScalding - Less Memory is More Capacity
#SlimScalding - Less Memory is More Capacity#SlimScalding - Less Memory is More Capacity
#SlimScalding - Less Memory is More CapacityGera Shegalov
 
Deep Dive into Oracle ADF Transactions
Deep Dive into Oracle ADF TransactionsDeep Dive into Oracle ADF Transactions
Deep Dive into Oracle ADF TransactionsEugene Fedorenko
 
Streaming SQL for Data Engineers: The Next Big Thing? With Yaroslav Tkachenko...
Streaming SQL for Data Engineers: The Next Big Thing? With Yaroslav Tkachenko...Streaming SQL for Data Engineers: The Next Big Thing? With Yaroslav Tkachenko...
Streaming SQL for Data Engineers: The Next Big Thing? With Yaroslav Tkachenko...HostedbyConfluent
 
Streaming SQL for Data Engineers: The Next Big Thing?
Streaming SQL for Data Engineers: The Next Big Thing?Streaming SQL for Data Engineers: The Next Big Thing?
Streaming SQL for Data Engineers: The Next Big Thing?Yaroslav Tkachenko
 
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰KAI CHU CHUNG
 
Ruslan Platonov - Transactions
Ruslan Platonov - TransactionsRuslan Platonov - Transactions
Ruslan Platonov - TransactionsDmitry Buzdin
 
Towards cross-platfrom application development
Towards cross-platfrom application developmentTowards cross-platfrom application development
Towards cross-platfrom application developmentESUG
 
Taming event-driven software via formal verification
Taming event-driven software via formal verificationTaming event-driven software via formal verification
Taming event-driven software via formal verificationAdaCore
 
Gearmanpresentation 110308165409-phpapp01
Gearmanpresentation 110308165409-phpapp01Gearmanpresentation 110308165409-phpapp01
Gearmanpresentation 110308165409-phpapp01longtuan
 
Sweet Streams (Are made of this)
Sweet Streams (Are made of this)Sweet Streams (Are made of this)
Sweet Streams (Are made of this)Corneil du Plessis
 
Reducing Latency and Increasing Performance while Cutting Infrastructure Costs
Reducing Latency and Increasing Performance while Cutting Infrastructure CostsReducing Latency and Increasing Performance while Cutting Infrastructure Costs
Reducing Latency and Increasing Performance while Cutting Infrastructure CostsAmazon Web Services
 
Live Streaming & Server Sent Events
Live Streaming & Server Sent EventsLive Streaming & Server Sent Events
Live Streaming & Server Sent Eventstkramar
 
Weaving Through the Mesh: Making Sense of Istio and Overlapping Technologies
Weaving Through the Mesh: Making Sense of Istio and Overlapping TechnologiesWeaving Through the Mesh: Making Sense of Istio and Overlapping Technologies
Weaving Through the Mesh: Making Sense of Istio and Overlapping TechnologiesVMware Tanzu
 
Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...
Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...
Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...OdessaJS Conf
 

Similar to The Only Workflow Platform You'll Ever Need (20)

The Art of The Event Streaming Application: Streams, Stream Processors and Sc...
The Art of The Event Streaming Application: Streams, Stream Processors and Sc...The Art of The Event Streaming Application: Streams, Stream Processors and Sc...
The Art of The Event Streaming Application: Streams, Stream Processors and Sc...
 
Kakfa summit london 2019 - the art of the event-streaming app
Kakfa summit london 2019 - the art of the event-streaming appKakfa summit london 2019 - the art of the event-streaming app
Kakfa summit london 2019 - the art of the event-streaming app
 
Serverless GraphQL. AppSync 101
Serverless GraphQL. AppSync 101Serverless GraphQL. AppSync 101
Serverless GraphQL. AppSync 101
 
Slim Scalding - less memory is more capacity
Slim Scalding - less memory is more capacitySlim Scalding - less memory is more capacity
Slim Scalding - less memory is more capacity
 
#SlimScalding - Less Memory is More Capacity
#SlimScalding - Less Memory is More Capacity#SlimScalding - Less Memory is More Capacity
#SlimScalding - Less Memory is More Capacity
 
Myfacesplanet
MyfacesplanetMyfacesplanet
Myfacesplanet
 
Deep Dive into Oracle ADF Transactions
Deep Dive into Oracle ADF TransactionsDeep Dive into Oracle ADF Transactions
Deep Dive into Oracle ADF Transactions
 
Streaming SQL for Data Engineers: The Next Big Thing? With Yaroslav Tkachenko...
Streaming SQL for Data Engineers: The Next Big Thing? With Yaroslav Tkachenko...Streaming SQL for Data Engineers: The Next Big Thing? With Yaroslav Tkachenko...
Streaming SQL for Data Engineers: The Next Big Thing? With Yaroslav Tkachenko...
 
Streaming SQL for Data Engineers: The Next Big Thing?
Streaming SQL for Data Engineers: The Next Big Thing?Streaming SQL for Data Engineers: The Next Big Thing?
Streaming SQL for Data Engineers: The Next Big Thing?
 
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
 
Ruslan Platonov - Transactions
Ruslan Platonov - TransactionsRuslan Platonov - Transactions
Ruslan Platonov - Transactions
 
Towards cross-platfrom application development
Towards cross-platfrom application developmentTowards cross-platfrom application development
Towards cross-platfrom application development
 
Taming event-driven software via formal verification
Taming event-driven software via formal verificationTaming event-driven software via formal verification
Taming event-driven software via formal verification
 
Gearmanpresentation 110308165409-phpapp01
Gearmanpresentation 110308165409-phpapp01Gearmanpresentation 110308165409-phpapp01
Gearmanpresentation 110308165409-phpapp01
 
Sweet Streams (Are made of this)
Sweet Streams (Are made of this)Sweet Streams (Are made of this)
Sweet Streams (Are made of this)
 
Reducing Latency and Increasing Performance while Cutting Infrastructure Costs
Reducing Latency and Increasing Performance while Cutting Infrastructure CostsReducing Latency and Increasing Performance while Cutting Infrastructure Costs
Reducing Latency and Increasing Performance while Cutting Infrastructure Costs
 
Live Streaming & Server Sent Events
Live Streaming & Server Sent EventsLive Streaming & Server Sent Events
Live Streaming & Server Sent Events
 
Weaving Through the Mesh: Making Sense of Istio and Overlapping Technologies
Weaving Through the Mesh: Making Sense of Istio and Overlapping TechnologiesWeaving Through the Mesh: Making Sense of Istio and Overlapping Technologies
Weaving Through the Mesh: Making Sense of Istio and Overlapping Technologies
 
Sprint 12
Sprint 12Sprint 12
Sprint 12
 
Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...
Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...
Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...
 

Recently uploaded

HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 

Recently uploaded (20)

HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 

The Only Workflow Platform You'll Ever Need

Editor's Notes

  1. Other Issues to Consider Timeouts What if debit service lost the transaction? What if settlement has a time limit? Compensations What if credit is impossible? Changes to already running transaction Tip amount updated Cancellation What if long running operation requires polling for the result? Upgrading the sequence of steps Operations Many moving parts like DB, queue, etc. Datacenter failures Debugging
  2. Change to business exception
  3. Other Issues to Consider Timeouts What if debit service lost the transaction? What if settlement has a time limit? Compensations What if credit is impossible? Changes to already running transaction Tip amount updated Cancellation What if long running operation requires polling for the result? Upgrading the sequence of steps Operations Many moving parts like DB, queue, etc. Datacenter failures Debugging
  4. Other Issues to Consider Timeouts What if debit service lost the transaction? What if settlement has a time limit? Compensations What if credit is impossible? Changes to already running transaction Tip amount updated Cancellation What if long running operation requires polling for the result? Upgrading the sequence of steps Operations Many moving parts like DB, queue, etc. Datacenter failures Debugging
  5. Copy from https://engdocs.uberinternal.com/autobots/overview.html#product-details
  6. Other Issues to Consider Timeouts What if debit service lost the transaction? What if settlement has a time limit? Compensations What if credit is impossible? Changes to already running transaction Tip amount updated Cancellation What if long running operation requires polling for the result? Upgrading the sequence of steps Operations Many moving parts like DB, queue, etc. Datacenter failures Debugging
  7. Other Issues to Consider Timeouts What if debit service lost the transaction? What if settlement has a time limit? Compensations What if credit is impossible? Changes to already running transaction Tip amount updated Cancellation What if long running operation requires polling for the result? Upgrading the sequence of steps Operations Many moving parts like DB, queue, etc. Datacenter failures Debugging
  8. Other Issues to Consider Timeouts What if debit service lost the transaction? What if settlement has a time limit? Compensations What if credit is impossible? Changes to already running transaction Tip amount updated Cancellation What if long running operation requires polling for the result? Upgrading the sequence of steps Operations Many moving parts like DB, queue, etc. Datacenter failures Debugging
  9. Copy from https://engdocs.uberinternal.com/autobots/overview.html#product-details
  10. Copy from https://engdocs.uberinternal.com/autobots/overview.html#product-details