SlideShare a Scribd company logo
1 of 191
Download to read offline
@tyler_treat
Distributed Systems Are a

UX Problem
Tyler Treat / O’Reilly Software Architecture Conference / October 30, 2018
@tyler_treat
Tyler Treat

tyler.treat@realkinetic.com
@tyler_treat
I like distributed systems.
@tyler_treat
@tyler_treat
@tyler_treat
Disclaimer:

I know approximately nothing about UX…
@tyler_treat
…other than when I’m the user, I know when
my experience is good and when it’s bad.
@tyler_treat
@tyler_treat
UX
@tyler_treat
UX Systems
@tyler_treat
UX Systems
@tyler_treat
UX Systems
Business
@tyler_treat
UX Systems
Business
This

Talk
@tyler_treat
The Yin and Yang of
UX and Architecture
@tyler_treat
Monolith
@tyler_treat
Monolith
@tyler_treat
Service
Service
Service
Service
Service
Service
Service
ServService
@tyler_treat
Service
Service
Service
Service
Service
Service
Service
ServService
@tyler_treat
Service
Service
Service
Service
Service
Service
Service
ServService
@tyler_treat
Implications
@tyler_treat
@tyler_treat
book trip
Trip
Service
Trip
Database
transaction
Good old days
@tyler_treat
book trip
Microservices
Airline
Service
Hotel
Service
Car
Service
Trip
Service
transaction
transaction
transaction
@tyler_treat
book trip
Microservices
Airline
Service
Hotel
Service
Car
Service
Trip
Service
transaction
transaction
transaction
ACID
ACID
ACID
@tyler_treat
UX Implications of Microservices
• Data consistency
@tyler_treat
Service
Service
Service
Service
Service
Service
Service
ServService
@tyler_treat
Service
Service
Service
Service
Service
Service
Service
ServService
@tyler_treat
UX Implications of Microservices
• Data consistency
• Race conditions
@tyler_treat
@tyler_treat
UX Implications of Microservices
• Data consistency
• Race conditions
• Performance
@tyler_treat
book trip
Microservices
Airline
Service
Hotel
Service
Car
Service
Trip
Service
transaction
transaction
transaction
@tyler_treat
book trip
Microservices
Airline
Service
Hotel
Service
Car
Service
Trip
Service
transaction
transaction
transaction
@tyler_treat
UX Implications of Microservices
• Data consistency
• Race conditions
• Performance
• Partial failure
@tyler_treat
So are microservices bad?
@tyler_treat
Microservices are about

people scale.
@tyler_treat
Transparency
@tyler_treat
A Study of Transparency and Adaptability of Heterogeneous
Computer Networks with TCP/IP and IPv6 Protocols

Das, 2012
“Any change in a computing system, such as a new feature or new
component, is transparent if the system after change adheres to
previous external interface as much as possible while changing its
internal behavior.”
@tyler_treat
System
@tyler_treat
System
@tyler_treat
High TransparencyLow Transparency
@tyler_treat
NFS
High TransparencyLow Transparency
@tyler_treat
NFSFTP
High TransparencyLow Transparency
@tyler_treat
Types of Transparencies
Access transparency
Location transparency
Migration transparency
Relocation transparency
Replication transparency
Concurrent transparency
Failure transparency
Persistence transparency
Security transparency
@tyler_treat
Transparency is about usability.
@tyler_treat
Usability Control
@tyler_treat
Usability Control
@tyler_treat
Usability Control
@tyler_treat
Simplicity
Flexibility, Performance,

Correctness
RPC
@tyler_treat
Simplicity Flexibility, Performance,

Correctness
Erlang Message Passing
@tyler_treat
RPCErlang

