SlideShare a Scribd company logo
1 of 157
Download to read offline
Deliver customer value
FASTER with Step Functions
Yan Cui @theburningmonk
What is step functions?
How it works?
When to use it?
Orchestration vs Choreography
Real-world case studies
Design patterns
Agenda
Step Functions
orchestration service that allows you to
model workflows as state machines
design with JSON
https://states-language.net/spec.html
Step Functions OOP
class
instance
execution
input arguments
start a state machine via..
StepFunctions
.startExecution(req)
.promise()
start a state machine via..
API Gateway
StepFunctions
.startExecution(req)
.promise()
start a state machine via..
EventBridge
including cron
StepFunctions
.startExecution(req)
.promise()
API Gateway
state transitions
state transitions
$25 PER MILLION
$25 PER MILLION
15X LAMBDA PRICING!
https://aws.amazon.com/about-aws/whats-new/2019/12/introducing-aws-step-functions-express-workflows
Yan Cui
http://theburningmonk.com
@theburningmonk
AWS user for 10 years
http://bit.ly/yubl-serverless
Yan Cui
http://theburningmonk.com
@theburningmonk
Developer Advocate @
Yan Cui
http://theburningmonk.com
@theburningmonk
Independent Consultant
advise
training development
theburningmonk.com/courses
homeschool.dev
designing state machines
types of states
"TaskState": {
 "Type": "Task",
 "Resource": "arn:aws:lambda:us-east-1:1234556788:function:hello-world",
 "Next": "NextState",
 "TimeoutSeconds": 300
}
Task
Performs a task.
"TaskState": {
 "Type": "Task",
 "Resource": "arn:aws:lambda:us-east-1:1234556788:function:hello-world",
 "Next": "NextState",
 "TimeoutSeconds": 300
}
Task
Performs a task.
"TaskState": {
 "Type": "Task",
 "Resource": "arn:aws:lambda:us-east-1:1234556788:function:hello-world",
 "Next": "NextState",
 "TimeoutSeconds": 300
}
Task
Performs a task.
"TaskState": {
 "Type": "Task",
 "Resource": "arn:aws:lambda:us-east-1:1234556788:function:hello-world",
 "Next": "NextState",
 "TimeoutSeconds": 300
}
Task
Performs a task.
"TaskState": {
 "Type": "Task",
 "Resource": "arn:aws:lambda:us-east-1:1234556788:function:hello-world",
 "Next": "NextState",
 "TimeoutSeconds": 300
}
Task
Defaults to 60s, even if function has longer timeout
Performs a task.
"TaskState": {
 "Type": "Task",
 "Resource": "arn:aws:lambda:us-east-1:1234556788:function:hello-world",
 "Next": "NextState",
 "TimeoutSeconds": 300
}
Task
Defaults to 60s, even if function has longer timeout
Set this to match your function’s timeout
Performs a task.
"TaskState": {
 "Type": "Task",
 "Resource": "arn:aws:lambda:us-east-1:1234556788:function:hello-world",
 "Next": "NextState",
 "TimeoutSeconds": 300
}
Task
Doesn’t have to be Lambda function.
Performs a task.
"TaskState": {
 "Type": "Task",
 "Resource": "arn:aws:lambda:us-east-1:1234556788:function:hello-world",
 "Next": "NextState",
 "TimeoutSeconds": 300
}
Task
Doesn’t have to be Lambda function.
Performs a task.
Activity, AWS Batch, ECS task, DynamoDB,
SNS, SQS, AWS Glue, SageMaker
{ “x”: 42, “y”: 13 }
$ =>
{
“x”: 42,
“y”: 13
}
"choose": {
"Type": "Choice",
"Choices": [
{
"And": [
{
"Variable": "$.x",
"NumericGreaterThanEquals": 42
},
{
"Variable": "$.y",
"NumericLessThan": 42
}
],
"Next": "subtract"
}
],
"Default": "add"
},
{ “x”: 42, “y”: 13 }
$ =>
{
“x”: 42,
“y”: 13
}
"subtract": {
"Type": "Task",
“Resource": "arn:aws:lambda:…",
"Next": "double",
"ResultPath": "$.n"
},
{ “x”: 42, “y”: 13 }
$ =>
{
“x”: 42,
“y”: 13
}
module.exports.handler = async (input, context) => {
return input.x - input.y
}
$.n
{ “x”: 42, “y”: 13 }
$ =>
{
“x”: 42,
“y”: 13,
“n”: 29
}
{ “x”: 42, “y”: 13 }
$ =>
{
“x”: 42,
“y”: 13,
“n”: 29
}
"double": {
“Type": "Task",
“Resource”: ”arn:aws:lambda:...",
“InputPath": "$.n",
“End": true
}
{ “x”: 42, “y”: 13 }
$ =>
{
“x”: 42,
“y”: 13,
“n”: 29
}
module.exports.handler = async (input, context) => {
return input * 2;
}
$.n
$
{ “x”: 42, “y”: 13 }
$ => 58
"double": {
“Type": "Task",
“Resource”: ”arn:aws:lambda:...",
“InputPath": "$.n",
“End": true
}
{ “x”: 42, “y”: 13 }
{ “output”: 58 }
"NoOp": {
 "Type": "Pass",  
 "Result": {
   "is": 42
 },
 "ResultPath": "$.the_answer_to_the_question_of_life_the_universe_and_everything",
 "Next": "NextState"
}
Pass
Passes input to output without doing any work.
"NoOp": {
 "Type": "Pass",  
 "Result": {
   "is": 42
 },
 "ResultPath": "$.the_answer_to_the_question_of_life_the_universe_and_everything",
 "Next": "NextState"
}
Pass
Passes input to output without doing any work.
Pass
Passes input to output without doing any work.
{ }
{
 “the_answer_to_the_question_of_life_the_universe_and_everything”: {
   “is”: 42
 }
}
"WaitTenSeconds" : {
 "Type" : "Wait",
 "Seconds" : 10,
 "Next": "NextState"
}
Wait
Wait before transitioning to next state.
"WaitTenSeconds" : {
 "Type" : "Wait",
“Timestamp": "2018-08-08T01:59:00Z",  
"Next": "NextState"
}
"WaitTenSeconds" : {
 "Type" : "Wait",
 "Seconds" : 10,
 "Next": "NextState"
}
Wait
Wait before transitioning to next state.
"WaitTenSeconds" : {
 "Type" : "Wait",
“Timestamp": "2018-08-08T01:59:00Z",  
"Next": "NextState"
}
"WaitTenSeconds" : {
 "Type" : "Wait",
 "SecondsPath" : "$.waitTime",
 "Next": "NextState"
}
Wait
Wait before transitioning to next state.
"WaitTenSeconds" : {
 "Type" : "Wait",
“TimestampPath": “$.waitUntil”,  
"Next": "NextState"
}
"ChoiceState": {
 "Type" : "Choice",
 "Choices": [
   {
      "Variable": "$.name",
     "StringEquals": "Neo"
     "Next": "RedPill"
   }
 ],
 "Default": "BluePill"
}
Choice
Adds branching logic to the state machine.
"ChoiceState": {
 "Type" : "Choice",
 "Choices": [
   {
      "Variable": "$.name",
     "StringEquals": "Neo"
     "Next": "RedPill"
   }
 ],
 "Default": "BluePill"
}
Choice
Adds branching logic to the state machine.
"ChoiceState": {
 "Type" : "Choice",
 "Choices": [
   {
      "Variable": "$.name",
     "StringEquals": "Neo"
     "Next": "RedPill"
   }
 ],
 "Default": "BluePill"
}
Choice
Adds branching logic to the state machine.
"ChoiceState": {
 "Type" : "Choice",
 "Choices": [
   {
      "Variable": "$.name",
     "StringEquals": "Neo"
     "Next": "RedPill"
   }
 ],
 "Default": "BluePill"
}
Choice
Adds branching logic to the state machine.
{
“And”: [
{
      "Variable": "$.name",
      "StringEquals": “Cypher"
    },
{
      "Variable": "$.afterNeoIsRescued",
      "BooleanEquals": true
    },
],
  "Next": "BluePill"
}
"FunWithMath": {
 "Type": "Parallel",
 "Branches": [
   {
     "StartAt": "Add",
     "States": {
       "Add": {
         "Type": "Task",
         "Resource": "arn:aws:lambda:us-east-1:1234556788:function:add",
         "End": true
       }
     }
   },
   …
 ],
 "Next": "NextState"
}
Parallel
Performs tasks in parallel.
"FunWithMath": {
 "Type": "Map",
 "Iterator": [
   {
     "StartAt": "DoSomething",
     "States": {
       "Add": {
         "Type": "Task",
         "Resource": “arn:aws:lambda:us-east-1:1234556788:function:doSomething",
         "End": true
       }
     }
   },
   …
 ],
 "Next": "NextState"
}
Map
Dynamic parallelism!
"FunWithMath": {
 "Type": "Map",
 "Iterator": [
   {
     "StartAt": "DoSomething",
     "States": {
       "Add": {
         "Type": "Task",
         "Resource": "arn:aws:lambda:us-east-1:1234556788:function:doSomething",
         "End": true
       }
     }
   },
   …
 ],
 "Next": "NextState"
}
Map
Dynamic parallelism!
e.g. [ { … }, { … }, { … } ]
"SuccessState" : {
 "Type" : "Succeed"
}
Succeed
Terminates the state machine successfully.
"FailState" : {
 "Type" : “Fail",
"Error" : "TypeA",
"Cause" : "Kaiju Attack",
}
Fail
Terminates the state machine and mark it as failure.
https://aws.amazon.com/about-aws/whats-new/2019/08/aws-step-function-adds-support-for-nested-workflows
WHEN TO USE STEP FUNCTIONS?
$25 PER MILLION
15X LAMBDA PRICING!
another moving part to manage
what’s the return-on-investment?
Pros Cons
$$$
https://aws.amazon.com/about-aws/whats-new/2019/12/introducing-aws-step-functions-express-workflows
Pros Cons
visual
$$$
Great for collaboration with team
members who are not engineers
Makes it easy for anyone to identify
and debug application errors.
Pros Cons
visual
$$$
error handling
Makes deciding on timeout setting for Lambda
functions easier when you don’t have to consider
retry and exponential backoff, etc.
Surfaces error handling for everyone to see, makes it
easy for others to see without digging into the code.
Pros Cons
visual
$$$
error handling
audit
Pros Cons
visual
$$$
error handling
audit
business critical workflows
what: stuff that makes money, e.g. payment and
subscription flows.
why: more robust error handling worth the premium.
complex workflows
what: complex workflows that involves many states,
branching logic, etc.
why: visual workflow is a powerful design (for product)
and diagnostic tool (for customer support).
long running workflows
what: workflows that cannot complete in 15 minutes
(Lambda limit).
why: AWS discourages recursive Lambda functions,
Step Functions gives you explicit branching checks,
and can timeout at workflow level.
https://aws.amazon.com/about-aws/whats-new/2019/12/introducing-aws-step-functions-express-workflows
https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html
https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html
https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html
https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html
use Express Workflows for high-throughput,
short-lived workflows (OLTP)
Pros Cons
visual
$$$
error handling
audit
Orchestration Choreography
Orchestration Choreography
orchestration within a bounded-context
choreography between bounded-contexts
Rule of Thumb
bounded context
fits within my head
high cohesion
same ownership
bounded context
the workflow doesn’t exist
as a standalone concept,
but as the sum of a series of
loosely connected parts
Lambda
Lambda
Lambda
SQS
SQS
API Gateway
bounded context A bounded context B bounded context C
EventBridge SNS
https://lumigo.io/blog/5-reasons-why-you-should-use-eventbridge-instead-of-sns
don’t forget to
emit events from
the workflow
orchestration within a bounded-context
choreography between bounded-contexts
Rule of Thumb
Step Functions in the wild
Backend system was slow and had
timing issue, so they needed to add a
90s delay before processing payment.
Step Functions was the most cost-
efficient and scalable way to
implement this wait.
Update nutritional info on over 100
brands to comply with FDA regulations.
Reduced processing time from 36 hours
to 10 seconds.
Transcode video segments in parallel.
Reduced processing time from ~20 mins
to ~2 mins.
Manages their food delivery experience.
Automates subscription fulfilments with
Step Functions.
Automates subscription billing system
with Step Functions.
Implements payment processing, and
subscription fulfillment systems with Step
Functions, and many more.
sagas
managing failures in a distributed transaction
Success path!
Failure paths…
"BookFlight": {
"Type": “Task",
"Resource": “arn:aws:lambda:…”,
"Catch": [
{
"ErrorEquals": [ “States.ALL" ],
"ResultPath": "$.BookFlightError",
"Next": “CancelFlight"
}
],
"ResultPath": "$.BookFlightResult",
"Next": "BookRental"
},
"BookFlight": {
"Type": “Task",
"Resource": “arn:aws:lambda:…”,
"Catch": [
{
"ErrorEquals": [ “States.ALL" ],
"ResultPath": "$.BookFlightError",
"Next": “CancelFlight"
}
],
"ResultPath": "$.BookFlightResult",
"Next": "BookRental"
},
"BookFlight": {
"Type": “Task",
"Resource": “arn:aws:lambda:…”,
"Catch": [
{
"ErrorEquals": [ “States.ALL" ],
"ResultPath": "$.BookFlightError",
"Next": “CancelFlight"
}
],
"ResultPath": "$.BookFlightResult",
"Next": "BookRental"
},
"CancelFlight": {
"Type": “Task",
"Resource": “arn:aws:lambda:…”,
"Catch": [
{
"ErrorEquals": [ “States.ALL" ],
"ResultPath": "$.CancelFlightError",
"Next": “CancelFlight"
}
],
"ResultPath": "$.CancelFlightResult",
"Next": “CancelHotel"
},
"CancelFlight": {
"Type": “Task",
"Resource": “arn:aws:lambda:…”,
"Catch": [
{
"ErrorEquals": [ “States.ALL" ],
"ResultPath": "$.CancelFlightError",
"Next": “CancelFlight"
}
],
"ResultPath": "$.CancelFlightResult",
"Next": “CancelHotel"
},
https://github.com/theburningmonk/lambda-saga-pattern
callbacks
https://docs.aws.amazon.com/step-functions/latest/dg/connect-to-resource.html#connect-wait-token
TaskToken
TaskToken
?
?
sendTaskSuccess(TaskToken)
?
"Publish SQS message": {
 "Type": "Task",
 "Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",
 "Parameters": {
 "QueueUrl": !Ref MyQueue,
"MessageBody": {
"Token.$": "$$.Task.Token"
}
},
 "Next": "NextState"
}
"Publish SQS message": {
 "Type": "Task",
 "Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",
 "Parameters": {
 "QueueUrl": !Ref MyQueue,
"MessageBody": {
"Token.$": "$$.Task.Token"
}
},
 "Next": "NextState"
}
"Publish SQS message": {
 "Type": "Task",
 "Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",
 "Parameters": {
 "QueueUrl": !Ref MyQueue,
"MessageBody": {
"Token.$": "$$.Task.Token"
}
},
 "Next": "NextState"
}
"Publish SQS message": {
 "Type": "Task",
 "Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",
 "Parameters": {
 "QueueUrl": !Ref MyQueue,
"MessageBody": {
"Token.$": "$$.Task.Token"
}
},
 "Next": "NextState"
}
https://docs.aws.amazon.com/step-functions/latest/dg/input-output-contextobject.html
"Publish SQS message": {
 "Type": "Task",
 "Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",
 "Parameters": {
 "QueueUrl": !Ref MyQueue,
"MessageBody": {
"Token.$": "$$.Task.Token",
"ExecutionId.$": "$$.Execution.Id",
"StateMachineId.$": "$$.StateMachine.Id"
}
},
 "Next": "NextState"
}
sendTaskSuccess(TaskToken)
?
needs access to
Step Functions
HTTP POST
?
sendTaskSuccess
https://go.aws/38KynD1
TaskToken
map-reduce
Map
Map
…
Map
…
{ … }
{ … }
{ … }
{ … }
{ … }
Map
…
{ … }
{ … }
{ … }
{ … }
{ … }
[{ … }, { … } … ]
Map
…
{ … }
{ … }
{ … }
{ … }
{ … }
[{ … }, { … } … ] Reduce
https://github.com/awsdocs/aws-step-functions-developer-guide/blob/master/doc_source/limits.md
https://github.com/awsdocs/aws-step-functions-developer-guide/blob/master/doc_source/limits.md
use S3 to store
large payloads
theburningmonk.com/hire-me
Advise
Training Delivery
“Fundamentally, Yan has improved our team by increasing our
ability to derive value from AWS and Lambda in particular.”
Nick Blair
Tech Lead
productionreadyserverless.com
@theburningmonk
theburningmonk.com
github.com/theburningmonk

More Related Content

What's hot

Crafting Quality PHP Applications (PHPkonf 2018)
Crafting Quality PHP Applications (PHPkonf 2018)Crafting Quality PHP Applications (PHPkonf 2018)
Crafting Quality PHP Applications (PHPkonf 2018)James Titcumb
 
Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)James Titcumb
 
Beyond MVC: from Model to Domain
Beyond MVC: from Model to DomainBeyond MVC: from Model to Domain
Beyond MVC: from Model to DomainJeremy Cook
 
Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)
Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)
Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)James Titcumb
 
Turn your spaghetti code into ravioli with JavaScript modules
Turn your spaghetti code into ravioli with JavaScript modulesTurn your spaghetti code into ravioli with JavaScript modules
Turn your spaghetti code into ravioli with JavaScript modulesjerryorr
 
The battle of Protractor and Cypress - RunIT Conference 2019
The battle of Protractor and Cypress - RunIT Conference 2019The battle of Protractor and Cypress - RunIT Conference 2019
The battle of Protractor and Cypress - RunIT Conference 2019Ludmila Nesvitiy
 
Ajax Under The Hood
Ajax Under The HoodAjax Under The Hood
Ajax Under The HoodWO Community
 

What's hot (7)

Crafting Quality PHP Applications (PHPkonf 2018)
Crafting Quality PHP Applications (PHPkonf 2018)Crafting Quality PHP Applications (PHPkonf 2018)
Crafting Quality PHP Applications (PHPkonf 2018)
 
Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)
 
