SlideShare a Scribd company logo
1 of 55
Download to read offline
Declare, verify and execute
microservices-based process
flows with Baker
http://github.com/nikolakasev | ING
1
2
3
4
Symptoms of a Failing Restaurant
5
6
7
8
Symptoms of a Failing (Microservices)
Architecture
9
Afraid to change the application code
10
Functionality breaks unexpectedly
11
Slow time to market
12
How to turn this around?
13
14
15
16
17
18
Simplify
Domain Specific Language for
orchestration flows
Declarative
Easy to change
19
Reuse
Recipes
Interactions
Ingredients
Events
20
Communicate
Visualize your code
Non-IT understand as well
Reason About Comfortably
21
Design-time
22
public interface RegisterIndividual extends Interaction {
@FiresEvent(oneOf = {RegisterIndividualSuccessful.class,
RegisterIndividualFailed.class})
RegisterIndividualOutcome apply(
@ProcessId String processId,
@RequiresIngredient("name") String name,
@RequiresIngredient("address") String address
);
}
23
public interface RegisterIndividual extends Interaction {
@FiresEvent(oneOf = {RegisterIndividualSuccessful.class,
RegisterIndividualFailed.class})
RegisterIndividualOutcome apply(
@ProcessId String processId,
@RequiresIngredient("name") String name,
@RequiresIngredient("address") String address
);
}
24
25
26
27
public Recipe get(){
return new Recipe("MuConf2017Demo").
withInteractions(
of(AssignAccount.class),
of(GetAccount.class),
of(RegisterIndividual.class));
}
28
29
return new Recipe("MuConf2017Demo").
withInteractions(
of(AssignAccount.class),
of(GetAccount.class).
withRequiredEvent(TermsAndConditionsAccepted.class),
of(RegisterIndividual.class)).
withSensoryEvents(
TermsAndConditionsAccepted.class,
IndividualInformationSubmitted.class);
}
30
31
Run-time
32
//for each process instance, bake the recipe
baker.bake(processId);
//notify Baker when events occur
baker.processEvent(processId, new SensoryEvents.IndividualInformationSubmitted(name, address));
baker.processEvent(processId, new SensoryEvents.TermsAndConditionsAccepted());
//retrieve ingredients stored in the accumulated state
assert(baker.getIngredients(processId).get("customerId").equals(customerId));
assert(baker.getIngredients(processId).get("iban").equals(iban));
//retrieve all events that have occurred
Set<String> occurredEvents = new HashSet<>(
baker.getEvents(processId).getEventNameList()
);
33
34
Under the Hood
35
Why Scala?
4 Best fit for developing DSLs1
on the JVM
4 Compile-time recipe validation
4 Type safety
1
https://martinfowler.com/books/dsl.html
36
Why Akka?
4 Event Sourcing2
(events can be replayed)
4 Persistent actors (with Cassandra)
4 Distributed actors across machines (with cluster
sharding)
2
http://martinfowler.com/eaaDev/EventSourcing.html
37
Why Petri net?3
3
https://en.wikipedia.org/wiki/Petri_net
38
39
40
41
42
43
Best Practices
44
Short-lived vs. long-running flows
45
State is taken care of:
4 Cassandra for persistent storage
4 Ingredients encrypted by default
4 State recovered automatically
46
Run Baker inside of your API
"Smart endpoints and dumb pipes"
47
When failure occurs:
4 Baker retries technical failures with exponential
backoff
4 Works well with idempotent services
4 Deal with functional failure in your recipe
48
Baker Capability Matrix:
4 Investigate not one, not two, but all business
processes in your company
4 Where do you see re-use?
4 Map using MoSCoW4
to give importance (M = 10, S =
5, C = 2, W = 1)
4
https://en.wikipedia.org/wiki/MoSCoW_method
49
Checking Account Savings Account Customer Onboarding
Verify Identity Verify Identity Verify Identity
Register Individual Register Individual Register Individual
Open Checking Account Open Savings Account n/a
Issue Debit Card n/a n/a
Send Message Send Message Send Message
Register Product
Owner
Register Product
Owner
n/a
50
https://github.com/ing-bank/baker
51
52
Speed of change matters to anyone building software.
Many engineering teams have identified Microservices as
an important component of this architectural approach to
designing more flexible systems that can meet the needs of
their fast changing businesses. Applying this approach
however, is hard. And ideas and practices are still very
much evolving. To help with that, we've launched muCon - a
conference to learn about emerging technologies and
approaches, share challenges and evolve practices and
ideas.
53
Their applications are built on top of microservices. If
there careful enough their application serve bad meals.
If we are building microservices or a monolith or any
type of service in general we are serving business logic
to our clients. So no matter what we can not escape the
architectural discussion.
If we are not careful of how we architect our
applications we end up serving bad meals.
54
I love cooking food and for the rest of the talk I'll be using analogies from
there. It's very similar to our industry: long hours, hard work, and
delivering experiences to our customers.
Have you been woken up at 3 o'clock in the morning on a Saturday morning
after a night of partying, having to go to the war room and resolve an
application incident. I've been there. When I remember the cold of the
airconditioners, it still makes me shiver.
If we are building microservices or a monolith or any type of application in
general we are serving business logic to our clients. So no matter what, we
cannot escape the architectural discussion. If we are not careful of how
we architect our applications we end up serving a bad meal to our clients.
55

