SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
Asad Jawahar
Give your little scripts big wings: Using cron in the cloud with
Amazon Simple Workflow
Senior Technical Program Manager
For applications with multiple connected steps…
• Amazon Simple Workflow provides the building blocks and a controller to
reduce the complexity of infrastructure programming and state machinery.
This helps customers focus on...
• Algorithms and logic that make their organizations unique
Many Use Cases
Cron
• Scheduled tasks
• Why use SWF for Cron?
– Failure handling
– Scale
– Lost tasks (office move, machine failure)
– OS provided cron not an option (shared hosting)
Roadmap
c
c : code
The implementation of
your control logic and
steps
d
d : deployment
worker processes,
machines, SWF
processing engine
l
l : logical
process model, flow
control, retry logic
etc
→ →
Key Simple Workflow concepts
Activities (and workers)
Workflows (and workers)
• Discrete steps in your
application, processors
• Logical grouping for multiple
activities, processors
Deciders
• Control logic for workflows:
execution order, retry policies,
timer logic, etc. – Decision tasks
Retained workflows
• Execution history for
workflows: auditable,
re-playable
Timers, signals
• Scheduled actions, Workflow
“interrupt requests”
SWF Concepts
Workflow – Image processing
Decider logic
Activities
Download
Encode
Apply DRM Upload
Copyright?
Amazon
SWF
Activity Workers
Workflow Workers
Decision
Tasks
Activity
Tasks
Activity
Tasks
Activity
Tasks
History
Responsibilities
AWSYou
SWF
• Step sequence logic
(“secret sauce”)
• Discrete step logic
• Workflow workers
• Activity workers
• I/O data
• State of execution
• Pending tasks
• Execution history
• Searching histories
• Control engine
class CronWorkflow
extend Decider
entry_point :start
activity_client :activityClient do |options|
options.prefix_name = "CronActivities"
end
def start(arg)
while true do
create_timer(86400){activityClient.backup “myDB"}
end
end
end
Cron in SWF
class CronActivities
extend Activity
activity :backup
def backup(arg)
# backup script
end
end
Daily Build Process
Ordinary cron, single point of failure
Download
files from S3
Run build
tools
Upload build
artifacts to
S3
Delete local
files
Send email
Handling Failures
Download
files from S3
Run build
tools
Upload build
artifacts to
S3
Delete local
files
Send email
Pass?
Pass?
Yes
YesNo
No
Resilient Cron
Job1
Job2
Job3
Job4
SWF
Resilient Cron
Distributed
asynchronous
interactions
Failure handling
Scalability Latency Auditability
• Coordinate scheduled tasks
across distributed hosts
• Reliable messaging
Coordination engine in the
cloud
• Stores and dispatches tasks
• Delivery guarantees
• Add workers at any time
• Need stateless workers
• State provided by another system
Scalability
• Repository of distributed
state
• Workers poll for work
• Exactly once delivery
• Many types of failures
• Different mitigations
• Must react quickly
Fault Tolerance
• No loss of distributed state
• Supports timeouts on work
• Explicit failure modeling
• Need visibility into process
execution
• Retain records for investigation
Audit History
• Index of executions
• Play-by-play history of
execution
• Retention of completed
executions
• Get work quickly
• Route tasks to specific workers
Low Latency
• Long polling for work
• Task routing through task
lists
Requirements
SWF provides
Introducing AWS Flow Framework (Ruby)
• Ease of use library for Amazon SWF APIs
• Uses standard Ruby constructs
• Open source
• Packaged as a gem
• In Private Beta (stay tuned for release)
Amazon
SWF
Benefits of AWS Flow Framework
• Run and load balance work on many machines with minimal changes
• Simplifies remote, long running, non-blocking steps
• Uses Amazon SWF to:
– Keep track of progress
– Triggers your code to execute next steps
• Failure handling built in
• Easily evolve your logic without adding complexity
Amazon
SWF
Hourly Build – Logical Control Flow
wait (1 hour)
copy files
run build task
upload files
delete local files
send email
if (failed)
retry up to 3 times
repeat
Download
files from S3
Run build
tools
Upload build
artifacts to
S3
Delete local
files
Send email
Build Cron Workflow – Execution Flow
Amazon
SWF
Execution History
- Input data
- Download complete
- Build complete
- Upload complete
Decisions:
1. Schedule download [shared]
2. Schedule build [worker1]
3. Schedule upload [worker1]
DECIDER
Makes decisions on what tasks to
schedule, when, in what order
Start Workflow Execution
Your App, SWF Console or
CLI
Starts execution of Cron
Workflow
Worker
Worker
Long poll
Long Poll
Long Poll
Worker 2
Worker 1
Decision Tasks
Get task
Get task
1. /tmp, worker1
Return decisions
Shared
- Delete local file
- Email sent
2. Built
4. Schedule delete files [worker1]
5. Schedule email [worker2]
6. Execution complete
3. Uploaded
4. Deleted
5. Email sent
Get task
Hourly Build – Decider
class BuildWorkflow
extend Decider
entry_point :start
activity_client :client do |options|
options.prefix_name = "BuildActivities"
end
def start(source_bucket, target_bucket)
while true do
create_timer(25) { start_build(source_bucket, target_bucket)}
end
end
def start_build(source, target)
begin
dir = client.download(source)
client.build(dir)
client.upload(dir, target)
ensure
client.delete(dir)
client.send_email(dir)
end
end
Task Routing
def start_build(source_bucket, target_bucket)
activity_client :client do |options|
options.prefix_name = "BuildActivities"
end
host_specific_task_list, dir = client.download bucket
client.build(dir) do |options|
options.default_task_list =host_specific_task_list
end
client.upload(dir, target_bucket) do |options|
options.default_task_list =host_specific_task_list
end
client.delete(dir) do |options|
options.default_task_list =host_specific_task_list
end
end
end
Exponential Retry
def start_build(source_bucket, target_bucket)
activity_client :client do |options|
options.prefix_name = "BuildActivities"
end
dir = client.exponential_retry (:download, bucket) do |options|
options.maximum_attempts = 3
end
client.build(dir)
client.exponential_retry (:upload, dir, target_bucket) do |options|
options.maximum_attempts = 3
end
client.exponential_retry (:delete, dir) do |options|
options.maximum_attempts = 3
end
end
Activities
class BuildActivities extend Activity
activity :download, :build, :upload, :delete do |options|
options.default_task_list = "list1"
options.version = "1"
options.default_task_heartbeat_timeout = "3600"
options.default_task_schedule_to_close_timeout = "30"
options.default_task_schedule_to_start_timeout = "30"
options.default_task_start_to_close_timeout = "30"
end
def download(bucket)
puts bucket
end
def build(dir)
puts dir
end
def upload(dir, bucket)
puts bucket
end
def delete(dir)
puts dir
end
end
Multiple builds in parallel
• Parent Cron workflow kicks off child Build Workflows
• Child workflow
– A workflow started from another workflow
– Runs independently with its own history
– Invocation similar to activities
– Factors functionality into reusable components
• Flow and SWF can run Child workflows and activities in parallel
Cron Workflow
(parent)
Build Workflow
(OS A)
Build Workflow
(OS B)
Download
files from S3
Run build
tools
Upload build
artifacts to
S3
Delete local
files
Send email
Download
files from S3
Run build
tools
Upload build
artifacts to
S3
Delete local
files
Send email
Multiple builds in parallel
Multiple builds in parallel
class CronWorkflow extend Decider
entry_point :start
def start(w_source_bucket, w_target_bucket, l_source_bucket, l_target_bucket)
while true do
workflow_client :w_client do |options|
options.name="BuildWorkflow"
options.task_list="win"
end
workflow_client :l_client do |options|
options.name="BuildWorkflow"
options.tasklist="linux"
end
create_timer(arg) do
result1 = w_client.send_async :start, w_source_bucket, w_target_bucket
result2 = l_client.send_async :start, l_source_bucket, l_target_bucket
wait_for_all(result1, result2)
end
continue_as_new
end
end
end
Concurrency in Ruby Flow
• Decider is single threaded
• Blocking semantics by default
• send_async for asynchronous execution
– Returns a Future
– Cedes control when waited on
– Uses fibers (requires Ruby 1.9 or better)
– Code looks similar to synchronous code
Continuous workflows
• SWF allows a workflow to stay open up to 1 year
• Workflow history grows over time as events get added
• Large history => latency
• Create new runs to keep history size in check
class BuildWorkflow extend Decider
entry_point :start
def start(source_bucket, target_bucket)
while true do
create_timer(3600) { start_build }
continue_as_new(source_bucket, target_bucket)
end
end
Activity Worker
• Hosts activity implementation
• Polls SWF for tasks and dispatches to your code
• Uses two thread pools
– Polling
– Running activity tasks
• Activity implementation must be thread safe
activity_worker = ActivityWorker.new(swf.client, domain, task_list)
activity_worker.add_activities_implementation(BuildActivities)
activity_worker.start
Workflow Worker
• Hosts workflow implementation
• Polls SWF for tasks and dispatches to your code
• Uses a single thread pool for polling and running tasks
– Your logic should be light weight and deterministic
• Delegate heavy lifting to activities
worker = WorkflowWorker.new(swf.client, domain, task_list)
worker.add_workflow_implementation_type(CronWorkflow)
worker.add_workflow_implementation_type(BuildWorkflow)
workflow_worker.start
Starting an execution
factory = workflow_factory swf, domain do |options|
options.workflow_name = “CronWorkflow"
options.execution_start_to_close_timeout = 3600
options.task_list = task_list
options.task_start_to_close_timeout = 3600
options.child_policy = :request_cancel
end
client = my_workflow_factory.get_client
workflow_execution = client.start(“sources“, “binaries”)
Learn More
• Amazon SWF
– aws.amazon.com/swf
• AWS Flow Framework in Ruby
– TBD
• Application Samples
– aws.amazon.com/code/3015904745387737
• Webinar Videos
– Introduction to Amazon SWF
– Using the AWS Flow Framework
• AWS Flow Framework source on GitHub
– TBD

Más contenido relacionado

La actualidad más candente

AWS Lambda: Event-driven Code for Devices and the Cloud
AWS Lambda: Event-driven Code for Devices and the CloudAWS Lambda: Event-driven Code for Devices and the Cloud
AWS Lambda: Event-driven Code for Devices and the CloudAmazon Web Services
 
Build a Serverless Web Application in One Day - DevDay Austin 2017
Build a Serverless Web Application in One Day - DevDay Austin 2017Build a Serverless Web Application in One Day - DevDay Austin 2017
Build a Serverless Web Application in One Day - DevDay Austin 2017Amazon Web Services
 
Continuous Delivery with AWS Lambda - AWS April 2016 Webinar Series
Continuous Delivery with AWS Lambda - AWS April 2016 Webinar SeriesContinuous Delivery with AWS Lambda - AWS April 2016 Webinar Series
Continuous Delivery with AWS Lambda - AWS April 2016 Webinar SeriesAmazon Web Services
 
Increase Speed and Agility with Amazon Web Services
Increase Speed and Agility with Amazon Web ServicesIncrease Speed and Agility with Amazon Web Services
Increase Speed and Agility with Amazon Web ServicesAmazon Web Services
 
(CMP403) AWS Lambda: Simplifying Big Data Workloads
(CMP403) AWS Lambda: Simplifying Big Data Workloads(CMP403) AWS Lambda: Simplifying Big Data Workloads
(CMP403) AWS Lambda: Simplifying Big Data WorkloadsAmazon Web Services
 
A Walk in the Cloud with AWS Lambda
A Walk in the Cloud with AWS LambdaA Walk in the Cloud with AWS Lambda
A Walk in the Cloud with AWS LambdaAmazon Web Services
 
5 Things You Don't Know About AWS Cloud
5 Things You Don't Know About AWS Cloud5 Things You Don't Know About AWS Cloud
5 Things You Don't Know About AWS CloudAmazon Web Services
 
Building Serverless Web Applications - DevDay Austin 2017
Building Serverless Web Applications - DevDay Austin 2017Building Serverless Web Applications - DevDay Austin 2017
Building Serverless Web Applications - DevDay Austin 2017Amazon Web Services
 
AWS Lambda: Event-driven Code in the Cloud
AWS Lambda: Event-driven Code in the CloudAWS Lambda: Event-driven Code in the Cloud
AWS Lambda: Event-driven Code in the CloudAmazon Web Services
 
AWS re:Invent 2016: Chalice: A Serverless Microframework for Python (DEV308)
AWS re:Invent 2016: Chalice: A Serverless Microframework for Python (DEV308)AWS re:Invent 2016: Chalice: A Serverless Microframework for Python (DEV308)
AWS re:Invent 2016: Chalice: A Serverless Microframework for Python (DEV308)Amazon Web Services
 
AWS October Webinar Series - AWS Lambda Best Practices: Python, Scheduled Job...
AWS October Webinar Series - AWS Lambda Best Practices: Python, Scheduled Job...AWS October Webinar Series - AWS Lambda Best Practices: Python, Scheduled Job...
AWS October Webinar Series - AWS Lambda Best Practices: Python, Scheduled Job...Amazon Web Services
 
AWS re:Invent 2016: Serverless Computing Patterns at Expedia (SVR306) )
AWS re:Invent 2016: Serverless Computing Patterns at Expedia (SVR306) )AWS re:Invent 2016: Serverless Computing Patterns at Expedia (SVR306) )
AWS re:Invent 2016: Serverless Computing Patterns at Expedia (SVR306) )Amazon Web Services
 