Message Passing
High TransparencyLow Transparency
@tyler_treat
Translating UX for developers:
APIs
@tyler_treat
Transparencies simplify the API
of a system.
@tyler_treat
UX is about deciding what
knobs to expose.
@tyler_treat
The Truth is Prohibitively Expensive
Balancing Consistency and UX
@tyler_treat
book trip
Trip
Service
Trip
Database
transaction
Good old days
@tyler_treat
book trip
Trip
Service
Trip
Database
transaction
Good old days
Transparency
@tyler_treat
book trip
Microservices
Airline
Service
Hotel
Service
Car
Service
Trip
Service
transaction
transaction
transactionTransparency
@tyler_treat
book trip
Microservices
Airline
Service
Hotel
Service
Car
Service
Trip
Service
transaction
transaction
transaction
ACID
ACID
ACID
Transparency
@tyler_treat
@tyler_treat
@tyler_treat
@tyler_treat
Spreadsheet service
@tyler_treat
Spreadsheet service
Document service
@tyler_treat
Spreadsheet service
Document service
Presentation service
@tyler_treat
Spreadsheet service
Document service
Presentation service
IAM service
@tyler_treat
Spreadsheet service
Document service
Presentation service
IAM service
consistent
@tyler_treat
Consistency is about ordering of
events in a distributed system.
@tyler_treat
Why is this hard?
@tyler_treat
So what can we do?
@tyler_treat
Coordinate
@tyler_treat
Two-Phase Commit
@tyler_treat
book trip
2PC Prepare
Airline
Service
Hotel
Service
Car
Service
Trip
Service
propose
propose
propose
@tyler_treat
book trip
2PC Prepare
Airline
Service
Hotel
Service
Car
Service
Trip
Service
vote
vote
vote
@tyler_treat
book trip
2PC Commit
Airline
Service
Hotel
Service
Car
Service
Trip
Service
commit/abort
commit/abort
commit/abort
@tyler_treat
book trip
2PC Commit
Airline
Service
Hotel
Service
Car
Service
Trip
Service
done
done
done
@tyler_treat
Problems with 2PC
• Chatty protocol: beholden to network latency
• Limited throughput
• Transaction coordinator: single point of failure
• Blocking protocol: susceptible to deadlock
@tyler_treat
book trip
2PC Prepare
Airline
Service
Hotel
Service
Car
Service
Trip
Service
propose
propose
propose
@tyler_treat
book trip
2PC Prepare
Airline
Service
Hotel
Service
Car
Service
Trip
Service
propose
propose
propose
@tyler_treat
book trip
2PC Prepare
Airline
Service
Hotel
Service
Car
Service
Trip
Service
propose
propose
propose
@tyler_treat
Add more phases!
@tyler_treat
Three-Phase Commit
@tyler_treat
@tyler_treat
atomic clocks
NTP
GPS
TrueTime
@tyler_treat
Good news:

we solved physics.
@tyler_treat
Bad news:

it costs all the money.
@tyler_treat
Not exactly…
@tyler_treat
Spanner: Google’s Globally-Distributed Database

Corbett et al.
@tyler_treat
TrueTime forces that uncertainty to the
surface, and Spanner provides a
transparency over it.
@tyler_treat
Spanner doesn’t avoid trade-offs,
it just minimizes their probability.
@tyler_treat
Spanner is expensive and
proprietary.
@tyler_treat
But it’s not the end of the story…
@tyler_treat
Unless every service is backed by the
same database, you probably still have
to deal with consistency problems.
@tyler_treat
Challenges to Adopting Stronger Consistency at Scale