More Related Content

What's hot

OpenChain: Japan WG # 9 – Update Time!
OpenChain: Japan WG # 9 – Update Time!OpenChain: Japan WG # 9 – Update Time!
OpenChain: Japan WG # 9 – Update Time!Shane Coughlan
 
Serverless Microservices by Unai Zorrilla
Serverless Microservices by Unai ZorrillaServerless Microservices by Unai Zorrilla
Serverless Microservices by Unai ZorrillaPlain Concepts
 
Why use Node.js for Enterprises Solutions?
Why use Node.js for Enterprises Solutions?Why use Node.js for Enterprises Solutions?
Why use Node.js for Enterprises Solutions?Marie Weaver
 
Engineer Stunning (API) documentation
Engineer Stunning (API) documentationEngineer Stunning (API) documentation
Engineer Stunning (API) documentationPronovix
 
WSO2 Tooling Platform for Enterprise Application Development - Today & Tomorrow
WSO2 Tooling Platform for Enterprise Application Development - Today & TomorrowWSO2 Tooling Platform for Enterprise Application Development - Today & Tomorrow
WSO2 Tooling Platform for Enterprise Application Development - Today & TomorrowHarshana Martin
 
Top 7 skills to look into react js developer
Top 7 skills to look into react js developerTop 7 skills to look into react js developer
Top 7 skills to look into react js developerKaty Slemon
 
Continuously Delivering Distributed Systems
Continuously Delivering Distributed SystemsContinuously Delivering Distributed Systems
Continuously Delivering Distributed SystemsDaniel Löffelholz
 

What's hot (10)

OpenChain: Japan WG # 9 – Update Time!
OpenChain: Japan WG # 9 – Update Time!OpenChain: Japan WG # 9 – Update Time!
OpenChain: Japan WG # 9 – Update Time!
 
Serverless Microservices by Unai Zorrilla
Serverless Microservices by Unai ZorrillaServerless Microservices by Unai Zorrilla
Serverless Microservices by Unai Zorrilla
 
Why use Node.js for Enterprises Solutions?
Why use Node.js for Enterprises Solutions?Why use Node.js for Enterprises Solutions?
Why use Node.js for Enterprises Solutions?
 
Gauravsing sisodiya
Gauravsing sisodiyaGauravsing sisodiya
Gauravsing sisodiya
 
O futuro do .NET
O futuro do .NETO futuro do .NET
O futuro do .NET
 