Running Containerised Applications at Scale on AWS
Running Containerised Applications at Scale on AWSRunning Containerised Applications at Scale on AWS
Running Containerised Applications at Scale on AWSAmazon Web Services
 
AWS Lambda - Event Driven Event-driven Code in the Cloud
AWS Lambda - Event Driven Event-driven Code in the CloudAWS Lambda - Event Driven Event-driven Code in the Cloud
AWS Lambda - Event Driven Event-driven Code in the CloudAmazon Web Services
 
AWS Lambda: Event-driven Code in the Cloud
AWS Lambda: Event-driven Code in the CloudAWS Lambda: Event-driven Code in the Cloud
AWS Lambda: Event-driven Code in the CloudAmazon Web Services
 
Building CICD Pipelines for Serverless Applications - DevDay Austin 2017
Building CICD Pipelines for Serverless Applications - DevDay Austin 2017Building CICD Pipelines for Serverless Applications - DevDay Austin 2017
Building CICD Pipelines for Serverless Applications - DevDay Austin 2017Amazon Web Services
 
AWS Lambda and the Serverless Cloud -Pop-up Loft
AWS Lambda and the Serverless Cloud -Pop-up LoftAWS Lambda and the Serverless Cloud -Pop-up Loft
AWS Lambda and the Serverless Cloud -Pop-up LoftAmazon Web Services
 
