SlideShare a Scribd company logo
1 of 112
Billing & Payments
Engineering Meetup
June 18th, 2014
• Mathieu Chauvin – Netflix
Validating Payment Information
• Taylor Wicksell – Netflix
Flexible Billing Integrations Using Events
• Jean-Denis Greze – Dropbox
Mistakes (and Wins) Building Payments at Dropbox
• Anthony Zacharakis – Lumosity
Billing Migrations: Maintaining Your (Data) Sanity
• Alec Holmes – Square
Scaling Merchant Payouts at Square
=== Break ===
• Paul Huang – SurveyMonkey
Billing Globalization and Auto Renewal Optimization
• Emmanuel Cron – Google Wallet
Moving from SE to Host Card Emulation
• Feifeng Yang / Michael Chen – Electronic Arts
Ecommerce at EA
• Krishnan Sridhar – LinkedIn
Real-Time Analytics and Smart Routing
Validating Payment Information
Mathieu Chauvin
@matchauvin – linkedin/matchauvin
Signing-Up for Netflix
• Subscription Based
• 30 Days Free Trial
• Payment Information
Collection
• Pro Forma
• Luhn Check (Mod10)
• Card Type vs Card# RegEx
• Authorization / Reversal
Payment Validation 101
But Wait! You Can Do More!
Authorization Amount
• $0.00, $1.00, or Full Price Authorization
• Don’t Forget the Reversal!
• Constraints by Country or by Card Type
Response Types
• Hard Declines
• Soft Declines
MCC
• What is an MCC?
• Figure out the Best MCC Fit
BINs
• What is a BIN?
• Card Types: Credit, Debit, Prepaids
• What About Non-Reloadable Prepaid Cards?
Forking Traffic
• Do You Use Several Payment Processors?
• Why Don’t You Test Which One Performs
Better?
Use Cases
• Sign-Up
• Updating Payment Information
• Returning Customer
Country Specific Behavior
• Adapt To Your Market
The Feedback Loop
• A/B Tests
• Analyze, Project & Evaluate Risks
• Test Again
Conclusion
• Try Everything
• Build Your Application Dynamically
• The Feedback Loop!
Thank You!
Flexible Billing Integrations
Using Events
Taylor Wicksell
The Billing Team
• Signups/Cancellations
• Recurring Billing
• Price and Tax Calculations
• Discounts / Gifts
• Financial Reporting
Current Architecture
• Netflix Data Center
• Batch Processing and
Customer Requests
• Oracle (Single-Master)
• Data driven
Cloud Migration - Primary Goals
• Join Netflix in the Cloud
• High Availability
• Multi-Regional Active/Active
• Scalability
New Design
• Amazon EC2
• Multi-Regional
• Cassandra
• Event Driven
Order Flow
Cross-Cutting Concerns
• Publishing Data To Interested Parties
– Hold Messaging
– Financial Reporting
• Metrics/Analytics
• Velocity Checks
• Debugging
Wiretap to Common Event Pipeline
Common Event Pipeline
Current Implementation
• SQS Entry Point
• Custom routing service
• Custom code for each
endpoint integration
• Weak ordering of events
Future Implementation
• Suro / Kafka Entry Point
• Configurable Routing and
Transformation
• Pluggable endpoint
integration
• Option for strong ordering
of events
Sting – Broad Analytics
Druid – Event Aggregation Metrics
ElasticSearch – Event Level Debugging
Mistakes (and Wins) Building
Payments At Dropbox
Jean-Denis Grèze & Dan Wheeler
June 18th, 2014
Backend Tips
• Not about increasing conversion
• Not about pricing
• Not about plan and feature optimizations
• Not about upselling
• Not about consumer SaaS at scale
• Not about self-serve in
SMB/SME/Enterprise
Pains of Scaling Payments
• Thousands of customers to millions of
customers
• SMB to Enterprise
– Custom flows!
• International expansion
– Fraud
– New payment methods (delayed settlements)
– Different price points
Out Of The Dark Ages
• For a long time, only 0.5 engineers
worked on payments and billing
• March 2013: consult w/ leading payment
engineers, PMs and executives on how to
build an amazing payments team
– 15+ in 1 year
Advice
• Build a payments + billing backend that is:
– Flexible
• Migrations (sadface)
• Requirements will change – often
– Auditable
• Always know why and state changed
– Append Only
• Never lose data
Team Ca$h
Team Ca$h
• Engineers
– Some finance background
– A lot of systems/analytics background
• PMs
– Some finance/accounting background
– Some product/marketing background
• Advisors
– Payments experts
– Tight feedback loop w/ finance
• Designers
Migrations
Migrations
• You will have to migrate
– 3rd-party vaulting to self vaulting
– New markets = new processors
– If you are a growing company, your internals will require
migrations
• Stakes are high
– Double-billing? Forgetting to charge some users?
Inadvertently moving users from one pricing category to
another?
• Old way:
– Ad hoc
– Tons of tests
I. Leverage Existing Code:
Equivalence
• Write equivalence between old and new
implementations (database, API, 3rd party
providers, tests, etc.)
• Run everything through both systems at
once, with equivalence being tested
• Every step of the way check that equivalence
relations hold (e.g., old-style invoice has a
new-style invoice equivalent)
• Turn off old system when everything works
for X amount of time
Migration Pro-Tip
• If you can migrate in both directions at
will on a per-endpoint basis, your life
will be awesome and people will love you.
Moneytree
Logging
• Dark Ages = tons of logging
• Very comprehensive, but ad-hoc = too
much effort to re-create state
• Human error
II. Automated Logging
• Automatically log
– Any DB write (graph, relational, etc.)
– Any 3rd party API call (and some internal calls like
email)
• Pre-log
– Any incoming 3rd party payload
• Can recreate past actions if we introduced a
regression
• LOG A REASON (and code version)
– 1 year is a long time
Automated Logging
=
Time Machine
Not too much data
• Dropbox = large scale for SaaS
• Hundreds of millions of users
(provisioning is hard)
• Tons of data, but still payments data <<
file storage data
– Although we do have the benefits of amazing
infrastructure
III. States, Not Deltas
• Generally # states << # deltas
• States
– Pro 100 + Packrat
– DfB + Harmony Enabled
• Deltas
– Add 5 licenses, 6 licenses, etc.
– Add 20 licenses and switch from monthly to yearly
• Use states and let the system figure out how
to get from start to end
IV. Possibility & Transitions Use
Same Code Paths
• No difference between:
– entity.is_valid_transition(end_state)
– entity.perform_transition(end_state)
• Except that writes are turned off for the
former.
• No change for “is something possible”
logic to be different than “do the thing”
logic.
States Are Nice
transition_space = MoneytreeTransitionsSpace.build_cross_product(
entity=me,
gateways=ALL_GATEWAYS,
plans=[Pro100, Pro200, Pro500, DfB, DfBTrial],
schedules=[Monthly, Yearly],
currencies=ALL_CURRENCIES,
features=ALL_FEATURES,
tax_profile=[NoTax, SimpleTax, ComplexTax],
)
# …
If transition_space.supports(FEATURE_PACKRAT):
# …
Write Protection
• Seems dumb, but need to be careful not
to accidentally change values in payments
world. Have clearly-defined code paths
that can touch state, talk to 3rd party
components, etc.
V. One More Lesson
• Payments + Billing != Finance
• Business requirements don’t always
translate to what’s best/easiest in the
world of accounting. You need to flexibly
work in both worlds – can’t risk the user
experience to make your finance dep’t
happy (and vice-versa)
• Get a great PM
VI. Why Payments Are Cool?
• Infrastructure?
– Payments service
– Provisioning service
• Product?
– Upsells? (+50% increase in revenue per user)
– Gating features?
• Product Infrastructure!
– Build a successful structure by emphasizing
hard problems in both worlds!
Now + The Future
• Other Cool Projects
– ML for risk/anomaly detection (e.g., for payment
methods that don’t settle immediately)
– Price AB testing (*)
– Cross-platform upsell framework
• Questions?
– dan@dropbox.com
– jeandenis@dropbox.com
• Hiring
– Get in touch!
Team Ca$h
Lumos Labs, Inc.
Data Sanity
A short treatise on
rebuilding a payment system
Lumos Labs, Inc.
the background
Lumos Labs, Inc.
Circa 2012
Decided to rewrite our payment system
Lumos Labs, Inc.
Reasons
Old payment system has a lot of
limitations
Lumos Labs, Inc.
Payment system limitations
• Hard to add additional gateways
• Models don’t reflect business reality
• Not built for reporting
• Code is brittle
Lumos Labs, Inc.
3 months later…
Lumos Labs, Inc.
New payment system features
• Trivial to add new payment methods
• Subscriptions are the core model
• Built with reporting in mind
• Separate, well encapsulated library
Lumos Labs, Inc.
Works like a charm!
Lumos Labs, Inc.
wait… just one problem
Lumos Labs, Inc.
Having two parallel
payment systems is not
sustainable
Surprise!
As it turns out
Lumos Labs, Inc.
Just deprecate the old one
Lumos Labs, Inc.
Just deprecate the old one
• Don't migrate anyone, let old users
churn out naturally (will take forever)
Lumos Labs, Inc.
Just deprecate the old one
• Don't migrate anyone, let old users
churn out naturally (will take forever)
• Migrate everyone, but only most
critical/current subscription info
(loses history)
Lumos Labs, Inc.
Just deprecate the old one
• Don't migrate anyone, let old users
churn out naturally (will take forever)
• Migrate everyone, but only most
critical/current subscription info
(loses history)
• Migrate everyone + full history
(tricky, lots of edge cases)
Lumos Labs, Inc.
so, what’d we
choose?
(drum roll)
Lumos Labs, Inc.
We decided to migrate
everyone and their entire
billing history
Lumos Labs, Inc.
Why?
One system
One history
One source of truth
Lumos Labs, Inc.
Lumos Labs, Inc.
enter the
sanity check
Lumos Labs, Inc.
enter the
sanity check
Just make a sanity check before and
after the migration to ask questions
Lumos Labs, Inc.
enter the
sanity check
Both models should answer certain
questions the same way, e.g:
• How much did the user pay for a subscription?
• How many total transactions did the user make?
• Was auto-renewal enabled on X date?
Lumos Labs, Inc.
class SanityCheck
Methods = [:subscriber?, :transaction_count] # etc.
def initialize(record)
@record = record
@before_values = SanityCheck.values(record)
end
def self.values(record)
Methods.map { |m| [m, record.send(m)] }.to_h
end
end
enter the
sanity check
Lumos Labs, Inc.
class SanityCheck
...
def check
@after_values = SanityCheck.values(record)
@diff = diff(@before_values, @after_values)
end
def diff(a, b)
a.delete_if { |k, v| b[k] == v }
.merge!(b.dup.delete_if { |k, v| a.has_key?(k) })
end
end
enter the
sanity check
Lumos Labs, Inc.
enter the
sanity check
User.each do |user|
sanity_check = SanityCheck.new(user)
user.migrate!
sanity_check.check
if sanity_check.diff.any?
# sanity check failed -- log an error, rollback, etc.
raise ActiveRecord::Rollback
else
# woo hoo, success!
user.update_attributes(:migrated => true)
end
end
config/initializers/user_auth.rb
Lumos Labs, Inc.
the result
Lumos Labs, Inc.
A resounding success!
the result
Lumos Labs, Inc.
(Mostly)
the result
Lumos Labs, Inc.
Did not work in all cases
● Payment system behavior changed over
time
Lumos Labs, Inc.
Did not work in all cases
● Payment system behavior changed over
time
● Some concepts did not map between
systems
Lumos Labs, Inc.
Handling the edge cases
● Replayed history as it would play out in
the new system
● Still kept most critical information the
same (e.g. transaction timestamps)
Lumos Labs, Inc.
Skip ahead to today
Migrated 99.9994%* of all our users
successfully to the new system
*The remaining .0006% live on for business, not technical reasons
Lumos Labs, Inc.
Thanks
Anthony Zacharakis
anthony@lumoslabs.com
@azacharax
Scaling Merchant Payouts at
Square
Alec Holmes
‣ Infrastructure team that moves money
‣ Card processing (money in)
‣ Settlements (money out)
Payments Team
‣ Monolithic Rails app
‣ Database storage and IO limits
‣ Controls around accounting data
Disaster Ahead
Monorail
Database
Payments Bills
Deposits
Where We Started
Ledger
Database
Payments Bills
Deposits
Monorail
Database
API
Current System
Challenge:
Migrating Live
Data
‣ Stricter money-moving event model
‣ Same event streams to all systems
‣ Smart queueing of events
Challenge:
Moving to APIs
‣ Replace direct data access with API calls
‣ Hadoop for analytics queries
That's it. All pennies accounted fo
Billing Globalization and Auto-
Renewal Optimization
• Paul Huang
• Engineering Manager
• SurveyMonkey
• June 18th, 2014
Our mission is to help people make
better decisions
We help people get answers to their questions
customers create surveys distribute to others recipients respond customers analyze
and gain insight
Our customers have invented many ways to use our tool
98
90MUnique visitors
every month
17K
New sign-ups daily
“SurveyMonkey turns online
surveys into a hot business.”
“ Start-up companies using
‘freemium’ business models,
including SurveyMonkey,
are thriving as the cost of
computer power and storage
falls.”
One of the hottest
startups to watch.
2.4MSurvey responses
are generated daily
SurveyMonkey is the world’s largest survey company
Billing Globalization
In 2010...
Currencies:1 currency (USD).
Payment Methods: Credit Card, Invoice.
Pricing: one price per package.
Revenue: $ MM
Billing Globalization
In 2014...
Currencies: 39 international currencies.
Payment Methods: Credit Card, PayPal, Debit Card, Bank Transfer, iTunes, Invoice.
Pricing: each package with different price per currency, multiple prices allowed for
price testing.
Revenue: $$$$ MM
Auto-Renewal Optimization
Retry Logic: retry failed payments at different intervals, ~60% retry success rate
Account Updater: get users’ updated credit card data (number / expiration date)
before next renewal date, ~4% users at 96% success rate
Immediate Renewal: charge pending invoices when users update payment accounts,
~4% retry success rate improvement
The
Road
Ahead
Upcoming Billing Projects in 2014
VAT 2015: preparations for VAT rule changes in Europe in 2015
Brazil Payment Processing: set up local entity, integrate with a new Payment Service
Provider in Brazil
Continue Improving Retry Logic: increase retry frequencies
The End (BTW, we’re hiring…)
112
* Jun 1st to Oct 17th

