SlideShare una empresa de Scribd logo
1 de 47
“Lose a penny and everybody goes %#!’ing crazy!”
Introduction to PayPal technology

     Challenges & solutions

        Design Concepts
Technology
http://ajsmarowsky.tripod.com/WEB260_test2/images/img_online_crime.jpg
web/API                              C++/Java/Python
                                                   Linux



services                                C++/Java
                                                   Linux



                        permanent
transient
            “mayfly”    store            Oracle
store
                        (database)       IBM/AIX, Sun
                Linux
web             API




                   payment
auth     wallet
                  processing
foreign
         risk      exchange     fees
        models

                                         limits
receiving
  prefs.

                                   refunds
             IPN        item
                         info
Challenges/Solution
s
•   reliability
•   security
•   scale
app




           1 work
           2 work
           3 COMMIT




Redo log
              standby   offsite failover
app A




1 work
2 work
3 insert message   5 read message
                                         app B
4 COMMIT



                                    6 if message isn’t “done”
                                    7 work
                                    8 mark message as “done”
                                    9 COMMIT
5 sync call
     app A




1 work
2 work
3 insert message   10 read message
                                          app B
4 COMMIT



                                     6 if message isn’t “done”
                                     7 work
                                     8 mark message as “done”
                                     9 COMMIT
physical security
 machine access controls
         firewalls
service-level access control
  encryption on the wire
     encryption at rest
hardware encryption (HSM)
balance log              balance:   $100   Account Activity
Oct 1         open: $0                     Oct 12      Add Funds   $15
Oct 12        +$150                                    from Bank   0
Oct 13        - $50                        Oct 13      Balance-    $50
                                                       funded
                                                       Payment
2002      2011
payments/sec   tens      hundreds
SLOC           ~1M       ~10M
applications   tens      hundreds
developers     tens      thousands
release LTS    monthly   daily
complexity     some      lots
server




   child process
server               server                       server

         machine              machine                      machine




            read                         read
           replica                      replica
app 1   app 2              app 3   app 4




                database
app 1   app 2              app 3   app 4




                database
app 1        app 2                   app 3     app 4




        cs
                risk
                       transaction   profile
                            s
app 1             app 2                    app 3        app 4




                  US                      EU
        profile           txn   profile        txn

         risk             cs     risk              cs
Account Servicing      Financial Product   Mobile         Risk
Compliance             Help                Money          Security
Consumer               History             Money Market   Shipping
Customer Service       Incentive           Notification   Skype™
Dropbox                Infrastructure      Payflow        Trinity™
FinOps/Recon           Marketing           Platform       User
FinSys                 Marketplaces        Presentation   Web
Financial Instrument   Merchant
app_A:               app A:
 CONNECTS_TO app_B    DEPENDS_ON foo.a
 CONNECTS_TO app_C
                     library foo.a:
…                      INCLUDES foo.o
                       DEPENDS_ON bar.a
                       ONLY_WITH payment_app
Design Concepts
History page

Change
password

Payments
reliable orchestration




customer 1                    customer 2


     eventually consistent
payment
processing
 payment     customer
processing    balance
 recovery

                        idem-
                        potent
Wrap-up
“Lose a penny and everybody goes
%#!’ing crazy!”

   “It’s all about the [transactions], [baby]”
Life Beyond Distributed Transactions

The PayPal Wars
Thanks!

Q&A

Más contenido relacionado

Similar a PayPal under the hood

Apache Kafka vs. Traditional Middleware (Kai Waehner, Confluent) Frankfurt 20...
Apache Kafka vs. Traditional Middleware (Kai Waehner, Confluent) Frankfurt 20...Apache Kafka vs. Traditional Middleware (Kai Waehner, Confluent) Frankfurt 20...
Apache Kafka vs. Traditional Middleware (Kai Waehner, Confluent) Frankfurt 20...confluent
 
