SlideShare a Scribd company logo
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Solving Complex Business Use Cases with Apache OpenWhisk
Duy Nguyen & Moritz Raho
© 2019 Adobe. All Rights Reserved.
() => “Something about us”
2
Adobe Research Basel
Duy Nguyen Moritz Raho
© 2019 Adobe. All Rights Reserved.
SET THE STORY
3 Photo courtesy of Zeno Slodki
ottawachamberorchestra.com
© 2019 Adobe. All Rights Reserved.
Serverless Platform @Adobe
4
• Adobe I/O Runtime
• Not general purpose
• Extend Adobe products
© 2019 Adobe. All Rights Reserved.
Behind I/O Runtime: Apache OpenWhisk (Incubator)
5
• Open Source, no vendor lock-in
• Polyglot and custom runtimes
• Production Ready - IBM
© 2019 Adobe. All Rights Reserved.
OpenWhisk Action: Hello world
6
f
// hello.js
function main (params) {
return `Hello ${params.name}`
}
$ wsk action create hello hello.js
$ wsk action invoke hello –p name ServerlessDays
{
“name”:
"ServerlessDays”
}
"Hello ServerlessDays"
© 2019 Adobe. All Rights Reserved.
Reality
7
f
f f
f
f
f
f
f
© 2019 Adobe. All Rights Reserved.
Combine Actions into a Meaningful Service
8
f
f f
f
f
f
f
f
Input Output
© 2019 Adobe. All Rights Reserved.
Slack Bot Example
9
f
f f
f
f
f
f
f
Slack event
parse
extract command
error
exec ..
Slack msg
© 2019 Adobe. All Rights Reserved.
But how to Combine Actions?
10
f
f f
f
f
f
f
f
Input Output
?
© 2019 Adobe. All Rights Reserved. 11
© [stokkete] / Adobe Stock
© 2019 Adobe. All Rights Reserved.
Combining Actions: an App Level Solution
12
Conductor Action
extract parse
Input Output
TIME
© 2019 Adobe. All Rights Reserved.
Combining Actions: an App Level Solution
13
Conductor Action
extract parse
Input Output
Driver action is waiting for results, you get billed twice!
TIME = $
© 2019 Adobe. All Rights Reserved. 14
© [Kirill Zdorov] / Adobe Stock
© 2019 Adobe. All Rights Reserved.
Combining Actions with OpenWhsik Conductor
15
extract parse
Input Output
TIME
CA CA CA
No double billing anymore
© 2019 Adobe. All Rights Reserved.
OpenWhisk Conductor Action
16
OpenWhisk takes care of invoking the actions
// conductor-action.js
function main(params) {
let step = params.$step || 0
delete params.$step
switch (step) {
case 0: return { action: ‘extract', params, state: { $step: 1 } }
case 1: return { action: ‘parse', params, state: { $step: 2 } }
case 2: return { params }
}
}
© 2019 Adobe. All Rights Reserved.
OpenWhisk Composer: Library built on top of Conductors
17
// composition.js
require('openwhisk-composer')
composer.sequence(‘extract’, ‘parse')
$ compose composition.js --deploy composed-action
Compiles to conductor, state transitions not needed
© 2019 Adobe. All Rights Reserved.
OpenWhisk Composer Combinators
18
if
Condition action
Action 1 Action 2
true false
parallel
Action 1 Action n[…]
try
Action
handler
error
Provides a programming model!
retain, async, map, mask, merge, retry …
Condition action
Action
true
while
false
© 2019 Adobe. All Rights Reserved.
Now what?
19
© [artifika] / Adobe Stock
© 2019 Adobe. All Rights Reserved.
Use Case
20
© 2019 Adobe. All Rights Reserved.
Check Image Quality
21
X
✓
© 2019 Adobe. All Rights Reserved.
Image Auto Cropping & Swatch Generation
22
© 2019 Adobe. All Rights Reserved.
Manual Image Processing
23
© 2019 Adobe. All Rights Reserved.
Automated Image Processing
24
© 2019 Adobe. All Rights Reserved.
Low Quality Images
25
© 2019 Adobe. All Rights Reserved.
High Level Design of the Serverless Workflow
26
Adobe CC Assets Adobe Experience Manager
{}
Quality check
trigger event
✓
X
Image processing
JPG PNGupload
© 2019 Adobe. All Rights Reserved.
Demo
27
© [christianchan] / Adobe Stock
© 2019 Adobe. All Rights Reserved.
Results
28
TODO
Human benefit:
Computing benefit: scaling up / down
© [wavebreak3] / Adobe Stock
© [Gorodenkoff] / Adobe Stock
© 2019 Adobe. All Rights Reserved.
Conductor says goodbye
29
© [AboutLife] / Adobe Stock
© 2019 Adobe. All Rights Reserved. Adobe Confidential.
Questions?
Duy Nguyen <dunguyen@adobe.com>; Moritz Raho <raho@adobe.com>
[ServerlessDays Zurich 2019] Solving complex business use cases in a serverless way

More Related Content

Similar to [ServerlessDays Zurich 2019] Solving complex business use cases in a serverless way

Introduzione a GitHub Actions (beta)
Introduzione a GitHub Actions (beta)Introduzione a GitHub Actions (beta)
Introduzione a GitHub Actions (beta)
Giulio Vian
 
Securing Containers - Sathyajit Bhat - Adobe - Container Conference 18
Securing Containers - Sathyajit Bhat - Adobe - Container Conference 18Securing Containers - Sathyajit Bhat - Adobe - Container Conference 18
Securing Containers - Sathyajit Bhat - Adobe - Container Conference 18
CodeOps Technologies LLP
 
Sst hackathon express
Sst hackathon expressSst hackathon express
Sst hackathon express
Aeshan Wijetunge
 
Baruco 2014 - Rubymotion Workshop
Baruco 2014 - Rubymotion WorkshopBaruco 2014 - Rubymotion Workshop
Baruco 2014 - Rubymotion Workshop
Brian Sam-Bodden
 
Node.js primer
Node.js primerNode.js primer
Node.js primer
Quhan Arunasalam
 
Apache OpenWhisk Serverless Computing
Apache OpenWhisk Serverless ComputingApache OpenWhisk Serverless Computing
Apache OpenWhisk Serverless Computing
Upkar Lidder
 
Serverless, The Middy Way - Workshop
Serverless, The Middy Way - WorkshopServerless, The Middy Way - Workshop
Serverless, The Middy Way - Workshop
Luciano Mammino
 
Ruby on Rails Kickstart 101 & 102
Ruby on Rails Kickstart 101 & 102Ruby on Rails Kickstart 101 & 102
Ruby on Rails Kickstart 101 & 102
Heng-Yi Wu
 
An intro to serverless and OpenWhisk for Kafka users
An intro to serverless and OpenWhisk for Kafka usersAn intro to serverless and OpenWhisk for Kafka users
An intro to serverless and OpenWhisk for Kafka users
Dale Lane
 
Building Serverless Apps with Kafka (Dale Lane, IBM) Kafka Summit London 2019
Building Serverless Apps with Kafka (Dale Lane, IBM) Kafka Summit London 2019Building Serverless Apps with Kafka (Dale Lane, IBM) Kafka Summit London 2019
Building Serverless Apps with Kafka (Dale Lane, IBM) Kafka Summit London 2019
confluent
 
Breaking the Monolith Using AWS Container Services
Breaking the Monolith Using AWS Container ServicesBreaking the Monolith Using AWS Container Services
Breaking the Monolith Using AWS Container Services
Amazon Web Services
 
Building RESTful APIs w/ Grape
Building RESTful APIs w/ GrapeBuilding RESTful APIs w/ Grape
Building RESTful APIs w/ Grape
Daniel Doubrovkine
 
Titanium appcelerator best practices
Titanium appcelerator best practicesTitanium appcelerator best practices
Titanium appcelerator best practices
Alessio Ricco
 
Serverless and React
Serverless and ReactServerless and React
Serverless and React
Marina Miranovich
 
Better Code: Concurrency
Better Code: ConcurrencyBetter Code: Concurrency
Better Code: Concurrency
Platonov Sergey
 
Introducing Applitude: Simple Module Management
Introducing Applitude: Simple Module ManagementIntroducing Applitude: Simple Module Management
Introducing Applitude: Simple Module Management
Eric Hamilton
 
Concurrent Programming with ActionScript workers
Concurrent Programming with ActionScript workersConcurrent Programming with ActionScript workers
Concurrent Programming with ActionScript workers
Paul Robertson
 
Making a small QA system with Docker
Making a small QA system with DockerMaking a small QA system with Docker
Making a small QA system with Docker
Naoki AINOYA
 
Best Practices in apps development with Titanium Appcelerator
Best Practices in apps development with Titanium Appcelerator Best Practices in apps development with Titanium Appcelerator
Best Practices in apps development with Titanium Appcelerator
Alessio Ricco
 
BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...
BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...
BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...
Whymca
 

Similar to [ServerlessDays Zurich 2019] Solving complex business use cases in a serverless way (20)

Introduzione a GitHub Actions (beta)
Introduzione a GitHub Actions (beta)Introduzione a GitHub Actions (beta)
Introduzione a GitHub Actions (beta)
 
Securing Containers - Sathyajit Bhat - Adobe - Container Conference 18
Securing Containers - Sathyajit Bhat - Adobe - Container Conference 18Securing Containers - Sathyajit Bhat - Adobe - Container Conference 18
Securing Containers - Sathyajit Bhat - Adobe - Container Conference 18
 
Sst hackathon express
Sst hackathon expressSst hackathon express
Sst hackathon express
 
Baruco 2014 - Rubymotion Workshop
Baruco 2014 - Rubymotion WorkshopBaruco 2014 - Rubymotion Workshop
Baruco 2014 - Rubymotion Workshop
 
Node.js primer
Node.js primerNode.js primer
Node.js primer
 
Apache OpenWhisk Serverless Computing
Apache OpenWhisk Serverless ComputingApache OpenWhisk Serverless Computing
Apache OpenWhisk Serverless Computing
 
Serverless, The Middy Way - Workshop
Serverless, The Middy Way - WorkshopServerless, The Middy Way - Workshop
Serverless, The Middy Way - Workshop
 
Ruby on Rails Kickstart 101 & 102
Ruby on Rails Kickstart 101 & 102Ruby on Rails Kickstart 101 & 102
Ruby on Rails Kickstart 101 & 102
 
An intro to serverless and OpenWhisk for Kafka users
An intro to serverless and OpenWhisk for Kafka usersAn intro to serverless and OpenWhisk for Kafka users
An intro to serverless and OpenWhisk for Kafka users
 
Building Serverless Apps with Kafka (Dale Lane, IBM) Kafka Summit London 2019
Building Serverless Apps with Kafka (Dale Lane, IBM) Kafka Summit London 2019Building Serverless Apps with Kafka (Dale Lane, IBM) Kafka Summit London 2019
Building Serverless Apps with Kafka (Dale Lane, IBM) Kafka Summit London 2019
 
Breaking the Monolith Using AWS Container Services
Breaking the Monolith Using AWS Container ServicesBreaking the Monolith Using AWS Container Services
Breaking the Monolith Using AWS Container Services
 
Building RESTful APIs w/ Grape
Building RESTful APIs w/ GrapeBuilding RESTful APIs w/ Grape
Building RESTful APIs w/ Grape
 
Titanium appcelerator best practices
Titanium appcelerator best practicesTitanium appcelerator best practices
Titanium appcelerator best practices
 
Serverless and React
Serverless and ReactServerless and React
Serverless and React
 
Better Code: Concurrency
Better Code: ConcurrencyBetter Code: Concurrency
Better Code: Concurrency
 
Introducing Applitude: Simple Module Management
Introducing Applitude: Simple Module ManagementIntroducing Applitude: Simple Module Management
Introducing Applitude: Simple Module Management
 
Concurrent Programming with ActionScript workers
Concurrent Programming with ActionScript workersConcurrent Programming with ActionScript workers
Concurrent Programming with ActionScript workers
 
Making a small QA system with Docker
Making a small QA system with DockerMaking a small QA system with Docker
Making a small QA system with Docker
 
Best Practices in apps development with Titanium Appcelerator
Best Practices in apps development with Titanium Appcelerator Best Practices in apps development with Titanium Appcelerator
Best Practices in apps development with Titanium Appcelerator
 
BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...
BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...
BEST PRACTICES PER LA SCRITTURA DI APPLICAZIONI TITANIUM APPCELERATOR - Aless...
 

Recently uploaded

原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 
SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
GohKiangHock
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
TaghreedAltamimi
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
VALiNTRY360
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
Rakesh Kumar R
 
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
ssuserad3af4
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
ToXSL Technologies
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
Alina Yurenko
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
Peter Muessig
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
Green Software Development
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Julian Hyde
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
Bert Jan Schrijver
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 

Recently uploaded (20)

原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 
SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
 
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
316895207-SAP-Oil-and-Gas-Downstream-Training.pptx
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 

[ServerlessDays Zurich 2019] Solving complex business use cases in a serverless way

  • 1. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Solving Complex Business Use Cases with Apache OpenWhisk Duy Nguyen & Moritz Raho
  • 2. © 2019 Adobe. All Rights Reserved. () => “Something about us” 2 Adobe Research Basel Duy Nguyen Moritz Raho
  • 3. © 2019 Adobe. All Rights Reserved. SET THE STORY 3 Photo courtesy of Zeno Slodki ottawachamberorchestra.com
  • 4. © 2019 Adobe. All Rights Reserved. Serverless Platform @Adobe 4 • Adobe I/O Runtime • Not general purpose • Extend Adobe products
  • 5. © 2019 Adobe. All Rights Reserved. Behind I/O Runtime: Apache OpenWhisk (Incubator) 5 • Open Source, no vendor lock-in • Polyglot and custom runtimes • Production Ready - IBM
  • 6. © 2019 Adobe. All Rights Reserved. OpenWhisk Action: Hello world 6 f // hello.js function main (params) { return `Hello ${params.name}` } $ wsk action create hello hello.js $ wsk action invoke hello –p name ServerlessDays { “name”: "ServerlessDays” } "Hello ServerlessDays"
  • 7. © 2019 Adobe. All Rights Reserved. Reality 7 f f f f f f f f
  • 8. © 2019 Adobe. All Rights Reserved. Combine Actions into a Meaningful Service 8 f f f f f f f f Input Output
  • 9. © 2019 Adobe. All Rights Reserved. Slack Bot Example 9 f f f f f f f f Slack event parse extract command error exec .. Slack msg
  • 10. © 2019 Adobe. All Rights Reserved. But how to Combine Actions? 10 f f f f f f f f Input Output ?
  • 11. © 2019 Adobe. All Rights Reserved. 11 © [stokkete] / Adobe Stock
  • 12. © 2019 Adobe. All Rights Reserved. Combining Actions: an App Level Solution 12 Conductor Action extract parse Input Output TIME
  • 13. © 2019 Adobe. All Rights Reserved. Combining Actions: an App Level Solution 13 Conductor Action extract parse Input Output Driver action is waiting for results, you get billed twice! TIME = $
  • 14. © 2019 Adobe. All Rights Reserved. 14 © [Kirill Zdorov] / Adobe Stock
  • 15. © 2019 Adobe. All Rights Reserved. Combining Actions with OpenWhsik Conductor 15 extract parse Input Output TIME CA CA CA No double billing anymore
  • 16. © 2019 Adobe. All Rights Reserved. OpenWhisk Conductor Action 16 OpenWhisk takes care of invoking the actions // conductor-action.js function main(params) { let step = params.$step || 0 delete params.$step switch (step) { case 0: return { action: ‘extract', params, state: { $step: 1 } } case 1: return { action: ‘parse', params, state: { $step: 2 } } case 2: return { params } } }
  • 17. © 2019 Adobe. All Rights Reserved. OpenWhisk Composer: Library built on top of Conductors 17 // composition.js require('openwhisk-composer') composer.sequence(‘extract’, ‘parse') $ compose composition.js --deploy composed-action Compiles to conductor, state transitions not needed
  • 18. © 2019 Adobe. All Rights Reserved. OpenWhisk Composer Combinators 18 if Condition action Action 1 Action 2 true false parallel Action 1 Action n[…] try Action handler error Provides a programming model! retain, async, map, mask, merge, retry … Condition action Action true while false
  • 19. © 2019 Adobe. All Rights Reserved. Now what? 19 © [artifika] / Adobe Stock
  • 20. © 2019 Adobe. All Rights Reserved. Use Case 20
  • 21. © 2019 Adobe. All Rights Reserved. Check Image Quality 21 X ✓
  • 22. © 2019 Adobe. All Rights Reserved. Image Auto Cropping & Swatch Generation 22
  • 23. © 2019 Adobe. All Rights Reserved. Manual Image Processing 23
  • 24. © 2019 Adobe. All Rights Reserved. Automated Image Processing 24
  • 25. © 2019 Adobe. All Rights Reserved. Low Quality Images 25
  • 26. © 2019 Adobe. All Rights Reserved. High Level Design of the Serverless Workflow 26 Adobe CC Assets Adobe Experience Manager {} Quality check trigger event ✓ X Image processing JPG PNGupload
  • 27. © 2019 Adobe. All Rights Reserved. Demo 27 © [christianchan] / Adobe Stock
  • 28. © 2019 Adobe. All Rights Reserved. Results 28 TODO Human benefit: Computing benefit: scaling up / down © [wavebreak3] / Adobe Stock © [Gorodenkoff] / Adobe Stock
  • 29. © 2019 Adobe. All Rights Reserved. Conductor says goodbye 29 © [AboutLife] / Adobe Stock
  • 30. © 2019 Adobe. All Rights Reserved. Adobe Confidential. Questions? Duy Nguyen <dunguyen@adobe.com>; Moritz Raho <raho@adobe.com>