Beyond MVC: from Model to Domain
Beyond MVC: from Model to DomainBeyond MVC: from Model to Domain
Beyond MVC: from Model to Domain
 
Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)
Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)
Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)
 
Turn your spaghetti code into ravioli with JavaScript modules
Turn your spaghetti code into ravioli with JavaScript modulesTurn your spaghetti code into ravioli with JavaScript modules
Turn your spaghetti code into ravioli with JavaScript modules
 
The battle of Protractor and Cypress - RunIT Conference 2019
The battle of Protractor and Cypress - RunIT Conference 2019The battle of Protractor and Cypress - RunIT Conference 2019
The battle of Protractor and Cypress - RunIT Conference 2019
 
Ajax Under The Hood
Ajax Under The HoodAjax Under The Hood
Ajax Under The Hood
 

Similar to How to ship customer value faster with step functions

How to ship customer value faster with step functions
How to ship customer value faster with step functionsHow to ship customer value faster with step functions
How to ship customer value faster with step functionsYan Cui
 
How to ship customer value faster with step functions
How to ship customer value faster with step functionsHow to ship customer value faster with step functions
How to ship customer value faster with step functionsYan Cui
 
Announcing AWS Step Functions - December 2016 Monthly Webinar Series
Announcing AWS Step Functions - December 2016 Monthly Webinar SeriesAnnouncing AWS Step Functions - December 2016 Monthly Webinar Series
Announcing AWS Step Functions - December 2016 Monthly Webinar SeriesAmazon Web Services
 