AWS Lambda and Serverless framework: lessons learned while building a serverl...
AWS Lambda and Serverless framework: lessons learned while building a serverl...AWS Lambda and Serverless framework: lessons learned while building a serverl...
AWS Lambda and Serverless framework: lessons learned while building a serverl...Luciano Mammino
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesAmazon Web Services
 

La actualidad más candente (20)

AWS Lambda: Event-driven Code for Devices and the Cloud
AWS Lambda: Event-driven Code for Devices and the CloudAWS Lambda: Event-driven Code for Devices and the Cloud
AWS Lambda: Event-driven Code for Devices and the Cloud
 
Build a Serverless Web Application in One Day - DevDay Austin 2017
Build a Serverless Web Application in One Day - DevDay Austin 2017Build a Serverless Web Application in One Day - DevDay Austin 2017
Build a Serverless Web Application in One Day - DevDay Austin 2017
 
What's New with AWS Lambda
What's New with AWS LambdaWhat's New with AWS Lambda
What's New with AWS Lambda
 
Continuous Delivery with AWS Lambda - AWS April 2016 Webinar Series
Continuous Delivery with AWS Lambda - AWS April 2016 Webinar SeriesContinuous Delivery with AWS Lambda - AWS April 2016 Webinar Series
Continuous Delivery with AWS Lambda - AWS April 2016 Webinar Series
 
Increase Speed and Agility with Amazon Web Services
Increase Speed and Agility with Amazon Web ServicesIncrease Speed and Agility with Amazon Web Services
Increase Speed and Agility with Amazon Web Services
 
(CMP403) AWS Lambda: Simplifying Big Data Workloads
(CMP403) AWS Lambda: Simplifying Big Data Workloads(CMP403) AWS Lambda: Simplifying Big Data Workloads
(CMP403) AWS Lambda: Simplifying Big Data Workloads
 
A Walk in the Cloud with AWS Lambda
A Walk in the Cloud with AWS LambdaA Walk in the Cloud with AWS Lambda
A Walk in the Cloud with AWS Lambda
 
