You are on page 1of 98

AWS Simple Workflow

Distributed Out of the Box!

Serhiy Batyuk
Morning@Lohika
May 14, 2016
My Interests
Tech Lead at
AWS SWF > 1 year
Agenda

SWF Overview
Agenda

SWF Overview Demo


Agenda

SWF Overview Demo Our Experience


What Is AWS Simple Workflow?
AWS SWF Use Cases

Media Processing Infrastructure Provisioning

Data Processing Report Generation Business Processes

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

Java, SWF Flow


Ruby Framework

SWF
API AWS SWF

.Net,
Python,
others
Java Flow Framework

SWF

Workflow Starter Workflow Worker Activities Worker

Workflow
Implementation
Workflow Activities
Client Activities Implementations
Client

Client app Decider Worker

http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/awsflow-basics-application-structure.html
Java Flow Framework

SWF

Workflow Worker Activities Worker

Workflow
Client Activities
Client

Client app Decider Worker

http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/awsflow-basics-application-structure.html
Java Flow Framework

SWF

Workflow Starter

Workflow
Implementation
Activities
Implementations

Client app Decider Worker

http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/awsflow-basics-application-structure.html
Java Flow Framework Classes

@Workflow Client to schedule workflows

@Activities Client to schedule activities


Java Flow Framework Classes

@Workflow Client to schedule workflows

@Activities Client to schedule activities

WorkflowWorker Handle decision tasks

ActivitiesWorker Handle activity tasks


SWF Demo
Visit Organizer Workflow
Visit Organizer Workflow
Visit Organizer Workflow
Visit Organizer Workflow
Preparing for JEEConf

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!

public class HelloWorld {

public static void main() {


System.out.println(“Hi”);
}

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

Decider AWS SWF


Worker

My App
Decider Worker

http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/awsflow-basics-scalable.html
Scalable

Worker

Decider AWS SWF


Worker

My App
Decider Worker

http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/awsflow-basics-scalable.html
Activity Retries

Worker

Decider AWS SWF


Worker

My App
Decider Worker

http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/features-retry.html
Activity Retries

Worker

Decider AWS SWF


Worker

My App
Decider Worker

http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/features-retry.html
Activity Retries

Worker

Decider AWS SWF


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

Lamda tasks Timers

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

History events Message size


(chars)

http://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dg-limits.html
Summary

Programs with steps Scalability

Timeouts & Retries Java & Ruby


Questions

Serhiy Batyuk
sbatyuk@gmail.com
@sbatyuk

You might also like