Serverless Orchestration of AWS Step Functions - July 2017 AWS Online Tech Talks
Serverless Orchestration of AWS Step Functions - July 2017 AWS Online Tech TalksServerless Orchestration of AWS Step Functions - July 2017 AWS Online Tech Talks
Serverless Orchestration of AWS Step Functions - July 2017 AWS Online Tech TalksAmazon Web Services
 
Delightful steps to becoming a functioning user of Step Functions
Delightful steps to becoming a functioning user of Step FunctionsDelightful steps to becoming a functioning user of Step Functions
Delightful steps to becoming a functioning user of Step FunctionsYan Cui
 
Serverless Orchestration with AWS Step Functions - May 2017 AWS Online Tech T...
Serverless Orchestration with AWS Step Functions - May 2017 AWS Online Tech T...Serverless Orchestration with AWS Step Functions - May 2017 AWS Online Tech T...
Serverless Orchestration with AWS Step Functions - May 2017 AWS Online Tech T...Amazon Web Services
 
Introduction to AWS Step Functions:
Introduction to AWS Step Functions: Introduction to AWS Step Functions:
Introduction to AWS Step Functions: Amazon Web Services
 
SMC304 Serverless Orchestration with AWS Step Functions
SMC304 Serverless Orchestration with AWS Step FunctionsSMC304 Serverless Orchestration with AWS Step Functions
SMC304 Serverless Orchestration with AWS Step FunctionsAmazon Web Services
 
