SlideShare a Scribd company logo
1 of 46
Coordinates
Twitter @r39132
#netflixcloud
Blog http://practicalcloudcomputing.com
Linked In http://www.linkedin.com/in/siddharthanand
2@r39132 - #netflixcloud
Why Are You Here?
”What I need is an exact list of specific unknown
problems we might encounter."
-- anonymous
@r39132 - #netflixcloud 3
Motivation
 Circa late 2008, Netflix had a single data center
 Single-point-of-failure (a.k.a. SPOF)
 Approaching limits on cooling, power, space, traffic
capacity
 Alternatives
 Build more data centers
 Outsource the majority of our capacity planning and
scale out
@r39132 - #netflixcloud 5
Motivation
 Winner : Outsource the majority of our capacity planning and
scale out
 Leverage a leading Infrastructure-as-a-service provider
 Amazon Web Services
 Footnote : As it has taken us a while (i.e. ~2+ years) to realize
our vision of running on the cloud, we needed a interim solution
to handle growth
 We did build a second data center along the way
 We did outgrow it
6@r39132 - #netflixcloud
Cloud Migration Strategy
 Components
 Applications and Software Infrastructure
 Data
 Migration Considerations
 Security
 PII and PCI DSS stays in our DC, rest can go to the cloud
 Scalability and Availability for Business Success
@r39132 - #netflixcloud 8
Cloud Migration Strategy
 Scalability and Availability for Business Success
 High Growth or High Traffic Growth Data
 Video starts, Personalized Video choosing
 High Traffic Growth Applications
 Same as above
 Log Processing
 Time-to-market Critical Batch Processing
 Video encoding
 Not Included
 DVD inventory and shipment
 We are a streaming company that also ships DVD
@r39132 - #netflixcloud 9
Cloud Migration Strategy
Examples of Data that can be moved
 Video-centric data
 Critics’ reviews
 Metadata
 User-video-centric data – some of our largest data sets
 User-video queue
 Previously streamed and shipped video history
 Ratings (i.e. a 5-star rating system)
 Video streaming metadata (e.g. streaming bookmarks)
@r39132 - #netflixcloud 10
Cloud Migration Strategy
 High-level Requirements for our Site
 No big-bang migrations
 New functionality needs to launch in the cloud when
possible
 High-level Requirements for our Data
 Data needs to migrate before applications
 Data needs to be shared between applications running in
the cloud and our data center during the transition period
@r39132 - #netflixcloud 12
Cloud Migration Strategy
@r39132 - #netflixcloud 13
Cloud Migration Strategy
 Low-level Requirements for our Data
 Pick a (key-value) data store in the cloud
 Challenges
 Translate RDBMS concepts to KV store concepts
 Work-around Issues specific to the chosen KV store
 Create a bi-directional DC-Cloud data replication
pipeline
@r39132 - #netflixcloud 14
Pick a Data Store in the Cloud
An ideal storage solution should have the following features:
 Hosted
 Managed Distribution Model
 Works in AWS
 AP from CAP
 Handles a majority of use-cases accessing high-growth, high-traffic data
 Specifically, key access by customer id, movie id, or both
@r39132 - #netflixcloud 16
Pick a Data Store in the Cloud
 We picked SimpleDB and S3
 SimpleDB was targeted as the AP equivalent of our RDBMS
databases in our Data Center
 S3 was used for data sets where item or row data
exceeded SimpleDB limits and could be looked up purely
by a single key (i.e. does not require secondary indices and
complex query semantics)
 Video encodes
 Streaming device activity logs (i.e. CLOB, BLOB, etc…)
 Compression of old Rental History
@r39132 - #netflixcloud 17
Technology Overview : SimpleDB
SimpleDB Hash Table Relational Databases
Domain Hash Table Table
Item Entry Row
Item Name Key Mandatory Primary Key
Attribute Part of the Entry Value Column
@r39132 - #netflixcloud 19
Terminology
Technology Overview : SimpleDB
@r39132 - #netflixcloud 20
Soccer Players
Key Value
ab12ocs12v9 First Name = Harold Last Name = Kewell
Nickname = Wizard of
Oz
Teams = Leeds United,
Liverpool, Galatasaray
b24h3b3403b First Name = Pavel Last Name = Nedved
Nickname = Czech
Cannon
Teams = Lazio,
Juventus
cc89c9dc892 First Name = Cristiano Last Name = Ronaldo
Teams = Sporting,
Manchester United,
Real Madrid
SimpleDB’s salient characteristics
• SimpleDB offers a range of consistency options
• SimpleDB domains are sparse and schema-less
• The Key and all Attributes are indexed
• Each item must have a unique Key
• An item contains a set of Attributes
• Each Attribute has a name
• Each Attribute has a set of values
• All data is stored as UTF-8 character strings (i.e. no support for types such as numbers or dates)
Technology Overview : SimpleDB
What does the API look like?
 Manage Domains
 CreateDomain
 DeleteDomain
 ListDomains
 DomainMetaData
 Access Data
 Retrieving Data
 GetAttributes – returns a single item
 Select – returns multiple items using SQL syntax
 Writing Data
 PutAttributes – put single item
 BatchPutAttributes – put multiple items
 Removing Data
 DeleteAttributes – delete single item
 BatchDeleteAttributes – delete multiple items
@r39132 - #netflixcloud 21
Technology Overview : SimpleDB
@r39132 - #netflixcloud 22
 Options available on reads and writes
 Consistent Read
 Read the most recently committed write
 May have lower throughput/higher latency/lower
availability
 Conditional Put/Delete
 i.e. Optimistic Locking
 Useful if you want to build a consistent multi-master data
store – you will still require your own anti-entropy
 We do not use this currently, so we don’t know how it
performs
Translate RDBMS Concepts to Key-Value Store
Concepts
 Relational Databases are known for relations
 First, a quick refresher on Normal forms
@r39132 - #netflixcloud 24
Normalization
NF1 : All occurrences of a record type must contain the same number of
fields -variable repeating fields and groups are not allowed
NF2 : Second normal form is violated when a non-key field is a fact about
a subset of a key
Violated here
Fixed here
@r39132 - #netflixcloud 25
Part Warehouse Quantity Warehouse-
Address
Part Warehouse Quantity Warehouse Warehouse-
Address
Normalization
 Issues
 Wastes Storage
 The warehouse address is repeated for every Part-WH pair
 Update Performance Suffers
 If the address of the warehouse changes, I must update
many Part-WH pairs
 Data inconsistencies possible
 I can update the warehouse address for one Part-WH pair
and miss Parts for the same WH
 Data Loss Possible
 If at some point in time there are no parts, the WH address
will be lost
@r39132 - #netflixcloud 26
Normalization
 RDBMS  KV Store migrations can’t simply accept
denormalization!
 Especially many-to-many and many-to-one entity relationships
 Instead, pick your data set candidates carefully!
 Keep relational data in RDBMS
 Move key-look-ups to KV stores
 Luckily for Netflix, most data is accessed by Customer, Video,
or both : i.e. Key Lookups
@r39132 - #netflixcloud 27
Translate RDBMS Concepts to Key-Value Store
Concepts
 Aside from relations, relational databases typically