Engineer Stunning (API) documentation
Engineer Stunning (API) documentationEngineer Stunning (API) documentation
Engineer Stunning (API) documentation
 
Gauravsing sisodiya
Gauravsing sisodiyaGauravsing sisodiya
Gauravsing sisodiya
 
WSO2 Tooling Platform for Enterprise Application Development - Today & Tomorrow
WSO2 Tooling Platform for Enterprise Application Development - Today & TomorrowWSO2 Tooling Platform for Enterprise Application Development - Today & Tomorrow
WSO2 Tooling Platform for Enterprise Application Development - Today & Tomorrow
 
Top 7 skills to look into react js developer
Top 7 skills to look into react js developerTop 7 skills to look into react js developer
Top 7 skills to look into react js developer
 
Continuously Delivering Distributed Systems
Continuously Delivering Distributed SystemsContinuously Delivering Distributed Systems
Continuously Delivering Distributed Systems
 

Similar to Declare, verify and execute microservice process flows with Baker

Architecting for speed: How agile innovators accelerate growth through micros...
Architecting for speed: How agile innovators accelerate growth through micros...Architecting for speed: How agile innovators accelerate growth through micros...
Architecting for speed: How agile innovators accelerate growth through micros...Jesper Nordström
 
Architecting for speed - how agile innovators accelerate growth through micro...
Architecting for speed - how agile innovators accelerate growth through micro...Architecting for speed - how agile innovators accelerate growth through micro...
Architecting for speed - how agile innovators accelerate growth through micro...3gamma
 
WSO2 - Yenlo Integration Summit Stuttgart 15 May 2019 - API and Cell-based Ar...
WSO2 - Yenlo Integration Summit Stuttgart 15 May 2019 - API and Cell-based Ar...WSO2 - Yenlo Integration Summit Stuttgart 15 May 2019 - API and Cell-based Ar...
WSO2 - Yenlo Integration Summit Stuttgart 15 May 2019 - API and Cell-based Ar...Yenlo
 
Microsoft Microservices
Microsoft MicroservicesMicrosoft Microservices
Microsoft MicroservicesChase Aucoin
 
Microservices Architecture for e-Commerce
Microservices Architecture for e-CommerceMicroservices Architecture for e-Commerce
Microservices Architecture for e-CommerceDivante
 
MuleSoft Meetup Adelaide 7th April 2021
MuleSoft Meetup Adelaide 7th April 2021MuleSoft Meetup Adelaide 7th April 2021
MuleSoft Meetup Adelaide 7th April 2021Nicholas Bowman
 
[WSO2 Integration Summit Madrid 2019] Emerging Architecture Patterns: API-cen...
[WSO2 Integration Summit Madrid 2019] Emerging Architecture Patterns: API-cen...[WSO2 Integration Summit Madrid 2019] Emerging Architecture Patterns: API-cen...
[WSO2 Integration Summit Madrid 2019] Emerging Architecture Patterns: API-cen...WSO2
 
[WSO2 Integration Summit Stuttgart 2019] Emerging Architecture Patterns: API-...
[WSO2 Integration Summit Stuttgart 2019] Emerging Architecture Patterns: API-...[WSO2 Integration Summit Stuttgart 2019] Emerging Architecture Patterns: API-...
[WSO2 Integration Summit Stuttgart 2019] Emerging Architecture Patterns: API-...WSO2
 
[WSO2 Integration Summit Nairobi 2019] Emerging Architecture Patterns: API-ce...
[WSO2 Integration Summit Nairobi 2019] Emerging Architecture Patterns: API-ce...[WSO2 Integration Summit Nairobi 2019] Emerging Architecture Patterns: API-ce...
[WSO2 Integration Summit Nairobi 2019] Emerging Architecture Patterns: API-ce...WSO2
 