Ajoux et al., 2015
“The biggest barrier to providing stronger consistency guarantees…is
that the consistency mechanism must integrate consistency across
many stateful services.”
@tyler_treat
Coordination is expensive because
processes can’t make progress
independently.
@tyler_treat
@tyler_treat
@tyler_treat
Peter Bailis, 2015 https://speakerdeck.com/pbailis/silence-is-golden-coordination-avoiding-systems-design
@tyler_treat
And what about partial failure?
@tyler_treat
@tyler_treat
@tyler_treat
@tyler_treat
@tyler_treat
@tyler_treat
Memories, Guesses, and Apologies
Dealing with Partial Knowledge
@tyler_treat
The cost of knowing the “truth”
can be prohibitively expensive.
@tyler_treat
And partial failure means the
“truth” is also fragile.
@tyler_treat
Where does this leave us?
@tyler_treat
We could go
back to the
monolith.
@tyler_treat
We could build
expensive data centers
with fancy hardware…
@tyler_treat
@tyler_treat
…or we could
rethink our
transparencies.
@tyler_treat@tyler_treat
@tyler_treat
Gregor Hohpe, 2005 https://www.enterpriseintegrationpatterns.com/docs/IEEE_Software_Design_2PC.pdf
@tyler_treat
Gregor Hohpe, 2005 https://www.enterpriseintegrationpatterns.com/docs/IEEE_Software_Design_2PC.pdf
@tyler_treat
Gregor Hohpe, 2005 https://www.enterpriseintegrationpatterns.com/docs/IEEE_Software_Design_2PC.pdf
@tyler_treat
Gregor Hohpe, 2005 https://www.enterpriseintegrationpatterns.com/docs/IEEE_Software_Design_2PC.pdf
@tyler_treat
Exception Handling in
Asynchronous Systems
@tyler_treat
@tyler_treat
Exception Handling in Asynchronous Systems
• Write-off
@tyler_treat
@tyler_treat
Exception Handling in Asynchronous Systems
• Write-off
• Retry
@tyler_treat
@tyler_treat
Exception Handling in Asynchronous Systems
• Write-off
• Retry
• Compensating action
@tyler_treat
Revisiting Two-Phase Commit
@tyler_treat
Sagas
@tyler_treat
Sagas

Garcia-Molina & Salem, 1987
“A long-lived transaction is a saga if it can be written as a sequence of
transactions that can be interleaved with other transactions…Either all
the transactions in a saga are successfully completed or
compensating transactions are run to amend a partial execution.”
@tyler_treat
Sagas

Garcia-Molina & Salem, 1987
“A long-lived transaction is a saga if it can be written as a sequence of
transactions that can be interleaved with other transactions…Either all
the transactions in a saga are successfully completed or
compensating transactions are run to amend a partial execution.”
@tyler_treat
Sagas split long-lived transactions into
individual, interleaved sub-transactions:
T = T1, T2, . . . , Tn
@tyler_treat
And each sub-transaction has a
compensating transaction:
C1, C2, . . . , Cn
@tyler_treat
T1, T2, . . . , Tn
T1, T2, . . . , Tj, Cj, . . . , C2, C1
Sagas guarantee one of two
execution sequences:
@tyler_treat
book trip
Airline
Service
Hotel
Service
Car
Service
Trip
Service
transaction
transaction
transaction
@tyler_treat
• Book flight
• Book hotel
• Book car
• Charge money
T = T1, T2, . . . , Tn
@tyler_treat
• Cancel flight
• Cancel hotel
• Cancel car
• Refund money
C1, C2, . . . , Cn
@tyler_treat
Compensating transactions
must be idempotent.
@tyler_treat
Sagas trade off isolation for
availability.
@tyler_treat
Event-Driven
@tyler_treat
book trip
Airline
Service
Hotel
Service
Car
Service
Trip
Service
transaction
transaction
transaction
@tyler_treat
event
Airline
Service
Hotel
Service
Car
Service
Trip
Service
event
event
event
@tyler_treat
event
Airline
Service
Hotel
Service
Car
Service
Trip
Service
event
event
event
@tyler_treat
System Properties Business Rules
@tyler_treat
Sean T. Allen
“People don’t want distributed transactions,
they just want the guarantees that distributed
transactions give them.”
@tyler_treat
CAP theorem
@tyler_treat
CAP Theorem
• Consistency, Availability, Partition Tolerance
• When a partition occurs, do we:
• Choose availability and give up consistency?



- or -
• Choose consistency and give up availability?
@tyler_treat
CAP Theorem
• Consistency, Availability, Partition Tolerance
• When a partition occurs, do we:
• Choose availability and give up consistency?