Apache Kafka vs. Integration Middleware (MQ, ETL, ESB) - Friends, Enemies or ...
Apache Kafka vs. Integration Middleware (MQ, ETL, ESB) - Friends, Enemies or ...Apache Kafka vs. Integration Middleware (MQ, ETL, ESB) - Friends, Enemies or ...
Apache Kafka vs. Integration Middleware (MQ, ETL, ESB) - Friends, Enemies or ...confluent
 
BlackHat EU 2012 - Zhenhua Liu - Breeding Sandworms: How To Fuzz Your Way Out...
BlackHat EU 2012 - Zhenhua Liu - Breeding Sandworms: How To Fuzz Your Way Out...BlackHat EU 2012 - Zhenhua Liu - Breeding Sandworms: How To Fuzz Your Way Out...
BlackHat EU 2012 - Zhenhua Liu - Breeding Sandworms: How To Fuzz Your Way Out...MindShare_kk
 
On Failure and Resilience
On Failure and ResilienceOn Failure and Resilience
On Failure and ResilienceMike Brittain
 
C# Client to Cloud
C# Client to CloudC# Client to Cloud
C# Client to CloudStuart Lodge
 
Real-World WebAppSec Flaws - Examples and Countermeasues
Real-World WebAppSec Flaws - Examples and CountermeasuesReal-World WebAppSec Flaws - Examples and Countermeasues
Real-World WebAppSec Flaws - Examples and Countermeasuesvolvent
 
J-Spring 2018 - A journey from Java EE to Cloud Native microservices
J-Spring 2018 - A journey from Java EE to Cloud Native microservicesJ-Spring 2018 - A journey from Java EE to Cloud Native microservices
J-Spring 2018 - A journey from Java EE to Cloud Native microservicesVincent Oostindie
 
API Security and Management Best Practices
API Security and Management Best PracticesAPI Security and Management Best Practices
API Security and Management Best PracticesCA API Management
 
Protecting Your APIs Against Attack & Hijack
Protecting Your APIs Against Attack & Hijack Protecting Your APIs Against Attack & Hijack
Protecting Your APIs Against Attack & Hijack CA API Management
 
How to build a server and a iPhone client application using the Apple Push No...
How to build a server and a iPhone client application using the Apple Push No...How to build a server and a iPhone client application using the Apple Push No...
How to build a server and a iPhone client application using the Apple Push No...Shu Masuda
 
Development Model for The Cloud
Development Model for The CloudDevelopment Model for The Cloud
Development Model for The Cloudumityalcinalp
 
iEnterprise - Mit HTML-5 zum Unternehmens-Dashboard für Tablets
iEnterprise - Mit HTML-5 zum Unternehmens-Dashboard für TabletsiEnterprise - Mit HTML-5 zum Unternehmens-Dashboard für Tablets
iEnterprise - Mit HTML-5 zum Unternehmens-Dashboard für TabletsIndiginox
 
How to Build a Successful API Program: Best Practices For the Carrier
How to Build a Successful API Program: Best Practices For the CarrierHow to Build a Successful API Program: Best Practices For the Carrier
How to Build a Successful API Program: Best Practices For the CarrierCA API Management
 
iEnterprise - Mit HTML5 zum Unternehmens-Dashboard für Tablets
iEnterprise - Mit HTML5 zum Unternehmens-Dashboard für TabletsiEnterprise - Mit HTML5 zum Unternehmens-Dashboard für Tablets
iEnterprise - Mit HTML5 zum Unternehmens-Dashboard für TabletsStefan Kolb
 
Seaside - The Revenge of Smalltalk
Seaside - The Revenge of SmalltalkSeaside - The Revenge of Smalltalk
Seaside - The Revenge of SmalltalkLukas Renggli
 
From Ruby to Node.js
From Ruby to Node.jsFrom Ruby to Node.js
From Ruby to Node.jsjubilem
 
Apache Kafka vs. Integration Middleware (MQ, ETL, ESB)
Apache Kafka vs. Integration Middleware (MQ, ETL, ESB)Apache Kafka vs. Integration Middleware (MQ, ETL, ESB)
Apache Kafka vs. Integration Middleware (MQ, ETL, ESB)Kai Wähner
 