offer the following:
 Transactions
 Locks
 Sequences
 Triggers
 Clocks
 A structured query language (i.e. SQL)
 Database server-side coding constructs (i.e. PL/SQL)
 Constraints
@r39132 - #netflixcloud 28
Translate RDBMS Concepts to Key-Value Store
Concepts
 Partial or no SQL support. Loosely-speaking, SimpleDB supports a
subset of SQL
 BEST PRACTICE
 Do GROUP BY and JOIN operations in the application layer
involving smallish data sets
 No relations between domains
 BEST PRACTICE
 Compose relations in the application layer
 No transactions
 BEST PRACTICE
 Use SimpleDB’s Optimistic Concurrency Control API: ConditionalPut
and ConditionalDelete
@r39132 - #netflixcloud 29
Translate RDBMS Concepts to Key-Value Store
Concepts
 No schema - This is non-obvious. A query for a misspelled attribute
name will not fail with an error
 BEST PRACTICE
 Implement a schema validator in a common data access layer
 No sequences
 BEST PRACTICE
 Sequences are often used as primary keys
 In this case, use a naturally occurring unique key
 If no naturally occurring unique key exists, use a UUID
 Sequences are also often used for ordering
 Use a distributed sequence generator
@r39132 - #netflixcloud 30
Translate RDBMS Concepts to Key-Value Store
Concepts
 No clock operations, PL/SQL, Triggers
 BEST PRACTICE
 Do without
 No constraints. Specifically,
 No uniqueness constraints
 No foreign key or referential constraints
 No integrity constraints
 BEST PRACTICE
 Read Repair and Anti-entropy processes using Conditional
Put/Delete
@r39132 - #netflixcloud 31
Work-around Issues specific to the chosen KV
store
 Missing / Strange Functionality
 No back-up and recovery
 No native support for types (e.g. Number, Float, Date, etc…)
 You cannot update one attribute and null out another one for an
item in a single API call
 Mis-cased or misspelled attribute names in operations fail silently.
Why is SimpleDB case-sensitive?
 Neglecting "limit N" returns a subset of information. Why does the
absence of an optional parameter not return all of the data?
 Users need to deal with data set partitioning
 Beware of Nulls
 Poor Performance
@r39132 - #netflixcloud 33
Work-around Issues specific to the chosen KV
store
No Native Types – Sorting, Inequalities Conditions,
etc…
 Since sorting is lexicographical, if you plan on sorting by certain
attributes, then
 zero-pad logically-numeric attributes
 e.g. –
 000000000000000111111  this is bigger
 000000000000000011111
 use Joda time to store logical dates
 e.g. –
 2010-02-10T01:15:32.864Z  this is more recent
 2010-02-10T01:14:42.864Z
@r39132 - #netflixcloud 34
Work-around Issues specific to the chosen KV
store
 Anti-pattern : Avoid the anti-pattern Select SOME_FIELD_1 from
MY_DOMAIN where SOME_FIELD_2 is null as this is a full domain
scan
 Nulls are not indexed in a sparse-table
 BEST PRACTICE
 Instead, replace this check with a (indexed) flag column
called IS_FIELD_2_NULL: Select SOME_FIELD_1 from
MY_DOMAIN where IS_FIELD_2_NULL = 'Y'
 Anti-pattern : When selecting data from a domain and sorting by an
attribute, items missing that attribute will not be returned
 In Oracle, rows with null columns are still returned
 BEST PRACTICE
 Use a flag column as shown previously
@r39132 - #netflixcloud 35
Work-around Issues specific to the chosen KV
store
 BEST PRACTICE : Aim for high index selectivity when you formulate
your select expressions for best performance
 SimpleDB select performance is sensitive to index selectivity
 Index Selectivity
 Definition : # of distinct attribute values in specified attribute /
# of items in domain
 e.g. Good Index Selectivity (i.e. 1 is the best)
 A table having 100 records and one of its indexed column
has 88 distinct values, then the selectivity of this index is
88 / 100= 0.88
 e.g. Bad Index Selectivity
 lf an index on a table of 1000 records had only 5 distinct
values, then the index's selectivity is 5 / 1000 = 0.005
@r39132 - #netflixcloud 36
Work-around Issues specific to the chosen KV
store
Sharding Domains
 There are 2 reasons to shard domains
 You are trying to avoid running into one of the sizing limits
 e.g. 10GB of space or 1 Billion Attributes
 You are trying to scale your writes
 To scale your writes further, use BatchPutAttributes and
BatchDeleteAttributes where possible
@r39132 - #netflixcloud 37
Create a Bi-directional DC-Cloud Data
Replication Pipeline
 Home-grown Data Replication Framework known as IR for Item
Replication
 2 schemes in use currently
 Polls the main table (a.k.a. Simple IR)
 Doesn’t capture deletes but easy to implement
 Polls a journal table that is populated via a trigger on the
main table (a.k.a. Trigger-journaled IR)
 Captures every CRUD, but requires the development
of triggers
@r39132 - #netflixcloud 39
Create a Bi-directional DC-Cloud Data
Replication Pipeline
@r39132 - #netflixcloud 40
Create a Bi-directional DC-Cloud Data
Replication Pipeline
 How often do we poll Oracle?
 Every 5 seconds
 What does the poll query look like?
 select *
from QLOG_0
where LAST_UPDATE_TS > :CHECKPOINT  Get recent
and LAST_UPDATE_TS < :NOW_MINUS_30s  Exclude
most recent
order by LAST_UPDATE_TS  Process in order
@r39132 - #netflixcloud 41
Create a Bi-directional DC-Cloud Data
Replication Pipeline
 Data Replication Challenges & Best Practices
 SimpleDB throttles traffic aggressively via 503 HTTP Response
codes (“Service Unavailable”)
 With Singleton writes, I see 70-120 write TPS/domain
 IR
 Shard domains (i.e. partition data sets) to work-around these limits
 Employs Slow ramp up
 Uses BatchPutAttributes instead of (Singleton) PutAttributes call
 Exercises an exponential bounded-back-off algorithm
 Uses attribute-level replace=false when fork-lifting data
@r39132 - #netflixcloud 42
Create a Bi-directional DC-Cloud Data
Replication Pipeline
@r39132 - #netflixcloud 43
Create a Bi-directional DC-Cloud Data
Replication Pipeline
 Data Replication Challenges & Best Practices
 Implementing Multi-mastering and an Eventually-consistent
Replication Pipeline
 SimpleDB offers optimistic concurrency control in the form of
conditional put (and deletes)
 For our data, it is ok to be “consistent, but not accurate”
 With this relaxation, we do not need to be concerned with
synchronizing logical clocks
 We simply just need to ensure that each conditional put puts a large
strictly increasing value into the “version” column
@r39132 - #netflixcloud 44
Netflix's Transition to High-Availability Storage (QCon SF 2010)
Netflix's Transition to High-Availability Storage (QCon SF 2010)

More Related Content

What's hot

Sprache als Werkzeug: DSLs mit Kotlin (JAX 2020)
Sprache als Werkzeug: DSLs mit Kotlin (JAX 2020)Sprache als Werkzeug: DSLs mit Kotlin (JAX 2020)
Sprache als Werkzeug: DSLs mit Kotlin (JAX 2020)Frank Scheffler
 
