Professional Documents
Culture Documents
Serhiy Batyuk
Morning@Lohika
May 14, 2016
My Interests
Tech Lead at
AWS SWF > 1 year
Agenda
SWF Overview
Agenda
https://www.youtube.com/watch?v=DYmJIQO2ZyQ&t=83
https://globallogic.com.ua/speaking-event/jeeconf-2015
Preparing to Attend JEEConf
Preparing to Attend JEEConf
Preparing to Attend JEEConf
Preparing to Attend JEEConf
Preparing to Attend JEEConf
PROGRAM
STEPS
Preparing to Attend JEEConf
Preparing to Attend JEEConf
Preparing to Attend JEEConf
Preparing to Attend JEEConf
AWS SWF
https://aws.amazon.com/swf
Workflows and Activities
WORKFLOW
ACTIVITIES
SWF Application Architecture
Decider Worker
SWF Application Architecture
AWS SWF
Decider Worker
AWS SWF Message Flow
AWS SWF
Decider Worker
AWS SWF Message Flow
AWS SWF
START
Decider Worker
AWS SWF Message Flow
AWS SWF
MAKE A
DECISION
Decider Worker
AWS SWF Message Flow
AWS SWF
GET
HISTORY
Decider Worker
AWS SWF Message Flow
AWS SWF
BUY
TICKET
Decider Worker
AWS SWF Message Flow
AWS SWF
BUY
TICKET
Decider Worker
AWS SWF Message Flow
AWS SWF
TICKET
CONFIRMATION
Decider Worker
AWS SWF Message Flow
AWS SWF
Decider Worker
AWS SWF Message Flow
AWS SWF
MAKE A
DECISION
Decider Worker
AWS SWF Message Flow
AWS SWF
GET
HISTORY
Decider Worker
AWS SWF Message Flow
AWS SWF
BOOK
HOTEL
Decider Worker
AWS SWF Message Flow
AWS SWF
BOOK
HOTEL
Decider Worker
AWS SWF Message Flow
AWS SWF
HOTEL
CONFIRMATION
Decider Worker
AWS SWF Message Flow
AWS SWF
Decider Worker
AWS SWF Message Flow
AWS SWF
Decider Worker
AWS SWF Message Flow
AWS SWF
RESULT
Decider Worker
Task Lists and Routing
SWF
Decider Worker
AWS SWF API
StartWorkflowExecution
PollForDecisionTask
GetWorkflowExecutionHistory
RespondDecisionTaskCompleted
PollForActivityTask
RespondActivityTaskCompleted
RespondActivityTaskFailed
http://docs.aws.amazon.com/amazonswf/latest/apireference
AWS SWF API
RegisterWorkflowType
RegisterActivityType
http://docs.aws.amazon.com/amazonswf/latest/apireference
AWS SWF Flow Framework
SWF
API AWS SWF
.Net,
Python,
others
Java Flow Framework
SWF
Workflow
Implementation
Workflow Activities
Client Activities Implementations
Client
http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/awsflow-basics-application-structure.html
Java Flow Framework
SWF
Workflow
Client Activities
Client
http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/awsflow-basics-application-structure.html
Java Flow Framework
SWF
Workflow Starter
Workflow
Implementation
Activities
Implementations
http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/awsflow-basics-application-structure.html
Java Flow Framework Classes
Visit
Organizer
Service
JEEConf Travel
Service Service
Preparing for JEEConf
Visit
Organizer
Service
Buy
tickets
JEEConf Travel
Service Service
Preparing for JEEConf
Visit
Organizer
Service
Book
Buy hotel
tickets
JEEConf Travel
Service Service
Preparing for JEEConf
Visit
Organizer
Service
Book
Buy hotel
tickets
Book train
tickets
JEEConf Travel
Service Service
Time to see the code!
https://github.com/sbatyuk/aws-swf-sample
EASY, RIGHT?
http://info.thinkfun.com/stem-education/mark-engelberg-inventor-of-code-master-featured-in-getting-smart
SWF Features
Fully Managed Service
Scalable
Worker
My App
Decider Worker
http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/awsflow-basics-scalable.html
Scalable
Worker
My App
Decider Worker
http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/awsflow-basics-scalable.html
Activity Retries
Worker
My App
Decider Worker
http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/features-retry.html
Activity Retries
Worker
My App
Decider Worker
http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/features-retry.html
Activity Retries
Worker
My App
Decider Worker
http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/features-retry.html
Workflow Execution History
Exactly Once Delivery
=1
Integration with Spring and JUnit
http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/test.html
Other Features
Continuous
Child workflows
workflows
Heartbeats Signals
AWS SWF Pricing
10,000 workflows in a
day with 3 activities each:
$1.75
https://aws.amazon.com/swf/pricing
SWF Lessons learnt
Workflow Replays
@Override
public void prepareForJEEConf(String name, String email) {
Promise<Integer> ticket = jeeConfService.buyTicket(name);
Promise<Integer> hotel = travelService.bookHotel(name, ticket);
Promise<Integer> train = travelService.bookTrainTickets(name, ticket);
sendConfirmationEmail(email, ticket, hotel, train);
}
http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/awsflow-basics-distributed-execution.html
Workflow Replay #1
Workflow Activity Client Activity Workflow History
Workflow Replay #1
Workflow Activity Client Activity Workflow History
Get history
Workflow Replay #1
Workflow Activity Client Activity Workflow History
Get history
History
Workflow Replay #1
Workflow Activity Client Activity Workflow History
Get history
History
Buy ticket
Workflow Replay #1
Workflow Activity Client Activity Workflow History
Get history
History
Buy ticket
Buy ticket
Workflow Replay #1
Workflow Activity Client Activity Workflow History
Get history
History
Buy ticket
Buy ticket
Promise
Workflow Replay #1
Workflow Activity Client Activity Workflow History
Get history
History
Buy ticket
Buy ticket
Promise
Book hotel
Workflow Replay #1
Workflow Activity Client Activity Workflow History
Get history
History
Buy ticket
Buy ticket
Promise
Book hotel
Promise
Workflow Replay #1
Workflow Activity Client Activity Workflow History
Get history
History
Buy ticket
Buy ticket
Promise
Book hotel
Promise
Ticket
confirmation
Workflow Replay #2
Workflow Activity Client Activity Workflow History
Workflow Replay #2
Workflow Activity Client Activity Workflow History
Get history
Workflow Replay #2
Workflow Activity Client Activity Workflow History
Get history
History
Workflow Replay #2
Workflow Activity Client Activity Workflow History
Get history
History
Buy ticket
Workflow Replay #2
Workflow Activity Client Activity Workflow History
Get history
History
Buy ticket
Promise with
confirmation
Workflow Replay #2
Workflow Activity Client Activity Workflow History
Get history
History
Buy ticket
Promise with
confirmation
Book hotel
Workflow Replay #2
Workflow Activity Client Activity Workflow History
Get history
History
Buy ticket
Promise with
confirmation
Book hotel
Book hotel
Workflow Replay #2
Workflow Activity Client Activity Workflow History
Get history
History
Buy ticket
Promise with
confirmation
Book hotel
Book hotel
Promise
Workflow Replay #2
Workflow Activity Client Activity Workflow History
Get history
History
Buy ticket
Promise with
confirmation
Book hotel
Book hotel
Promise
Hotel
confirmation
Activity Timeouts
Activity Heartbeats
Activity Heartbeats
Serialization of Exceptions
111010001101110101010111010001110100101000100100000010011110
010000110111101100101100011010011000010011011111011001001101
000111101100100111001100011011100010001111100101000111100100
111000010101111000011001010011010011101100000010001110000000
101110111100101111011001010001000100000000101110111000011000
110010101000010111111111100010010111011111100100000100010011
011101010111000100011010101111010100001011010001111000000101
000111011010001101010101111000100000000011110110001000111111
011000000110011011110011110001110101001111100100010100010011
110010011000100011000000101010011101100001110001010110111010
010111001101101010011110011011100000010100000110010110100000
011011011101100100100001101000101101011110000011001111001011
100000010100110111001101101001101010001000001110011000111100
101011101001110100001111101100010000000001000100100100111110
011000010100110010111011000011110101011000011111011011010100
History and Data Size Limits
25K 32K
http://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dg-limits.html
Summary
Serhiy Batyuk
sbatyuk@gmail.com
@sbatyuk