AWS Step Functions를 이용한 마이크로서비스 개발하기 - 김현민 (4CSoft)
AWS Step Functions를 이용한 마이크로서비스 개발하기 - 김현민 (4CSoft)AWS Step Functions를 이용한 마이크로서비스 개발하기 - 김현민 (4CSoft)
AWS Step Functions를 이용한 마이크로서비스 개발하기 - 김현민 (4CSoft)AWSKRUG - AWS한국사용자모임
 
AWS Step Functions 実践
AWS Step Functions 実践AWS Step Functions 実践
AWS Step Functions 実践Shuji Kikuchi
 
Building Distributed Applications with AWS Step Functions
Building Distributed Applications with AWS Step FunctionsBuilding Distributed Applications with AWS Step Functions
Building Distributed Applications with AWS Step FunctionsAmazon Web Services
 
Javascript Everywhere From Nose To Tail
Javascript Everywhere From Nose To TailJavascript Everywhere From Nose To Tail
Javascript Everywhere From Nose To TailCliffano Subagio
 
Bonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsBonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsFrancois Zaninotto
 
Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016Ben Lesh
 
Flink Forward San Francisco 2019: Build a Table-centric Apache Flink Ecosyste...
Flink Forward San Francisco 2019: Build a Table-centric Apache Flink Ecosyste...Flink Forward San Francisco 2019: Build a Table-centric Apache Flink Ecosyste...
Flink Forward San Francisco 2019: Build a Table-centric Apache Flink Ecosyste...Flink Forward
 