Spark r under the hood with Hossein Falaki
Spark r under the hood with Hossein FalakiSpark r under the hood with Hossein Falaki
Spark r under the hood with Hossein FalakiDatabricks
 
How We Scaled Bert To Serve 1+ Billion Daily Requests on CPU
How We Scaled Bert To Serve 1+ Billion Daily Requests on CPUHow We Scaled Bert To Serve 1+ Billion Daily Requests on CPU
How We Scaled Bert To Serve 1+ Billion Daily Requests on CPUDatabricks
 
PelletServer: REST and Semantic Technologies
PelletServer: REST and Semantic TechnologiesPelletServer: REST and Semantic Technologies
PelletServer: REST and Semantic TechnologiesClark & Parsia LLC
 
Stardog 1.1: An Easier, Smarter, Faster RDF Database
Stardog 1.1: An Easier, Smarter, Faster RDF DatabaseStardog 1.1: An Easier, Smarter, Faster RDF Database
Stardog 1.1: An Easier, Smarter, Faster RDF Databasekendallclark
 
Multi Source Data Analysis using Spark and Tellius
Multi Source Data Analysis using Spark and TelliusMulti Source Data Analysis using Spark and Tellius
Multi Source Data Analysis using Spark and Telliusdatamantra
 
Laskar: High-Velocity GraphQL & Lambda-based Software Development Model
Laskar: High-Velocity GraphQL & Lambda-based Software Development ModelLaskar: High-Velocity GraphQL & Lambda-based Software Development Model
Laskar: High-Velocity GraphQL & Lambda-based Software Development ModelGarindra Prahandono
 
Cassandra Summit Sept 2015 - Real Time Advanced Analytics with Spark and Cass...
Cassandra Summit Sept 2015 - Real Time Advanced Analytics with Spark and Cass...Cassandra Summit Sept 2015 - Real Time Advanced Analytics with Spark and Cass...
Cassandra Summit Sept 2015 - Real Time Advanced Analytics with Spark and Cass...Chris Fregly
 
Tracing the Breadcrumbs: Apache Spark Workload Diagnostics
Tracing the Breadcrumbs: Apache Spark Workload DiagnosticsTracing the Breadcrumbs: Apache Spark Workload Diagnostics
Tracing the Breadcrumbs: Apache Spark Workload DiagnosticsDatabricks
 
Deep Dive of ADBMS Migration to Apache Spark—Use Cases Sharing
Deep Dive of ADBMS Migration to Apache Spark—Use Cases SharingDeep Dive of ADBMS Migration to Apache Spark—Use Cases Sharing
Deep Dive of ADBMS Migration to Apache Spark—Use Cases SharingDatabricks
 
When Apache Spark Meets TiDB with Xiaoyu Ma
When Apache Spark Meets TiDB with Xiaoyu MaWhen Apache Spark Meets TiDB with Xiaoyu Ma
When Apache Spark Meets TiDB with Xiaoyu MaDatabricks
 
Building a High-Performance Database with Scala, Akka, and Spark
Building a High-Performance Database with Scala, Akka, and SparkBuilding a High-Performance Database with Scala, Akka, and Spark
Building a High-Performance Database with Scala, Akka, and SparkEvan Chan
 
Advanced Apache Spark Meetup: How Spark Beat Hadoop @ 100 TB Daytona GraySor...
Advanced Apache Spark Meetup:  How Spark Beat Hadoop @ 100 TB Daytona GraySor...Advanced Apache Spark Meetup:  How Spark Beat Hadoop @ 100 TB Daytona GraySor...
Advanced Apache Spark Meetup: How Spark Beat Hadoop @ 100 TB Daytona GraySor...Chris Fregly
 
Paris Spark Meetup Oct 26, 2015 - Spark After Dark v1.5 - Best of Advanced Ap...
Paris Spark Meetup Oct 26, 2015 - Spark After Dark v1.5 - Best of Advanced Ap...Paris Spark Meetup Oct 26, 2015 - Spark After Dark v1.5 - Best of Advanced Ap...
Paris Spark Meetup Oct 26, 2015 - Spark After Dark v1.5 - Best of Advanced Ap...Chris Fregly
 
Interactive workflow management using Azkaban
Interactive workflow management using AzkabanInteractive workflow management using Azkaban
Interactive workflow management using Azkabandatamantra
 
Memory Optimization and Reliable Metrics in ML Pipelines at Netflix
Memory Optimization and Reliable Metrics in ML Pipelines at NetflixMemory Optimization and Reliable Metrics in ML Pipelines at Netflix
Memory Optimization and Reliable Metrics in ML Pipelines at NetflixDatabricks
 
Improving Mobile Payments With Real time Spark
Improving Mobile Payments With Real time SparkImproving Mobile Payments With Real time Spark
Improving Mobile Payments With Real time Sparkdatamantra
 

What's hot (18)

Sprache als Werkzeug: DSLs mit Kotlin (JAX 2020)
Sprache als Werkzeug: DSLs mit Kotlin (JAX 2020)Sprache als Werkzeug: DSLs mit Kotlin (JAX 2020)
Sprache als Werkzeug: DSLs mit Kotlin (JAX 2020)
 
Spark r under the hood with Hossein Falaki
Spark r under the hood with Hossein FalakiSpark r under the hood with Hossein Falaki
Spark r under the hood with Hossein Falaki
 
How We Scaled Bert To Serve 1+ Billion Daily Requests on CPU
How We Scaled Bert To Serve 1+ Billion Daily Requests on CPUHow We Scaled Bert To Serve 1+ Billion Daily Requests on CPU
How We Scaled Bert To Serve 1+ Billion Daily Requests on CPU
 
PelletServer: REST and Semantic Technologies
PelletServer: REST and Semantic TechnologiesPelletServer: REST and Semantic Technologies
PelletServer: REST and Semantic Technologies
 
Stardog 1.1: An Easier, Smarter, Faster RDF Database
Stardog 1.1: An Easier, Smarter, Faster RDF DatabaseStardog 1.1: An Easier, Smarter, Faster RDF Database
Stardog 1.1: An Easier, Smarter, Faster RDF Database
 
Multi Source Data Analysis using Spark and Tellius
Multi Source Data Analysis using Spark and TelliusMulti Source Data Analysis using Spark and Tellius
Multi Source Data Analysis using Spark and Tellius
 
Laskar: High-Velocity GraphQL & Lambda-based Software Development Model
Laskar: High-Velocity GraphQL & Lambda-based Software Development ModelLaskar: High-Velocity GraphQL & Lambda-based Software Development Model
Laskar: High-Velocity GraphQL & Lambda-based Software Development Model
 
Cassandra Summit Sept 2015 - Real Time Advanced Analytics with Spark and Cass...
Cassandra Summit Sept 2015 - Real Time Advanced Analytics with Spark and Cass...Cassandra Summit Sept 2015 - Real Time Advanced Analytics with Spark and Cass...
Cassandra Summit Sept 2015 - Real Time Advanced Analytics with Spark and Cass...
 
Tracing the Breadcrumbs: Apache Spark Workload Diagnostics
Tracing the Breadcrumbs: Apache Spark Workload DiagnosticsTracing the Breadcrumbs: Apache Spark Workload Diagnostics
Tracing the Breadcrumbs: Apache Spark Workload Diagnostics
 