[WSO2 Integration Summit Paris 2019] Emerging Architecture Patterns API-centr...
[WSO2 Integration Summit Paris 2019] Emerging Architecture Patterns API-centr...[WSO2 Integration Summit Paris 2019] Emerging Architecture Patterns API-centr...
[WSO2 Integration Summit Paris 2019] Emerging Architecture Patterns API-centr...WSO2
 
Platform governance, gestire un ecosistema di microservizi a livello enterprise
Platform governance, gestire un ecosistema di microservizi a livello enterprisePlatform governance, gestire un ecosistema di microservizi a livello enterprise
Platform governance, gestire un ecosistema di microservizi a livello enterpriseGiulio Roggero
 
Overcoming Ongoing Digital Transformational Challenges with a Microservices A...
Overcoming Ongoing Digital Transformational Challenges with a Microservices A...Overcoming Ongoing Digital Transformational Challenges with a Microservices A...
Overcoming Ongoing Digital Transformational Challenges with a Microservices A...Cognizant
 
Large-scale Microtask programming
Large-scale Microtask programmingLarge-scale Microtask programming
Large-scale Microtask programmingEmad Aghayi
 
Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...3gamma
 
Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...Jesper Nordström
 
Transform Digital Business with DevOps
Transform Digital Business with DevOpsTransform Digital Business with DevOps
Transform Digital Business with DevOpsDaniel Oh
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMiki Lombardi
 
Scaling frontend applications with micro-frontends Presentation.pdf
Scaling frontend applications with micro-frontends Presentation.pdfScaling frontend applications with micro-frontends Presentation.pdf
Scaling frontend applications with micro-frontends Presentation.pdfKatamaRajuBandigari1
 
Microsoft BizTalk server seen by the programmer’s eyes
Microsoft BizTalk server seen by the programmer’s eyesMicrosoft BizTalk server seen by the programmer’s eyes
Microsoft BizTalk server seen by the programmer’s eyesSandro Pereira
 

Similar to Declare, verify and execute microservice process flows with Baker (20)

Architecting for speed: How agile innovators accelerate growth through micros...
Architecting for speed: How agile innovators accelerate growth through micros...Architecting for speed: How agile innovators accelerate growth through micros...
Architecting for speed: How agile innovators accelerate growth through micros...
 
Architecting for speed - how agile innovators accelerate growth through micro...
Architecting for speed - how agile innovators accelerate growth through micro...Architecting for speed - how agile innovators accelerate growth through micro...
Architecting for speed - how agile innovators accelerate growth through micro...
 
WSO2 - Yenlo Integration Summit Stuttgart 15 May 2019 - API and Cell-based Ar...
WSO2 - Yenlo Integration Summit Stuttgart 15 May 2019 - API and Cell-based Ar...WSO2 - Yenlo Integration Summit Stuttgart 15 May 2019 - API and Cell-based Ar...
WSO2 - Yenlo Integration Summit Stuttgart 15 May 2019 - API and Cell-based Ar...
 
Microsoft Microservices
Microsoft MicroservicesMicrosoft Microservices
Microsoft Microservices
 
Microservices Architecture for e-Commerce
Microservices Architecture for e-CommerceMicroservices Architecture for e-Commerce
Microservices Architecture for e-Commerce
 
MuleSoft Meetup Adelaide 7th April 2021
MuleSoft Meetup Adelaide 7th April 2021MuleSoft Meetup Adelaide 7th April 2021
MuleSoft Meetup Adelaide 7th April 2021
 
[WSO2 Integration Summit Madrid 2019] Emerging Architecture Patterns: API-cen...
[WSO2 Integration Summit Madrid 2019] Emerging Architecture Patterns: API-cen...[WSO2 Integration Summit Madrid 2019] Emerging Architecture Patterns: API-cen...
[WSO2 Integration Summit Madrid 2019] Emerging Architecture Patterns: API-cen...
 
