SlideShare uma empresa Scribd logo
1 de 120
Baixar para ler offline
@jna_sh
The LISP in the
Machine
</speaker>
@jna_sh
@jna_sh
</content>
<content>
@jna_sh
Braintree
</content>
<content>
@jna_sh
Thanks for having me!
@jna_sh
@jna_sh
</content>
<content>
@jna_sh
A story about Data
at Braintree
</content>
<content>
@jna_sh
Why me?
</content>
<content>
@jna_sh
I’m not a systems
engineer
</content>
<content>
@jna_sh
I don’t write
Clojure
</content>
<content>
@jna_sh
I do write
Haskell.
</content>
<content>
@jna_sh
…and Node.js
</content>
<content>
@jna_sh
I love cool tech.
</content>
<content>
@jna_sh
Especially FP.
</content>
<content>
@jna_sh
Braintree = Rails
</content>
<content>
@jna_sh
Go
</content>
<content>
@jna_sh
Haskell!!!1one
</content>
<content>
@jna_sh
Clojure
</content>
<content>
@jna_sh
Payments processor
</content>
<content>
@jna_sh
Uber | AirBnb | Minecraft
</content>
<content>
@jna_sh
1 million rides a
day.
</content>
<content>
@jna_sh
Vast amounts of
data.
</content>
<content>
@jna_sh
Powered by Clojure
</content>
<content>
@jna_sh
Building a real-
time data pipeline.
@jna_sh
</content>
<content>
@jna_sh
Once upon a time…
</content>
<content>
@jna_sh
Primary DB
@jna_sh
Data Warehouse
</content>
<content>
@jna_sh
Backup /
duplication
</content>
<content>
@jna_sh
Source of truth
</content>
<content>
@jna_sh
Low impact to live
transactions.
@jna_sh
Amazon Redshift
</content>
<content>
@jna_sh
Batch Processes
</content>
<content>
@jna_sh
updatedAt/createdAT
</content>
<content>
@jna_sh
Batch updates:
</content>
<content>
@jna_sh
Slow.
</content>
<content>
@jna_sh
Unpredictable.
</content>
<content>
@jna_sh
Can’t track
deletes.
</content>
<content>
@jna_sh
Missed updates.
</content>
<content>
@jna_sh
Burden of Knowledge
</content>
<content>
@jna_sh
Search
@jna_sh
@jna_sh
Architecture
Primary DB Batch process Redshift data
warehouse
Transaction
search
</content>
<content>
@jna_sh
PGQ
@jna_sh
Queuing system on
top of Postgres
</content>
<content>
@jna_sh
ACID
</content>
<content>
@jna_sh
Doesn’t block live
transactions.
</content>
<content>
@jna_sh
Elasticsearch
</content>
<content>
@jna_sh
Another place to
sync data.
@jna_sh
Architecture
Primary DB PGQ Redshift data
warehouse
Elasticsearch
</content>
<content>
@jna_sh
PGQ prioritises DB
integrity
</content>
<content>
@jna_sh
Potential for lost
messages.
</content>
<content>
@jna_sh
Redshift &
Elasticsearch…
</content>
<content>
@jna_sh
…Fall over quite
often.
</content>
<content>
@jna_sh
Where do we persist
our messages?
</content>
<content>
@jna_sh
Enter Kafka.
</content>
<content>
@jna_sh
Apache | LinkedIn
</content>
<content>
@jna_sh
PubSub messaging
system
</content>
<content>
@jna_sh
Cluster of Kafka
nodes
</content>
<content>
@jna_sh
Multi-produce
multi-consume
</content>
<content>
@jna_sh
Zookeeper - Failure
states
</content>
<content>
@jna_sh
Topics
</content>
<content>
@jna_sh
Categories of
Messages
</content>
<content>
@jna_sh
Partitions
</content>
<content>
@jna_sh
Split by Machine
</content>
<content>
@jna_sh
No rules of topic
writing.
</content>
<content>
@jna_sh
Messages given an
offset.
</content>
<content>
@jna_sh
Deleted after time
set by user.
</content>
<content>
@jna_sh
Kafka properties:
</content>
<content>
@jna_sh
Replays
</content>
<content>
@jna_sh
Strongly ordered
</content>
<content>
@jna_sh
But only by
partition.
@jna_sh
Architecture
Primary DB
PGQ
Kafka Redshift data
warehouse
Elasticsearch
</content>
<content>
@jna_sh
Gateway
</content>
<content>
@jna_sh
Databases sharded
by Merchant
</content>
<content>
@jna_sh
Partition fed by
shard
</content>
<content>
@jna_sh
Strong ordering per
merchant
</content>
<content>
@jna_sh
Categorise by
semantics of data
</content>
<content>
@jna_sh
Redshift needs
shape of data
</content>
<content>
@jna_sh
Elasticsearch needs
meaning
</content>
<content>
@jna_sh
topics = datastream | eventstream
</content>
<content>
@jna_sh
Cool! Job done.
</content>
<content>
@jna_sh
Time to build it.
</content>
<content>
@jna_sh
Clojure.
</content>
<content>
@jna_sh
Why Clojure?
</content>
<content>
@jna_sh
Rails
</content>
<content>
@jna_sh
No Lisp
</content>
<content>
@jna_sh
No JVM
</content>
<content>
@jna_sh
Because reasons
</content>
<content>
@jna_sh
JVM
</content>
<content>
@jna_sh
Kafka, Zookeeper,
Elasticsearch are JVM
</content>
<content>
@jna_sh
Laziness
</content>
<content>
@jna_sh
Infinite Lazy
Streams
</content>
<content>
@jna_sh
Testing
</content>
<content>
@jna_sh
Concurrency
</content>
<content>
@jna_sh
Threads
</content>
<content>
@jna_sh
Goroutines
</content>
<content>
@jna_sh
Actors
</content>
<content>
@jna_sh
Built-in shutdown
logic
</content>
<content>
@jna_sh
Status of actors
</content>
<content>
@jna_sh
Single merchant
</content>
<content>
@jna_sh
Offload work to
Kafka
</content>
<content>
@jna_sh
Elasticsearch
aliases
</content>
<content>
@jna_sh
What did we learn?
</content>
<content>
@jna_sh
Garbage Collection
</content>
<content>
@jna_sh
Boo hiss
</content>
<content>
@jna_sh
Keep it small
</content>
<content>
@jna_sh
G1GC
</content>
<content>
@jna_sh
Heap size is
important
</content>
<content>
@jna_sh
Smaller = Better
</content>
<content>
@jna_sh
Monitor all the
things
</content>
<content>
@jna_sh
Don’t use deault
configs
</content>
<content>
@jna_sh
Use a good
concurrency model
</content>
<content>
@jna_sh
Future gains
</content>
<content>
@jna_sh
Real time source of
truth
</content>
<content>
@jna_sh
Real time fraud
monitoring
</content>
<content>
@jna_sh
Real time reports
</content>
<content>
@jna_sh
Thank you!
</speaker>
@jna_sh
@jna_sh
@jna_sh
Thanks_ Subtitle