F5 - BigIP ASM introduction
F5 - BigIP ASM introductionF5 - BigIP ASM introduction
F5 - BigIP ASM introductionJimmy Saigon
 

Similar a PayPal under the hood (20)

01 introduction
01 introduction01 introduction
01 introduction
 
Apache Kafka vs. Traditional Middleware (Kai Waehner, Confluent) Frankfurt 20...
Apache Kafka vs. Traditional Middleware (Kai Waehner, Confluent) Frankfurt 20...Apache Kafka vs. Traditional Middleware (Kai Waehner, Confluent) Frankfurt 20...
Apache Kafka vs. Traditional Middleware (Kai Waehner, Confluent) Frankfurt 20...
 
Apache Kafka vs. Integration Middleware (MQ, ETL, ESB) - Friends, Enemies or ...
Apache Kafka vs. Integration Middleware (MQ, ETL, ESB) - Friends, Enemies or ...Apache Kafka vs. Integration Middleware (MQ, ETL, ESB) - Friends, Enemies or ...
Apache Kafka vs. Integration Middleware (MQ, ETL, ESB) - Friends, Enemies or ...
 
BlackHat EU 2012 - Zhenhua Liu - Breeding Sandworms: How To Fuzz Your Way Out...
BlackHat EU 2012 - Zhenhua Liu - Breeding Sandworms: How To Fuzz Your Way Out...BlackHat EU 2012 - Zhenhua Liu - Breeding Sandworms: How To Fuzz Your Way Out...
BlackHat EU 2012 - Zhenhua Liu - Breeding Sandworms: How To Fuzz Your Way Out...
 
On Failure and Resilience
On Failure and ResilienceOn Failure and Resilience
On Failure and Resilience
 
C# Client to Cloud
C# Client to CloudC# Client to Cloud
C# Client to Cloud
 
Real-World WebAppSec Flaws - Examples and Countermeasues
Real-World WebAppSec Flaws - Examples and CountermeasuesReal-World WebAppSec Flaws - Examples and Countermeasues
Real-World WebAppSec Flaws - Examples and Countermeasues
 
J-Spring 2018 - A journey from Java EE to Cloud Native microservices
J-Spring 2018 - A journey from Java EE to Cloud Native microservicesJ-Spring 2018 - A journey from Java EE to Cloud Native microservices
J-Spring 2018 - A journey from Java EE to Cloud Native microservices
 
API Security and Management Best Practices
API Security and Management Best PracticesAPI Security and Management Best Practices
API Security and Management Best Practices
 
Protecting Your APIs Against Attack & Hijack
Protecting Your APIs Against Attack & Hijack Protecting Your APIs Against Attack & Hijack
Protecting Your APIs Against Attack & Hijack
 
How to build a server and a iPhone client application using the Apple Push No...
How to build a server and a iPhone client application using the Apple Push No...How to build a server and a iPhone client application using the Apple Push No...
How to build a server and a iPhone client application using the Apple Push No...
 
Development Model for The Cloud
Development Model for The CloudDevelopment Model for The Cloud
Development Model for The Cloud
 
Building Scalable and Robust Solutions with Service Bus in Cloud and Server
Building Scalable and Robust Solutions with Service Bus in Cloud and ServerBuilding Scalable and Robust Solutions with Service Bus in Cloud and Server
Building Scalable and Robust Solutions with Service Bus in Cloud and Server
 
iEnterprise - Mit HTML-5 zum Unternehmens-Dashboard für Tablets
iEnterprise - Mit HTML-5 zum Unternehmens-Dashboard für TabletsiEnterprise - Mit HTML-5 zum Unternehmens-Dashboard für Tablets
iEnterprise - Mit HTML-5 zum Unternehmens-Dashboard für Tablets
 
How to Build a Successful API Program: Best Practices For the Carrier
How to Build a Successful API Program: Best Practices For the CarrierHow to Build a Successful API Program: Best Practices For the Carrier
How to Build a Successful API Program: Best Practices For the Carrier
 