[WSO2 Integration Summit Stuttgart 2019] Emerging Architecture Patterns: API-...
[WSO2 Integration Summit Stuttgart 2019] Emerging Architecture Patterns: API-...[WSO2 Integration Summit Stuttgart 2019] Emerging Architecture Patterns: API-...
[WSO2 Integration Summit Stuttgart 2019] Emerging Architecture Patterns: API-...
 
[WSO2 Integration Summit Nairobi 2019] Emerging Architecture Patterns: API-ce...
[WSO2 Integration Summit Nairobi 2019] Emerging Architecture Patterns: API-ce...[WSO2 Integration Summit Nairobi 2019] Emerging Architecture Patterns: API-ce...
[WSO2 Integration Summit Nairobi 2019] Emerging Architecture Patterns: API-ce...
 
[WSO2 Integration Summit Paris 2019] Emerging Architecture Patterns API-centr...
[WSO2 Integration Summit Paris 2019] Emerging Architecture Patterns API-centr...[WSO2 Integration Summit Paris 2019] Emerging Architecture Patterns API-centr...
[WSO2 Integration Summit Paris 2019] Emerging Architecture Patterns API-centr...
 
Platform governance, gestire un ecosistema di microservizi a livello enterprise
Platform governance, gestire un ecosistema di microservizi a livello enterprisePlatform governance, gestire un ecosistema di microservizi a livello enterprise
Platform governance, gestire un ecosistema di microservizi a livello enterprise
 
Overcoming Ongoing Digital Transformational Challenges with a Microservices A...
Overcoming Ongoing Digital Transformational Challenges with a Microservices A...Overcoming Ongoing Digital Transformational Challenges with a Microservices A...
Overcoming Ongoing Digital Transformational Challenges with a Microservices A...
 
Large-scale Microtask programming
Large-scale Microtask programmingLarge-scale Microtask programming
Large-scale Microtask programming
 
Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...
 
Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...
 
Transform Digital Business with DevOps
Transform Digital Business with DevOpsTransform Digital Business with DevOps
Transform Digital Business with DevOps
 
Whitepaper : Microservices In or Out
Whitepaper : Microservices   In or OutWhitepaper : Microservices   In or Out
Whitepaper : Microservices In or Out
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - Plansoft
 
Scaling frontend applications with micro-frontends Presentation.pdf
Scaling frontend applications with micro-frontends Presentation.pdfScaling frontend applications with micro-frontends Presentation.pdf
Scaling frontend applications with micro-frontends Presentation.pdf
 
Microsoft BizTalk server seen by the programmer’s eyes
Microsoft BizTalk server seen by the programmer’s eyesMicrosoft BizTalk server seen by the programmer’s eyes
Microsoft BizTalk server seen by the programmer’s eyes
 

Recently uploaded

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
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
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 

Recently uploaded (20)

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
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
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