5 Things You Don't Know About AWS Cloud
5 Things You Don't Know About AWS Cloud5 Things You Don't Know About AWS Cloud
5 Things You Don't Know About AWS Cloud
 
Building Serverless Web Applications - DevDay Austin 2017
Building Serverless Web Applications - DevDay Austin 2017Building Serverless Web Applications - DevDay Austin 2017
Building Serverless Web Applications - DevDay Austin 2017
 
AWS Lambda: Event-driven Code in the Cloud
AWS Lambda: Event-driven Code in the CloudAWS Lambda: Event-driven Code in the Cloud
AWS Lambda: Event-driven Code in the Cloud
 
AWS re:Invent 2016: Chalice: A Serverless Microframework for Python (DEV308)
AWS re:Invent 2016: Chalice: A Serverless Microframework for Python (DEV308)AWS re:Invent 2016: Chalice: A Serverless Microframework for Python (DEV308)
AWS re:Invent 2016: Chalice: A Serverless Microframework for Python (DEV308)
 
AWS October Webinar Series - AWS Lambda Best Practices: Python, Scheduled Job...
AWS October Webinar Series - AWS Lambda Best Practices: Python, Scheduled Job...AWS October Webinar Series - AWS Lambda Best Practices: Python, Scheduled Job...
AWS October Webinar Series - AWS Lambda Best Practices: Python, Scheduled Job...
 
AWS re:Invent 2016: Serverless Computing Patterns at Expedia (SVR306) )
AWS re:Invent 2016: Serverless Computing Patterns at Expedia (SVR306) )AWS re:Invent 2016: Serverless Computing Patterns at Expedia (SVR306) )
AWS re:Invent 2016: Serverless Computing Patterns at Expedia (SVR306) )
 
Running Containerised Applications at Scale on AWS
Running Containerised Applications at Scale on AWSRunning Containerised Applications at Scale on AWS
Running Containerised Applications at Scale on AWS
 
AWS Lambda - Event Driven Event-driven Code in the Cloud
AWS Lambda - Event Driven Event-driven Code in the CloudAWS Lambda - Event Driven Event-driven Code in the Cloud
AWS Lambda - Event Driven Event-driven Code in the Cloud
 
AWS Lambda: Event-driven Code in the Cloud
AWS Lambda: Event-driven Code in the CloudAWS Lambda: Event-driven Code in the Cloud
AWS Lambda: Event-driven Code in the Cloud
 
Building CICD Pipelines for Serverless Applications - DevDay Austin 2017
Building CICD Pipelines for Serverless Applications - DevDay Austin 2017Building CICD Pipelines for Serverless Applications - DevDay Austin 2017
Building CICD Pipelines for Serverless Applications - DevDay Austin 2017
 
AWS Lambda and the Serverless Cloud -Pop-up Loft
AWS Lambda and the Serverless Cloud -Pop-up LoftAWS Lambda and the Serverless Cloud -Pop-up Loft
AWS Lambda and the Serverless Cloud -Pop-up Loft
 
AWS Lambda and Serverless framework: lessons learned while building a serverl...
AWS Lambda and Serverless framework: lessons learned while building a serverl...AWS Lambda and Serverless framework: lessons learned while building a serverl...
AWS Lambda and Serverless framework: lessons learned while building a serverl...
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless Architectures
 

Destacado

AWS CloudFormation Session
AWS CloudFormation SessionAWS CloudFormation Session
AWS CloudFormation SessionKamal Maiti
 
Gaming in the Cloud at Websummit Dublin
Gaming in the Cloud at Websummit DublinGaming in the Cloud at Websummit Dublin
Gaming in the Cloud at Websummit DublinAmazon Web Services
 
AWS Summit 2011: Customer Presentation - NYTimes
AWS Summit 2011: Customer Presentation - NYTimesAWS Summit 2011: Customer Presentation - NYTimes
AWS Summit 2011: Customer Presentation - NYTimesAmazon Web Services
 
AWS July Webinar Series - Getting Started with Amazon DynamoDB
AWS July Webinar Series - Getting Started with Amazon DynamoDBAWS July Webinar Series - Getting Started with Amazon DynamoDB
AWS July Webinar Series - Getting Started with Amazon DynamoDBAmazon Web Services
 
Un backend: pour tous vos objets connectés
Un backend: pour tous vos objets connectésUn backend: pour tous vos objets connectés
Un backend: pour tous vos objets connectésAmazon Web Services
 
AWS Sydney Summit 2013 - Building Web Scale Applications with AWS
AWS Sydney Summit 2013 - Building Web Scale Applications with AWSAWS Sydney Summit 2013 - Building Web Scale Applications with AWS
AWS Sydney Summit 2013 - Building Web Scale Applications with AWSAmazon Web Services
 
Staying Lean with Amazon Web Services
Staying Lean with Amazon Web ServicesStaying Lean with Amazon Web Services
Staying Lean with Amazon Web ServicesAmazon Web Services
 
DAT303 Amazon Relational Database Service Best Practices - AWS re: Invent 2012
DAT303 Amazon Relational Database Service Best Practices - AWS re: Invent 2012DAT303 Amazon Relational Database Service Best Practices - AWS re: Invent 2012
DAT303 Amazon Relational Database Service Best Practices - AWS re: Invent 2012Amazon Web Services
 
RMG204 Optimizing Costs with AWS - AWS re: Invent 2012
RMG204 Optimizing Costs with AWS - AWS re: Invent 2012RMG204 Optimizing Costs with AWS - AWS re: Invent 2012
RMG204 Optimizing Costs with AWS - AWS re: Invent 2012Amazon Web Services
 