iEnterprise - Mit HTML5 zum Unternehmens-Dashboard für Tablets
iEnterprise - Mit HTML5 zum Unternehmens-Dashboard für TabletsiEnterprise - Mit HTML5 zum Unternehmens-Dashboard für Tablets
iEnterprise - Mit HTML5 zum Unternehmens-Dashboard für Tablets
 
Seaside - The Revenge of Smalltalk
Seaside - The Revenge of SmalltalkSeaside - The Revenge of Smalltalk
Seaside - The Revenge of Smalltalk
 
From Ruby to Node.js
From Ruby to Node.jsFrom Ruby to Node.js
From Ruby to Node.js
 
Apache Kafka vs. Integration Middleware (MQ, ETL, ESB)
Apache Kafka vs. Integration Middleware (MQ, ETL, ESB)Apache Kafka vs. Integration Middleware (MQ, ETL, ESB)
Apache Kafka vs. Integration Middleware (MQ, ETL, ESB)
 
F5 - BigIP ASM introduction
F5 - BigIP ASM introductionF5 - BigIP ASM introduction
F5 - BigIP ASM introduction
 

Más de X.commerce

PANEL: Mobile face-off: HTML 5 vs. native apps vs. mobile development platfor...
PANEL: Mobile face-off: HTML 5 vs. native apps vs. mobile development platfor...PANEL: Mobile face-off: HTML 5 vs. native apps vs. mobile development platfor...
PANEL: Mobile face-off: HTML 5 vs. native apps vs. mobile development platfor...X.commerce
 
PANEL: Mobile face-off: HTML 5 vs. native apps vs. mobile development platfor...
PANEL: Mobile face-off: HTML 5 vs. native apps vs. mobile development platfor...PANEL: Mobile face-off: HTML 5 vs. native apps vs. mobile development platfor...
PANEL: Mobile face-off: HTML 5 vs. native apps vs. mobile development platfor...X.commerce
 
Barcodes and QR codes in mobile apps
Barcodes and QR codes in mobile appsBarcodes and QR codes in mobile apps
Barcodes and QR codes in mobile appsX.commerce
 
Creating a fantastic mobile experience
Creating a fantastic mobile experienceCreating a fantastic mobile experience
Creating a fantastic mobile experienceX.commerce
 
Creative complex commerce: Respecting the Customers’ brand while integrating ...
Creative complex commerce: Respecting the Customers’ brand while integrating ...Creative complex commerce: Respecting the Customers’ brand while integrating ...
Creative complex commerce: Respecting the Customers’ brand while integrating ...X.commerce
 
Trending now and in the future: Social commerce
Trending now and in the future: Social commerceTrending now and in the future: Social commerce
Trending now and in the future: Social commerceX.commerce
 
Handling the boom in international commerce
Handling the boom in international commerceHandling the boom in international commerce
Handling the boom in international commerceX.commerce
 
The near future of real web applications
The near future of real web applicationsThe near future of real web applications
The near future of real web applicationsX.commerce
 
Proudly Found Elsewhere: The Open Source Bonanza
Proudly Found Elsewhere: The Open Source BonanzaProudly Found Elsewhere: The Open Source Bonanza
Proudly Found Elsewhere: The Open Source BonanzaX.commerce
 
Building immersive experiences: Usability you can really use
Building immersive experiences: Usability you can really useBuilding immersive experiences: Usability you can really use
Building immersive experiences: Usability you can really useX.commerce
 
eBay From Ground Level to the Clouds
eBay From Ground Level to the CloudseBay From Ground Level to the Clouds
eBay From Ground Level to the CloudsX.commerce
 
OpenStack: Enabling the Open Cloud Era
OpenStack: Enabling the Open Cloud EraOpenStack: Enabling the Open Cloud Era
OpenStack: Enabling the Open Cloud EraX.commerce
 
Fun and commerce with shipping APIs
Fun and commerce with shipping APIsFun and commerce with shipping APIs
Fun and commerce with shipping APIsX.commerce
 
APIs for catalogs
APIs for catalogsAPIs for catalogs
APIs for catalogsX.commerce
 
Pop-up commerce
Pop-up commercePop-up commerce
Pop-up commerceX.commerce
 