Mais conteúdo relacionado

Destaque

Destaque (16)

Contrato de promesa de compraventa
Contrato de promesa de compraventaContrato de promesa de compraventa
Contrato de promesa de compraventa
 
Pres_Big Data for Finance_vsaini
Pres_Big Data for Finance_vsainiPres_Big Data for Finance_vsaini
Pres_Big Data for Finance_vsaini
 
Slawek Kluz - Ewolucja modelu danych w testach funkcjonalnych – case study
Slawek Kluz - Ewolucja modelu danych w testach funkcjonalnych – case studySlawek Kluz - Ewolucja modelu danych w testach funkcjonalnych – case study
Slawek Kluz - Ewolucja modelu danych w testach funkcjonalnych – case study
 
CCS Legal and Regulatory Issues, presentation by Paul Curnow of Baker McKenzi...
CCS Legal and Regulatory Issues, presentation by Paul Curnow of Baker McKenzi...CCS Legal and Regulatory Issues, presentation by Paul Curnow of Baker McKenzi...
CCS Legal and Regulatory Issues, presentation by Paul Curnow of Baker McKenzi...
 
Planeacion estrategica-del-rrhh
Planeacion estrategica-del-rrhhPlaneacion estrategica-del-rrhh
Planeacion estrategica-del-rrhh
 
The 7 Best Job Search Strategies
The 7 Best Job Search StrategiesThe 7 Best Job Search Strategies
The 7 Best Job Search Strategies
 
Geralt
GeraltGeralt
Geralt
 