Relational Databases Redefined with AWS
Relational Databases Redefined with AWSRelational Databases Redefined with AWS
Relational Databases Redefined with AWSAmazon Web Services
 
Accelerating DevOps Pipelines with AWS
Accelerating DevOps Pipelines with AWSAccelerating DevOps Pipelines with AWS
Accelerating DevOps Pipelines with AWSAmazon Web Services
 
Accelerate Go-To-Market Speed in a CI/CD Environment
Accelerate Go-To-Market Speed in a CI/CD EnvironmentAccelerate Go-To-Market Speed in a CI/CD Environment
Accelerate Go-To-Market Speed in a CI/CD EnvironmentAmazon Web Services
 
Empowering Publishers - Unlocking the power of Amazon Web Services - May-15-2...
Empowering Publishers - Unlocking the power of Amazon Web Services - May-15-2...Empowering Publishers - Unlocking the power of Amazon Web Services - May-15-2...
Empowering Publishers - Unlocking the power of Amazon Web Services - May-15-2...Amazon Web Services
 
Deep Dive: Amazon Virtual Private Cloud
Deep Dive: Amazon Virtual Private CloudDeep Dive: Amazon Virtual Private Cloud
Deep Dive: Amazon Virtual Private CloudAmazon Web Services
 
Modern Security and Compliance Through Automation
Modern Security and Compliance Through AutomationModern Security and Compliance Through Automation
Modern Security and Compliance Through AutomationAmazon Web Services
 
Your First Week on Amazon Web Services
Your First Week on Amazon Web ServicesYour First Week on Amazon Web Services
Your First Week on Amazon Web ServicesAmazon Web Services
 

Destacado (20)

AWS CloudFormation Session
AWS CloudFormation SessionAWS CloudFormation Session
AWS CloudFormation Session
 
Gaming in the Cloud at Websummit Dublin
Gaming in the Cloud at Websummit DublinGaming in the Cloud at Websummit Dublin
Gaming in the Cloud at Websummit Dublin
 
Canberra Symposium Keynote
Canberra Symposium KeynoteCanberra Symposium Keynote
Canberra Symposium Keynote
 
AWS Summit 2011: Customer Presentation - NYTimes
AWS Summit 2011: Customer Presentation - NYTimesAWS Summit 2011: Customer Presentation - NYTimes
AWS Summit 2011: Customer Presentation - NYTimes
 
AWS July Webinar Series - Getting Started with Amazon DynamoDB
AWS July Webinar Series - Getting Started with Amazon DynamoDBAWS July Webinar Series - Getting Started with Amazon DynamoDB
AWS July Webinar Series - Getting Started with Amazon DynamoDB
 
Un backend: pour tous vos objets connectés
Un backend: pour tous vos objets connectésUn backend: pour tous vos objets connectés
Un backend: pour tous vos objets connectés
 
AWS Sydney Summit 2013 - Building Web Scale Applications with AWS
AWS Sydney Summit 2013 - Building Web Scale Applications with AWSAWS Sydney Summit 2013 - Building Web Scale Applications with AWS
AWS Sydney Summit 2013 - Building Web Scale Applications with AWS
 
Staying Lean with Amazon Web Services
Staying Lean with Amazon Web ServicesStaying Lean with Amazon Web Services
Staying Lean with Amazon Web Services
 
DAT303 Amazon Relational Database Service Best Practices - AWS re: Invent 2012
DAT303 Amazon Relational Database Service Best Practices - AWS re: Invent 2012DAT303 Amazon Relational Database Service Best Practices - AWS re: Invent 2012
DAT303 Amazon Relational Database Service Best Practices - AWS re: Invent 2012
 
RMG204 Optimizing Costs with AWS - AWS re: Invent 2012
RMG204 Optimizing Costs with AWS - AWS re: Invent 2012RMG204 Optimizing Costs with AWS - AWS re: Invent 2012
RMG204 Optimizing Costs with AWS - AWS re: Invent 2012
 
Relational Databases Redefined with AWS
Relational Databases Redefined with AWSRelational Databases Redefined with AWS
Relational Databases Redefined with AWS
 
Accelerating DevOps Pipelines with AWS
Accelerating DevOps Pipelines with AWSAccelerating DevOps Pipelines with AWS
Accelerating DevOps Pipelines with AWS
 
Accelerate Go-To-Market Speed in a CI/CD Environment
Accelerate Go-To-Market Speed in a CI/CD EnvironmentAccelerate Go-To-Market Speed in a CI/CD Environment
Accelerate Go-To-Market Speed in a CI/CD Environment
 
NoSQL like there is No Tomorrow
NoSQL like there is No TomorrowNoSQL like there is No Tomorrow
NoSQL like there is No Tomorrow
 
Analytics in the Cloud
Analytics in the CloudAnalytics in the Cloud
Analytics in the Cloud
 
Empowering Publishers - Unlocking the power of Amazon Web Services - May-15-2...
Empowering Publishers - Unlocking the power of Amazon Web Services - May-15-2...Empowering Publishers - Unlocking the power of Amazon Web Services - May-15-2...
Empowering Publishers - Unlocking the power of Amazon Web Services - May-15-2...
 
Masterclass Live: Amazon EC2
Masterclass Live: Amazon EC2 Masterclass Live: Amazon EC2
Masterclass Live: Amazon EC2
 
Deep Dive: Amazon Virtual Private Cloud
Deep Dive: Amazon Virtual Private CloudDeep Dive: Amazon Virtual Private Cloud
Deep Dive: Amazon Virtual Private Cloud
 
Modern Security and Compliance Through Automation
Modern Security and Compliance Through AutomationModern Security and Compliance Through Automation
Modern Security and Compliance Through Automation
 