Flink Forward San Francisco 2019: Build a Table-centric Apache Flink Ecosyste...
Flink Forward San Francisco 2019: Build a Table-centric Apache Flink Ecosyste...Flink Forward San Francisco 2019: Build a Table-centric Apache Flink Ecosyste...
Flink Forward San Francisco 2019: Build a Table-centric Apache Flink Ecosyste...Flink Forward
 
Building Advanced Serverless Applications
Building Advanced Serverless ApplicationsBuilding Advanced Serverless Applications
Building Advanced Serverless ApplicationsAmazon Web Services
 
Reactive Programming - ReactFoo 2020 - Aziz Khambati
Reactive Programming - ReactFoo 2020 - Aziz KhambatiReactive Programming - ReactFoo 2020 - Aziz Khambati
Reactive Programming - ReactFoo 2020 - Aziz KhambatiAziz Khambati
 

Similar to How to ship customer value faster with step functions (20)

How to ship customer value faster with step functions
How to ship customer value faster with step functionsHow to ship customer value faster with step functions
How to ship customer value faster with step functions
 
How to ship customer value faster with step functions
How to ship customer value faster with step functionsHow to ship customer value faster with step functions
How to ship customer value faster with step functions
 
Announcing AWS Step Functions - December 2016 Monthly Webinar Series
Announcing AWS Step Functions - December 2016 Monthly Webinar SeriesAnnouncing AWS Step Functions - December 2016 Monthly Webinar Series
Announcing AWS Step Functions - December 2016 Monthly Webinar Series
 