- or -
• Choose consistency and give up availability?
(or YOLO it)
@tyler_treat
The CAP theorem is a UX
question…
@tyler_treat
When a partial failure occurs, how do
you want the application to behave?
@tyler_treat
@tyler_treat
@tyler_treat
We can choose consistency and
sacrifice availability…
@tyler_treat
…or we can choose availability by making
local decisions with the knowledge at
hand and designing the UX accordingly.
@tyler_treat
Managing partial failure is a matter
of dealing with partial knowledge…
@tyler_treat
…and managing risk.
@tyler_treat
Check value

< $10,000?
Our risk appetite can
drive business rules.
Clear locally
Double check with

all replicas before

clearing
yes
no
@tyler_treat
Memories, guesses, and
apologies
@tyler_treat
Computers operate with partial
knowledge.
@tyler_treat
Either there’s a
disconnect with
the “real world”…
@tyler_treat
…or there’s a
disconnect
between systems.
@tyler_treat
Systems don’t make decisions,
they make guesses.
@tyler_treat
Systems have memory.
@tyler_treat
Memories help systems make
better guesses in the future.
@tyler_treat
Forgetfulness is a business
decision.
@tyler_treat
Sometimes the system guesses
wrong.
@tyler_treat
Systems need the capacity to
apologize.
@tyler_treat
Customers judge you not by your
failures, but by how you handle your
failures.
@tyler_treat
Are you building systems that never
fail or systems that fail gracefully?
@tyler_treat
@tyler_treat
Businesses need both code and
people to manage apologies.
@tyler_treat
It becomes less about trying to build the
perfect system and more about how we
cope with an imperfect one.
@tyler_treat
Wrapping Up
Summary and Observations
@tyler_treat
@tyler_treat@tyler_treat
@tyler_treat
ACID
distributed transactions
exactly-once delivery
ordered delivery
serializable isolationlinearizability
System Properties
@tyler_treat
ACID
distributed transactions
exactly-once delivery
ordered delivery
serializable isolationlinearizability
System Properties
negative account balance
Business Rules / Application Invariants
two users sharing same IDroom double-booked
balance reconciles
@tyler_treat
@tyler_treat
We put ourselves at the mercy of our
infrastructure and hope it makes good
on its promises.
@tyler_treat
Kyle Kingsbury, 2015 http://jepsen.io
It often
doesn’t.
@tyler_treat
When do we actually need
consistency?
@tyler_treat
@tyler_treat
We can use consistency when the
stakes are high and the cost is worth it.
@tyler_treat
And design our transparencies
accordingly.
@tyler_treat
We could try to build perfect
systems.
@tyler_treat
Should we build perfect
systems or pragmatic systems?
@tyler_treat
Systems that can compensate.
@tyler_treat
Systems that can recover.
@tyler_treat
Systems that can apologize.
@tyler_treat
UX Systems
Business
@tyler_treat
Data Consistency
Race Conditions
Performance
Partial Failure
@tyler_treat
Data Consistency
Race Conditions
Performance
Partial Failure
Transparency
Informs
@tyler_treat
Thank You
bravenewgeek.com

realkinetic.com
@tyler_treat
References
• https://gotocon.com/dl/goto-chicago-2015/slides/CaitieMcCaffrey_ApplyingTheSagaPattern.pdf
• http://ijcsits.org/papers/vol2no62012/42vol2no6.pdf
• http://steve.vinoski.net/pdf/IEEE-Convenience_Over_Correctness.pdf
• https://queue.acm.org/detail.cfm?id=2745385
• https://www.enterpriseintegrationpatterns.com/docs/IEEE_Software_Design_2PC.pdf
• http://www-db.cs.wisc.edu/cidr/cidr2009/Paper_133.pdf
• https://bravenewgeek.com/distributed-systems-are-a-ux-problem/
• http://www.cs.princeton.edu/~wlloyd/papers/challenges-hotos15.pdf
• https://www.cs.cornell.edu/andru/cs711/2002fa/reading/sagas.pdf
• https://www.youtube.com/watch?v=lsKaNDj4TrE
• Starbucks photo - https://www.geekwire.com/2015/starbucks-mobile-ordering-now-blankets-the-u-s-with-coverage-in-san-francisco-new-york-and-more-coming-today/
• Friction image - https://byjus.com/physics/friction-in-automobiles/
• Carbon copy forms - http://www.rainiercopy.com/forms.html
• Rosetta Stone photo - https://en.wikipedia.org/wiki/Rosetta_Stone#/media/File:Rosetta_Stone.JPG

