SlideShare a Scribd company logo

"You Keep Using That Word", Sam Newman

Fwdays
Fwdays

What exactly does the word Asynchronous mean? When it comes to distributed computing, one of the perennial topics comes down to how different services should communicate. Working out the relative merits of specific technical approaches can become a complex affair however, so we often reach for categorisation to simplify our work. Often, the discussion around inter-process communication hinges on what on the face of it seems to be a simple decision: Synchronous or Asynchronous. Just saying “we’re cloud native!” isn’t enough if you actually want to get anywhere, unless your goal is simply to dump loads of money into the hands of tech vendors and consultants. Unfortunately, it turns out that this is far from a simple assessment of what approach is best. Aside from many nuances around this topic, the main issue is that it seems that people can’t even agree on what a synchronous means! Is it non-blocking clients? Message-broker based communication? Does only inbox-based message passing apply? In this talk, we’ll explore the meaning of asynchronous in the context of distributed systems, and show that using the same word in ever-so slightly different contexts causes a huge amount of confusion.

1 of 197
Download to read offline
YOU KEEP USING THAT WORD
Sam Newman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
#TeamHexagon
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
Inventory
Returns
Customer
Order
Shipping
hachyderm.io/@samnewman
Inventory
Returns
Customer
Order
Shipping
hachyderm.io/@samnewman
Inventory
Returns
Customer
Order
Shipping
Logical dependency
hachyderm.io/@samnewman
Returns Shipping
hachyderm.io/@samnewman
Returns Shipping
hachyderm.io/@samnewman
Returns Shipping
The Returns microservice depends on some
functionality which Shipping provides
Synchronous
Synchronous vs Asynchronous
hachyderm.io/@samnewman
MAIN STYLES OF COMMUNICATION
hachyderm.io/@samnewman
MAIN STYLES OF COMMUNICATION
Request/Response
hachyderm.io/@samnewman
MAIN STYLES OF COMMUNICATION
Request/Response Event-Driven
hachyderm.io/@samnewman
REQUEST-RESPONSE
Returns Shipping
The consumer is asking
the microservice for
something
hachyderm.io/@samnewman
REQUEST-RESPONSE
Returns Shipping
I need a postage label!
The consumer is asking
the microservice for
something
Request
Consumer
hachyderm.io/@samnewman
REQUEST-RESPONSE
Returns Shipping
I need a postage label!
Here you go!
The consumer is asking
the microservice for
something
Request
Response
Consumer
hachyderm.io/@samnewman
EVENT-DRIVEN
Inventory
An event (fact) is broadcast
hachyderm.io/@samnewman
EVENT-DRIVEN
Inventory
An event (fact) is broadcast
Stock Level
Changed!
Event
hachyderm.io/@samnewman
EVENT-DRIVEN
Inventory
An event (fact) is broadcast Promotions
Wishlist
Stock Level
Changed!
Event
hachyderm.io/@samnewman
EVENT-DRIVEN
Inventory
An event (fact) is broadcast
Interested parties receive
the event and react
accordingly
Promotions
Wishlist
Stock Level
Changed!
Event
hachyderm.io/@samnewman
EVENT-DRIVEN
Inventory
An event (fact) is broadcast
Interested parties receive
the event and react
accordingly
The emitting microservice
doesn’t need to know about
consumers
Promotions
Wishlist
Stock Level
Changed!
Event
hachyderm.io/@samnewman
EVENT-DRIVEN
Inventory
An event (fact) is broadcast
Interested parties receive
the event and react
accordingly
The emitting microservice
doesn’t need to know about
consumers
Promotions
Wishlist
Stock Level
Changed!
Consumers
Event
Synchronous vs Asynchronous
Request/Response Event-Driven
Request/Response Event-Driven
Synchronous or Asynchronous
Request/Response Event-Driven
Asynchronous
Synchronous or Asynchronous
I don’t think there is any consistent
de
fi
nition of what asynchronous
communication means
https://pathelland.substack.com/p/dont-get-stuck-in-the-con-game-v3
https://twitter.com/samnewman/status/1414894650125586434
What I found might shock you!
https://twitter.com/darrenhobbs/status/1414920239142342662
This implies that asynchronous
communication will be slower!
But this *feels* like a useful distinction
hachyderm.io/@samnewman
REACTIVE MANIFESTO
https://www.reactivemanifesto.org/
hachyderm.io/@samnewman
REACTIVE MANIFESTO?
https://www.reactivemanifesto.org/glossary#Asynchronous
hachyderm.io/@samnewman
“…the processing of a request occurs
at an arbitrary time, sometime after it
has been transmitted from client to
server”
https://www.reactivemanifesto.org/glossary#Asynchronous
hachyderm.io/@samnewman
“…the processing of a request occurs
at an arbitrary time, sometime after it
has been transmitted from client to
server”
https://www.reactivemanifesto.org/glossary#Asynchronous
Wat?
hachyderm.io/@samnewman
As opposed to the server processing a
request before it is sent?
hachyderm.io/@samnewman
https://
fl
ickr.com/photos/londonmatt/34854868023/
hachyderm.io/@samnewman
REACTIVE MANIFESTO (CONT)
“This is the [opposite] of synchronous processing which
implies that the client only resumes its own execution
once the service has processed the request.”
https://www.reactivemanifesto.org/glossary#Asynchronous
https://twitter.com/SteveSmith_Tech/status/1414906580542312450
https://twitter.com/SteveSmith_Tech/status/1414906580542312450
https://twitter.com/SteveSmith_Tech/status/1414906580542312450
hachyderm.io/@samnewman
What this really is about is
non-blocking
Let’s explore the concept of non-
blocking calls
hachyderm.io/@samnewman
Subscription
Loyalty
Enrolment
hachyderm.io/@samnewman
Subscription
Loyalty
Award Points
Enrolment
hachyderm.io/@samnewman
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
hachyderm.io/@samnewman
BLOCKING CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
hachyderm.io/@samnewman
BLOCKING CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
hachyderm.io/@samnewman
BLOCKING CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
We then wait until we either get a response, or we give up
hachyderm.io/@samnewman
BLOCKING CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
We then wait until we either get a response, or we give up
hachyderm.io/@samnewman
BLOCKING CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
We then wait until we either get a response, or we give up
Once the response to loyalty has completed,
then we can call Subscription
hachyderm.io/@samnewman
PROBLEMS WITH BLOCKING CALLS?
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
hachyderm.io/@samnewman
PROBLEMS WITH BLOCKING CALLS?
Latency is the sum of the calls
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
hachyderm.io/@samnewman
PROBLEMS WITH BLOCKING CALLS?
Latency is the sum of the calls
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
50ms
hachyderm.io/@samnewman
PROBLEMS WITH BLOCKING CALLS?
Latency is the sum of the calls
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
50ms
150ms
hachyderm.io/@samnewman
PROBLEMS WITH BLOCKING CALLS?
Latency is the sum of the calls
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
50ms
150ms
e.g. 50 + 150ms = 200ms in total
hachyderm.io/@samnewman
PROBLEMS WITH BLOCKING CALLS?
Latency is the sum of the calls
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
50ms
150ms
e.g. 50 + 150ms = 200ms in total
But remember that latency for an
operation is not
fi
xed - it will have
a range
hachyderm.io/@samnewman
An improvement would be to
do these two calls in parallel
hachyderm.io/@samnewman
PARALLEL CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
hachyderm.io/@samnewman
PARALLEL CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
hachyderm.io/@samnewman
PARALLEL CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
hachyderm.io/@samnewman
PARALLEL CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
hachyderm.io/@samnewman
PARALLEL CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
res1 =
loyaltyService
.awardPoints(
custID, 200)
res2 = subsService
.upgradeSub(
custID, PLATINUM)
hachyderm.io/@samnewman
PARALLEL CALLS
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
res1 = loyaltyService.awardPoints(custID, 200)
res2 = subsService.upgradeSub(custID, PLATINUM)
res1 =
loyaltyService
.awardPoints(
custID, 200)
res2 = subsService
.upgradeSub(
custID, PLATINUM)
hachyderm.io/@samnewman
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
hachyderm.io/@samnewman
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
The future represents a background thread of
execution - we can continue while the call is made
in the background
hachyderm.io/@samnewman
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
The future represents a background thread of
execution - we can continue while the call is made
in the background
So the calls to Loyalty and Subscription
service can now be made in parallel
hachyderm.io/@samnewman
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
The future represents a background thread of
execution - we can continue while the call is made
in the background
So the calls to Loyalty and Subscription
service can now be made in parallel
hachyderm.io/@samnewman
But we may actually need the
responses, right?
hachyderm.io/@samnewman
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
hachyderm.io/@samnewman
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
hachyderm.io/@samnewman
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
At this point, we don’t know if the calls to
either service have been processed or not.
hachyderm.io/@samnewman
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
At this point, we don’t know if the calls to
either service have been processed or not.
We might have to wait for the results!
hachyderm.io/@samnewman
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
At this point, we don’t know if the calls to
either service have been processed or not.
We might have to wait for the results!
await(fut1, fut2)
hachyderm.io/@samnewman
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
At this point, we don’t know if the calls to
either service have been processed or not.
We might have to wait for the results!
await(fut1, fut2)
And now we’re blocking program
execution….
hachyderm.io/@samnewman
Even if you have non-blocking calls,
the logic of your processing may
require waiting for things to happen!
hachyderm.io/@samnewman
Even non-blocking calls may
end up blocking
hachyderm.io/@samnewman
But in general if you can use
non-blocking calls and run them
in parallel, that is a good thing.
https://twitter.com/evolvable/status/1414909633597116417
https://twitter.com/Benkzxar/status/1414965335338496001
Intermediary?
Broker
A
A
Message
B
A
Message
B
A Broker
Message
B
A Broker
Message
B
A Broker
Message
B
A Broker
Message
B
A Broker
With a broker, we can of
fl
oad the
requirement to guarantee delivery
(kinda)
Message
https://twitter.com/goingkilo/status/1414898869075251201
"You Keep Using That Word", Sam Newman
https://
fl
ickr.com/photos/pro
fi
lerehab/5707316547/
There are variations on how we can
implement this “inbox” pattern
There are variations on how we can
implement this “inbox” pattern
Database
There are variations on how we can
implement this “inbox” pattern
Database
File system
There are variations on how we can
implement this “inbox” pattern
Database
File system
Email!
The sender of a message doesn’t need to
worry about whether or not the recipient is
currently available
The sender of a message doesn’t need to
worry about whether or not the recipient is
currently available
But we do need to trust the intermediary (the
broker), and that does have to be available!
hachyderm.io/@samnewman
BROKER-BASED REQUEST-RESPONSE
A
Broker
hachyderm.io/@samnewman
BROKER-BASED REQUEST-RESPONSE
A
Request
Broker
hachyderm.io/@samnewman
BROKER-BASED REQUEST-RESPONSE
B
A
Request
Broker
hachyderm.io/@samnewman
BROKER-BASED REQUEST-RESPONSE
B
A
Request
Queue
Request
Broker
hachyderm.io/@samnewman
BROKER-BASED REQUEST-RESPONSE
B
A
Request
Queue
Request
Broker
hachyderm.io/@samnewman
BROKER-BASED REQUEST-RESPONSE
B
A
Request
Queue Request
Broker
hachyderm.io/@samnewman
BROKER-BASED REQUEST-RESPONSE
B
A
Request
Queue Request
Response
Broker
hachyderm.io/@samnewman
Response
Queue
BROKER-BASED REQUEST-RESPONSE
B
A
Request
Queue Request
Response
Broker
hachyderm.io/@samnewman
Response
Queue
BROKER-BASED REQUEST-RESPONSE
B
A
Request
Queue Request
Response
Broker
hachyderm.io/@samnewman
A
Response
Queue
B
A
Request
Queue
Broker
Response could be
received by a different
instance
hachyderm.io/@samnewman
A
Response
Queue
B
A
Request
Queue Request
Broker
Response could be
received by a different
instance
hachyderm.io/@samnewman
A
Response
Queue
B
A
Request
Queue Request
Response
Broker
Response could be
received by a different
instance
hachyderm.io/@samnewman
A
Response
Queue
B
A
Request
Queue Request
Response
Broker
Response could be
received by a different
instance
hachyderm.io/@samnewman
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
hachyderm.io/@samnewman
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
Here, the assumption is that the response comes
back to the same instance
hachyderm.io/@samnewman
Subscription
Loyalty
Award Points
Upgrade Subscription
Enrolment
fut1 = future(loyaltyService.awardPoints(custID, 200))
fut2 = future(subsService.upgradeSub(custID, PLATINUM))
Here, the assumption is that the response comes
back to the same instance
So we may need to deal with what
happens if the consumer dies part way
through
hachyderm.io/@samnewman
It’s arguable that the intermediary-
based communication encourages
stateless processing
hachyderm.io/@samnewman
COMPETING DEFINITIONS?
hachyderm.io/@samnewman
COMPETING DEFINITIONS?
Immediacy
hachyderm.io/@samnewman
COMPETING DEFINITIONS?
Immediacy
Temporal Coupling
hachyderm.io/@samnewman
COMPETING DEFINITIONS?
Immediacy
Temporal Coupling
Non-blocking
hachyderm.io/@samnewman
COMPETING DEFINITIONS?
Immediacy
Temporal Coupling
Non-blocking
Intermediary
hachyderm.io/@samnewman
Will the real asynchronous
communication please stand up?
Does this matter?
Words have different meanings
What words in the English language has
the most dictionary meanings?
hachyderm.io/@samnewman
Set
hachyderm.io/@samnewman
Set Run
hachyderm.io/@samnewman
Set Run
430 meanings
https://www.guinnessworldrecords.com/world-records/english-word-with-the-most-meanings
hachyderm.io/@samnewman
Set Run
430 meanings 645 meanings
https://www.guinnessworldrecords.com/world-records/english-word-with-the-most-meanings
https://www.nytimes.com/2011/05/29/opinion/29winchester.html
hachyderm.io/@samnewman
So we’re used to this, right?
hachyderm.io/@samnewman
We derive personal understanding
of a word via context
hachyderm.io/@samnewman
“The meaning of a word becomes
more narrow as we add other words
around it”
- Ian Cooper (heavily paraphrased)
hachyderm.io/@samnewman
run
hachyderm.io/@samnewman
run
The issue got worse
the moment the
program was
hachyderm.io/@samnewman
run
hachyderm.io/@samnewman
run
The economy crashed
due to a on the
banks
hachyderm.io/@samnewman
So, does this matter?
hachyderm.io/@samnewman
But we throw around terms like
“asynchronous” without enough
context around the term to derive
shared meaning
hachyderm.io/@samnewman
https://www.reactivemanifesto.org/glossary#Asynchronous
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
“Originally only in medical contexts”
- Oxford English Dictionary
hachyderm.io/@samnewman
hachyderm.io/@samnewman
hachyderm.io/@samnewman
ASYNCHRONOUS DEFINTION IN A COMPUTING CONTEXT
“Designating data transmissions in which packets
of data are sent at irregular intervals, with the start
and end of each packet being marked by speci
fi
c
signals involving such transmission”
- Oxford English Dictionary
hachyderm.io/@samnewman
Software is a type of
sociotechnical system
hachyderm.io/@samnewman
Sociotechnical
hachyderm.io/@samnewman
Sociotechnical
Sociotechnical
{
People
hachyderm.io/@samnewman
Sociotechnical
Sociotechnical
{
People
{
Technology
hachyderm.io/@samnewman
https://
fl
ickr.com/photos/chaoticmind75/52046974941/
hachyderm.io/@samnewman
hachyderm.io/@samnewman
The amount of useful software created
by individuals is vanishingly rare
hachyderm.io/@samnewman
Bringing groups of people together
to use and use technology requires
good communication
hachyderm.io/@samnewman
hachyderm.io/@samnewman
So, we’re going to make this asynchronous…
hachyderm.io/@samnewman
So, we’re going to make this asynchronous…
hachyderm.io/@samnewman
So, we’re going to make this asynchronous…
hachyderm.io/@samnewman
So, we’re going to make this asynchronous…
hachyderm.io/@samnewman
So, we’re going to make this asynchronous…
hachyderm.io/@samnewman
The term “asynchronous” in the
context of inter-process
communication has so many meanings
that it is effectively meaningless
So what can we do?
Understand what your
application needs
Understand what your
application needs
Describe how it should handle
different situations
What should happen when the
server is unreachable?
What should happen when the
server is unreachable?
How fast should it be?
What should happen when the
server is unreachable?
How fast should it be?
What if the client crashes?
Where possible, use more
explicit terms
Clients should be non-blocking
Clients should be non-blocking
Run operations in parallel
Clients should be non-blocking
Run operations in parallel
Use broker X as an intermediary…
But try not to make having a
common meaning be about
correcting someone else
"You Keep Using That Word", Sam Newman
"You keep using that word. I do not think it means what
you think it means."
— Inigo Montoya, The Princess Bride
When someone says “we should
make this asynchronous”…
When someone says “we should
make this asynchronous”…
Perhaps just say, “what does that
mean to you?”
What you
fi
nd might shock you
hachyderm.io/@samnewman
THANKS!
https://samnewman.io/
@samnewman

Recommended

Super Sure MCQs on ManagementCommerce PART 19.pdf
Super Sure MCQs on ManagementCommerce PART 19.pdfSuper Sure MCQs on ManagementCommerce PART 19.pdf
Super Sure MCQs on ManagementCommerce PART 19.pdfUnlearn with Vishal Sir
 
Practical microservices - javazone 2014
Practical microservices -  javazone 2014Practical microservices -  javazone 2014
Practical microservices - javazone 2014Sam Newman
 
INTERFACE by apidays - Microservices, APIs, and the Cost Of Change by Sam Newman
INTERFACE by apidays - Microservices, APIs, and the Cost Of Change by Sam NewmanINTERFACE by apidays - Microservices, APIs, and the Cost Of Change by Sam Newman
INTERFACE by apidays - Microservices, APIs, and the Cost Of Change by Sam Newmanapidays
 
#MBLTdev: Современная аутентификация (PayPal)
#MBLTdev: Современная аутентификация (PayPal)#MBLTdev: Современная аутентификация (PayPal)
#MBLTdev: Современная аутентификация (PayPal)e-Legion
 
Identifying your accomplishments
Identifying your accomplishmentsIdentifying your accomplishments
Identifying your accomplishmentsSonia A. Cerezo
 
"Incremental rollouts and rollbacks with business metrics control at every st...
"Incremental rollouts and rollbacks with business metrics control at every st..."Incremental rollouts and rollbacks with business metrics control at every st...
"Incremental rollouts and rollbacks with business metrics control at every st...Fwdays
 
"AIRe - AI Reliability Engineering", Denys Vasyliev
"AIRe - AI Reliability Engineering", Denys Vasyliev"AIRe - AI Reliability Engineering", Denys Vasyliev
"AIRe - AI Reliability Engineering", Denys VasylievFwdays
 
"Testing of Helm Charts or There and Back Again", Yura Rochniak
"Testing of Helm Charts or There and Back Again", Yura Rochniak"Testing of Helm Charts or There and Back Again", Yura Rochniak
"Testing of Helm Charts or There and Back Again", Yura RochniakFwdays
 

More Related Content

More from Fwdays

"Running Open-Source LLM models on Kubernetes", Volodymyr Tsap
"Running Open-Source LLM models on Kubernetes",  Volodymyr Tsap"Running Open-Source LLM models on Kubernetes",  Volodymyr Tsap
"Running Open-Source LLM models on Kubernetes", Volodymyr TsapFwdays
 
"Crisis to Calm: Incident Management’s Role in Business Stability", Oleksii O...
"Crisis to Calm: Incident Management’s Role in Business Stability", Oleksii O..."Crisis to Calm: Incident Management’s Role in Business Stability", Oleksii O...
"Crisis to Calm: Incident Management’s Role in Business Stability", Oleksii O...Fwdays
 
"DevOps Practisting Platform on EKS with Karpenter autoscaling", Dmytro Kozhevin
"DevOps Practisting Platform on EKS with Karpenter autoscaling", Dmytro Kozhevin"DevOps Practisting Platform on EKS with Karpenter autoscaling", Dmytro Kozhevin
"DevOps Practisting Platform on EKS with Karpenter autoscaling", Dmytro KozhevinFwdays
 
"Platform Engineering with Development Containers", Igor Fesenko
"Platform Engineering with Development Containers", Igor Fesenko"Platform Engineering with Development Containers", Igor Fesenko
"Platform Engineering with Development Containers", Igor FesenkoFwdays
 
"How we created an SRE team in Temabit as a part of FOZZY Group in conditions...
"How we created an SRE team in Temabit as a part of FOZZY Group in conditions..."How we created an SRE team in Temabit as a part of FOZZY Group in conditions...
"How we created an SRE team in Temabit as a part of FOZZY Group in conditions...Fwdays
 
"Drizzle: What Is It All About?", Alex Blokh, Dan Kochetov
"Drizzle: What Is It All About?", Alex Blokh, Dan Kochetov"Drizzle: What Is It All About?", Alex Blokh, Dan Kochetov
"Drizzle: What Is It All About?", Alex Blokh, Dan KochetovFwdays
 
"Package management in monorepos", Zoltan Kochan
"Package management in monorepos", Zoltan Kochan"Package management in monorepos", Zoltan Kochan
"Package management in monorepos", Zoltan KochanFwdays
 
"Node.js vs workers — A comparison of two JavaScript runtimes", James M Snell
"Node.js vs workers — A comparison of two JavaScript runtimes", James M Snell"Node.js vs workers — A comparison of two JavaScript runtimes", James M Snell
"Node.js vs workers — A comparison of two JavaScript runtimes", James M SnellFwdays
 
"AI and how to integrate ChatGPT as a customer support agent", Sergey Dyachok
"AI and how to integrate ChatGPT as a customer support agent",  Sergey Dyachok"AI and how to integrate ChatGPT as a customer support agent",  Sergey Dyachok
"AI and how to integrate ChatGPT as a customer support agent", Sergey DyachokFwdays
 
"Node.js Development in 2024: trends and tools", Nikita Galkin
"Node.js Development in 2024: trends and tools", Nikita Galkin "Node.js Development in 2024: trends and tools", Nikita Galkin
"Node.js Development in 2024: trends and tools", Nikita Galkin Fwdays
 
"Running students' code in isolation. The hard way", Yurii Holiuk
"Running students' code in isolation. The hard way", Yurii Holiuk "Running students' code in isolation. The hard way", Yurii Holiuk
"Running students' code in isolation. The hard way", Yurii Holiuk Fwdays
 
"Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada Fwdays
 
"The role of CTO in a classical early-stage startup", Eugene Gusarov
"The role of CTO in a classical early-stage startup", Eugene Gusarov"The role of CTO in a classical early-stage startup", Eugene Gusarov
"The role of CTO in a classical early-stage startup", Eugene GusarovFwdays
 
"Cross-functional teams: what to do when a new hire doesn’t solve the busines...
"Cross-functional teams: what to do when a new hire doesn’t solve the busines..."Cross-functional teams: what to do when a new hire doesn’t solve the busines...
"Cross-functional teams: what to do when a new hire doesn’t solve the busines...Fwdays
 
"Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad...
"Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad..."Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad...
"Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad...Fwdays
 
"Thriving Culture in a Product Company — Practical Story", Volodymyr Tsukur
"Thriving Culture in a Product Company — Practical Story", Volodymyr Tsukur"Thriving Culture in a Product Company — Practical Story", Volodymyr Tsukur
"Thriving Culture in a Product Company — Practical Story", Volodymyr TsukurFwdays
 
"Fast Start to Building on AWS", Igor Ivaniuk
"Fast Start to Building on AWS", Igor Ivaniuk"Fast Start to Building on AWS", Igor Ivaniuk
"Fast Start to Building on AWS", Igor IvaniukFwdays
 
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ...
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ..."Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ...
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ...Fwdays
 
"AI Startup Growth from Idea to 1M ARR", Oleksandr Uspenskyi
"AI Startup Growth from Idea to 1M ARR", Oleksandr Uspenskyi"AI Startup Growth from Idea to 1M ARR", Oleksandr Uspenskyi
"AI Startup Growth from Idea to 1M ARR", Oleksandr UspenskyiFwdays
 
"How we switched to Kanban and how it integrates with product planning", Vady...
"How we switched to Kanban and how it integrates with product planning", Vady..."How we switched to Kanban and how it integrates with product planning", Vady...
"How we switched to Kanban and how it integrates with product planning", Vady...Fwdays
 

More from Fwdays (20)

"Running Open-Source LLM models on Kubernetes", Volodymyr Tsap
"Running Open-Source LLM models on Kubernetes",  Volodymyr Tsap"Running Open-Source LLM models on Kubernetes",  Volodymyr Tsap
"Running Open-Source LLM models on Kubernetes", Volodymyr Tsap
 
"Crisis to Calm: Incident Management’s Role in Business Stability", Oleksii O...
"Crisis to Calm: Incident Management’s Role in Business Stability", Oleksii O..."Crisis to Calm: Incident Management’s Role in Business Stability", Oleksii O...
"Crisis to Calm: Incident Management’s Role in Business Stability", Oleksii O...
 
"DevOps Practisting Platform on EKS with Karpenter autoscaling", Dmytro Kozhevin
"DevOps Practisting Platform on EKS with Karpenter autoscaling", Dmytro Kozhevin"DevOps Practisting Platform on EKS with Karpenter autoscaling", Dmytro Kozhevin
"DevOps Practisting Platform on EKS with Karpenter autoscaling", Dmytro Kozhevin
 
"Platform Engineering with Development Containers", Igor Fesenko
"Platform Engineering with Development Containers", Igor Fesenko"Platform Engineering with Development Containers", Igor Fesenko
"Platform Engineering with Development Containers", Igor Fesenko
 
"How we created an SRE team in Temabit as a part of FOZZY Group in conditions...
"How we created an SRE team in Temabit as a part of FOZZY Group in conditions..."How we created an SRE team in Temabit as a part of FOZZY Group in conditions...
"How we created an SRE team in Temabit as a part of FOZZY Group in conditions...
 
"Drizzle: What Is It All About?", Alex Blokh, Dan Kochetov
"Drizzle: What Is It All About?", Alex Blokh, Dan Kochetov"Drizzle: What Is It All About?", Alex Blokh, Dan Kochetov
"Drizzle: What Is It All About?", Alex Blokh, Dan Kochetov
 
"Package management in monorepos", Zoltan Kochan
"Package management in monorepos", Zoltan Kochan"Package management in monorepos", Zoltan Kochan
"Package management in monorepos", Zoltan Kochan
 
"Node.js vs workers — A comparison of two JavaScript runtimes", James M Snell
"Node.js vs workers — A comparison of two JavaScript runtimes", James M Snell"Node.js vs workers — A comparison of two JavaScript runtimes", James M Snell
"Node.js vs workers — A comparison of two JavaScript runtimes", James M Snell
 
"AI and how to integrate ChatGPT as a customer support agent", Sergey Dyachok
"AI and how to integrate ChatGPT as a customer support agent",  Sergey Dyachok"AI and how to integrate ChatGPT as a customer support agent",  Sergey Dyachok
"AI and how to integrate ChatGPT as a customer support agent", Sergey Dyachok
 
"Node.js Development in 2024: trends and tools", Nikita Galkin
"Node.js Development in 2024: trends and tools", Nikita Galkin "Node.js Development in 2024: trends and tools", Nikita Galkin
"Node.js Development in 2024: trends and tools", Nikita Galkin
 
"Running students' code in isolation. The hard way", Yurii Holiuk
"Running students' code in isolation. The hard way", Yurii Holiuk "Running students' code in isolation. The hard way", Yurii Holiuk
"Running students' code in isolation. The hard way", Yurii Holiuk
 
"Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada
 
"The role of CTO in a classical early-stage startup", Eugene Gusarov
"The role of CTO in a classical early-stage startup", Eugene Gusarov"The role of CTO in a classical early-stage startup", Eugene Gusarov
"The role of CTO in a classical early-stage startup", Eugene Gusarov
 
"Cross-functional teams: what to do when a new hire doesn’t solve the busines...
"Cross-functional teams: what to do when a new hire doesn’t solve the busines..."Cross-functional teams: what to do when a new hire doesn’t solve the busines...
"Cross-functional teams: what to do when a new hire doesn’t solve the busines...
 
"Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad...
"Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad..."Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad...
"Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad...
 
"Thriving Culture in a Product Company — Practical Story", Volodymyr Tsukur
"Thriving Culture in a Product Company — Practical Story", Volodymyr Tsukur"Thriving Culture in a Product Company — Practical Story", Volodymyr Tsukur
"Thriving Culture in a Product Company — Practical Story", Volodymyr Tsukur
 
"Fast Start to Building on AWS", Igor Ivaniuk
"Fast Start to Building on AWS", Igor Ivaniuk"Fast Start to Building on AWS", Igor Ivaniuk
"Fast Start to Building on AWS", Igor Ivaniuk
 
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ...
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ..."Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ...
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ...
 
"AI Startup Growth from Idea to 1M ARR", Oleksandr Uspenskyi
"AI Startup Growth from Idea to 1M ARR", Oleksandr Uspenskyi"AI Startup Growth from Idea to 1M ARR", Oleksandr Uspenskyi
"AI Startup Growth from Idea to 1M ARR", Oleksandr Uspenskyi
 
"How we switched to Kanban and how it integrates with product planning", Vady...
"How we switched to Kanban and how it integrates with product planning", Vady..."How we switched to Kanban and how it integrates with product planning", Vady...
"How we switched to Kanban and how it integrates with product planning", Vady...
 

Recently uploaded

Roundtable_-_API_Research__Testing_Tools.pdf
Roundtable_-_API_Research__Testing_Tools.pdfRoundtable_-_API_Research__Testing_Tools.pdf
Roundtable_-_API_Research__Testing_Tools.pdfMostafa Higazy
 
software-quality-assurance question paper 2023
software-quality-assurance question paper 2023software-quality-assurance question paper 2023
software-quality-assurance question paper 2023RohanMistry15
 
CloudStack 101: The Best Way to Build Your Private Cloud – Rohit Yadav, VP Ap...
CloudStack 101: The Best Way to Build Your Private Cloud – Rohit Yadav, VP Ap...CloudStack 101: The Best Way to Build Your Private Cloud – Rohit Yadav, VP Ap...
CloudStack 101: The Best Way to Build Your Private Cloud – Rohit Yadav, VP Ap...ShapeBlue
 
PrismCRM-RealEstate-SalesCRM_byCode5Company
PrismCRM-RealEstate-SalesCRM_byCode5CompanyPrismCRM-RealEstate-SalesCRM_byCode5Company
PrismCRM-RealEstate-SalesCRM_byCode5CompanyMustafa Kuğu
 
Java Optional (Kitworks Team Study 김성호 발표)
Java Optional (Kitworks Team Study 김성호 발표)Java Optional (Kitworks Team Study 김성호 발표)
Java Optional (Kitworks Team Study 김성호 발표)Wonjun Hwang
 
Building Bridges: Merging RPA Processes, UiPath Apps, and Data Service to bu...
Building Bridges:  Merging RPA Processes, UiPath Apps, and Data Service to bu...Building Bridges:  Merging RPA Processes, UiPath Apps, and Data Service to bu...
Building Bridges: Merging RPA Processes, UiPath Apps, and Data Service to bu...DianaGray10
 
New ThousandEyes Product Features and Release Highlights: February 2024
New ThousandEyes Product Features and Release Highlights: February 2024New ThousandEyes Product Features and Release Highlights: February 2024
New ThousandEyes Product Features and Release Highlights: February 2024ThousandEyes
 
Improving IT Investment Decisions and Business Outcomes with Integrated Enter...
Improving IT Investment Decisions and Business Outcomes with Integrated Enter...Improving IT Investment Decisions and Business Outcomes with Integrated Enter...
Improving IT Investment Decisions and Business Outcomes with Integrated Enter...Cprime
 
Low Latency at Extreme Scale: Proven Practices & Pitfalls
Low Latency at Extreme Scale: Proven Practices & PitfallsLow Latency at Extreme Scale: Proven Practices & Pitfalls
Low Latency at Extreme Scale: Proven Practices & PitfallsScyllaDB
 
CloudStack Tooling Ecosystem – Kiran Chavala, ShapeBlue
CloudStack Tooling Ecosystem – Kiran Chavala, ShapeBlueCloudStack Tooling Ecosystem – Kiran Chavala, ShapeBlue
CloudStack Tooling Ecosystem – Kiran Chavala, ShapeBlueShapeBlue
 
Boosting Developer Effectiveness with a Java platform team 1.4 - ArnhemJUG
Boosting Developer Effectiveness with a Java platform team 1.4 - ArnhemJUGBoosting Developer Effectiveness with a Java platform team 1.4 - ArnhemJUG
Boosting Developer Effectiveness with a Java platform team 1.4 - ArnhemJUGRick Ossendrijver
 
Artificial Intelligence - AI For Everyone
Artificial Intelligence - AI For EveryoneArtificial Intelligence - AI For Everyone
Artificial Intelligence - AI For EveryoneSridhar Seshadri
 
Microsoft x 2toLead Webinar Session 2 - How Employee Learning and Development...
Microsoft x 2toLead Webinar Session 2 - How Employee Learning and Development...Microsoft x 2toLead Webinar Session 2 - How Employee Learning and Development...
Microsoft x 2toLead Webinar Session 2 - How Employee Learning and Development...2toLead Limited
 
Large Language Models and Applications in Healthcare
Large Language Models and Applications in HealthcareLarge Language Models and Applications in Healthcare
Large Language Models and Applications in HealthcareAsma Ben Abacha
 
How We Grew Up with CloudStack and its Journey – Dilip Singh, DataHub
How We Grew Up with CloudStack and its Journey – Dilip Singh, DataHubHow We Grew Up with CloudStack and its Journey – Dilip Singh, DataHub
How We Grew Up with CloudStack and its Journey – Dilip Singh, DataHubShapeBlue
 
Establishing data sharing standards to promote global industry development
Establishing data sharing standards to promote global industry developmentEstablishing data sharing standards to promote global industry development
Establishing data sharing standards to promote global industry developmentThorsten Huelsmann
 
ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...
ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...
ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...SearchNorwich
 
CloudStack Authentication Methods – Harikrishna Patnala, ShapeBlue
CloudStack Authentication Methods – Harikrishna Patnala, ShapeBlueCloudStack Authentication Methods – Harikrishna Patnala, ShapeBlue
CloudStack Authentication Methods – Harikrishna Patnala, ShapeBlueShapeBlue
 
Achieving Excellence IESVE for HVAC Simulation.pdf
Achieving Excellence IESVE for HVAC Simulation.pdfAchieving Excellence IESVE for HVAC Simulation.pdf
Achieving Excellence IESVE for HVAC Simulation.pdfIES VE
 
Leonis Insights: The State of AI (7 trends for 2023 and 7 predictions for 2024)
Leonis Insights: The State of AI (7 trends for 2023 and 7 predictions for 2024)Leonis Insights: The State of AI (7 trends for 2023 and 7 predictions for 2024)
Leonis Insights: The State of AI (7 trends for 2023 and 7 predictions for 2024)Jay Zhao
 

Recently uploaded (20)

Roundtable_-_API_Research__Testing_Tools.pdf
Roundtable_-_API_Research__Testing_Tools.pdfRoundtable_-_API_Research__Testing_Tools.pdf
Roundtable_-_API_Research__Testing_Tools.pdf
 
software-quality-assurance question paper 2023
software-quality-assurance question paper 2023software-quality-assurance question paper 2023
software-quality-assurance question paper 2023
 
CloudStack 101: The Best Way to Build Your Private Cloud – Rohit Yadav, VP Ap...
CloudStack 101: The Best Way to Build Your Private Cloud – Rohit Yadav, VP Ap...CloudStack 101: The Best Way to Build Your Private Cloud – Rohit Yadav, VP Ap...
CloudStack 101: The Best Way to Build Your Private Cloud – Rohit Yadav, VP Ap...
 
PrismCRM-RealEstate-SalesCRM_byCode5Company
PrismCRM-RealEstate-SalesCRM_byCode5CompanyPrismCRM-RealEstate-SalesCRM_byCode5Company
PrismCRM-RealEstate-SalesCRM_byCode5Company
 
Java Optional (Kitworks Team Study 김성호 발표)
Java Optional (Kitworks Team Study 김성호 발표)Java Optional (Kitworks Team Study 김성호 발표)
Java Optional (Kitworks Team Study 김성호 발표)
 
Building Bridges: Merging RPA Processes, UiPath Apps, and Data Service to bu...
Building Bridges:  Merging RPA Processes, UiPath Apps, and Data Service to bu...Building Bridges:  Merging RPA Processes, UiPath Apps, and Data Service to bu...
Building Bridges: Merging RPA Processes, UiPath Apps, and Data Service to bu...
 
New ThousandEyes Product Features and Release Highlights: February 2024
New ThousandEyes Product Features and Release Highlights: February 2024New ThousandEyes Product Features and Release Highlights: February 2024
New ThousandEyes Product Features and Release Highlights: February 2024
 
Improving IT Investment Decisions and Business Outcomes with Integrated Enter...
Improving IT Investment Decisions and Business Outcomes with Integrated Enter...Improving IT Investment Decisions and Business Outcomes with Integrated Enter...
Improving IT Investment Decisions and Business Outcomes with Integrated Enter...
 
Low Latency at Extreme Scale: Proven Practices & Pitfalls
Low Latency at Extreme Scale: Proven Practices & PitfallsLow Latency at Extreme Scale: Proven Practices & Pitfalls
Low Latency at Extreme Scale: Proven Practices & Pitfalls
 
CloudStack Tooling Ecosystem – Kiran Chavala, ShapeBlue
CloudStack Tooling Ecosystem – Kiran Chavala, ShapeBlueCloudStack Tooling Ecosystem – Kiran Chavala, ShapeBlue
CloudStack Tooling Ecosystem – Kiran Chavala, ShapeBlue
 
Boosting Developer Effectiveness with a Java platform team 1.4 - ArnhemJUG
Boosting Developer Effectiveness with a Java platform team 1.4 - ArnhemJUGBoosting Developer Effectiveness with a Java platform team 1.4 - ArnhemJUG
Boosting Developer Effectiveness with a Java platform team 1.4 - ArnhemJUG
 
Artificial Intelligence - AI For Everyone
Artificial Intelligence - AI For EveryoneArtificial Intelligence - AI For Everyone
Artificial Intelligence - AI For Everyone
 
Microsoft x 2toLead Webinar Session 2 - How Employee Learning and Development...
Microsoft x 2toLead Webinar Session 2 - How Employee Learning and Development...Microsoft x 2toLead Webinar Session 2 - How Employee Learning and Development...
Microsoft x 2toLead Webinar Session 2 - How Employee Learning and Development...
 
Large Language Models and Applications in Healthcare
Large Language Models and Applications in HealthcareLarge Language Models and Applications in Healthcare
Large Language Models and Applications in Healthcare
 
How We Grew Up with CloudStack and its Journey – Dilip Singh, DataHub
How We Grew Up with CloudStack and its Journey – Dilip Singh, DataHubHow We Grew Up with CloudStack and its Journey – Dilip Singh, DataHub
How We Grew Up with CloudStack and its Journey – Dilip Singh, DataHub
 
Establishing data sharing standards to promote global industry development
Establishing data sharing standards to promote global industry developmentEstablishing data sharing standards to promote global industry development
Establishing data sharing standards to promote global industry development
 
ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...
ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...
ChatGPT's Code Interpreter: Your secret weapon for SEO automation success - S...
 
CloudStack Authentication Methods – Harikrishna Patnala, ShapeBlue
CloudStack Authentication Methods – Harikrishna Patnala, ShapeBlueCloudStack Authentication Methods – Harikrishna Patnala, ShapeBlue
CloudStack Authentication Methods – Harikrishna Patnala, ShapeBlue
 
Achieving Excellence IESVE for HVAC Simulation.pdf
Achieving Excellence IESVE for HVAC Simulation.pdfAchieving Excellence IESVE for HVAC Simulation.pdf
Achieving Excellence IESVE for HVAC Simulation.pdf
 
Leonis Insights: The State of AI (7 trends for 2023 and 7 predictions for 2024)
Leonis Insights: The State of AI (7 trends for 2023 and 7 predictions for 2024)Leonis Insights: The State of AI (7 trends for 2023 and 7 predictions for 2024)
Leonis Insights: The State of AI (7 trends for 2023 and 7 predictions for 2024)
 

"You Keep Using That Word", Sam Newman