Deep Dive of ADBMS Migration to Apache Spark—Use Cases Sharing
Deep Dive of ADBMS Migration to Apache Spark—Use Cases SharingDeep Dive of ADBMS Migration to Apache Spark—Use Cases Sharing
Deep Dive of ADBMS Migration to Apache Spark—Use Cases Sharing
 
When Apache Spark Meets TiDB with Xiaoyu Ma
When Apache Spark Meets TiDB with Xiaoyu MaWhen Apache Spark Meets TiDB with Xiaoyu Ma
When Apache Spark Meets TiDB with Xiaoyu Ma
 
introduction to ldap
introduction to ldapintroduction to ldap
introduction to ldap
 
Building a High-Performance Database with Scala, Akka, and Spark
Building a High-Performance Database with Scala, Akka, and SparkBuilding a High-Performance Database with Scala, Akka, and Spark
Building a High-Performance Database with Scala, Akka, and Spark
 
Advanced Apache Spark Meetup: How Spark Beat Hadoop @ 100 TB Daytona GraySor...
Advanced Apache Spark Meetup:  How Spark Beat Hadoop @ 100 TB Daytona GraySor...Advanced Apache Spark Meetup:  How Spark Beat Hadoop @ 100 TB Daytona GraySor...
Advanced Apache Spark Meetup: How Spark Beat Hadoop @ 100 TB Daytona GraySor...
 
Paris Spark Meetup Oct 26, 2015 - Spark After Dark v1.5 - Best of Advanced Ap...
Paris Spark Meetup Oct 26, 2015 - Spark After Dark v1.5 - Best of Advanced Ap...Paris Spark Meetup Oct 26, 2015 - Spark After Dark v1.5 - Best of Advanced Ap...
Paris Spark Meetup Oct 26, 2015 - Spark After Dark v1.5 - Best of Advanced Ap...
 
Interactive workflow management using Azkaban
Interactive workflow management using AzkabanInteractive workflow management using Azkaban
Interactive workflow management using Azkaban
 
Memory Optimization and Reliable Metrics in ML Pipelines at Netflix
Memory Optimization and Reliable Metrics in ML Pipelines at NetflixMemory Optimization and Reliable Metrics in ML Pipelines at Netflix
Memory Optimization and Reliable Metrics in ML Pipelines at Netflix
 
Improving Mobile Payments With Real time Spark
Improving Mobile Payments With Real time SparkImproving Mobile Payments With Real time Spark
Improving Mobile Payments With Real time Spark
 

Similar to Netflix's Transition to High-Availability Storage (QCon SF 2010)

Svccg nosql 2011_v4
Svccg nosql 2011_v4Svccg nosql 2011_v4
Svccg nosql 2011_v4Sid Anand
 
Linked in nosql_atnetflix_2012_v1
Linked in nosql_atnetflix_2012_v1Linked in nosql_atnetflix_2012_v1
Linked in nosql_atnetflix_2012_v1Sid Anand
 
Big Data, Fast Data @ PayPal (YOW 2018)
Big Data, Fast Data @ PayPal (YOW 2018)Big Data, Fast Data @ PayPal (YOW 2018)
Big Data, Fast Data @ PayPal (YOW 2018)Sid Anand
 
OSCON Data 2011 -- NoSQL @ Netflix, Part 2
OSCON Data 2011 -- NoSQL @ Netflix, Part 2OSCON Data 2011 -- NoSQL @ Netflix, Part 2
OSCON Data 2011 -- NoSQL @ Netflix, Part 2Sid Anand
 
Lessons from Building Large-Scale, Multi-Cloud, SaaS Software at Databricks
Lessons from Building Large-Scale, Multi-Cloud, SaaS Software at DatabricksLessons from Building Large-Scale, Multi-Cloud, SaaS Software at Databricks
Lessons from Building Large-Scale, Multi-Cloud, SaaS Software at DatabricksDatabricks
 
Framing the Argument: How to Scale Faster with NoSQL
Framing the Argument: How to Scale Faster with NoSQLFraming the Argument: How to Scale Faster with NoSQL
Framing the Argument: How to Scale Faster with NoSQLInside Analysis
 
Hp vertica certification guide
Hp vertica certification guideHp vertica certification guide
Hp vertica certification guideneinamat
 
Hpverticacertificationguide 150322232921-conversion-gate01
Hpverticacertificationguide 150322232921-conversion-gate01Hpverticacertificationguide 150322232921-conversion-gate01
Hpverticacertificationguide 150322232921-conversion-gate01Anvith S. Upadhyaya
 
Scalable database, Scalable language @ JDC 2013
Scalable database, Scalable language @ JDC 2013Scalable database, Scalable language @ JDC 2013
Scalable database, Scalable language @ JDC 2013Maciek Próchniak
 
SQL in the Hybrid World
SQL in the Hybrid WorldSQL in the Hybrid World
SQL in the Hybrid WorldTanel Poder
 
Deploying your Data Warehouse on AWS
Deploying your Data Warehouse on AWSDeploying your Data Warehouse on AWS
Deploying your Data Warehouse on AWSAmazon Web Services
 
Dynamic DDL: Adding structure to streaming IoT data on the fly
Dynamic DDL: Adding structure to streaming IoT data on the flyDynamic DDL: Adding structure to streaming IoT data on the fly
Dynamic DDL: Adding structure to streaming IoT data on the flyDataWorks Summit
 
RDBMS to NoSQL: Practical Advice from Successful Migrations
RDBMS to NoSQL: Practical Advice from Successful MigrationsRDBMS to NoSQL: Practical Advice from Successful Migrations
RDBMS to NoSQL: Practical Advice from Successful MigrationsScyllaDB
 
Building a modern Application with DataFrames
Building a modern Application with DataFramesBuilding a modern Application with DataFrames
Building a modern Application with DataFramesDatabricks
 
Building a modern Application with DataFrames
Building a modern Application with DataFramesBuilding a modern Application with DataFrames
Building a modern Application with DataFramesSpark Summit
 
Atom The Redis Streams-Powered Microservices SDK: Dan Pipemazo
Atom The Redis Streams-Powered Microservices SDK: Dan PipemazoAtom The Redis Streams-Powered Microservices SDK: Dan Pipemazo
Atom The Redis Streams-Powered Microservices SDK: Dan PipemazoRedis Labs
 
UKOUG Tech15 - Deploying Oracle 12c Cloud Control in Maximum Availability Arc...
UKOUG Tech15 - Deploying Oracle 12c Cloud Control in Maximum Availability Arc...UKOUG Tech15 - Deploying Oracle 12c Cloud Control in Maximum Availability Arc...
UKOUG Tech15 - Deploying Oracle 12c Cloud Control in Maximum Availability Arc...Zahid Anwar (OCM)
 
How to use Parquet as a Sasis for ETL and Analytics
How to use Parquet as a Sasis for ETL and AnalyticsHow to use Parquet as a Sasis for ETL and Analytics
How to use Parquet as a Sasis for ETL and AnalyticsDataWorks Summit
 
Healthcare Claim Reimbursement using Apache Spark
Healthcare Claim Reimbursement using Apache SparkHealthcare Claim Reimbursement using Apache Spark
Healthcare Claim Reimbursement using Apache SparkDatabricks
 