Adaptive APIs meet the real world - FundRazr
Adaptive APIs meet the real world - FundRazrAdaptive APIs meet the real world - FundRazr
Adaptive APIs meet the real world - FundRazrX.commerce
 
Adaptive APIs meet the real world
Adaptive APIs meet the real worldAdaptive APIs meet the real world
Adaptive APIs meet the real worldX.commerce
 
Paypal checkout anytime anywhere paulam chang matt cole
Paypal checkout anytime anywhere paulam chang matt colePaypal checkout anytime anywhere paulam chang matt cole
Paypal checkout anytime anywhere paulam chang matt coleX.commerce
 
Magento Integration Tests
Magento Integration TestsMagento Integration Tests
Magento Integration TestsX.commerce
 
Developing loosely coupled modules with Magento
Developing loosely coupled modules with MagentoDeveloping loosely coupled modules with Magento
Developing loosely coupled modules with MagentoX.commerce
 

Más de X.commerce (20)

PANEL: Mobile face-off: HTML 5 vs. native apps vs. mobile development platfor...
PANEL: Mobile face-off: HTML 5 vs. native apps vs. mobile development platfor...PANEL: Mobile face-off: HTML 5 vs. native apps vs. mobile development platfor...
PANEL: Mobile face-off: HTML 5 vs. native apps vs. mobile development platfor...
 
PANEL: Mobile face-off: HTML 5 vs. native apps vs. mobile development platfor...
PANEL: Mobile face-off: HTML 5 vs. native apps vs. mobile development platfor...PANEL: Mobile face-off: HTML 5 vs. native apps vs. mobile development platfor...
PANEL: Mobile face-off: HTML 5 vs. native apps vs. mobile development platfor...
 
Barcodes and QR codes in mobile apps
Barcodes and QR codes in mobile appsBarcodes and QR codes in mobile apps
Barcodes and QR codes in mobile apps
 
Creating a fantastic mobile experience
Creating a fantastic mobile experienceCreating a fantastic mobile experience
Creating a fantastic mobile experience
 
Creative complex commerce: Respecting the Customers’ brand while integrating ...
Creative complex commerce: Respecting the Customers’ brand while integrating ...Creative complex commerce: Respecting the Customers’ brand while integrating ...
Creative complex commerce: Respecting the Customers’ brand while integrating ...
 
Trending now and in the future: Social commerce
Trending now and in the future: Social commerceTrending now and in the future: Social commerce
Trending now and in the future: Social commerce
 
Handling the boom in international commerce
Handling the boom in international commerceHandling the boom in international commerce
Handling the boom in international commerce
 
The near future of real web applications
The near future of real web applicationsThe near future of real web applications
The near future of real web applications
 
Proudly Found Elsewhere: The Open Source Bonanza
Proudly Found Elsewhere: The Open Source BonanzaProudly Found Elsewhere: The Open Source Bonanza
Proudly Found Elsewhere: The Open Source Bonanza
 
Building immersive experiences: Usability you can really use
Building immersive experiences: Usability you can really useBuilding immersive experiences: Usability you can really use
Building immersive experiences: Usability you can really use
 
eBay From Ground Level to the Clouds
eBay From Ground Level to the CloudseBay From Ground Level to the Clouds
eBay From Ground Level to the Clouds
 
OpenStack: Enabling the Open Cloud Era
OpenStack: Enabling the Open Cloud EraOpenStack: Enabling the Open Cloud Era
OpenStack: Enabling the Open Cloud Era
 
Fun and commerce with shipping APIs
Fun and commerce with shipping APIsFun and commerce with shipping APIs
Fun and commerce with shipping APIs
 
APIs for catalogs
APIs for catalogsAPIs for catalogs
APIs for catalogs
 
Pop-up commerce
Pop-up commercePop-up commerce
Pop-up commerce
 
Adaptive APIs meet the real world - FundRazr
Adaptive APIs meet the real world - FundRazrAdaptive APIs meet the real world - FundRazr
Adaptive APIs meet the real world - FundRazr
 