Serverless Orchestration of AWS Step Functions - July 2017 AWS Online Tech Talks
Serverless Orchestration of AWS Step Functions - July 2017 AWS Online Tech TalksServerless Orchestration of AWS Step Functions - July 2017 AWS Online Tech Talks
Serverless Orchestration of AWS Step Functions - July 2017 AWS Online Tech Talks
 
Delightful steps to becoming a functioning user of Step Functions
Delightful steps to becoming a functioning user of Step FunctionsDelightful steps to becoming a functioning user of Step Functions
Delightful steps to becoming a functioning user of Step Functions
 
Serverless Orchestration with AWS Step Functions - May 2017 AWS Online Tech T...
Serverless Orchestration with AWS Step Functions - May 2017 AWS Online Tech T...Serverless Orchestration with AWS Step Functions - May 2017 AWS Online Tech T...
Serverless Orchestration with AWS Step Functions - May 2017 AWS Online Tech T...
 
Introduction to AWS Step Functions:
Introduction to AWS Step Functions: Introduction to AWS Step Functions:
Introduction to AWS Step Functions:
 
Serverless Apps with AWS Step Functions
Serverless Apps with AWS Step FunctionsServerless Apps with AWS Step Functions
Serverless Apps with AWS Step Functions
 
SMC304 Serverless Orchestration with AWS Step Functions
SMC304 Serverless Orchestration with AWS Step FunctionsSMC304 Serverless Orchestration with AWS Step Functions
SMC304 Serverless Orchestration with AWS Step Functions
 
AWS Step Functions를 이용한 마이크로서비스 개발하기 - 김현민 (4CSoft)
AWS Step Functions를 이용한 마이크로서비스 개발하기 - 김현민 (4CSoft)AWS Step Functions를 이용한 마이크로서비스 개발하기 - 김현민 (4CSoft)
AWS Step Functions를 이용한 마이크로서비스 개발하기 - 김현민 (4CSoft)
 