Jump Start on Apache Spark 2.2 with Databricks
Jump Start on Apache Spark 2.2 with DatabricksJump Start on Apache Spark 2.2 with Databricks
Jump Start on Apache Spark 2.2 with DatabricksAnyscale
 

Similar to Netflix's Transition to High-Availability Storage (QCon SF 2010) (20)

Svccg nosql 2011_v4
Svccg nosql 2011_v4Svccg nosql 2011_v4
Svccg nosql 2011_v4
 
Linked in nosql_atnetflix_2012_v1
Linked in nosql_atnetflix_2012_v1Linked in nosql_atnetflix_2012_v1
Linked in nosql_atnetflix_2012_v1
 
Big Data, Fast Data @ PayPal (YOW 2018)
Big Data, Fast Data @ PayPal (YOW 2018)Big Data, Fast Data @ PayPal (YOW 2018)
Big Data, Fast Data @ PayPal (YOW 2018)
 
OSCON Data 2011 -- NoSQL @ Netflix, Part 2
OSCON Data 2011 -- NoSQL @ Netflix, Part 2OSCON Data 2011 -- NoSQL @ Netflix, Part 2
OSCON Data 2011 -- NoSQL @ Netflix, Part 2
 
Lessons from Building Large-Scale, Multi-Cloud, SaaS Software at Databricks
Lessons from Building Large-Scale, Multi-Cloud, SaaS Software at DatabricksLessons from Building Large-Scale, Multi-Cloud, SaaS Software at Databricks
Lessons from Building Large-Scale, Multi-Cloud, SaaS Software at Databricks
 
Framing the Argument: How to Scale Faster with NoSQL
Framing the Argument: How to Scale Faster with NoSQLFraming the Argument: How to Scale Faster with NoSQL
Framing the Argument: How to Scale Faster with NoSQL
 
Hp vertica certification guide
Hp vertica certification guideHp vertica certification guide
Hp vertica certification guide
 
Hpverticacertificationguide 150322232921-conversion-gate01
Hpverticacertificationguide 150322232921-conversion-gate01Hpverticacertificationguide 150322232921-conversion-gate01
Hpverticacertificationguide 150322232921-conversion-gate01
 
Scalable database, Scalable language @ JDC 2013
Scalable database, Scalable language @ JDC 2013Scalable database, Scalable language @ JDC 2013
Scalable database, Scalable language @ JDC 2013
 
SQL in the Hybrid World
SQL in the Hybrid WorldSQL in the Hybrid World
SQL in the Hybrid World
 
Deploying your Data Warehouse on AWS
Deploying your Data Warehouse on AWSDeploying your Data Warehouse on AWS
Deploying your Data Warehouse on AWS
 
Dynamic DDL: Adding structure to streaming IoT data on the fly
Dynamic DDL: Adding structure to streaming IoT data on the flyDynamic DDL: Adding structure to streaming IoT data on the fly
Dynamic DDL: Adding structure to streaming IoT data on the fly
 
RDBMS to NoSQL: Practical Advice from Successful Migrations
RDBMS to NoSQL: Practical Advice from Successful MigrationsRDBMS to NoSQL: Practical Advice from Successful Migrations
RDBMS to NoSQL: Practical Advice from Successful Migrations
 
Building a modern Application with DataFrames
Building a modern Application with DataFramesBuilding a modern Application with DataFrames
Building a modern Application with DataFrames
 
Building a modern Application with DataFrames
Building a modern Application with DataFramesBuilding a modern Application with DataFrames
Building a modern Application with DataFrames
 
Atom The Redis Streams-Powered Microservices SDK: Dan Pipemazo
Atom The Redis Streams-Powered Microservices SDK: Dan PipemazoAtom The Redis Streams-Powered Microservices SDK: Dan Pipemazo
Atom The Redis Streams-Powered Microservices SDK: Dan Pipemazo
 
UKOUG Tech15 - Deploying Oracle 12c Cloud Control in Maximum Availability Arc...
UKOUG Tech15 - Deploying Oracle 12c Cloud Control in Maximum Availability Arc...UKOUG Tech15 - Deploying Oracle 12c Cloud Control in Maximum Availability Arc...
UKOUG Tech15 - Deploying Oracle 12c Cloud Control in Maximum Availability Arc...
 
How to use Parquet as a Sasis for ETL and Analytics
How to use Parquet as a Sasis for ETL and AnalyticsHow to use Parquet as a Sasis for ETL and Analytics
How to use Parquet as a Sasis for ETL and Analytics
 
Healthcare Claim Reimbursement using Apache Spark
Healthcare Claim Reimbursement using Apache SparkHealthcare Claim Reimbursement using Apache Spark
Healthcare Claim Reimbursement using Apache Spark
 
Jump Start on Apache Spark 2.2 with Databricks
Jump Start on Apache Spark 2.2 with DatabricksJump Start on Apache Spark 2.2 with Databricks
Jump Start on Apache Spark 2.2 with Databricks
 

More from Sid Anand

Building High Fidelity Data Streams (QCon London 2023)
Building High Fidelity Data Streams (QCon London 2023)Building High Fidelity Data Streams (QCon London 2023)
Building High Fidelity Data Streams (QCon London 2023)Sid Anand
 
Low Latency Fraud Detection & Prevention
Low Latency Fraud Detection & PreventionLow Latency Fraud Detection & Prevention
Low Latency Fraud Detection & PreventionSid Anand
 
YOW! Data Keynote (2021)
YOW! Data Keynote (2021)YOW! Data Keynote (2021)
YOW! Data Keynote (2021)Sid Anand
 
Building Better Data Pipelines using Apache Airflow
Building Better Data Pipelines using Apache AirflowBuilding Better Data Pipelines using Apache Airflow
Building Better Data Pipelines using Apache AirflowSid Anand
 
Cloud Native Predictive Data Pipelines (micro talk)
Cloud Native Predictive Data Pipelines (micro talk)Cloud Native Predictive Data Pipelines (micro talk)
Cloud Native Predictive Data Pipelines (micro talk)Sid Anand
 
Cloud Native Data Pipelines (GoTo Chicago 2017)
Cloud Native Data Pipelines (GoTo Chicago 2017)Cloud Native Data Pipelines (GoTo Chicago 2017)
Cloud Native Data Pipelines (GoTo Chicago 2017)Sid Anand
 
Cloud Native Data Pipelines (DataEngConf SF 2017)
Cloud Native Data Pipelines (DataEngConf SF 2017)Cloud Native Data Pipelines (DataEngConf SF 2017)
Cloud Native Data Pipelines (DataEngConf SF 2017)Sid Anand
 
Cloud Native Data Pipelines (in Eng & Japanese) - QCon Tokyo
Cloud Native Data Pipelines (in Eng & Japanese)  - QCon TokyoCloud Native Data Pipelines (in Eng & Japanese)  - QCon Tokyo
Cloud Native Data Pipelines (in Eng & Japanese) - QCon TokyoSid Anand
 
Cloud Native Data Pipelines (QCon Shanghai & Tokyo 2016)
Cloud Native Data Pipelines (QCon Shanghai & Tokyo 2016)Cloud Native Data Pipelines (QCon Shanghai & Tokyo 2016)
Cloud Native Data Pipelines (QCon Shanghai & Tokyo 2016)Sid Anand
 