More Related Content

Similar to Distributed Systems Are a UX Problem

itSMF Conference 2015 - Johann Diaz - Service Mgt is Dead v2.2post
itSMF Conference 2015 - Johann Diaz - Service Mgt is Dead v2.2postitSMF Conference 2015 - Johann Diaz - Service Mgt is Dead v2.2post
itSMF Conference 2015 - Johann Diaz - Service Mgt is Dead v2.2post
Johann Diaz
 

Similar to Distributed Systems Are a UX Problem (20)

Mission Possible: Future of IT Support
Mission Possible: Future of IT SupportMission Possible: Future of IT Support
Mission Possible: Future of IT Support
 
ITCamp 2018 - Tudor Damian - The cybersecurity landscape is changing. Are you...
ITCamp 2018 - Tudor Damian - The cybersecurity landscape is changing. Are you...ITCamp 2018 - Tudor Damian - The cybersecurity landscape is changing. Are you...
ITCamp 2018 - Tudor Damian - The cybersecurity landscape is changing. Are you...
 
Agile Mumbai 2022 - Adish Apte & Ashish Sharma | AI/ML Powered & Insights Fu...
Agile Mumbai 2022 - Adish Apte & Ashish Sharma |  AI/ML Powered & Insights Fu...Agile Mumbai 2022 - Adish Apte & Ashish Sharma |  AI/ML Powered & Insights Fu...
Agile Mumbai 2022 - Adish Apte & Ashish Sharma | AI/ML Powered & Insights Fu...
 
Fearless From Monolith to Serverless with Dynatrace
Fearless From Monolith to Serverless with DynatraceFearless From Monolith to Serverless with Dynatrace
Fearless From Monolith to Serverless with Dynatrace
 
Solving trust issues at scale - AppSec California
Solving trust issues at scale - AppSec CaliforniaSolving trust issues at scale - AppSec California
Solving trust issues at scale - AppSec California
 
Jbcnconf Nowadays Architecture Trends, from Monolith to Microservices and Ser...
Jbcnconf Nowadays Architecture Trends, from Monolith to Microservices and Ser...Jbcnconf Nowadays Architecture Trends, from Monolith to Microservices and Ser...
Jbcnconf Nowadays Architecture Trends, from Monolith to Microservices and Ser...
 
Resiliency through failure @ QConNY 2013
Resiliency through failure @ QConNY 2013Resiliency through failure @ QConNY 2013
Resiliency through failure @ QConNY 2013
 
SOA, Microservices and Event Driven Architecture
SOA, Microservices and Event Driven ArchitectureSOA, Microservices and Event Driven Architecture
SOA, Microservices and Event Driven Architecture
 
Twitter's Real Time Stack - Processing Billions of Events Using Distributed L...
Twitter's Real Time Stack - Processing Billions of Events Using Distributed L...Twitter's Real Time Stack - Processing Billions of Events Using Distributed L...
Twitter's Real Time Stack - Processing Billions of Events Using Distributed L...
 
Jconf Colombia Nowadays Architecture Trends, from Monolith to Microservices a...
Jconf Colombia Nowadays Architecture Trends, from Monolith to Microservices a...Jconf Colombia Nowadays Architecture Trends, from Monolith to Microservices a...
Jconf Colombia Nowadays Architecture Trends, from Monolith to Microservices a...
 
Istio: Using nginMesh as the service proxy
Istio: Using nginMesh as the service proxyIstio: Using nginMesh as the service proxy
Istio: Using nginMesh as the service proxy
 