More Related Content

What's hot

URP? Excuse You! The Three Metrics You Have to Know
URP? Excuse You! The Three Metrics You Have to Know URP? Excuse You! The Three Metrics You Have to Know
URP? Excuse You! The Three Metrics You Have to Know confluent
 
Building an Event-oriented Data Platform with Kafka, Eric Sammer
Building an Event-oriented Data Platform with Kafka, Eric Sammer Building an Event-oriented Data Platform with Kafka, Eric Sammer
Building an Event-oriented Data Platform with Kafka, Eric Sammer confluent
 
Serverless and AI: Orit Nissan-Messing, Iguazio, Serverless NYC 2018
Serverless and AI: Orit Nissan-Messing, Iguazio, Serverless NYC 2018Serverless and AI: Orit Nissan-Messing, Iguazio, Serverless NYC 2018
Serverless and AI: Orit Nissan-Messing, Iguazio, Serverless NYC 2018iguazio
 
Engineering Leader opportunity @ Netflix - Playback Data Systems
Engineering Leader opportunity @ Netflix - Playback Data SystemsEngineering Leader opportunity @ Netflix - Playback Data Systems
Engineering Leader opportunity @ Netflix - Playback Data SystemsPhilip Fisher-Ogden
 
Running Kafka for Maximum Pain
Running Kafka for Maximum PainRunning Kafka for Maximum Pain
Running Kafka for Maximum PainTodd Palino
 