Introduction to Apache Airflow - Data Day Seattle 2016
Introduction to Apache Airflow - Data Day Seattle 2016Introduction to Apache Airflow - Data Day Seattle 2016
Introduction to Apache Airflow - Data Day Seattle 2016Sid Anand
 
Airflow @ Agari
Airflow @ Agari Airflow @ Agari
Airflow @ Agari Sid Anand
 
Resilient Predictive Data Pipelines (GOTO Chicago 2016)
Resilient Predictive Data Pipelines (GOTO Chicago 2016)Resilient Predictive Data Pipelines (GOTO Chicago 2016)
Resilient Predictive Data Pipelines (GOTO Chicago 2016)Sid Anand
 
Resilient Predictive Data Pipelines (QCon London 2016)
Resilient Predictive Data Pipelines (QCon London 2016)Resilient Predictive Data Pipelines (QCon London 2016)
Resilient Predictive Data Pipelines (QCon London 2016)Sid Anand
 
Software Developer and Architecture @ LinkedIn (QCon SF 2014)
Software Developer and Architecture @ LinkedIn (QCon SF 2014)Software Developer and Architecture @ LinkedIn (QCon SF 2014)
Software Developer and Architecture @ LinkedIn (QCon SF 2014)Sid Anand
 
LinkedIn's Segmentation & Targeting Platform (Hadoop Summit 2013)
LinkedIn's Segmentation & Targeting Platform (Hadoop Summit 2013)LinkedIn's Segmentation & Targeting Platform (Hadoop Summit 2013)
LinkedIn's Segmentation & Targeting Platform (Hadoop Summit 2013)Sid Anand
 
Building a Modern Website for Scale (QCon NY 2013)
Building a Modern Website for Scale (QCon NY 2013)Building a Modern Website for Scale (QCon NY 2013)
Building a Modern Website for Scale (QCon NY 2013)Sid Anand
 
Hands On with Maven
Hands On with MavenHands On with Maven
Hands On with MavenSid Anand
 
Learning git
Learning gitLearning git
Learning gitSid Anand
 
LinkedIn Data Infrastructure Slides (Version 2)
LinkedIn Data Infrastructure Slides (Version 2)LinkedIn Data Infrastructure Slides (Version 2)
LinkedIn Data Infrastructure Slides (Version 2)Sid Anand
 
LinkedIn Data Infrastructure (QCon London 2012)
LinkedIn Data Infrastructure (QCon London 2012)LinkedIn Data Infrastructure (QCon London 2012)
LinkedIn Data Infrastructure (QCon London 2012)Sid Anand
 

More from Sid Anand (20)

Building High Fidelity Data Streams (QCon London 2023)
Building High Fidelity Data Streams (QCon London 2023)Building High Fidelity Data Streams (QCon London 2023)
Building High Fidelity Data Streams (QCon London 2023)
 
Low Latency Fraud Detection & Prevention
Low Latency Fraud Detection & PreventionLow Latency Fraud Detection & Prevention
Low Latency Fraud Detection & Prevention
 
YOW! Data Keynote (2021)
YOW! Data Keynote (2021)YOW! Data Keynote (2021)
YOW! Data Keynote (2021)
 
Building Better Data Pipelines using Apache Airflow
Building Better Data Pipelines using Apache AirflowBuilding Better Data Pipelines using Apache Airflow
Building Better Data Pipelines using Apache Airflow
 
Cloud Native Predictive Data Pipelines (micro talk)
Cloud Native Predictive Data Pipelines (micro talk)Cloud Native Predictive Data Pipelines (micro talk)
Cloud Native Predictive Data Pipelines (micro talk)
 
Cloud Native Data Pipelines (GoTo Chicago 2017)
Cloud Native Data Pipelines (GoTo Chicago 2017)Cloud Native Data Pipelines (GoTo Chicago 2017)
Cloud Native Data Pipelines (GoTo Chicago 2017)
 
Cloud Native Data Pipelines (DataEngConf SF 2017)
Cloud Native Data Pipelines (DataEngConf SF 2017)Cloud Native Data Pipelines (DataEngConf SF 2017)
Cloud Native Data Pipelines (DataEngConf SF 2017)
 
Cloud Native Data Pipelines (in Eng & Japanese) - QCon Tokyo
Cloud Native Data Pipelines (in Eng & Japanese)  - QCon TokyoCloud Native Data Pipelines (in Eng & Japanese)  - QCon Tokyo
Cloud Native Data Pipelines (in Eng & Japanese) - QCon Tokyo
 
Cloud Native Data Pipelines (QCon Shanghai & Tokyo 2016)
Cloud Native Data Pipelines (QCon Shanghai & Tokyo 2016)Cloud Native Data Pipelines (QCon Shanghai & Tokyo 2016)
Cloud Native Data Pipelines (QCon Shanghai & Tokyo 2016)
 
Introduction to Apache Airflow - Data Day Seattle 2016
Introduction to Apache Airflow - Data Day Seattle 2016Introduction to Apache Airflow - Data Day Seattle 2016
Introduction to Apache Airflow - Data Day Seattle 2016
 
Airflow @ Agari
Airflow @ Agari Airflow @ Agari
Airflow @ Agari
 
Resilient Predictive Data Pipelines (GOTO Chicago 2016)
Resilient Predictive Data Pipelines (GOTO Chicago 2016)Resilient Predictive Data Pipelines (GOTO Chicago 2016)
Resilient Predictive Data Pipelines (GOTO Chicago 2016)
 
Resilient Predictive Data Pipelines (QCon London 2016)
Resilient Predictive Data Pipelines (QCon London 2016)Resilient Predictive Data Pipelines (QCon London 2016)
Resilient Predictive Data Pipelines (QCon London 2016)
 
Software Developer and Architecture @ LinkedIn (QCon SF 2014)
Software Developer and Architecture @ LinkedIn (QCon SF 2014)Software Developer and Architecture @ LinkedIn (QCon SF 2014)
Software Developer and Architecture @ LinkedIn (QCon SF 2014)
 
LinkedIn's Segmentation & Targeting Platform (Hadoop Summit 2013)
LinkedIn's Segmentation & Targeting Platform (Hadoop Summit 2013)LinkedIn's Segmentation & Targeting Platform (Hadoop Summit 2013)
LinkedIn's Segmentation & Targeting Platform (Hadoop Summit 2013)
 
Building a Modern Website for Scale (QCon NY 2013)
Building a Modern Website for Scale (QCon NY 2013)Building a Modern Website for Scale (QCon NY 2013)
Building a Modern Website for Scale (QCon NY 2013)
 
Hands On with Maven
Hands On with MavenHands On with Maven
Hands On with Maven
 
Learning git
Learning gitLearning git
Learning git
 
LinkedIn Data Infrastructure Slides (Version 2)
LinkedIn Data Infrastructure Slides (Version 2)LinkedIn Data Infrastructure Slides (Version 2)
LinkedIn Data Infrastructure Slides (Version 2)
 
LinkedIn Data Infrastructure (QCon London 2012)
LinkedIn Data Infrastructure (QCon London 2012)LinkedIn Data Infrastructure (QCon London 2012)
LinkedIn Data Infrastructure (QCon London 2012)
 

Recently uploaded

What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
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
 
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
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"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
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
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
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
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
 

Recently uploaded (20)