Your First Week on Amazon Web Services
Your First Week on Amazon Web ServicesYour First Week on Amazon Web Services
Your First Week on Amazon Web Services
 

Similar a Using cron in the cloud with Amazon Simple Workflow

FlexDeploy Product Technical Overview
FlexDeploy Product Technical OverviewFlexDeploy Product Technical Overview
FlexDeploy Product Technical OverviewDalibor Blazevic
 
Ansible benelux meetup - Amsterdam 27-5-2015
Ansible benelux meetup - Amsterdam 27-5-2015Ansible benelux meetup - Amsterdam 27-5-2015
Ansible benelux meetup - Amsterdam 27-5-2015Pavel Chunyayev
 
Basic Understanding and Implement of Node.js
Basic Understanding and Implement of Node.jsBasic Understanding and Implement of Node.js
Basic Understanding and Implement of Node.jsGary Yeh
 
CFWheels - Pragmatic, Beautiful Code
CFWheels - Pragmatic, Beautiful CodeCFWheels - Pragmatic, Beautiful Code
CFWheels - Pragmatic, Beautiful Codeindiver
 
(ATS6-PLAT07) Managing AEP in an enterprise environment
(ATS6-PLAT07) Managing AEP in an enterprise environment(ATS6-PLAT07) Managing AEP in an enterprise environment
(ATS6-PLAT07) Managing AEP in an enterprise environmentBIOVIA
 
Building a document e-signing workflow with Azure Durable Functions
Building a document e-signing workflow with Azure Durable FunctionsBuilding a document e-signing workflow with Azure Durable Functions
Building a document e-signing workflow with Azure Durable FunctionsJoonas Westlin
 
COB - Azure Functions for Office 365 developers
COB - Azure Functions for Office 365 developersCOB - Azure Functions for Office 365 developers
COB - Azure Functions for Office 365 developersChris O'Brien
 
Windows 2012 R2 Multi Server Management
Windows 2012 R2 Multi Server ManagementWindows 2012 R2 Multi Server Management
Windows 2012 R2 Multi Server ManagementSharkrit JOBBO
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesAmazon Web Services
 
Running Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on HadoopRunning Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on Hadoopclairvoyantllc
 
python_development.pptx
python_development.pptxpython_development.pptx
python_development.pptxLemonReddy1
 
KACE Agent Architecture and Troubleshooting Overview
KACE Agent Architecture and Troubleshooting OverviewKACE Agent Architecture and Troubleshooting Overview
KACE Agent Architecture and Troubleshooting OverviewDell World
 
DevOps, Microservices and Serverless Architecture
DevOps, Microservices and Serverless ArchitectureDevOps, Microservices and Serverless Architecture
DevOps, Microservices and Serverless ArchitectureMikhail Prudnikov
 
O365Con18 - Automate your Tasks through Azure Functions - Elio Struyf
O365Con18 - Automate your Tasks through Azure Functions - Elio StruyfO365Con18 - Automate your Tasks through Azure Functions - Elio Struyf
O365Con18 - Automate your Tasks through Azure Functions - Elio StruyfNCCOMMS
 

Similar a Using cron in the cloud with Amazon Simple Workflow (20)

GoDocker presentation
GoDocker presentationGoDocker presentation
GoDocker presentation
 
Travis Wright - PS WF SMA SCSM SP
Travis Wright - PS WF SMA SCSM SPTravis Wright - PS WF SMA SCSM SP
Travis Wright - PS WF SMA SCSM SP
 
[Struyf] Automate Your Tasks With Azure Functions
[Struyf] Automate Your Tasks With Azure Functions[Struyf] Automate Your Tasks With Azure Functions
[Struyf] Automate Your Tasks With Azure Functions
 
FlexDeploy Product Technical Overview
FlexDeploy Product Technical OverviewFlexDeploy Product Technical Overview
FlexDeploy Product Technical Overview
 
Ansible benelux meetup - Amsterdam 27-5-2015
Ansible benelux meetup - Amsterdam 27-5-2015Ansible benelux meetup - Amsterdam 27-5-2015
Ansible benelux meetup - Amsterdam 27-5-2015
 
Basic Understanding and Implement of Node.js
Basic Understanding and Implement of Node.jsBasic Understanding and Implement of Node.js
Basic Understanding and Implement of Node.js
 
CFWheels - Pragmatic, Beautiful Code
CFWheels - Pragmatic, Beautiful CodeCFWheels - Pragmatic, Beautiful Code
CFWheels - Pragmatic, Beautiful Code
 
Serverless design with Fn project
Serverless design with Fn projectServerless design with Fn project
Serverless design with Fn project
 
(ATS6-PLAT07) Managing AEP in an enterprise environment
(ATS6-PLAT07) Managing AEP in an enterprise environment(ATS6-PLAT07) Managing AEP in an enterprise environment
(ATS6-PLAT07) Managing AEP in an enterprise environment
 
Building a document e-signing workflow with Azure Durable Functions
Building a document e-signing workflow with Azure Durable FunctionsBuilding a document e-signing workflow with Azure Durable Functions
Building a document e-signing workflow with Azure Durable Functions
 
COB - Azure Functions for Office 365 developers
COB - Azure Functions for Office 365 developersCOB - Azure Functions for Office 365 developers
COB - Azure Functions for Office 365 developers
 
Windows 2012 R2 Multi Server Management
Windows 2012 R2 Multi Server ManagementWindows 2012 R2 Multi Server Management
Windows 2012 R2 Multi Server Management
 
Reliable Messaging with AWS
Reliable Messaging with AWSReliable Messaging with AWS
Reliable Messaging with AWS
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless Architectures
 
Running Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on HadoopRunning Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on Hadoop
 