Beaming flink to the cloud @ netflix ff 2016-monal-daxini
Beaming flink to the cloud @ netflix   ff 2016-monal-daxiniBeaming flink to the cloud @ netflix   ff 2016-monal-daxini
Beaming flink to the cloud @ netflix ff 2016-monal-daxiniMonal Daxini
 
Netflix viewing data architecture evolution - EBJUG Nov 2014
Netflix viewing data architecture evolution - EBJUG Nov 2014Netflix viewing data architecture evolution - EBJUG Nov 2014
Netflix viewing data architecture evolution - EBJUG Nov 2014Philip Fisher-Ogden
 
Kafka Summit NYC 2017 - The Real-time Event Driven Bank: A Kafka Story
Kafka Summit NYC 2017 - The Real-time Event Driven Bank: A Kafka Story Kafka Summit NYC 2017 - The Real-time Event Driven Bank: A Kafka Story
Kafka Summit NYC 2017 - The Real-time Event Driven Bank: A Kafka Story confluent
 
Building Information Systems using Event Modeling (Bobby Calderwood, Evident ...
Building Information Systems using Event Modeling (Bobby Calderwood, Evident ...Building Information Systems using Event Modeling (Bobby Calderwood, Evident ...
Building Information Systems using Event Modeling (Bobby Calderwood, Evident ...confluent
 
PayPal Risk Platform High Performance Practice
PayPal Risk Platform High Performance PracticePayPal Risk Platform High Performance Practice
PayPal Risk Platform High Performance PracticeBrian Ling
 
Building the Serverless Container Experience: Kevin McGrath, Spotinst, Server...
Building the Serverless Container Experience: Kevin McGrath, Spotinst, Server...Building the Serverless Container Experience: Kevin McGrath, Spotinst, Server...
Building the Serverless Container Experience: Kevin McGrath, Spotinst, Server...iguazio
 
Scalable and Reliable Logging at Pinterest
Scalable and Reliable Logging at PinterestScalable and Reliable Logging at Pinterest
Scalable and Reliable Logging at PinterestKrishna Gade
 
Lessons Learned - Monitoring the Data Pipeline at Hulu
Lessons Learned - Monitoring the Data Pipeline at HuluLessons Learned - Monitoring the Data Pipeline at Hulu
Lessons Learned - Monitoring the Data Pipeline at HuluDataWorks Summit
 
Keynote: Jay Kreps, Confluent | Kafka ♥ Cloud | Kafka Summit 2020
Keynote: Jay Kreps, Confluent | Kafka ♥ Cloud | Kafka Summit 2020Keynote: Jay Kreps, Confluent | Kafka ♥ Cloud | Kafka Summit 2020
Keynote: Jay Kreps, Confluent | Kafka ♥ Cloud | Kafka Summit 2020confluent
 
Netflix keystone streaming data pipeline @scale in the cloud-dbtb-2016
Netflix keystone   streaming data pipeline @scale in the cloud-dbtb-2016Netflix keystone   streaming data pipeline @scale in the cloud-dbtb-2016
Netflix keystone streaming data pipeline @scale in the cloud-dbtb-2016Monal Daxini
 
Data Streaming with Apache Kafka & MongoDB
Data Streaming with Apache Kafka & MongoDBData Streaming with Apache Kafka & MongoDB
Data Streaming with Apache Kafka & MongoDBconfluent
 
3 Ways to Deliver an Elastic, Cost-Effective Cloud Architecture
3 Ways to Deliver an Elastic, Cost-Effective Cloud Architecture3 Ways to Deliver an Elastic, Cost-Effective Cloud Architecture
3 Ways to Deliver an Elastic, Cost-Effective Cloud Architectureconfluent
 
Using Machine Learning to Understand Kafka Runtime Behavior (Shivanath Babu, ...
Using Machine Learning to Understand Kafka Runtime Behavior (Shivanath Babu, ...Using Machine Learning to Understand Kafka Runtime Behavior (Shivanath Babu, ...
Using Machine Learning to Understand Kafka Runtime Behavior (Shivanath Babu, ...confluent
 
From Local to Global
From Local to Global From Local to Global
From Local to Global AWS Germany
 
Leveraging services in stream processor apps at Ticketmaster (Derek Cline, Ti...
Leveraging services in stream processor apps at Ticketmaster (Derek Cline, Ti...Leveraging services in stream processor apps at Ticketmaster (Derek Cline, Ti...
Leveraging services in stream processor apps at Ticketmaster (Derek Cline, Ti...confluent
 

What's hot (20)

URP? Excuse You! The Three Metrics You Have to Know
URP? Excuse You! The Three Metrics You Have to Know URP? Excuse You! The Three Metrics You Have to Know
URP? Excuse You! The Three Metrics You Have to Know
 
Building an Event-oriented Data Platform with Kafka, Eric Sammer
Building an Event-oriented Data Platform with Kafka, Eric Sammer Building an Event-oriented Data Platform with Kafka, Eric Sammer
Building an Event-oriented Data Platform with Kafka, Eric Sammer
 
Serverless and AI: Orit Nissan-Messing, Iguazio, Serverless NYC 2018
Serverless and AI: Orit Nissan-Messing, Iguazio, Serverless NYC 2018Serverless and AI: Orit Nissan-Messing, Iguazio, Serverless NYC 2018
Serverless and AI: Orit Nissan-Messing, Iguazio, Serverless NYC 2018
 
Engineering Leader opportunity @ Netflix - Playback Data Systems
Engineering Leader opportunity @ Netflix - Playback Data SystemsEngineering Leader opportunity @ Netflix - Playback Data Systems
Engineering Leader opportunity @ Netflix - Playback Data Systems
 
Running Kafka for Maximum Pain
Running Kafka for Maximum PainRunning Kafka for Maximum Pain
Running Kafka for Maximum Pain
 
Beaming flink to the cloud @ netflix ff 2016-monal-daxini
Beaming flink to the cloud @ netflix   ff 2016-monal-daxiniBeaming flink to the cloud @ netflix   ff 2016-monal-daxini
Beaming flink to the cloud @ netflix ff 2016-monal-daxini
 
Netflix viewing data architecture evolution - EBJUG Nov 2014
Netflix viewing data architecture evolution - EBJUG Nov 2014Netflix viewing data architecture evolution - EBJUG Nov 2014
Netflix viewing data architecture evolution - EBJUG Nov 2014
 
Kafka Summit NYC 2017 - The Real-time Event Driven Bank: A Kafka Story
Kafka Summit NYC 2017 - The Real-time Event Driven Bank: A Kafka Story Kafka Summit NYC 2017 - The Real-time Event Driven Bank: A Kafka Story
Kafka Summit NYC 2017 - The Real-time Event Driven Bank: A Kafka Story
 
Building Information Systems using Event Modeling (Bobby Calderwood, Evident ...
Building Information Systems using Event Modeling (Bobby Calderwood, Evident ...Building Information Systems using Event Modeling (Bobby Calderwood, Evident ...
Building Information Systems using Event Modeling (Bobby Calderwood, Evident ...
 
PayPal Risk Platform High Performance Practice
PayPal Risk Platform High Performance PracticePayPal Risk Platform High Performance Practice
PayPal Risk Platform High Performance Practice
 
Building the Serverless Container Experience: Kevin McGrath, Spotinst, Server...
Building the Serverless Container Experience: Kevin McGrath, Spotinst, Server...Building the Serverless Container Experience: Kevin McGrath, Spotinst, Server...
Building the Serverless Container Experience: Kevin McGrath, Spotinst, Server...
 
Scalable and Reliable Logging at Pinterest
Scalable and Reliable Logging at PinterestScalable and Reliable Logging at Pinterest
Scalable and Reliable Logging at Pinterest
 
Lessons Learned - Monitoring the Data Pipeline at Hulu
Lessons Learned - Monitoring the Data Pipeline at HuluLessons Learned - Monitoring the Data Pipeline at Hulu
Lessons Learned - Monitoring the Data Pipeline at Hulu
 
Keynote: Jay Kreps, Confluent | Kafka ♥ Cloud | Kafka Summit 2020
Keynote: Jay Kreps, Confluent | Kafka ♥ Cloud | Kafka Summit 2020Keynote: Jay Kreps, Confluent | Kafka ♥ Cloud | Kafka Summit 2020
Keynote: Jay Kreps, Confluent | Kafka ♥ Cloud | Kafka Summit 2020
 
Netflix keystone streaming data pipeline @scale in the cloud-dbtb-2016
Netflix keystone   streaming data pipeline @scale in the cloud-dbtb-2016Netflix keystone   streaming data pipeline @scale in the cloud-dbtb-2016
Netflix keystone streaming data pipeline @scale in the cloud-dbtb-2016
 
Data Streaming with Apache Kafka & MongoDB
Data Streaming with Apache Kafka & MongoDBData Streaming with Apache Kafka & MongoDB
Data Streaming with Apache Kafka & MongoDB
 
3 Ways to Deliver an Elastic, Cost-Effective Cloud Architecture
3 Ways to Deliver an Elastic, Cost-Effective Cloud Architecture3 Ways to Deliver an Elastic, Cost-Effective Cloud Architecture
3 Ways to Deliver an Elastic, Cost-Effective Cloud Architecture
 
Using Machine Learning to Understand Kafka Runtime Behavior (Shivanath Babu, ...
Using Machine Learning to Understand Kafka Runtime Behavior (Shivanath Babu, ...Using Machine Learning to Understand Kafka Runtime Behavior (Shivanath Babu, ...
Using Machine Learning to Understand Kafka Runtime Behavior (Shivanath Babu, ...
 
From Local to Global
From Local to Global From Local to Global
From Local to Global
 
Leveraging services in stream processor apps at Ticketmaster (Derek Cline, Ti...
Leveraging services in stream processor apps at Ticketmaster (Derek Cline, Ti...Leveraging services in stream processor apps at Ticketmaster (Derek Cline, Ti...
Leveraging services in stream processor apps at Ticketmaster (Derek Cline, Ti...
 

Viewers also liked

High Performance Software Engineering Teams
High Performance Software Engineering TeamsHigh Performance Software Engineering Teams
High Performance Software Engineering TeamsLars Thorup
 
Building Great Software Engineering Teams
Building Great Software Engineering TeamsBuilding Great Software Engineering Teams
Building Great Software Engineering TeamsBrian Link
 
Builder pattern vs constructor
Builder pattern vs constructorBuilder pattern vs constructor
Builder pattern vs constructorLiviu Tudor
 
Ads personalization / Netflix Ad Tech Event Nov/2017
Ads personalization / Netflix Ad Tech Event Nov/2017Ads personalization / Netflix Ad Tech Event Nov/2017
Ads personalization / Netflix Ad Tech Event Nov/2017Liviu Tudor
 
Horovod - Distributed TensorFlow Made Easy
Horovod - Distributed TensorFlow Made EasyHorovod - Distributed TensorFlow Made Easy
Horovod - Distributed TensorFlow Made EasyAlexander Sergeev
 
Large-Scale Training with GPUs at Facebook
Large-Scale Training with GPUs at FacebookLarge-Scale Training with GPUs at Facebook
Large-Scale Training with GPUs at FacebookFaisal Siddiqi
 
Parameter Server Approach for Online Learning at Twitter
Parameter Server Approach for Online Learning at TwitterParameter Server Approach for Online Learning at Twitter
Parameter Server Approach for Online Learning at TwitterZhiyong (Joe) Xie
 
2017 10-10 (netflix ml platform meetup) learning item and user representation...
2017 10-10 (netflix ml platform meetup) learning item and user representation...2017 10-10 (netflix ml platform meetup) learning item and user representation...
2017 10-10 (netflix ml platform meetup) learning item and user representation...Ed Chi
 

Viewers also liked (8)

High Performance Software Engineering Teams
High Performance Software Engineering TeamsHigh Performance Software Engineering Teams
High Performance Software Engineering Teams
 
Building Great Software Engineering Teams
Building Great Software Engineering TeamsBuilding Great Software Engineering Teams
Building Great Software Engineering Teams
 
Builder pattern vs constructor
Builder pattern vs constructorBuilder pattern vs constructor
Builder pattern vs constructor
 
Ads personalization / Netflix Ad Tech Event Nov/2017
Ads personalization / Netflix Ad Tech Event Nov/2017Ads personalization / Netflix Ad Tech Event Nov/2017
Ads personalization / Netflix Ad Tech Event Nov/2017
 
Horovod - Distributed TensorFlow Made Easy
Horovod - Distributed TensorFlow Made EasyHorovod - Distributed TensorFlow Made Easy
Horovod - Distributed TensorFlow Made Easy
 
Large-Scale Training with GPUs at Facebook
Large-Scale Training with GPUs at FacebookLarge-Scale Training with GPUs at Facebook
Large-Scale Training with GPUs at Facebook
 
Parameter Server Approach for Online Learning at Twitter
Parameter Server Approach for Online Learning at TwitterParameter Server Approach for Online Learning at Twitter
Parameter Server Approach for Online Learning at Twitter
 
2017 10-10 (netflix ml platform meetup) learning item and user representation...
2017 10-10 (netflix ml platform meetup) learning item and user representation...2017 10-10 (netflix ml platform meetup) learning item and user representation...
2017 10-10 (netflix ml platform meetup) learning item and user representation...
 

Similar to Maintaining Your (Data) Sanity

Event-Driven Architectures Done Right | Tim Berglund, Confluent
Event-Driven Architectures Done Right | Tim Berglund, ConfluentEvent-Driven Architectures Done Right | Tim Berglund, Confluent
Event-Driven Architectures Done Right | Tim Berglund, ConfluentHostedbyConfluent
 
Enterprise Data World 2018 - Building Cloud Self-Service Analytical Solution
Enterprise Data World 2018 - Building Cloud Self-Service Analytical SolutionEnterprise Data World 2018 - Building Cloud Self-Service Analytical Solution
Enterprise Data World 2018 - Building Cloud Self-Service Analytical SolutionDmitry Anoshin
 
Suning OpenStack Cloud and Heat
Suning OpenStack Cloud and HeatSuning OpenStack Cloud and Heat
Suning OpenStack Cloud and HeatQiming Teng
 
Kinesis @ lyft
Kinesis @ lyftKinesis @ lyft
Kinesis @ lyftMian Hamid
 
Levelling up your data infrastructure
Levelling up your data infrastructureLevelling up your data infrastructure
Levelling up your data infrastructureSimon Belak
 
JavaOne: Efficiently building and deploying microservices
JavaOne: Efficiently building and deploying microservicesJavaOne: Efficiently building and deploying microservices
JavaOne: Efficiently building and deploying microservicesBart Blommaerts
 
Understanding event data
Understanding event dataUnderstanding event data
Understanding event datayalisassoon
 
Patterns of Distributed Application Design
Patterns of Distributed Application DesignPatterns of Distributed Application Design
Patterns of Distributed Application DesignOrkhan Gasimov
 
2015 nov 27_thug_paytm_rt_ingest_brief_final
2015 nov 27_thug_paytm_rt_ingest_brief_final2015 nov 27_thug_paytm_rt_ingest_brief_final
2015 nov 27_thug_paytm_rt_ingest_brief_finalAdam Muise
 
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...Lucidworks
 
Maxis Alchemize imug 2017
Maxis Alchemize imug 2017Maxis Alchemize imug 2017
Maxis Alchemize imug 2017BrandonWilhelm4
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to MicroservicesMahmoudZidan41
 
Patterns of Distributed Application Design
Patterns of Distributed Application DesignPatterns of Distributed Application Design
Patterns of Distributed Application DesignGlobalLogic Ukraine
 
Eric Proegler Oredev Performance Testing in New Contexts
Eric Proegler Oredev Performance Testing in New ContextsEric Proegler Oredev Performance Testing in New Contexts
Eric Proegler Oredev Performance Testing in New ContextsEric Proegler
 
ClickHouse in Real Life. Case Studies and Best Practices, by Alexander Zaitsev
ClickHouse in Real Life. Case Studies and Best Practices, by Alexander ZaitsevClickHouse in Real Life. Case Studies and Best Practices, by Alexander Zaitsev
ClickHouse in Real Life. Case Studies and Best Practices, by Alexander ZaitsevAltinity Ltd
 
ARC202:real world real time analytics
ARC202:real world real time analyticsARC202:real world real time analytics
ARC202:real world real time analyticsSebastian Montini
 
Dev Lakhani, Data Scientist at Batch Insights "Real Time Big Data Applicatio...
Dev Lakhani, Data Scientist at Batch Insights  "Real Time Big Data Applicatio...Dev Lakhani, Data Scientist at Batch Insights  "Real Time Big Data Applicatio...
Dev Lakhani, Data Scientist at Batch Insights "Real Time Big Data Applicatio...Dataconomy Media
 
Observability – the good, the bad, and the ugly
Observability – the good, the bad, and the uglyObservability – the good, the bad, and the ugly
Observability – the good, the bad, and the uglyTimetrix
 
Big Data and Machine Learning on AWS
Big Data and Machine Learning on AWSBig Data and Machine Learning on AWS
Big Data and Machine Learning on AWSCloudHesive
 

Similar to Maintaining Your (Data) Sanity (20)

Event-Driven Architectures Done Right | Tim Berglund, Confluent
Event-Driven Architectures Done Right | Tim Berglund, ConfluentEvent-Driven Architectures Done Right | Tim Berglund, Confluent
Event-Driven Architectures Done Right | Tim Berglund, Confluent
 
Enterprise Data World 2018 - Building Cloud Self-Service Analytical Solution
Enterprise Data World 2018 - Building Cloud Self-Service Analytical SolutionEnterprise Data World 2018 - Building Cloud Self-Service Analytical Solution
Enterprise Data World 2018 - Building Cloud Self-Service Analytical Solution
 
Suning OpenStack Cloud and Heat
Suning OpenStack Cloud and HeatSuning OpenStack Cloud and Heat
Suning OpenStack Cloud and Heat
 
Kinesis @ lyft
Kinesis @ lyftKinesis @ lyft
Kinesis @ lyft
 
Levelling up your data infrastructure
Levelling up your data infrastructureLevelling up your data infrastructure
Levelling up your data infrastructure
 
JavaOne: Efficiently building and deploying microservices
JavaOne: Efficiently building and deploying microservicesJavaOne: Efficiently building and deploying microservices
JavaOne: Efficiently building and deploying microservices
 
Understanding event data
Understanding event dataUnderstanding event data
Understanding event data
 
Patterns of Distributed Application Design
Patterns of Distributed Application DesignPatterns of Distributed Application Design
Patterns of Distributed Application Design
 
2015 nov 27_thug_paytm_rt_ingest_brief_final
2015 nov 27_thug_paytm_rt_ingest_brief_final2015 nov 27_thug_paytm_rt_ingest_brief_final
2015 nov 27_thug_paytm_rt_ingest_brief_final
 
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...
 
Maxis Alchemize imug 2017
Maxis Alchemize imug 2017Maxis Alchemize imug 2017
Maxis Alchemize imug 2017
 
Operational-Analytics
Operational-AnalyticsOperational-Analytics
Operational-Analytics
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Patterns of Distributed Application Design
Patterns of Distributed Application DesignPatterns of Distributed Application Design
Patterns of Distributed Application Design
 
Eric Proegler Oredev Performance Testing in New Contexts
Eric Proegler Oredev Performance Testing in New ContextsEric Proegler Oredev Performance Testing in New Contexts
Eric Proegler Oredev Performance Testing in New Contexts
 
ClickHouse in Real Life. Case Studies and Best Practices, by Alexander Zaitsev
ClickHouse in Real Life. Case Studies and Best Practices, by Alexander ZaitsevClickHouse in Real Life. Case Studies and Best Practices, by Alexander Zaitsev
ClickHouse in Real Life. Case Studies and Best Practices, by Alexander Zaitsev
 
ARC202:real world real time analytics
ARC202:real world real time analyticsARC202:real world real time analytics
ARC202:real world real time analytics
 
Dev Lakhani, Data Scientist at Batch Insights "Real Time Big Data Applicatio...
Dev Lakhani, Data Scientist at Batch Insights  "Real Time Big Data Applicatio...Dev Lakhani, Data Scientist at Batch Insights  "Real Time Big Data Applicatio...
Dev Lakhani, Data Scientist at Batch Insights "Real Time Big Data Applicatio...
 
Observability – the good, the bad, and the ugly
Observability – the good, the bad, and the uglyObservability – the good, the bad, and the ugly
Observability – the good, the bad, and the ugly
 
Big Data and Machine Learning on AWS
Big Data and Machine Learning on AWSBig Data and Machine Learning on AWS
Big Data and Machine Learning on AWS
 

Recently uploaded

INDIAN GCP GUIDELINE. for Regulatory affair 1st sem CRR
INDIAN GCP GUIDELINE. for Regulatory  affair 1st sem CRRINDIAN GCP GUIDELINE. for Regulatory  affair 1st sem CRR
INDIAN GCP GUIDELINE. for Regulatory affair 1st sem CRRsarwankumar4524
 
Event 4 Introduction to Open Source.pptx
Event 4 Introduction to Open Source.pptxEvent 4 Introduction to Open Source.pptx
Event 4 Introduction to Open Source.pptxaryanv1753
 
The Ten Facts About People With Autism Presentation
The Ten Facts About People With Autism PresentationThe Ten Facts About People With Autism Presentation
The Ten Facts About People With Autism PresentationNathan Young
 
Internship Presentation | PPT | CSE | SE
Internship Presentation | PPT | CSE | SEInternship Presentation | PPT | CSE | SE
Internship Presentation | PPT | CSE | SESaleh Ibne Omar
 
CHROMATOGRAPHY and its types with procedure,diagrams,flow charts,advantages a...
CHROMATOGRAPHY and its types with procedure,diagrams,flow charts,advantages a...CHROMATOGRAPHY and its types with procedure,diagrams,flow charts,advantages a...
CHROMATOGRAPHY and its types with procedure,diagrams,flow charts,advantages a...university
 
proposal kumeneger edited.docx A kumeeger
proposal kumeneger edited.docx A kumeegerproposal kumeneger edited.docx A kumeeger
proposal kumeneger edited.docx A kumeegerkumenegertelayegrama
 
Mathan flower ppt.pptx slide orchids ✨🌸
Mathan flower ppt.pptx slide orchids ✨🌸Mathan flower ppt.pptx slide orchids ✨🌸
Mathan flower ppt.pptx slide orchids ✨🌸mathanramanathan2005
 
DGT @ CTAC 2024 Valencia: Most crucial invest to digitalisation_Sven Zoelle_v...
DGT @ CTAC 2024 Valencia: Most crucial invest to digitalisation_Sven Zoelle_v...DGT @ CTAC 2024 Valencia: Most crucial invest to digitalisation_Sven Zoelle_v...
DGT @ CTAC 2024 Valencia: Most crucial invest to digitalisation_Sven Zoelle_v...Henrik Hanke
 
Call Girls In Aerocity 🤳 Call Us +919599264170
Call Girls In Aerocity 🤳 Call Us +919599264170Call Girls In Aerocity 🤳 Call Us +919599264170
Call Girls In Aerocity 🤳 Call Us +919599264170Escort Service
 
Chizaram's Women Tech Makers Deck. .pptx
Chizaram's Women Tech Makers Deck.  .pptxChizaram's Women Tech Makers Deck.  .pptx
Chizaram's Women Tech Makers Deck. .pptxogubuikealex
 
Quality by design.. ppt for RA (1ST SEM
Quality by design.. ppt for  RA (1ST SEMQuality by design.. ppt for  RA (1ST SEM
Quality by design.. ppt for RA (1ST SEMCharmi13
 
PAG-UNLAD NG EKONOMIYA na dapat isaalang alang sa pag-aaral.
PAG-UNLAD NG EKONOMIYA na dapat isaalang alang sa pag-aaral.PAG-UNLAD NG EKONOMIYA na dapat isaalang alang sa pag-aaral.
PAG-UNLAD NG EKONOMIYA na dapat isaalang alang sa pag-aaral.KathleenAnnCordero2
 
Dutch Power - 26 maart 2024 - Henk Kras - Circular Plastics
Dutch Power - 26 maart 2024 - Henk Kras - Circular PlasticsDutch Power - 26 maart 2024 - Henk Kras - Circular Plastics
Dutch Power - 26 maart 2024 - Henk Kras - Circular PlasticsDutch Power
 
RACHEL-ANN M. TENIBRO PRODUCT RESEARCH PRESENTATION
RACHEL-ANN M. TENIBRO PRODUCT RESEARCH PRESENTATIONRACHEL-ANN M. TENIBRO PRODUCT RESEARCH PRESENTATION
RACHEL-ANN M. TENIBRO PRODUCT RESEARCH PRESENTATIONRachelAnnTenibroAmaz
 
Application of GIS in Landslide Disaster Response.pptx
Application of GIS in Landslide Disaster Response.pptxApplication of GIS in Landslide Disaster Response.pptx
Application of GIS in Landslide Disaster Response.pptxRoquia Salam
 
Early Modern Spain. All about this period
Early Modern Spain. All about this periodEarly Modern Spain. All about this period
Early Modern Spain. All about this periodSaraIsabelJimenez
 
THE COUNTRY WHO SOLVED THE WORLD_HOW CHINA LAUNCHED THE CIVILIZATION REVOLUTI...
THE COUNTRY WHO SOLVED THE WORLD_HOW CHINA LAUNCHED THE CIVILIZATION REVOLUTI...THE COUNTRY WHO SOLVED THE WORLD_HOW CHINA LAUNCHED THE CIVILIZATION REVOLUTI...
THE COUNTRY WHO SOLVED THE WORLD_HOW CHINA LAUNCHED THE CIVILIZATION REVOLUTI...漢銘 謝
 
SaaStr Workshop Wednesday w/ Kyle Norton, Owner.com
SaaStr Workshop Wednesday w/ Kyle Norton, Owner.comSaaStr Workshop Wednesday w/ Kyle Norton, Owner.com
SaaStr Workshop Wednesday w/ Kyle Norton, Owner.comsaastr
 
Engaging Eid Ul Fitr Presentation for Kindergartners.pptx
Engaging Eid Ul Fitr Presentation for Kindergartners.pptxEngaging Eid Ul Fitr Presentation for Kindergartners.pptx
Engaging Eid Ul Fitr Presentation for Kindergartners.pptxAsifArshad8
 

Recently uploaded (19)

INDIAN GCP GUIDELINE. for Regulatory affair 1st sem CRR
INDIAN GCP GUIDELINE. for Regulatory  affair 1st sem CRRINDIAN GCP GUIDELINE. for Regulatory  affair 1st sem CRR
INDIAN GCP GUIDELINE. for Regulatory affair 1st sem CRR
 
Event 4 Introduction to Open Source.pptx
Event 4 Introduction to Open Source.pptxEvent 4 Introduction to Open Source.pptx
Event 4 Introduction to Open Source.pptx
 
The Ten Facts About People With Autism Presentation
The Ten Facts About People With Autism PresentationThe Ten Facts About People With Autism Presentation
The Ten Facts About People With Autism Presentation
 
Internship Presentation | PPT | CSE | SE
Internship Presentation | PPT | CSE | SEInternship Presentation | PPT | CSE | SE
Internship Presentation | PPT | CSE | SE
 
CHROMATOGRAPHY and its types with procedure,diagrams,flow charts,advantages a...
CHROMATOGRAPHY and its types with procedure,diagrams,flow charts,advantages a...CHROMATOGRAPHY and its types with procedure,diagrams,flow charts,advantages a...
CHROMATOGRAPHY and its types with procedure,diagrams,flow charts,advantages a...
 
proposal kumeneger edited.docx A kumeeger
proposal kumeneger edited.docx A kumeegerproposal kumeneger edited.docx A kumeeger
proposal kumeneger edited.docx A kumeeger
 
Mathan flower ppt.pptx slide orchids ✨🌸
Mathan flower ppt.pptx slide orchids ✨🌸Mathan flower ppt.pptx slide orchids ✨🌸
Mathan flower ppt.pptx slide orchids ✨🌸
 
DGT @ CTAC 2024 Valencia: Most crucial invest to digitalisation_Sven Zoelle_v...
DGT @ CTAC 2024 Valencia: Most crucial invest to digitalisation_Sven Zoelle_v...DGT @ CTAC 2024 Valencia: Most crucial invest to digitalisation_Sven Zoelle_v...
DGT @ CTAC 2024 Valencia: Most crucial invest to digitalisation_Sven Zoelle_v...
 
Call Girls In Aerocity 🤳 Call Us +919599264170
Call Girls In Aerocity 🤳 Call Us +919599264170Call Girls In Aerocity 🤳 Call Us +919599264170
Call Girls In Aerocity 🤳 Call Us +919599264170
 
Chizaram's Women Tech Makers Deck. .pptx
Chizaram's Women Tech Makers Deck.  .pptxChizaram's Women Tech Makers Deck.  .pptx
Chizaram's Women Tech Makers Deck. .pptx
 
Quality by design.. ppt for RA (1ST SEM
Quality by design.. ppt for  RA (1ST SEMQuality by design.. ppt for  RA (1ST SEM
Quality by design.. ppt for RA (1ST SEM
 
PAG-UNLAD NG EKONOMIYA na dapat isaalang alang sa pag-aaral.
PAG-UNLAD NG EKONOMIYA na dapat isaalang alang sa pag-aaral.PAG-UNLAD NG EKONOMIYA na dapat isaalang alang sa pag-aaral.
PAG-UNLAD NG EKONOMIYA na dapat isaalang alang sa pag-aaral.
 
Dutch Power - 26 maart 2024 - Henk Kras - Circular Plastics
Dutch Power - 26 maart 2024 - Henk Kras - Circular PlasticsDutch Power - 26 maart 2024 - Henk Kras - Circular Plastics
Dutch Power - 26 maart 2024 - Henk Kras - Circular Plastics
 
RACHEL-ANN M. TENIBRO PRODUCT RESEARCH PRESENTATION
RACHEL-ANN M. TENIBRO PRODUCT RESEARCH PRESENTATIONRACHEL-ANN M. TENIBRO PRODUCT RESEARCH PRESENTATION
RACHEL-ANN M. TENIBRO PRODUCT RESEARCH PRESENTATION
 
Application of GIS in Landslide Disaster Response.pptx
Application of GIS in Landslide Disaster Response.pptxApplication of GIS in Landslide Disaster Response.pptx
Application of GIS in Landslide Disaster Response.pptx
 
Early Modern Spain. All about this period
Early Modern Spain. All about this periodEarly Modern Spain. All about this period
Early Modern Spain. All about this period
 
THE COUNTRY WHO SOLVED THE WORLD_HOW CHINA LAUNCHED THE CIVILIZATION REVOLUTI...
THE COUNTRY WHO SOLVED THE WORLD_HOW CHINA LAUNCHED THE CIVILIZATION REVOLUTI...THE COUNTRY WHO SOLVED THE WORLD_HOW CHINA LAUNCHED THE CIVILIZATION REVOLUTI...
THE COUNTRY WHO SOLVED THE WORLD_HOW CHINA LAUNCHED THE CIVILIZATION REVOLUTI...
 
SaaStr Workshop Wednesday w/ Kyle Norton, Owner.com
SaaStr Workshop Wednesday w/ Kyle Norton, Owner.comSaaStr Workshop Wednesday w/ Kyle Norton, Owner.com
SaaStr Workshop Wednesday w/ Kyle Norton, Owner.com
 
Engaging Eid Ul Fitr Presentation for Kindergartners.pptx
Engaging Eid Ul Fitr Presentation for Kindergartners.pptxEngaging Eid Ul Fitr Presentation for Kindergartners.pptx
Engaging Eid Ul Fitr Presentation for Kindergartners.pptx
 

Maintaining Your (Data) Sanity

  • 1. Billing & Payments Engineering Meetup June 18th, 2014
  • 2. • Mathieu Chauvin – Netflix Validating Payment Information • Taylor Wicksell – Netflix Flexible Billing Integrations Using Events • Jean-Denis Greze – Dropbox Mistakes (and Wins) Building Payments at Dropbox • Anthony Zacharakis – Lumosity Billing Migrations: Maintaining Your (Data) Sanity • Alec Holmes – Square Scaling Merchant Payouts at Square === Break === • Paul Huang – SurveyMonkey Billing Globalization and Auto Renewal Optimization • Emmanuel Cron – Google Wallet Moving from SE to Host Card Emulation • Feifeng Yang / Michael Chen – Electronic Arts Ecommerce at EA • Krishnan Sridhar – LinkedIn Real-Time Analytics and Smart Routing
  • 3. Validating Payment Information Mathieu Chauvin @matchauvin – linkedin/matchauvin
  • 4. Signing-Up for Netflix • Subscription Based • 30 Days Free Trial • Payment Information Collection
  • 5. • Pro Forma • Luhn Check (Mod10) • Card Type vs Card# RegEx • Authorization / Reversal Payment Validation 101
  • 6. But Wait! You Can Do More!
  • 7. Authorization Amount • $0.00, $1.00, or Full Price Authorization • Don’t Forget the Reversal! • Constraints by Country or by Card Type
  • 8. Response Types • Hard Declines • Soft Declines
  • 9. MCC • What is an MCC? • Figure out the Best MCC Fit
  • 10. BINs • What is a BIN? • Card Types: Credit, Debit, Prepaids • What About Non-Reloadable Prepaid Cards?
  • 11. Forking Traffic • Do You Use Several Payment Processors? • Why Don’t You Test Which One Performs Better?
  • 12. Use Cases • Sign-Up • Updating Payment Information • Returning Customer
  • 13. Country Specific Behavior • Adapt To Your Market
  • 14. The Feedback Loop • A/B Tests • Analyze, Project & Evaluate Risks • Test Again
  • 15. Conclusion • Try Everything • Build Your Application Dynamically • The Feedback Loop! Thank You!
  • 16. Flexible Billing Integrations Using Events Taylor Wicksell
  • 17. The Billing Team • Signups/Cancellations • Recurring Billing • Price and Tax Calculations • Discounts / Gifts • Financial Reporting
  • 18. Current Architecture • Netflix Data Center • Batch Processing and Customer Requests • Oracle (Single-Master) • Data driven
  • 19. Cloud Migration - Primary Goals • Join Netflix in the Cloud • High Availability • Multi-Regional Active/Active • Scalability
  • 20. New Design • Amazon EC2 • Multi-Regional • Cassandra • Event Driven
  • 22. Cross-Cutting Concerns • Publishing Data To Interested Parties – Hold Messaging – Financial Reporting • Metrics/Analytics • Velocity Checks • Debugging
  • 23. Wiretap to Common Event Pipeline
  • 24. Common Event Pipeline Current Implementation • SQS Entry Point • Custom routing service • Custom code for each endpoint integration • Weak ordering of events Future Implementation • Suro / Kafka Entry Point • Configurable Routing and Transformation • Pluggable endpoint integration • Option for strong ordering of events
  • 25.
  • 26. Sting – Broad Analytics
  • 27. Druid – Event Aggregation Metrics
  • 28. ElasticSearch – Event Level Debugging
  • 29. Mistakes (and Wins) Building Payments At Dropbox Jean-Denis Grèze & Dan Wheeler June 18th, 2014
  • 30. Backend Tips • Not about increasing conversion • Not about pricing • Not about plan and feature optimizations • Not about upselling • Not about consumer SaaS at scale • Not about self-serve in SMB/SME/Enterprise
  • 31. Pains of Scaling Payments • Thousands of customers to millions of customers • SMB to Enterprise – Custom flows! • International expansion – Fraud – New payment methods (delayed settlements) – Different price points
  • 32. Out Of The Dark Ages • For a long time, only 0.5 engineers worked on payments and billing • March 2013: consult w/ leading payment engineers, PMs and executives on how to build an amazing payments team – 15+ in 1 year
  • 33. Advice • Build a payments + billing backend that is: – Flexible • Migrations (sadface) • Requirements will change – often – Auditable • Always know why and state changed – Append Only • Never lose data
  • 35. Team Ca$h • Engineers – Some finance background – A lot of systems/analytics background • PMs – Some finance/accounting background – Some product/marketing background • Advisors – Payments experts – Tight feedback loop w/ finance • Designers
  • 37. Migrations • You will have to migrate – 3rd-party vaulting to self vaulting – New markets = new processors – If you are a growing company, your internals will require migrations • Stakes are high – Double-billing? Forgetting to charge some users? Inadvertently moving users from one pricing category to another? • Old way: – Ad hoc – Tons of tests
  • 38. I. Leverage Existing Code: Equivalence • Write equivalence between old and new implementations (database, API, 3rd party providers, tests, etc.) • Run everything through both systems at once, with equivalence being tested • Every step of the way check that equivalence relations hold (e.g., old-style invoice has a new-style invoice equivalent) • Turn off old system when everything works for X amount of time
  • 39. Migration Pro-Tip • If you can migrate in both directions at will on a per-endpoint basis, your life will be awesome and people will love you.
  • 41. Logging • Dark Ages = tons of logging • Very comprehensive, but ad-hoc = too much effort to re-create state • Human error
  • 42. II. Automated Logging • Automatically log – Any DB write (graph, relational, etc.) – Any 3rd party API call (and some internal calls like email) • Pre-log – Any incoming 3rd party payload • Can recreate past actions if we introduced a regression • LOG A REASON (and code version) – 1 year is a long time
  • 44. Not too much data • Dropbox = large scale for SaaS • Hundreds of millions of users (provisioning is hard) • Tons of data, but still payments data << file storage data – Although we do have the benefits of amazing infrastructure
  • 45. III. States, Not Deltas • Generally # states << # deltas • States – Pro 100 + Packrat – DfB + Harmony Enabled • Deltas – Add 5 licenses, 6 licenses, etc. – Add 20 licenses and switch from monthly to yearly • Use states and let the system figure out how to get from start to end
  • 46. IV. Possibility & Transitions Use Same Code Paths • No difference between: – entity.is_valid_transition(end_state) – entity.perform_transition(end_state) • Except that writes are turned off for the former. • No change for “is something possible” logic to be different than “do the thing” logic.
  • 47. States Are Nice transition_space = MoneytreeTransitionsSpace.build_cross_product( entity=me, gateways=ALL_GATEWAYS, plans=[Pro100, Pro200, Pro500, DfB, DfBTrial], schedules=[Monthly, Yearly], currencies=ALL_CURRENCIES, features=ALL_FEATURES, tax_profile=[NoTax, SimpleTax, ComplexTax], ) # … If transition_space.supports(FEATURE_PACKRAT): # …
  • 48. Write Protection • Seems dumb, but need to be careful not to accidentally change values in payments world. Have clearly-defined code paths that can touch state, talk to 3rd party components, etc.
  • 49. V. One More Lesson • Payments + Billing != Finance • Business requirements don’t always translate to what’s best/easiest in the world of accounting. You need to flexibly work in both worlds – can’t risk the user experience to make your finance dep’t happy (and vice-versa) • Get a great PM
  • 50. VI. Why Payments Are Cool? • Infrastructure? – Payments service – Provisioning service • Product? – Upsells? (+50% increase in revenue per user) – Gating features? • Product Infrastructure! – Build a successful structure by emphasizing hard problems in both worlds!
  • 51.
  • 52. Now + The Future • Other Cool Projects – ML for risk/anomaly detection (e.g., for payment methods that don’t settle immediately) – Price AB testing (*) – Cross-platform upsell framework • Questions? – dan@dropbox.com – jeandenis@dropbox.com • Hiring – Get in touch!
  • 54. Lumos Labs, Inc. Data Sanity A short treatise on rebuilding a payment system
  • 55. Lumos Labs, Inc. the background
  • 56. Lumos Labs, Inc. Circa 2012 Decided to rewrite our payment system
  • 57. Lumos Labs, Inc. Reasons Old payment system has a lot of limitations
  • 58. Lumos Labs, Inc. Payment system limitations • Hard to add additional gateways • Models don’t reflect business reality • Not built for reporting • Code is brittle
  • 59. Lumos Labs, Inc. 3 months later…
  • 60. Lumos Labs, Inc. New payment system features • Trivial to add new payment methods • Subscriptions are the core model • Built with reporting in mind • Separate, well encapsulated library
  • 61. Lumos Labs, Inc. Works like a charm!
  • 62. Lumos Labs, Inc. wait… just one problem
  • 63. Lumos Labs, Inc. Having two parallel payment systems is not sustainable Surprise! As it turns out
  • 64. Lumos Labs, Inc. Just deprecate the old one
  • 65. Lumos Labs, Inc. Just deprecate the old one • Don't migrate anyone, let old users churn out naturally (will take forever)
  • 66. Lumos Labs, Inc. Just deprecate the old one • Don't migrate anyone, let old users churn out naturally (will take forever) • Migrate everyone, but only most critical/current subscription info (loses history)
  • 67. Lumos Labs, Inc. Just deprecate the old one • Don't migrate anyone, let old users churn out naturally (will take forever) • Migrate everyone, but only most critical/current subscription info (loses history) • Migrate everyone + full history (tricky, lots of edge cases)
  • 68. Lumos Labs, Inc. so, what’d we choose? (drum roll)
  • 69. Lumos Labs, Inc. We decided to migrate everyone and their entire billing history
  • 70. Lumos Labs, Inc. Why? One system One history One source of truth
  • 72. Lumos Labs, Inc. enter the sanity check
  • 73. Lumos Labs, Inc. enter the sanity check Just make a sanity check before and after the migration to ask questions
  • 74. Lumos Labs, Inc. enter the sanity check Both models should answer certain questions the same way, e.g: • How much did the user pay for a subscription? • How many total transactions did the user make? • Was auto-renewal enabled on X date?
  • 75. Lumos Labs, Inc. class SanityCheck Methods = [:subscriber?, :transaction_count] # etc. def initialize(record) @record = record @before_values = SanityCheck.values(record) end def self.values(record) Methods.map { |m| [m, record.send(m)] }.to_h end end enter the sanity check
  • 76. Lumos Labs, Inc. class SanityCheck ... def check @after_values = SanityCheck.values(record) @diff = diff(@before_values, @after_values) end def diff(a, b) a.delete_if { |k, v| b[k] == v } .merge!(b.dup.delete_if { |k, v| a.has_key?(k) }) end end enter the sanity check
  • 77. Lumos Labs, Inc. enter the sanity check User.each do |user| sanity_check = SanityCheck.new(user) user.migrate! sanity_check.check if sanity_check.diff.any? # sanity check failed -- log an error, rollback, etc. raise ActiveRecord::Rollback else # woo hoo, success! user.update_attributes(:migrated => true) end end config/initializers/user_auth.rb
  • 79. Lumos Labs, Inc. A resounding success! the result
  • 81. Lumos Labs, Inc. Did not work in all cases ● Payment system behavior changed over time
  • 82. Lumos Labs, Inc. Did not work in all cases ● Payment system behavior changed over time ● Some concepts did not map between systems
  • 83. Lumos Labs, Inc. Handling the edge cases ● Replayed history as it would play out in the new system ● Still kept most critical information the same (e.g. transaction timestamps)
  • 84. Lumos Labs, Inc. Skip ahead to today Migrated 99.9994%* of all our users successfully to the new system *The remaining .0006% live on for business, not technical reasons
  • 85. Lumos Labs, Inc. Thanks Anthony Zacharakis anthony@lumoslabs.com @azacharax
  • 86. Scaling Merchant Payouts at Square Alec Holmes
  • 87. ‣ Infrastructure team that moves money ‣ Card processing (money in) ‣ Settlements (money out) Payments Team
  • 88. ‣ Monolithic Rails app ‣ Database storage and IO limits ‣ Controls around accounting data Disaster Ahead
  • 91. Challenge: Migrating Live Data ‣ Stricter money-moving event model ‣ Same event streams to all systems ‣ Smart queueing of events
  • 92. Challenge: Moving to APIs ‣ Replace direct data access with API calls ‣ Hadoop for analytics queries
  • 93. That's it. All pennies accounted fo
  • 94.
  • 95. Billing Globalization and Auto- Renewal Optimization • Paul Huang • Engineering Manager • SurveyMonkey • June 18th, 2014
  • 96. Our mission is to help people make better decisions
  • 97. We help people get answers to their questions customers create surveys distribute to others recipients respond customers analyze and gain insight
  • 98. Our customers have invented many ways to use our tool 98
  • 99. 90MUnique visitors every month 17K New sign-ups daily “SurveyMonkey turns online surveys into a hot business.” “ Start-up companies using ‘freemium’ business models, including SurveyMonkey, are thriving as the cost of computer power and storage falls.” One of the hottest startups to watch. 2.4MSurvey responses are generated daily SurveyMonkey is the world’s largest survey company
  • 100. Billing Globalization In 2010... Currencies:1 currency (USD). Payment Methods: Credit Card, Invoice. Pricing: one price per package. Revenue: $ MM
  • 101. Billing Globalization In 2014... Currencies: 39 international currencies. Payment Methods: Credit Card, PayPal, Debit Card, Bank Transfer, iTunes, Invoice. Pricing: each package with different price per currency, multiple prices allowed for price testing. Revenue: $$$$ MM
  • 102. Auto-Renewal Optimization Retry Logic: retry failed payments at different intervals, ~60% retry success rate Account Updater: get users’ updated credit card data (number / expiration date) before next renewal date, ~4% users at 96% success rate Immediate Renewal: charge pending invoices when users update payment accounts, ~4% retry success rate improvement
  • 104. Upcoming Billing Projects in 2014 VAT 2015: preparations for VAT rule changes in Europe in 2015 Brazil Payment Processing: set up local entity, integrate with a new Payment Service Provider in Brazil Continue Improving Retry Logic: increase retry frequencies
  • 105. The End (BTW, we’re hiring…)
  • 106.
  • 107.
  • 108.
  • 109.
  • 110.
  • 111.
  • 112. 112 * Jun 1st to Oct 17th

Editor's Notes

  1. Fairly straight-forward to implement