What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
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
 
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
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"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
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
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
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
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
 

Netflix's Transition to High-Availability Storage (QCon SF 2010)

  • 1.
  • 2. Coordinates Twitter @r39132 #netflixcloud Blog http://practicalcloudcomputing.com Linked In http://www.linkedin.com/in/siddharthanand 2@r39132 - #netflixcloud
  • 3. Why Are You Here? ”What I need is an exact list of specific unknown problems we might encounter." -- anonymous @r39132 - #netflixcloud 3
  • 4.
  • 5. Motivation  Circa late 2008, Netflix had a single data center  Single-point-of-failure (a.k.a. SPOF)  Approaching limits on cooling, power, space, traffic capacity  Alternatives  Build more data centers  Outsource the majority of our capacity planning and scale out @r39132 - #netflixcloud 5
  • 6. Motivation  Winner : Outsource the majority of our capacity planning and scale out  Leverage a leading Infrastructure-as-a-service provider  Amazon Web Services  Footnote : As it has taken us a while (i.e. ~2+ years) to realize our vision of running on the cloud, we needed a interim solution to handle growth  We did build a second data center along the way  We did outgrow it 6@r39132 - #netflixcloud
  • 7.
  • 8. Cloud Migration Strategy  Components  Applications and Software Infrastructure  Data  Migration Considerations  Security  PII and PCI DSS stays in our DC, rest can go to the cloud  Scalability and Availability for Business Success @r39132 - #netflixcloud 8
  • 9. Cloud Migration Strategy  Scalability and Availability for Business Success  High Growth or High Traffic Growth Data  Video starts, Personalized Video choosing  High Traffic Growth Applications  Same as above  Log Processing  Time-to-market Critical Batch Processing  Video encoding  Not Included  DVD inventory and shipment  We are a streaming company that also ships DVD @r39132 - #netflixcloud 9
  • 10. Cloud Migration Strategy Examples of Data that can be moved  Video-centric data  Critics’ reviews  Metadata  User-video-centric data – some of our largest data sets  User-video queue  Previously streamed and shipped video history  Ratings (i.e. a 5-star rating system)  Video streaming metadata (e.g. streaming bookmarks) @r39132 - #netflixcloud 10
  • 11.
  • 12. Cloud Migration Strategy  High-level Requirements for our Site  No big-bang migrations  New functionality needs to launch in the cloud when possible  High-level Requirements for our Data  Data needs to migrate before applications  Data needs to be shared between applications running in the cloud and our data center during the transition period @r39132 - #netflixcloud 12
  • 13. Cloud Migration Strategy @r39132 - #netflixcloud 13
  • 14. Cloud Migration Strategy  Low-level Requirements for our Data  Pick a (key-value) data store in the cloud  Challenges  Translate RDBMS concepts to KV store concepts  Work-around Issues specific to the chosen KV store  Create a bi-directional DC-Cloud data replication pipeline @r39132 - #netflixcloud 14
  • 15.
  • 16. Pick a Data Store in the Cloud An ideal storage solution should have the following features:  Hosted  Managed Distribution Model  Works in AWS  AP from CAP  Handles a majority of use-cases accessing high-growth, high-traffic data  Specifically, key access by customer id, movie id, or both @r39132 - #netflixcloud 16
  • 17. Pick a Data Store in the Cloud  We picked SimpleDB and S3  SimpleDB was targeted as the AP equivalent of our RDBMS databases in our Data Center  S3 was used for data sets where item or row data exceeded SimpleDB limits and could be looked up purely by a single key (i.e. does not require secondary indices and complex query semantics)  Video encodes  Streaming device activity logs (i.e. CLOB, BLOB, etc…)  Compression of old Rental History @r39132 - #netflixcloud 17
  • 18.
  • 19. Technology Overview : SimpleDB SimpleDB Hash Table Relational Databases Domain Hash Table Table Item Entry Row Item Name Key Mandatory Primary Key Attribute Part of the Entry Value Column @r39132 - #netflixcloud 19 Terminology
  • 20. Technology Overview : SimpleDB @r39132 - #netflixcloud 20 Soccer Players Key Value ab12ocs12v9 First Name = Harold Last Name = Kewell Nickname = Wizard of Oz Teams = Leeds United, Liverpool, Galatasaray b24h3b3403b First Name = Pavel Last Name = Nedved Nickname = Czech Cannon Teams = Lazio, Juventus cc89c9dc892 First Name = Cristiano Last Name = Ronaldo Teams = Sporting, Manchester United, Real Madrid SimpleDB’s salient characteristics • SimpleDB offers a range of consistency options • SimpleDB domains are sparse and schema-less • The Key and all Attributes are indexed • Each item must have a unique Key • An item contains a set of Attributes • Each Attribute has a name • Each Attribute has a set of values • All data is stored as UTF-8 character strings (i.e. no support for types such as numbers or dates)
  • 21. Technology Overview : SimpleDB What does the API look like?  Manage Domains  CreateDomain  DeleteDomain  ListDomains  DomainMetaData  Access Data  Retrieving Data  GetAttributes – returns a single item  Select – returns multiple items using SQL syntax  Writing Data  PutAttributes – put single item  BatchPutAttributes – put multiple items  Removing Data  DeleteAttributes – delete single item  BatchDeleteAttributes – delete multiple items @r39132 - #netflixcloud 21
  • 22. Technology Overview : SimpleDB @r39132 - #netflixcloud 22  Options available on reads and writes  Consistent Read  Read the most recently committed write  May have lower throughput/higher latency/lower availability  Conditional Put/Delete  i.e. Optimistic Locking  Useful if you want to build a consistent multi-master data store – you will still require your own anti-entropy  We do not use this currently, so we don’t know how it performs
  • 23.
  • 24. Translate RDBMS Concepts to Key-Value Store Concepts  Relational Databases are known for relations  First, a quick refresher on Normal forms @r39132 - #netflixcloud 24
  • 25. Normalization NF1 : All occurrences of a record type must contain the same number of fields -variable repeating fields and groups are not allowed NF2 : Second normal form is violated when a non-key field is a fact about a subset of a key Violated here Fixed here @r39132 - #netflixcloud 25 Part Warehouse Quantity Warehouse- Address Part Warehouse Quantity Warehouse Warehouse- Address
  • 26. Normalization  Issues  Wastes Storage  The warehouse address is repeated for every Part-WH pair  Update Performance Suffers  If the address of the warehouse changes, I must update many Part-WH pairs  Data inconsistencies possible  I can update the warehouse address for one Part-WH pair and miss Parts for the same WH  Data Loss Possible  If at some point in time there are no parts, the WH address will be lost @r39132 - #netflixcloud 26
  • 27. Normalization  RDBMS  KV Store migrations can’t simply accept denormalization!  Especially many-to-many and many-to-one entity relationships  Instead, pick your data set candidates carefully!  Keep relational data in RDBMS  Move key-look-ups to KV stores  Luckily for Netflix, most data is accessed by Customer, Video, or both : i.e. Key Lookups @r39132 - #netflixcloud 27
  • 28. Translate RDBMS Concepts to Key-Value Store Concepts  Aside from relations, relational databases typically offer the following:  Transactions  Locks  Sequences  Triggers  Clocks  A structured query language (i.e. SQL)  Database server-side coding constructs (i.e. PL/SQL)  Constraints @r39132 - #netflixcloud 28
  • 29. Translate RDBMS Concepts to Key-Value Store Concepts  Partial or no SQL support. Loosely-speaking, SimpleDB supports a subset of SQL  BEST PRACTICE  Do GROUP BY and JOIN operations in the application layer involving smallish data sets  No relations between domains  BEST PRACTICE  Compose relations in the application layer  No transactions  BEST PRACTICE  Use SimpleDB’s Optimistic Concurrency Control API: ConditionalPut and ConditionalDelete @r39132 - #netflixcloud 29
  • 30. Translate RDBMS Concepts to Key-Value Store Concepts  No schema - This is non-obvious. A query for a misspelled attribute name will not fail with an error  BEST PRACTICE  Implement a schema validator in a common data access layer  No sequences  BEST PRACTICE  Sequences are often used as primary keys  In this case, use a naturally occurring unique key  If no naturally occurring unique key exists, use a UUID  Sequences are also often used for ordering  Use a distributed sequence generator @r39132 - #netflixcloud 30
  • 31. Translate RDBMS Concepts to Key-Value Store Concepts  No clock operations, PL/SQL, Triggers  BEST PRACTICE  Do without  No constraints. Specifically,  No uniqueness constraints  No foreign key or referential constraints  No integrity constraints  BEST PRACTICE  Read Repair and Anti-entropy processes using Conditional Put/Delete @r39132 - #netflixcloud 31
  • 32.
  • 33. Work-around Issues specific to the chosen KV store  Missing / Strange Functionality  No back-up and recovery  No native support for types (e.g. Number, Float, Date, etc…)  You cannot update one attribute and null out another one for an item in a single API call  Mis-cased or misspelled attribute names in operations fail silently. Why is SimpleDB case-sensitive?  Neglecting "limit N" returns a subset of information. Why does the absence of an optional parameter not return all of the data?  Users need to deal with data set partitioning  Beware of Nulls  Poor Performance @r39132 - #netflixcloud 33
  • 34. Work-around Issues specific to the chosen KV store No Native Types – Sorting, Inequalities Conditions, etc…  Since sorting is lexicographical, if you plan on sorting by certain attributes, then  zero-pad logically-numeric attributes  e.g. –  000000000000000111111  this is bigger  000000000000000011111  use Joda time to store logical dates  e.g. –  2010-02-10T01:15:32.864Z  this is more recent  2010-02-10T01:14:42.864Z @r39132 - #netflixcloud 34
  • 35. Work-around Issues specific to the chosen KV store  Anti-pattern : Avoid the anti-pattern Select SOME_FIELD_1 from MY_DOMAIN where SOME_FIELD_2 is null as this is a full domain scan  Nulls are not indexed in a sparse-table  BEST PRACTICE  Instead, replace this check with a (indexed) flag column called IS_FIELD_2_NULL: Select SOME_FIELD_1 from MY_DOMAIN where IS_FIELD_2_NULL = 'Y'  Anti-pattern : When selecting data from a domain and sorting by an attribute, items missing that attribute will not be returned  In Oracle, rows with null columns are still returned  BEST PRACTICE  Use a flag column as shown previously @r39132 - #netflixcloud 35
  • 36. Work-around Issues specific to the chosen KV store  BEST PRACTICE : Aim for high index selectivity when you formulate your select expressions for best performance  SimpleDB select performance is sensitive to index selectivity  Index Selectivity  Definition : # of distinct attribute values in specified attribute / # of items in domain  e.g. Good Index Selectivity (i.e. 1 is the best)  A table having 100 records and one of its indexed column has 88 distinct values, then the selectivity of this index is 88 / 100= 0.88  e.g. Bad Index Selectivity  lf an index on a table of 1000 records had only 5 distinct values, then the index's selectivity is 5 / 1000 = 0.005 @r39132 - #netflixcloud 36
  • 37. Work-around Issues specific to the chosen KV store Sharding Domains  There are 2 reasons to shard domains  You are trying to avoid running into one of the sizing limits  e.g. 10GB of space or 1 Billion Attributes  You are trying to scale your writes  To scale your writes further, use BatchPutAttributes and BatchDeleteAttributes where possible @r39132 - #netflixcloud 37
  • 38.
  • 39. Create a Bi-directional DC-Cloud Data Replication Pipeline  Home-grown Data Replication Framework known as IR for Item Replication  2 schemes in use currently  Polls the main table (a.k.a. Simple IR)  Doesn’t capture deletes but easy to implement  Polls a journal table that is populated via a trigger on the main table (a.k.a. Trigger-journaled IR)  Captures every CRUD, but requires the development of triggers @r39132 - #netflixcloud 39
  • 40. Create a Bi-directional DC-Cloud Data Replication Pipeline @r39132 - #netflixcloud 40
  • 41. Create a Bi-directional DC-Cloud Data Replication Pipeline  How often do we poll Oracle?  Every 5 seconds  What does the poll query look like?  select * from QLOG_0 where LAST_UPDATE_TS > :CHECKPOINT  Get recent and LAST_UPDATE_TS < :NOW_MINUS_30s  Exclude most recent order by LAST_UPDATE_TS  Process in order @r39132 - #netflixcloud 41
  • 42. Create a Bi-directional DC-Cloud Data Replication Pipeline  Data Replication Challenges & Best Practices  SimpleDB throttles traffic aggressively via 503 HTTP Response codes (“Service Unavailable”)  With Singleton writes, I see 70-120 write TPS/domain  IR  Shard domains (i.e. partition data sets) to work-around these limits  Employs Slow ramp up  Uses BatchPutAttributes instead of (Singleton) PutAttributes call  Exercises an exponential bounded-back-off algorithm  Uses attribute-level replace=false when fork-lifting data @r39132 - #netflixcloud 42
  • 43. Create a Bi-directional DC-Cloud Data Replication Pipeline @r39132 - #netflixcloud 43
  • 44. Create a Bi-directional DC-Cloud Data Replication Pipeline  Data Replication Challenges & Best Practices  Implementing Multi-mastering and an Eventually-consistent Replication Pipeline  SimpleDB offers optimistic concurrency control in the form of conditional put (and deletes)  For our data, it is ok to be “consistent, but not accurate”  With this relaxation, we do not need to be concerned with synchronizing logical clocks  We simply just need to ensure that each conditional put puts a large strictly increasing value into the “version” column @r39132 - #netflixcloud 44

Editor's Notes

  1. Existing functionality needs to move in phases Limits the risk and exposure to bugs Limits conflicts with new product launches
  2. Existing functionality needs to move in phases Limits the risk and exposure to bugs Limits conflicts with new product launches
  3. Existing functionality needs to move in phases Limits the risk and exposure to bugs Limits conflicts with new product launches
  4. Dynamo storage doesn’t suffer from this!
  5. This is an issue with any SQL-like Query layer over a Sparse-data model. It can happen in other technologies.
  6. Cannot treat SimpleDB like a black-box for performance critical applications.
  7. We found the write availability was affected by the right partitioning scheme. We use a combination of forwarding tables and modulo addressing
  8. Mention trickle lift
  9. We like that it is available, hosted, and managed. We don’t like the performance issues We are looking into Cassandra and other KV stores