Declare, verify and execute microservice process flows with Baker

  • 1. Declare, verify and execute microservices-based process flows with Baker http://github.com/nikolakasev | ING 1
  • 2. 2
  • 3. 3
  • 4. 4
  • 5. Symptoms of a Failing Restaurant 5
  • 6. 6
  • 7. 7
  • 8. 8
  • 9. Symptoms of a Failing (Microservices) Architecture 9
  • 10. Afraid to change the application code 10
  • 12. Slow time to market 12
  • 13. How to turn this around? 13
  • 14. 14
  • 15. 15
  • 16. 16
  • 17. 17
  • 18. 18
  • 19. Simplify Domain Specific Language for orchestration flows Declarative Easy to change 19
  • 21. Communicate Visualize your code Non-IT understand as well Reason About Comfortably 21
  • 23. public interface RegisterIndividual extends Interaction { @FiresEvent(oneOf = {RegisterIndividualSuccessful.class, RegisterIndividualFailed.class}) RegisterIndividualOutcome apply( @ProcessId String processId, @RequiresIngredient("name") String name, @RequiresIngredient("address") String address ); } 23
  • 24. public interface RegisterIndividual extends Interaction { @FiresEvent(oneOf = {RegisterIndividualSuccessful.class, RegisterIndividualFailed.class}) RegisterIndividualOutcome apply( @ProcessId String processId, @RequiresIngredient("name") String name, @RequiresIngredient("address") String address ); } 24
  • 25. 25
  • 26. 26
  • 27. 27
  • 28. public Recipe get(){ return new Recipe("MuConf2017Demo"). withInteractions( of(AssignAccount.class), of(GetAccount.class), of(RegisterIndividual.class)); } 28
  • 29. 29
  • 31. 31
  • 33. //for each process instance, bake the recipe baker.bake(processId); //notify Baker when events occur baker.processEvent(processId, new SensoryEvents.IndividualInformationSubmitted(name, address)); baker.processEvent(processId, new SensoryEvents.TermsAndConditionsAccepted()); //retrieve ingredients stored in the accumulated state assert(baker.getIngredients(processId).get("customerId").equals(customerId)); assert(baker.getIngredients(processId).get("iban").equals(iban)); //retrieve all events that have occurred Set<String> occurredEvents = new HashSet<>( baker.getEvents(processId).getEventNameList() ); 33
  • 34. 34
  • 36. Why Scala? 4 Best fit for developing DSLs1 on the JVM 4 Compile-time recipe validation 4 Type safety 1 https://martinfowler.com/books/dsl.html 36
  • 37. Why Akka? 4 Event Sourcing2 (events can be replayed) 4 Persistent actors (with Cassandra) 4 Distributed actors across machines (with cluster sharding) 2 http://martinfowler.com/eaaDev/EventSourcing.html 37
  • 39. 39
  • 40. 40
  • 41. 41
  • 42. 42
  • 43. 43
  • 46. State is taken care of: 4 Cassandra for persistent storage 4 Ingredients encrypted by default 4 State recovered automatically 46
  • 47. Run Baker inside of your API "Smart endpoints and dumb pipes" 47
  • 48. When failure occurs: 4 Baker retries technical failures with exponential backoff 4 Works well with idempotent services 4 Deal with functional failure in your recipe 48
  • 49. Baker Capability Matrix: 4 Investigate not one, not two, but all business processes in your company 4 Where do you see re-use? 4 Map using MoSCoW4 to give importance (M = 10, S = 5, C = 2, W = 1) 4 https://en.wikipedia.org/wiki/MoSCoW_method 49
  • 50. Checking Account Savings Account Customer Onboarding Verify Identity Verify Identity Verify Identity Register Individual Register Individual Register Individual Open Checking Account Open Savings Account n/a Issue Debit Card n/a n/a Send Message Send Message Send Message Register Product Owner Register Product Owner n/a 50
  • 52. 52
  • 53. Speed of change matters to anyone building software. Many engineering teams have identified Microservices as an important component of this architectural approach to designing more flexible systems that can meet the needs of their fast changing businesses. Applying this approach however, is hard. And ideas and practices are still very much evolving. To help with that, we've launched muCon - a conference to learn about emerging technologies and approaches, share challenges and evolve practices and ideas. 53
  • 54. Their applications are built on top of microservices. If there careful enough their application serve bad meals. If we are building microservices or a monolith or any type of service in general we are serving business logic to our clients. So no matter what we can not escape the architectural discussion. If we are not careful of how we architect our applications we end up serving bad meals. 54
  • 55. I love cooking food and for the rest of the talk I'll be using analogies from there. It's very similar to our industry: long hours, hard work, and delivering experiences to our customers. Have you been woken up at 3 o'clock in the morning on a Saturday morning after a night of partying, having to go to the war room and resolve an application incident. I've been there. When I remember the cold of the airconditioners, it still makes me shiver. If we are building microservices or a monolith or any type of application in general we are serving business logic to our clients. So no matter what, we cannot escape the architectural discussion. If we are not careful of how we architect our applications we end up serving a bad meal to our clients. 55