AWS Step Functions 実践
AWS Step Functions 実践AWS Step Functions 実践
AWS Step Functions 実践
 
Building Distributed Applications with AWS Step Functions
Building Distributed Applications with AWS Step FunctionsBuilding Distributed Applications with AWS Step Functions
Building Distributed Applications with AWS Step Functions
 
Javascript Everywhere From Nose To Tail
Javascript Everywhere From Nose To TailJavascript Everywhere From Nose To Tail
Javascript Everywhere From Nose To Tail
 
Bonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsBonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node js
 
Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016Async Redux Actions With RxJS - React Rally 2016
Async Redux Actions With RxJS - React Rally 2016
 
Flink Forward San Francisco 2019: Build a Table-centric Apache Flink Ecosyste...
Flink Forward San Francisco 2019: Build a Table-centric Apache Flink Ecosyste...Flink Forward San Francisco 2019: Build a Table-centric Apache Flink Ecosyste...
Flink Forward San Francisco 2019: Build a Table-centric Apache Flink Ecosyste...
 
Flink Forward San Francisco 2019: Build a Table-centric Apache Flink Ecosyste...
Flink Forward San Francisco 2019: Build a Table-centric Apache Flink Ecosyste...Flink Forward San Francisco 2019: Build a Table-centric Apache Flink Ecosyste...
Flink Forward San Francisco 2019: Build a Table-centric Apache Flink Ecosyste...
 
Building Advanced Serverless Applications
Building Advanced Serverless ApplicationsBuilding Advanced Serverless Applications
Building Advanced Serverless Applications
 
Reactive Programming - ReactFoo 2020 - Aziz Khambati
Reactive Programming - ReactFoo 2020 - Aziz KhambatiReactive Programming - ReactFoo 2020 - Aziz Khambati
Reactive Programming - ReactFoo 2020 - Aziz Khambati
 
Ams adapters
Ams adaptersAms adapters
Ams adapters
 

More from Yan Cui

How to win the game of trade-offs
How to win the game of trade-offsHow to win the game of trade-offs
How to win the game of trade-offsYan Cui
 
How to choose the right messaging service
How to choose the right messaging serviceHow to choose the right messaging service
How to choose the right messaging serviceYan Cui
 
How to choose the right messaging service for your workload
How to choose the right messaging service for your workloadHow to choose the right messaging service for your workload
How to choose the right messaging service for your workloadYan Cui
 
Patterns and practices for building resilient serverless applications.pdf
Patterns and practices for building resilient serverless applications.pdfPatterns and practices for building resilient serverless applications.pdf
Patterns and practices for building resilient serverless applications.pdfYan Cui
 
Lambda and DynamoDB best practices
Lambda and DynamoDB best practicesLambda and DynamoDB best practices
Lambda and DynamoDB best practicesYan Cui
 
Lessons from running AppSync in prod
Lessons from running AppSync in prodLessons from running AppSync in prod
Lessons from running AppSync in prodYan Cui
 
Serverless observability - a hero's perspective
Serverless observability - a hero's perspectiveServerless observability - a hero's perspective
Serverless observability - a hero's perspectiveYan Cui
 
How serverless changes the cost paradigm
How serverless changes the cost paradigmHow serverless changes the cost paradigm
How serverless changes the cost paradigmYan Cui
 
Why your next serverless project should use AWS AppSync
Why your next serverless project should use AWS AppSyncWhy your next serverless project should use AWS AppSync
Why your next serverless project should use AWS AppSyncYan Cui
 
Build social network in 4 weeks
Build social network in 4 weeksBuild social network in 4 weeks
Build social network in 4 weeksYan Cui
 
Patterns and practices for building resilient serverless applications
Patterns and practices for building resilient serverless applicationsPatterns and practices for building resilient serverless applications
Patterns and practices for building resilient serverless applicationsYan Cui
 
How to bring chaos engineering to serverless
How to bring chaos engineering to serverlessHow to bring chaos engineering to serverless
How to bring chaos engineering to serverlessYan Cui
 
Migrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 stepsMigrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 stepsYan Cui
 
Building a social network in under 4 weeks with Serverless and GraphQL
Building a social network in under 4 weeks with Serverless and GraphQLBuilding a social network in under 4 weeks with Serverless and GraphQL
Building a social network in under 4 weeks with Serverless and GraphQLYan Cui
 