ServerLess by usama Azure fuctions.pptx
ServerLess by usama Azure fuctions.pptxServerLess by usama Azure fuctions.pptx
ServerLess by usama Azure fuctions.pptx
 
python_development.pptx
python_development.pptxpython_development.pptx
python_development.pptx
 
KACE Agent Architecture and Troubleshooting Overview
KACE Agent Architecture and Troubleshooting OverviewKACE Agent Architecture and Troubleshooting Overview
KACE Agent Architecture and Troubleshooting Overview
 
DevOps, Microservices and Serverless Architecture
DevOps, Microservices and Serverless ArchitectureDevOps, Microservices and Serverless Architecture
DevOps, Microservices and Serverless Architecture
 
O365Con18 - Automate your Tasks through Azure Functions - Elio Struyf
O365Con18 - Automate your Tasks through Azure Functions - Elio StruyfO365Con18 - Automate your Tasks through Azure Functions - Elio Struyf
O365Con18 - Automate your Tasks through Azure Functions - Elio Struyf
 

Más de Amazon Web Services

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Amazon Web Services
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Amazon Web Services
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateAmazon Web Services
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSAmazon Web Services
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Amazon Web Services
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Amazon Web Services
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...Amazon Web Services
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsAmazon Web Services
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareAmazon Web Services
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSAmazon Web Services
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAmazon Web Services
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareAmazon Web Services
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWSAmazon Web Services
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckAmazon Web Services
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without serversAmazon Web Services
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...Amazon Web Services
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceAmazon Web Services
 

Más de Amazon Web Services (20)

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS Fargate
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWS
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot
 
Open banking as a service
Open banking as a serviceOpen banking as a service
Open banking as a service
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
 
Computer Vision con AWS
Computer Vision con AWSComputer Vision con AWS
Computer Vision con AWS
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatare
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e web
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWS
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch Deck
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without servers
 
Fundraising Essentials
Fundraising EssentialsFundraising Essentials
Fundraising Essentials
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container Service
 

Último

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 

Último (20)

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 