5 of 13 Ways To Prevent Advanced Persistent Threads (APTs)
5 of 13 Ways To Prevent Advanced Persistent Threads (APTs)5 of 13 Ways To Prevent Advanced Persistent Threads (APTs)
5 of 13 Ways To Prevent Advanced Persistent Threads (APTs)
 
I Love APIs 2015: The Mobile Screen Factor - At the Glass Integration with APIs
I Love APIs 2015: The Mobile Screen Factor - At the Glass Integration with APIsI Love APIs 2015: The Mobile Screen Factor - At the Glass Integration with APIs
I Love APIs 2015: The Mobile Screen Factor - At the Glass Integration with APIs
 
Security & Privacy in Cloud Computing
Security & Privacy in Cloud ComputingSecurity & Privacy in Cloud Computing
Security & Privacy in Cloud Computing
 
Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016
Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016
Azure Microservices in Practice, Radu Vunvulea, ITCamp 2016
 
ES~Conference Mexico Nowadays Architecture Trends, from Monolith to Microserv...
ES~Conference Mexico Nowadays Architecture Trends, from Monolith to Microserv...ES~Conference Mexico Nowadays Architecture Trends, from Monolith to Microserv...
ES~Conference Mexico Nowadays Architecture Trends, from Monolith to Microserv...
 
The Last Mile Continued: Incident Management
The Last Mile Continued: Incident Management The Last Mile Continued: Incident Management
The Last Mile Continued: Incident Management
 
Real Time Processing Using Twitter Heron by Karthik Ramasamy
Real Time Processing Using Twitter Heron by Karthik RamasamyReal Time Processing Using Twitter Heron by Karthik Ramasamy
Real Time Processing Using Twitter Heron by Karthik Ramasamy
 
itSMF Conference 2015 - Johann Diaz - Service Mgt is Dead v2.2post
itSMF Conference 2015 - Johann Diaz - Service Mgt is Dead v2.2postitSMF Conference 2015 - Johann Diaz - Service Mgt is Dead v2.2post
itSMF Conference 2015 - Johann Diaz - Service Mgt is Dead v2.2post
 
Birmingham JUG Lightweight Microservices with Microprofile and Raspberry PIs
Birmingham JUG Lightweight Microservices with Microprofile and Raspberry PIsBirmingham JUG Lightweight Microservices with Microprofile and Raspberry PIs
Birmingham JUG Lightweight Microservices with Microprofile and Raspberry PIs
 

More from Tyler Treat

More from Tyler Treat (7)

Building a Distributed Message Log from Scratch - SCaLE 16x
Building a Distributed Message Log from Scratch - SCaLE 16xBuilding a Distributed Message Log from Scratch - SCaLE 16x
Building a Distributed Message Log from Scratch - SCaLE 16x
 
Building a Distributed Message Log from Scratch
Building a Distributed Message Log from ScratchBuilding a Distributed Message Log from Scratch
Building a Distributed Message Log from Scratch
 
So You Wanna Go Fast?
So You Wanna Go Fast?So You Wanna Go Fast?
So You Wanna Go Fast?
 
Simple Solutions for Complex Problems
Simple Solutions for Complex ProblemsSimple Solutions for Complex Problems
Simple Solutions for Complex Problems
 
Probabilistic algorithms for fun and pseudorandom profit
Probabilistic algorithms for fun and pseudorandom profitProbabilistic algorithms for fun and pseudorandom profit
Probabilistic algorithms for fun and pseudorandom profit
 
The Economics of Scale: Promises and Perils of Going Distributed
The Economics of Scale: Promises and Perils of Going DistributedThe Economics of Scale: Promises and Perils of Going Distributed
The Economics of Scale: Promises and Perils of Going Distributed
 
From Mainframe to Microservice: An Introduction to Distributed Systems
From Mainframe to Microservice: An Introduction to Distributed SystemsFrom Mainframe to Microservice: An Introduction to Distributed Systems
From Mainframe to Microservice: An Introduction to Distributed Systems
 

Recently uploaded

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 

Recently uploaded (20)

%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 

Distributed Systems Are a UX Problem