FinDev as a business advantage in the post covid19 economy
FinDev as a business advantage in the post covid19 economyFinDev as a business advantage in the post covid19 economy
FinDev as a business advantage in the post covid19 economyYan Cui
 
How to improve lambda cold starts
How to improve lambda cold startsHow to improve lambda cold starts
How to improve lambda cold startsYan Cui
 
What can you do with lambda in 2020
What can you do with lambda in 2020What can you do with lambda in 2020
What can you do with lambda in 2020Yan Cui
 
A chaos experiment a day, keeping the outage away
A chaos experiment a day, keeping the outage awayA chaos experiment a day, keeping the outage away
A chaos experiment a day, keeping the outage awayYan Cui
 
How to debug slow lambda response times
How to debug slow lambda response timesHow to debug slow lambda response times
How to debug slow lambda response timesYan Cui
 
What can you do with lambda in 2020
What can you do with lambda in 2020What can you do with lambda in 2020
What can you do with lambda in 2020Yan Cui
 

More from Yan Cui (20)

How to win the game of trade-offs
How to win the game of trade-offsHow to win the game of trade-offs
How to win the game of trade-offs
 
How to choose the right messaging service
How to choose the right messaging serviceHow to choose the right messaging service
How to choose the right messaging service
 
How to choose the right messaging service for your workload
How to choose the right messaging service for your workloadHow to choose the right messaging service for your workload
How to choose the right messaging service for your workload
 
Patterns and practices for building resilient serverless applications.pdf
Patterns and practices for building resilient serverless applications.pdfPatterns and practices for building resilient serverless applications.pdf
Patterns and practices for building resilient serverless applications.pdf
 
Lambda and DynamoDB best practices
Lambda and DynamoDB best practicesLambda and DynamoDB best practices
Lambda and DynamoDB best practices
 
Lessons from running AppSync in prod
Lessons from running AppSync in prodLessons from running AppSync in prod
Lessons from running AppSync in prod
 
Serverless observability - a hero's perspective
Serverless observability - a hero's perspectiveServerless observability - a hero's perspective
Serverless observability - a hero's perspective
 
How serverless changes the cost paradigm
How serverless changes the cost paradigmHow serverless changes the cost paradigm
How serverless changes the cost paradigm
 
Why your next serverless project should use AWS AppSync
Why your next serverless project should use AWS AppSyncWhy your next serverless project should use AWS AppSync
Why your next serverless project should use AWS AppSync
 
Build social network in 4 weeks
Build social network in 4 weeksBuild social network in 4 weeks
Build social network in 4 weeks
 
Patterns and practices for building resilient serverless applications
Patterns and practices for building resilient serverless applicationsPatterns and practices for building resilient serverless applications
Patterns and practices for building resilient serverless applications
 
How to bring chaos engineering to serverless
How to bring chaos engineering to serverlessHow to bring chaos engineering to serverless
How to bring chaos engineering to serverless
 
Migrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 stepsMigrating existing monolith to serverless in 8 steps
Migrating existing monolith to serverless in 8 steps
 
Building a social network in under 4 weeks with Serverless and GraphQL
Building a social network in under 4 weeks with Serverless and GraphQLBuilding a social network in under 4 weeks with Serverless and GraphQL
Building a social network in under 4 weeks with Serverless and GraphQL
 
FinDev as a business advantage in the post covid19 economy
FinDev as a business advantage in the post covid19 economyFinDev as a business advantage in the post covid19 economy
FinDev as a business advantage in the post covid19 economy
 
How to improve lambda cold starts
How to improve lambda cold startsHow to improve lambda cold starts
How to improve lambda cold starts
 
What can you do with lambda in 2020
What can you do with lambda in 2020What can you do with lambda in 2020
What can you do with lambda in 2020
 
A chaos experiment a day, keeping the outage away
A chaos experiment a day, keeping the outage awayA chaos experiment a day, keeping the outage away
A chaos experiment a day, keeping the outage away
 
How to debug slow lambda response times
How to debug slow lambda response timesHow to debug slow lambda response times
How to debug slow lambda response times
 
What can you do with lambda in 2020
What can you do with lambda in 2020What can you do with lambda in 2020
What can you do with lambda in 2020
 

Recently uploaded

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 

Recently uploaded (20)

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 

How to ship customer value faster with step functions