Using cron in the cloud with Amazon Simple Workflow

  • 1. Asad Jawahar Give your little scripts big wings: Using cron in the cloud with Amazon Simple Workflow Senior Technical Program Manager
  • 2. For applications with multiple connected steps… • Amazon Simple Workflow provides the building blocks and a controller to reduce the complexity of infrastructure programming and state machinery. This helps customers focus on... • Algorithms and logic that make their organizations unique
  • 4. Cron • Scheduled tasks • Why use SWF for Cron? – Failure handling – Scale – Lost tasks (office move, machine failure) – OS provided cron not an option (shared hosting)
  • 5. Roadmap c c : code The implementation of your control logic and steps d d : deployment worker processes, machines, SWF processing engine l l : logical process model, flow control, retry logic etc → →
  • 6. Key Simple Workflow concepts Activities (and workers) Workflows (and workers) • Discrete steps in your application, processors • Logical grouping for multiple activities, processors Deciders • Control logic for workflows: execution order, retry policies, timer logic, etc. – Decision tasks Retained workflows • Execution history for workflows: auditable, re-playable Timers, signals • Scheduled actions, Workflow “interrupt requests”
  • 7. SWF Concepts Workflow – Image processing Decider logic Activities Download Encode Apply DRM Upload Copyright? Amazon SWF Activity Workers Workflow Workers Decision Tasks Activity Tasks Activity Tasks Activity Tasks History
  • 8. Responsibilities AWSYou SWF • Step sequence logic (“secret sauce”) • Discrete step logic • Workflow workers • Activity workers • I/O data • State of execution • Pending tasks • Execution history • Searching histories • Control engine
  • 9. class CronWorkflow extend Decider entry_point :start activity_client :activityClient do |options| options.prefix_name = "CronActivities" end def start(arg) while true do create_timer(86400){activityClient.backup “myDB"} end end end Cron in SWF class CronActivities extend Activity activity :backup def backup(arg) # backup script end end
  • 10. Daily Build Process Ordinary cron, single point of failure Download files from S3 Run build tools Upload build artifacts to S3 Delete local files Send email
  • 11. Handling Failures Download files from S3 Run build tools Upload build artifacts to S3 Delete local files Send email Pass? Pass? Yes YesNo No
  • 13. SWF Resilient Cron Distributed asynchronous interactions Failure handling Scalability Latency Auditability • Coordinate scheduled tasks across distributed hosts • Reliable messaging Coordination engine in the cloud • Stores and dispatches tasks • Delivery guarantees • Add workers at any time • Need stateless workers • State provided by another system Scalability • Repository of distributed state • Workers poll for work • Exactly once delivery • Many types of failures • Different mitigations • Must react quickly Fault Tolerance • No loss of distributed state • Supports timeouts on work • Explicit failure modeling • Need visibility into process execution • Retain records for investigation Audit History • Index of executions • Play-by-play history of execution • Retention of completed executions • Get work quickly • Route tasks to specific workers Low Latency • Long polling for work • Task routing through task lists Requirements SWF provides
  • 14. Introducing AWS Flow Framework (Ruby) • Ease of use library for Amazon SWF APIs • Uses standard Ruby constructs • Open source • Packaged as a gem • In Private Beta (stay tuned for release) Amazon SWF
  • 15. Benefits of AWS Flow Framework • Run and load balance work on many machines with minimal changes • Simplifies remote, long running, non-blocking steps • Uses Amazon SWF to: – Keep track of progress – Triggers your code to execute next steps • Failure handling built in • Easily evolve your logic without adding complexity Amazon SWF
  • 16. Hourly Build – Logical Control Flow wait (1 hour) copy files run build task upload files delete local files send email if (failed) retry up to 3 times repeat Download files from S3 Run build tools Upload build artifacts to S3 Delete local files Send email
  • 17. Build Cron Workflow – Execution Flow Amazon SWF Execution History - Input data - Download complete - Build complete - Upload complete Decisions: 1. Schedule download [shared] 2. Schedule build [worker1] 3. Schedule upload [worker1] DECIDER Makes decisions on what tasks to schedule, when, in what order Start Workflow Execution Your App, SWF Console or CLI Starts execution of Cron Workflow Worker Worker Long poll Long Poll Long Poll Worker 2 Worker 1 Decision Tasks Get task Get task 1. /tmp, worker1 Return decisions Shared - Delete local file - Email sent 2. Built 4. Schedule delete files [worker1] 5. Schedule email [worker2] 6. Execution complete 3. Uploaded 4. Deleted 5. Email sent Get task
  • 18. Hourly Build – Decider class BuildWorkflow extend Decider entry_point :start activity_client :client do |options| options.prefix_name = "BuildActivities" end def start(source_bucket, target_bucket) while true do create_timer(25) { start_build(source_bucket, target_bucket)} end end def start_build(source, target) begin dir = client.download(source) client.build(dir) client.upload(dir, target) ensure client.delete(dir) client.send_email(dir) end end
  • 19. Task Routing def start_build(source_bucket, target_bucket) activity_client :client do |options| options.prefix_name = "BuildActivities" end host_specific_task_list, dir = client.download bucket client.build(dir) do |options| options.default_task_list =host_specific_task_list end client.upload(dir, target_bucket) do |options| options.default_task_list =host_specific_task_list end client.delete(dir) do |options| options.default_task_list =host_specific_task_list end end end
  • 20. Exponential Retry def start_build(source_bucket, target_bucket) activity_client :client do |options| options.prefix_name = "BuildActivities" end dir = client.exponential_retry (:download, bucket) do |options| options.maximum_attempts = 3 end client.build(dir) client.exponential_retry (:upload, dir, target_bucket) do |options| options.maximum_attempts = 3 end client.exponential_retry (:delete, dir) do |options| options.maximum_attempts = 3 end end
  • 21. Activities class BuildActivities extend Activity activity :download, :build, :upload, :delete do |options| options.default_task_list = "list1" options.version = "1" options.default_task_heartbeat_timeout = "3600" options.default_task_schedule_to_close_timeout = "30" options.default_task_schedule_to_start_timeout = "30" options.default_task_start_to_close_timeout = "30" end def download(bucket) puts bucket end def build(dir) puts dir end def upload(dir, bucket) puts bucket end def delete(dir) puts dir end end
  • 22. Multiple builds in parallel • Parent Cron workflow kicks off child Build Workflows • Child workflow – A workflow started from another workflow – Runs independently with its own history – Invocation similar to activities – Factors functionality into reusable components • Flow and SWF can run Child workflows and activities in parallel
  • 23. Cron Workflow (parent) Build Workflow (OS A) Build Workflow (OS B) Download files from S3 Run build tools Upload build artifacts to S3 Delete local files Send email Download files from S3 Run build tools Upload build artifacts to S3 Delete local files Send email Multiple builds in parallel
  • 24. Multiple builds in parallel class CronWorkflow extend Decider entry_point :start def start(w_source_bucket, w_target_bucket, l_source_bucket, l_target_bucket) while true do workflow_client :w_client do |options| options.name="BuildWorkflow" options.task_list="win" end workflow_client :l_client do |options| options.name="BuildWorkflow" options.tasklist="linux" end create_timer(arg) do result1 = w_client.send_async :start, w_source_bucket, w_target_bucket result2 = l_client.send_async :start, l_source_bucket, l_target_bucket wait_for_all(result1, result2) end continue_as_new end end end
  • 25. Concurrency in Ruby Flow • Decider is single threaded • Blocking semantics by default • send_async for asynchronous execution – Returns a Future – Cedes control when waited on – Uses fibers (requires Ruby 1.9 or better) – Code looks similar to synchronous code
  • 26. Continuous workflows • SWF allows a workflow to stay open up to 1 year • Workflow history grows over time as events get added • Large history => latency • Create new runs to keep history size in check class BuildWorkflow extend Decider entry_point :start def start(source_bucket, target_bucket) while true do create_timer(3600) { start_build } continue_as_new(source_bucket, target_bucket) end end
  • 27. Activity Worker • Hosts activity implementation • Polls SWF for tasks and dispatches to your code • Uses two thread pools – Polling – Running activity tasks • Activity implementation must be thread safe activity_worker = ActivityWorker.new(swf.client, domain, task_list) activity_worker.add_activities_implementation(BuildActivities) activity_worker.start
  • 28. Workflow Worker • Hosts workflow implementation • Polls SWF for tasks and dispatches to your code • Uses a single thread pool for polling and running tasks – Your logic should be light weight and deterministic • Delegate heavy lifting to activities worker = WorkflowWorker.new(swf.client, domain, task_list) worker.add_workflow_implementation_type(CronWorkflow) worker.add_workflow_implementation_type(BuildWorkflow) workflow_worker.start
  • 29. Starting an execution factory = workflow_factory swf, domain do |options| options.workflow_name = “CronWorkflow" options.execution_start_to_close_timeout = 3600 options.task_list = task_list options.task_start_to_close_timeout = 3600 options.child_policy = :request_cancel end client = my_workflow_factory.get_client workflow_execution = client.start(“sources“, “binaries”)
  • 30. Learn More • Amazon SWF – aws.amazon.com/swf • AWS Flow Framework in Ruby – TBD • Application Samples – aws.amazon.com/code/3015904745387737 • Webinar Videos – Introduction to Amazon SWF – Using the AWS Flow Framework • AWS Flow Framework source on GitHub – TBD