TMT Predictions 2016: Discover the major Technology, Media & Telecommunicatio...
TMT Predictions 2016: Discover the major Technology, Media & Telecommunicatio...TMT Predictions 2016: Discover the major Technology, Media & Telecommunicatio...
TMT Predictions 2016: Discover the major Technology, Media & Telecommunicatio...
 
Don’t Let Someone Else Tell Your Career Story
Don’t Let Someone Else Tell Your Career StoryDon’t Let Someone Else Tell Your Career Story
Don’t Let Someone Else Tell Your Career Story
 
Marketing is Dead - Uberflip User Conference Presentation
Marketing is Dead - Uberflip User Conference PresentationMarketing is Dead - Uberflip User Conference Presentation
Marketing is Dead - Uberflip User Conference Presentation
 
iOSDevCampDC: A Swift Introduction
iOSDevCampDC: A Swift IntroductioniOSDevCampDC: A Swift Introduction
iOSDevCampDC: A Swift Introduction
 
CAD & GIS-Connecting the Two Worlds
CAD & GIS-Connecting the Two WorldsCAD & GIS-Connecting the Two Worlds
CAD & GIS-Connecting the Two Worlds
 
The Innovation Engine, Andrew Breen, American Express
The Innovation Engine, Andrew Breen, American ExpressThe Innovation Engine, Andrew Breen, American Express
The Innovation Engine, Andrew Breen, American Express
 
Tiga Langkah Mudah Membuat UX (User Experience) Website Anda Menjadi Lebih Baik
Tiga Langkah Mudah Membuat UX (User Experience) Website Anda Menjadi Lebih BaikTiga Langkah Mudah Membuat UX (User Experience) Website Anda Menjadi Lebih Baik
Tiga Langkah Mudah Membuat UX (User Experience) Website Anda Menjadi Lebih Baik
 
Identifying Data Leaks in iOS Applications
Identifying Data Leaks in iOS ApplicationsIdentifying Data Leaks in iOS Applications
Identifying Data Leaks in iOS Applications
 
SMS Berlin 2016 Cultural Perspectives on Strategic Management
SMS Berlin 2016 Cultural Perspectives on Strategic ManagementSMS Berlin 2016 Cultural Perspectives on Strategic Management
SMS Berlin 2016 Cultural Perspectives on Strategic Management
 

Semelhante a The LISP in the Machine

Progressive web and the problem of JavaScript
Progressive web and the problem of JavaScriptProgressive web and the problem of JavaScript
Progressive web and the problem of JavaScript
Christian Heilmann
 

Semelhante a The LISP in the Machine (10)

Joe Nash - The LISP in the Machine: Real-time data with Clojure and Kafka
Joe Nash - The LISP in the Machine: Real-time data with Clojure and KafkaJoe Nash - The LISP in the Machine: Real-time data with Clojure and Kafka
Joe Nash - The LISP in the Machine: Real-time data with Clojure and Kafka
 
Leveling up your JavaScipt - DrupalJam 2017
Leveling up your JavaScipt - DrupalJam 2017Leveling up your JavaScipt - DrupalJam 2017
Leveling up your JavaScipt - DrupalJam 2017
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
 
Web based interactive big data visualization
Web based interactive big data visualizationWeb based interactive big data visualization
Web based interactive big data visualization
 
Jbug 201812 pm_tool
Jbug 201812 pm_toolJbug 201812 pm_tool
Jbug 201812 pm_tool
 
HTML - hypertext markup language
HTML - hypertext markup languageHTML - hypertext markup language
HTML - hypertext markup language
 
Blazor - An Introduction
Blazor - An IntroductionBlazor - An Introduction
Blazor - An Introduction
 
Advanced Web Scraping or How To Make Internet Your Database #seoplus2018
Advanced Web Scraping or How To Make Internet Your Database #seoplus2018Advanced Web Scraping or How To Make Internet Your Database #seoplus2018
Advanced Web Scraping or How To Make Internet Your Database #seoplus2018
 
IBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for MobileIBM Lotus Notes Domino XPages and XPages for Mobile
IBM Lotus Notes Domino XPages and XPages for Mobile
 
Progressive web and the problem of JavaScript
Progressive web and the problem of JavaScriptProgressive web and the problem of JavaScript
Progressive web and the problem of JavaScript
 

Último

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Último (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
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
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
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...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

The LISP in the Machine