Adaptive APIs meet the real world
Adaptive APIs meet the real worldAdaptive APIs meet the real world
Adaptive APIs meet the real world
 
Paypal checkout anytime anywhere paulam chang matt cole
Paypal checkout anytime anywhere paulam chang matt colePaypal checkout anytime anywhere paulam chang matt cole
Paypal checkout anytime anywhere paulam chang matt cole
 
Magento Integration Tests
Magento Integration TestsMagento Integration Tests
Magento Integration Tests
 
Developing loosely coupled modules with Magento
Developing loosely coupled modules with MagentoDeveloping loosely coupled modules with Magento
Developing loosely coupled modules with Magento
 

Último

Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 

Último (20)

Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 

PayPal under the hood

  • 1.
  • 2.
  • 3. “Lose a penny and everybody goes %#!’ing crazy!”
  • 4. Introduction to PayPal technology Challenges & solutions Design Concepts
  • 5.
  • 6.
  • 9. web/API C++/Java/Python Linux services C++/Java Linux permanent transient “mayfly” store Oracle store (database) IBM/AIX, Sun Linux
  • 10.
  • 11.
  • 12. web API payment auth wallet processing
  • 13. foreign risk exchange fees models limits receiving prefs. refunds IPN item info
  • 14. Challenges/Solution s • reliability • security • scale
  • 15.
  • 16. app 1 work 2 work 3 COMMIT Redo log standby offsite failover
  • 17. app A 1 work 2 work 3 insert message 5 read message app B 4 COMMIT 6 if message isn’t “done” 7 work 8 mark message as “done” 9 COMMIT
  • 18. 5 sync call app A 1 work 2 work 3 insert message 10 read message app B 4 COMMIT 6 if message isn’t “done” 7 work 8 mark message as “done” 9 COMMIT
  • 19.
  • 20. physical security machine access controls firewalls service-level access control encryption on the wire encryption at rest hardware encryption (HSM)
  • 21. balance log balance: $100 Account Activity Oct 1 open: $0 Oct 12 Add Funds $15 Oct 12 +$150 from Bank 0 Oct 13 - $50 Oct 13 Balance- $50 funded Payment
  • 22.
  • 23. 2002 2011 payments/sec tens hundreds SLOC ~1M ~10M applications tens hundreds developers tens thousands release LTS monthly daily complexity some lots
  • 24.
  • 25. server child process
  • 26. server server server machine machine machine read read replica replica
  • 27. app 1 app 2 app 3 app 4 database
  • 28.
  • 29.
  • 30.
  • 31. app 1 app 2 app 3 app 4 database
  • 32. app 1 app 2 app 3 app 4 cs risk transaction profile s
  • 33.
  • 34. app 1 app 2 app 3 app 4 US EU profile txn profile txn risk cs risk cs
  • 35.
  • 36. Account Servicing Financial Product Mobile Risk Compliance Help Money Security Consumer History Money Market Shipping Customer Service Incentive Notification Skype™ Dropbox Infrastructure Payflow Trinity™ FinOps/Recon Marketing Platform User FinSys Marketplaces Presentation Web Financial Instrument Merchant
  • 37. app_A: app A: CONNECTS_TO app_B DEPENDS_ON foo.a CONNECTS_TO app_C library foo.a: … INCLUDES foo.o DEPENDS_ON bar.a ONLY_WITH payment_app
  • 39.
  • 41. reliable orchestration customer 1 customer 2 eventually consistent
  • 42. payment processing payment customer processing balance recovery idem- potent
  • 43.
  • 45. “Lose a penny and everybody goes %#!’ing crazy!” “It’s all about the [transactions], [baby]”
  • 46. Life Beyond Distributed Transactions The PayPal Wars

Notas del editor

  1. former engineercaptures our philosophy
  2. what paypal tech doesI picked some problemsideas influencing devsampler platetechnical, dense12:30-1:15 Thurs 10/13 Room 2018(40m, 5m Q&A)
  3. startuprelease nights, stayed up late, ate eggrolls, and crossed fingers that the site wouldn’t crashdb pw
  4. daughter, (new reason to stay up all night)still eat eggrolls for release, but now it happens during the day (don’t sleep under desks)even if I wanted, customer data with 10 foot polewhat’s inside?
  5. early engineerswere smart, motivated - take over the worldno problem unsolveable, no technique off-limitsinnovation (GL – impl of captcha)huge copy/paste, “magic” communication
  6. voila! inside kind of looks like this.
  7. spend money on reliable data storehttpd & geronimo
  8. 1998 ecosystemfounding culture of “we can build it better” – different nowC++ ecosystem is weak compared to what you see in Java, Pythonwhat does all this stuff do?
  9. trend: API box covering more
  10. tech problems, our solutions
  11. 3 themes for problems
  12. why do we consider this “reliable” at this point?redo log for raw datastandby – fast failoveroffsite – recover from disasterwhat about pieces in payments that have to work together
  13. lots of different systems involved in fulfilling a payment, working together reliablyif you wonder about delay
  14. ensure that a payment reaches the end stateinfra technique used many domainsas a business that deals with money, how do we build trust that nothing fishy is going on?
  15. trustworthy!how do you prevent or and detect tampering?
  16. responsibleexamples in the industrypreso: Bill Corry info secwhat about people that are allowed to touch these things?
  17. Two ways to answer the same questionchain of comparisons ultimately takes you to border between PP and external financial systemor penny-slicing, like insuperman III?round-off slicing doesn’t really apply – PP is in the middle of fxtxns, and round-off would have to be a txn
  18. tricky word because it can apply to a lot of things
  19. Does your codebase have “room”?tech organization that experienced huge, continuous growth, all of these dims have had “scaling” challenges
  20. payment processing capacitymem managementzombie boxes in/out rotationpush (connections)less eff, but SIMPLE to debug/operateput on read-only instances of DB’shorizontal scaling, indefiniteisolate problems of state-mgt
  21. our strategy for scaling readsauthentication, customer historybut what about state?
  22. monster box, could take 128 CPUs, started with 48
  23. too much work sync between cpuswork not totally independent (indices, etc.)
  24. business functionpartition by domain, independent machinesone machine lot of CPUs couldn’t do it
  25. dependencies!points of failure!work gets to be too big for one?
  26. don’t need all partitions to serve requestlocalize customer data to an in-country datacenterwhat about work spanning users (later)
  27. hiring more peoplelogisticsgetting people into a roommake room, keep small scope
  28. domainsexercise at first forced us to define “what paypalis”given these buckets, next question was how to ensure ensure dependencies don’t just turn it into a black holesmall scope, SOAbut something else that’s proved effective is…
  29. files that specify dependenciestopology and securitymaven has thistools that tell us, constrain, what talks to whatenforces boundaries – keeps things apartbut how do you get composition without coupling?
  30. some principles that we’re working with, to ensure scales and is reliablesum it up in one phrase
  31. ACID propertiesdo work, spanning lots of systems, together, in a way that ensures a consistent outcomeincomplete financial activityhow to classify “work” or transactions?
  32. how to keep these transactions consistent at scale?first two are easy – replicas, work on single partitions
  33. entities are customersother happens eventuallydecouples how they get their job done, contentionconsistent state change across entitiescloud storage APIs – this constraint in txnswhat’s the difficulty with this model?
  34. RPC/http/soapreliable, trustworthy - “unknown” is the worst possible answer!all systems with RPC-style interaction, with remote stateas you partition state, more places where this can happencoding this is a mess – have infra help you
  35. constraints, freedoms of: data access, RPC, memory/process model. your public APIs.Constraints define what happen when you scalewe underestimated the weight/cost of this, and didn’t invest enough early in engineering solutionsimplications can’t be completely hidden from app; rely on infrayour core competency, differentiator
  36. motivating designconstantly looking for ways to push this into the infrastructures.t.devs don’t have to worry about scale, throughput, reliability, correctness – our differentiator
  37. good read because:-short, with lots of pictures; appear intelligent without having to read a library- covers fundamental issues in large-scale, reliable, distributed systemsweakened ACIDPP Wars Eric Jackson, beginnings, war stories