SlideShare a Scribd company logo
1 of 86
Data Abstraction to
Operate Services at Scale
Vidhya Arvind
April 24, 2024
How to efficiently scale when
there are 1000s of applications?
Netflix Scale
Speaker
Vidhya Arvind
Staff Software Engineer
Data Platform at Netflix
Founding member of Data
abstractions at Netflix
https://vidhyaarvind.github.io/
Can we scale to all our data use cases?
Problem: Varied
Requirements
Problem: Varied Use-
Cases
Can take the common patterns and
provide a common solution?
Can the solution be generic and
storage agnostic?
Can take the common patterns and
provide a common solution?
Problem: Variety of
Storage engines
Client
Application
New Storage
Engine
Storage
Engine
Other Storage
Engine
…
Client team has to understand how to work with all these different
storage APIs
Client
Application
…
Client team has to understand how to work with all these different
storage APIs
Understand different APIs written in different languages, with
different rough edges and tuning parameters and different cost
models
What if we have 100s of services?
Problem: Variety of
Storage engines
Without
Virtualization
…
…
Client app 1
Client app 1
Client app 2
Client app N
Client app 3
Client app 3
Client app 1
Client app 1
Client app 2
Client app N
Client app 3
Client app 3
Can we isolate the use cases?
Solution?
Data Abstraction Layers!
We can solve any problem by
introducing an extra level of
indirection.
Fundamental theorem of software engineering
- David J. Wheeler
Abstraction
● Level of indirection
● Take the complex system and
break into smaller pieces
with clearly defined
boundaries
Virtualization the
abstraction
● Virtualize it by defining
the implementation
● Switching between
implementations
● Layer systems to solve
bigger problems
Distributed
systems
Level of Indirection
Abstractions
Client
Application
…
Solve any problem by introducing an extra level
of indirection.
Level of Indirection
Abstraction
Data Gateway
Client App
Gateway
(Abstraction Server)
Control Plane
New Storage
Engine
Storage
Engine
Other Storage
Engine
…
Abstract Clients
Abstraction
Client
Deployment
At
Any Scale
Virtualization
Sharding
Composition
Runtime Configuration
Deployment Configuration
Control plane Configuration
Namespace
Abstraction
Storage agnostic
Data migration
Clean APIs
Simple Key-Value API
Chunking Storage
Storage Layers
Without
Virtualization
Abstraction
Client app 1
Client app 1
Client app 2
Client app N
Client app 3
Client app 3
Client app 1
Client app 1
Client app 2
Client app N
Client app 3
Client app 3
Single point of failure
No isolation
Noisy neighbor problem
Storage
Engine
Cache
Engine
Virtualization
Client app 1
Client app 1
Client app 2
Client app N
Client app 3
Client app 3
Client app 1
Client app 1
Client app 2
Client app N
Client app 3
Client app 3
Sharding
Abstraction
Server
Storage
Engine
Cache
Engine
Abstraction
Server
Abstraction
Server
Abstraction
Server
Storage
Engine
Storage
Engine
Cache
Engine
Storage
Engine
Control Plane
Virtualization
Client app 1
Client app 1
Client app 2
Client app N
Client app 3
Client app 3
Client app 1
Client app 1
Client app 2
Client app N
Client app 3
Client app 3
Sharding
Abstraction
Server
Storage
Engine
Cache
Engine
Abstraction
Server
Abstraction
Server
Abstraction
Server
Storage
Engine
Storage
Engine
Cache
Engine
Storage
Engine
Control Plane
ISOLATION
Deployment
At
Any Scale
Virtualization
Sharding
Composition
Runtime Configuration
Deployment Configuration
Control plane Configuration
Namespace
Abstraction
Storage agnostic
Data migration
Clean APIs
Simple Key-Value API
Chunking Storage
Storage Layers
P
R
O
X
Y
Key-Value
Abstraction
Gateway (Key-Value Abstraction)
Data Gateway Composition of services
Key-Value
Abstraction
Gateway (Key-Value Abstraction)
Data Gateway
P
R
O
X
Y
Tree
Abstraction
Gateway (Tree Abstraction)
Key-Value
Abstraction
Composition of services
P
R
O
X
Y
Key-Value
Abstraction
Gateway (Key-Value Abstraction)
Data Gateway
Tree
Abstraction
Gateway (Tree Abstraction)
Key-Value
Abstraction
Composition of services
P
R
O
X
Y
UI
Personalization
Gateway (Composing custom apis along with abstraction)
Key-Value
Abstraction
P
R
O
X
Y
P
R
O
X
Y
Data Gateway
P
R
O
X
Y
Front door
Gateway
(Entity Service)
Journal
Composition of services
Storage
service
Control plane
Time Series
Abstraction
Key-Value
Abstraction
Data Gateway
P
R
O
X
Y
Key-Value
dal=thrift
Shadow Writes
Key-Value
dal=cql
Cassandra
2.0
Cassandra
3.0
Deployment
Configuration
Configuration for composition
Write down - how to compose services
Use configuration to deploy
Deployment configuration
Configuration for composition
Deployment
At
Any Scale
Virtualization
Sharding
Composition
Runtime Configuration
Deployment Configuration
Control plane Configuration
Namespace
Abstraction
Storage agnostic
Data migration
Clean APIs
Simple Key-Value API
Chunking Storage
Storage Layers
Runtime Configuration
container_dals:
thrift:
env:
predicate.expression:
scope.contains('dal=thrift')
kv:
env:
predicate.expression: scope.contains('dal=cql')
image:
path: dgw-kv
wiring:
thrift:
mode: shadow
target: kv
Deployment
Configuration
P
R
O
X
Y
Key-Value
dal=thrift
Key-Value
dal=cql
Cassandra
2.0
Cassandra
3.0
Deployment
At
Any Scale
Virtualization
Sharding
Composition
Runtime Configuration
Deployment Configuration
Control plane Configuration
Namespace
Abstraction
Storage agnostic
Data migration
Clean APIs
Simple Key-Value API
Chunking Storage
Storage Layers
Deployment Configuration
Deployment
Configuration
Deployment
At
Any Scale
Virtualization
Sharding
Composition
Runtime Configuration
Deployment Configuration
Control plane Configuration
Namespace
Abstraction
Storage agnostic
Data migration
Clean APIs
Simple Key-Value API
Chunking Storage
Storage Layers
Namespace Configuration
Namespace is used to make
abstraction storage agnostic
{ "version": "5",
"namespaces": [{
"namespace_name": "interstitial_feedback",
"persistence_configurations": {
"persistence_configuration": [{
"id": "PRIMARY_STORAGE",
"version": 1,
"level": 4,
"scope": "dal=kv",
"physical_storage": {
"type": "CASSANDRA",
"cluster": "cass_dgw_kv_interstitial_feedback",
"dataset": "interstitial_feedback",
"table": "interstitial_feedback",
"schema_id": "kv:cassandra"
},
"config": {
"consistency_scope": "LOCAL",
"consistency_target": "READ_YOUR_WRITES",
"default_ttl": 5184000,
"enforce_max_ttl": 5184000
}
}]},
"capabilities": ["ALL"],"status": "ACTIVE",
"create_ts": "2023-07-14T21:14:30Z",
}]}
Persistence Configuration
Control Plane
grpc -a dgwcontrol.kv WatchNamespaces -d "
{
"shard_identity": "<shard_identity>"
"last_seen_version": 0
}"
Client App
Abstraction
Server
Control Plane
Storage
Engine
Other
Storage
Engine
Deployment
At
Any Scale
Virtualization
Sharding
Composition
Runtime Configuration
Deployment Configuration
Control plane Configuration
Namespace
Abstraction
Storage agnostic
Data migration
Clean APIs
Simple Key-Value API
Chunking Storage
Storage Layers
Persistence Configuration
Control Plane
{
"namespace_name": "<namespace>",
"persistence_configurations": {
"persistence_configuration": [{
"id": "PRIMARY_STORAGE",
"version": 2,
"level": 4,
"scope": "dal=kv",
"physical_storage": {
…
},
“config”: {
…
}
}
Persistence Configuration
Contd..
Control Plane
"config": {
"consistency_scope": "LOCAL",
"consistency_target":"READ_YOUR_WRITES",
"contacts": "<dev@netflix.com>",
"context": "Device history service"
}
"physical_storage": {
"type": "CASSANDRA",
"cluster": "<cass_cluster>",
"dataset": "<keyspace>",
"table": "<table>",
"schema_id": "kv:cassandra:desc"
},
"physical_storage": {
"type": "EVCACHE",
"cluster":"<cache_cluster>",
"table": "<cache_name>",
}
Control plane as an abstraction
Control Plane "Configuration as abstraction"
Config Store
Gateway
(Abstraction Server)
Control
Client
P
R
O
X
Y
Control
Server
Gateway
(Control Plane)
Control Plane "Configuration as abstraction"
Config Store
Gateway
(Control Plane)
Gateway
(Abstraction Server)
Control Client
Long Polling
for new namespaces
CACHE
namespaces
Control Plane "Configuration as abstraction"
Config Store
Gateway
(Control Plane)
Gateway
(Abstraction Server)
Control Client
WatchNamespaces
CloneNamespace
AliasNamespace
…
Select * from
…
message WatchNamespacesResponse(
List<Namespace> namespaces=1;
int version=2;
)
Control Plane Apis
Control Plane
rpc WatchNamespaces(
String shard_identity;
long last_seen_version;
) ->
WatchNamespacesResponse
message CloneNamespacesResponse(
String job_id=1;
Status status=2;
)
Control Plane Apis
Control Plane
rpc CloneNamespaces(
String source;
String target;
) ->
CloneNamespacesResponse
✓Virtualization
❏Abstraction
❏Clean APIs
Virtualization
Abstraction
❏Storage Agnostic
❏Dual Writes &
Data Migration
Gateway
(Abstraction Server)
Key-Value "Two-Level Map as a Service"
KeyValue
Client
Gateway
(Control Plane)
Cassandra
Memcache
DynamoDB
PutItems
GetItems
ScanItems
DeleteItems
…
set …
get …
SELECT ...
INSERT ...
PutItem...
Query ...
…
Client App
Abstraction
Client
Key-Value "Two-Level Map as a Service"
KeyValue
Client
KeyValue
Server
Gateway
(Control Plane)
Cassandra
Memcache
DynamoDB
set …
get …
PutItem...
Query ...
…
Client App
Abstraction
Client
P
R
O
X
Y
Evcache
Record Store
Cassandra
Record Store
Dynamodb
Record Store
Key-Value Abstraction
SELECT ...
INSERT ...
PutItems
GetItems
ScanItems
DeleteItems
…
Namespace Persistence Configuration
Control Plane
{"namespace_name": "ns1",
"persistence_configurations": {
"persistence_configuration": [{
"id": "PRIMARY_STORAGE",
"version": 1,
"level": 4,
"scope": "dal=cql",
"physical_storage": {
"type": "CASSANDRA",
"cluster": "<cass_cluster>",
"dataset": "<keyspace>",
"table": "<table>",
"schema_id":
"kv:cassandra:desc"
}}]
}}
{"namespace_name": "ns2",
"persistence_configurations":{
"persistence_configuration":[{
"id": "PRIMARY_STORAGE",
"version": 1,
"level": 4,
"scope": "dal=dynamodb",
"physical_storage": {
"type": "DYNAMODB",
"table": "<table>",
"schema_id":
"kv:dynamodb:desc"
}}]
}}
Abstraction
✓Storage Agnostic
❏Dual Writes &
Data Migration
Storage
Time
Storage
Time
Use case: Change overtime
GB
TB
Problem: Varied Use-
Cases
Data Gateway
Client
Proxy
DB1
Impl
DB1
Data Migrations
Setup
Data Gateway
Client
Proxy
DB1
Impl
DB1
Client
Proxy
DB1
Impl
DB2
Impl
DB1 DB2
Data Migrations
Setup Shadow Write
Data Gateway
Client
Proxy
DB1
Impl
DB1
Client
Proxy
DB1
Impl
DB2
Impl
DB1 DB2
Client
Proxy
DB1
Impl
DB2
Impl
DB1 DB2
Backfill Data
Data Migrations
Setup Shadow Write Backfill
Data Gateway
Client
Proxy
DB1
Impl
DB1
Client
Proxy
DB1
Impl
DB2
Impl
DB1 DB2
Client
Proxy
DB1
Impl
DB2
Impl
DB1 DB2
Client
Proxy
DB2
Impl
DB2
Backfill Data
Data Migrations
DB1
Impl
DB1
Setup Shadow Write Backfill Promote
Data Gateway
Client
Proxy
DB1
Impl
DB1
Client
Proxy
DB1
Impl
DB2
Impl
DB1 DB2
Client
Proxy
DB1
Impl
DB2
Impl
DB1 DB2
Client
Proxy
DB2
Impl
DB2
Backfill Data
Data Migrations
Client
Client
Proxy
DB2
Impl
DB2
DB1
Impl
DB1
Setup Shadow Write Backfill Promote Decommission
Persistence Configurations for dual
writes
Control Plane
{"namespace_name": "ns1",
"persistence_configurations": {
"persistence_configuration": [{
"id": "PRIMARY_STORAGE",
"version": 1,
"level": 4,
"scope": "dal=cql",
"physical_storage": {
"type": "CASSANDRA",
"cluster": "<cass_cluster>",
"dataset": "<keyspace>",
"table": "<table>",
"schema_id":
"kv:cassandra:desc"
},
{
"id": "PRIMARY_STORAGE",
"version": 1,
"level": 4,
"scope": "dal=dynamodb",
"physical_storage": {
"type": "DYNAMODB",
"table": "<table>",
"schema_id":
"kv:dynamodb:desc"
}}]
}}
1
2
✓Virtualization
✓Abstraction
❏Clean APIs
Clean APIs
Key-Value Abstraction APIs
PutItems -> Trilean
GetItems -> List[Item]
MutateItems -> Boolean
ScanItems -> BlockingQueue[Map[Id, List[Item]]]
PutIfAbsent -> Optional[Boolean]
Compute -> Optional[Item]
Key-Value Abstraction APIs
Server gRPC Abstraction API
Map[String, List[Item]]
Client High-Level API
HashMap[String, SortedMap[Bytes, Bytes]]
("k1", "z") ("k12", "a") ("k2", "b")
"p17"
("k1", "z") ("k2", "b")
"p1"
Id Key → Value
Key-Value Storage Layout
id key value value_metadata
1234 key1 value1 {"metadata": …}
1234 key2 <empty> {"metadata": … }
Base Table
CREATE TABLE IF NOT EXISTS <keyspace>.<table_name> (
id text,
key blob,
value blob,
value_metadata blob,
PRIMARY KEY (id, key))
WITH CLUSTERING ORDER BY (key <ASC|DESC>)
AND compaction = LCS(256MiB)
AND compression = LZ4(16KiB)
Key-Value
Map[String, List[Item]]
message Item {
bytes key = 1;
bytes value = 2;
Metadata value_metadata = 3;
int32 chunk = 4;
}
Key-Value
message Metadata {
// How this data is compressed
CompressionMetadata compression = 1;
// Written in time, Expires at time etc.
LifecycleMetadata lifecycle = 2;
// If this data references other chunks of data
ChunkMetadata chunks = 3;
// Encoding and content metadata, headers
ContentMetadata content = 4;
}
PutItemsResponse {
Trilean durable;
Trilean visible; …
}
HashMap[String, SortedMap[Bytes, Bytes]]
rpc PutItems(
# Allows retry
IdempotencyToken token,
# Primary key
String namespace,
String id,
# Key-Value pairs
List<Item> items
) -> PutItemsResponse
Key-Value
rpc MutateItems(
IdempotencyToken token,
String namespace,
String id,
List[MutationRequest]
mutations, …
) -> MutationResponse
MutationRequest {
oneof {
PutItems put;
DeleteItems delete;
}
}
HashMap[String, SortedMap[Bytes, Bytes]]
Key-Value
rpc GetItems(
# Primary key
String namespace,
String id,
# What matches
Predicate predicate,
# Pagination/Selection
Selection selection
) -> GetItemsResponse
GetItemsResponse {
# Page of results
# 1 MiB pages
List[Item] items
# If set there is
# more data to read
String next_page
}
HashMap[String, SortedMap[Bytes, Bytes]]
Key-Value
rpc ScanItems(
# Table name
String namespace,
# What matches
Predicate predicate,
# Pagination & selection
Selection selection
) -> ScanItemsResponse
ScanItemsResponse {
# Page of results
List[ScanResult] results;
# Multiple concurrent
# pages consumed
List[String] next_page;
}
HashMap[String, SortedMap[Bytes, Bytes]]
Key-Value
# Chunk after payload size 1 MiB
chunk_after_size = 1024 * 1024
# Send data to storage engine directly in one
# stage + commit step
if sizeof(payload) < chunk_after_size:
perform_write(payload)
Payload size < O(1MiB)
Small data
# Chunk after payload size 1 MiB
chunk_after_size = 1024 * 1024
# Send data to storage engine directly in one
# stage + commit step
if sizeof(payload) < chunk_after_size:
perform_write(payload)
else ?
Payload size < O(1MiB)
Small data
Chunk Data
chunk-after-bytes = 1 MiB
chunk-size-bytes = 64 KiB
Client Server
4 3 2 1
0
8 7 6 5
12 11 10 9
63 62 61 60
Stream of chunks
Commit Chunk
4 MiB Payload
Chunk Zero
64 KiB chunks
Write Path: Payload size: O(> 1MiB)
Chunk Data
# Step 1: Stage data chunks and use the idempotency
# token to tie chunks together
page, writes = page(), []
for idx, chunk in enumerate(chunk(payload)):
item = Item(
key=key, value=chunk,
chunk=(idx + 1),
token=idempotency_token
)
page.add(item)
if page.size > 2 * 1024 * 1024:
writes.add(perform_write(page))
page.clear()
writes.add(perform_write(page))
Write Path: Payload size: O(> 1Mib)
Chunk Data
# Step 2: Commit the write by writing chunk zero
perform_write(
Item(
key = key,
chunk = 0,
token = idempotency_token,
metadata = {
chunk_count = 43,
chunk_size_bytes = 64KiB,
# Filled by server
chunk_token_xxh64 = xxh64(token.nonce),
chunk_offset = consistent_hash(key)
}
))
Write Path: Payload size: O(> 1Mib)
Chunk Data: Read Path
chunk-after-bytes = 1 Mib
chunk-size-bytes = 64 Kib
Client Server
4 3 2 1
0
8 7 6 5
12 11 10 9
63 62 61 60
Stream of chunks
Commit Chunk
4 MiB Payload
64 KiB chunks
Chunk Zero
Read Path: Payload size: O(> 1Mib)
Chunk Data
# Server-side: Read chunk 0s value_metadata for
# number of chunks to retrieve
chunks, commit = [], read_chunk_zero(id, key)
version = commit.metadata.version
num_chunks = commit.metadata.chunks
chunk = 1
while sizeof(chunks.value) < page_limit:
last_chunk = perform_chunk_read(chunk)
chunks.add(last_chunk)
page_token = last_chunk.chunk < num_chunks
? construct_page_token(last_chunk)
: null
return (chunks, page_token)
Read Path: Payload size: O(> 1Mib)
Chunk Data
# Client-side: retrieve pages and stitch chunks
for page in pages:
for item in page.items:
current_item = select(current_item, item)
# SMALL ITEM: Read the entire item from the single RPC
if !current_item.metadata.has_chunk_metadata():
yield current_item
else
# LARGE ITEM: append the chunk to the item
current_item.value.append(item.value)
if item.chunk == current_item.metadata.chunk_count:
yield current_item
current_item = null
Read Path: Payload size: O(> 1Mib)
Writes
● All writes sent with
IdempotencyToken so we
can deduplicate
● Large values chunked,
staged, and finally
committed
KeyValue
Reads
● All reads return pages
within the SLO
● No SLO across all pages
● Fixed size work, not
count!
HashMap[String, SortedMap[Bytes, Bytes]]
Key-Value Storage Layout
id bucket key chunk version value value_metadata
1234 64200 key2 1 timeuuid1 chunk1 { “metadata”: … }
1234 64201 key2 2 timeuuid1 chunk2 { “metadata”: … }
1234 64201 key2 3 timeuuid1 chunk2 { “metadata”: … }
Data Table
CREATE TABLE IF NOT EXISTS <ns>.data_<ns> (
id text,
bucket int,
key blob,
chunk int,
version timeuuid,
value blob,
value_metadata blob,
PRIMARY KEY ((id, bucket), key, version, chunk))
WITH CLUSTERING ORDER BY (key <ASC|DESC>, version DESC, chunk ASC)
Data Model id bucke
t
key chunk version value value_meta
data
1234 64201 key1 1 timeuuid1 chunk
value 1
{ “metadata”: … }
1234 64201 key1 2 timeuuid1 chunk
value 2
{ “metadata”: … }
3443 64202 key1 1 timeuuid3 chunk
value 1
{ “metadata”: … }
6789 34001 key2 1 timeuuid2 chunk value
1
{ “metadata”: … }
6789 34001 key2 2 timeuuid2 chunk value
2
{ “metadata”: … }
6789 34001 key2 3 timeuuid2 chunk value
3
{ “metadata”: … }
id key value value_metadata
1234 key1 <empty> chunk_count: 2
chunk_offset: 64201
6789 key2 <empty> chunk_count: 3
chunk_offset: 34001
12 key1 "small" {}
Key-Value bucketing per key
"chunks": {
"chunk_size_bytes": 65536,
"chunk_count": 2,
"chunk_offset": 124431,
"chunk_token_xxh64": "12595968139585192830",
"version": "3d52c5c0-6229-11ee-aecd-de49621d037e"
}
✓Virtualization
✓Abstraction
✓Clean APIs
Clean APIs
Chunking
Compression
Pagination
Adaptive
Signaling
Caching
SLO Signaling
Nearline Caching
Summarization
Dictionary Compression
Building Blocks
Chunking
Compression
Pagination
Adaptive
Signaling
Caching
SLO Signaling
Summarization
Dictionary Compression
Nearline Caching
Building Blocks
Timeseries
Counter
Identifier
Entity
Tree
Graph
More Abstraction
Every new layer of abstraction is a new chance for
a clean-slate redesign of everything, making
everything a little faster, less power hungry,
more elegant, easier to use, cheaper."
- Marc Andreessen
Vidhya Arvind
varvind@netflix.com
Thank You.

More Related Content

Similar to How Netflix Uses Data Abstraction to Operate Services at Scale - Vidhya Arvind, Netflix

CloudStack DC Meetup - Apache CloudStack Overview and 4.1/4.2 Preview
CloudStack DC Meetup - Apache CloudStack Overview and 4.1/4.2 PreviewCloudStack DC Meetup - Apache CloudStack Overview and 4.1/4.2 Preview
CloudStack DC Meetup - Apache CloudStack Overview and 4.1/4.2 PreviewChip Childers
 
Introduction to google endpoints
Introduction to google endpointsIntroduction to google endpoints
Introduction to google endpointsShinto Anto
 
Scalable Deployment Patterns in WSO2 API Manager
Scalable Deployment Patterns in WSO2 API Manager Scalable Deployment Patterns in WSO2 API Manager
Scalable Deployment Patterns in WSO2 API Manager WSO2
 
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCF
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCFMigrate a on-prem platform to the public cloud with Java - SpringBoot and PCF
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCFRoy Braam
 
Confluent Platform 5.5 + Apache Kafka 2.5 => New Features (JSON Schema, Proto...
Confluent Platform 5.5 + Apache Kafka 2.5 => New Features (JSON Schema, Proto...Confluent Platform 5.5 + Apache Kafka 2.5 => New Features (JSON Schema, Proto...
Confluent Platform 5.5 + Apache Kafka 2.5 => New Features (JSON Schema, Proto...Kai Wähner
 
MongoDB World 2018: Partner Talk - Red Hat: Deploying to Enterprise Kubernetes
MongoDB World 2018: Partner Talk - Red Hat: Deploying to Enterprise KubernetesMongoDB World 2018: Partner Talk - Red Hat: Deploying to Enterprise Kubernetes
MongoDB World 2018: Partner Talk - Red Hat: Deploying to Enterprise KubernetesMongoDB
 
Day 4 - Cloud Migration - But How?
Day 4 - Cloud Migration - But How?Day 4 - Cloud Migration - But How?
Day 4 - Cloud Migration - But How?Amazon Web Services
 
AWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul Maddox
AWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul MaddoxAWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul Maddox
AWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul MaddoxAWS Riyadh User Group
 
.NET Core Apps: Design & Development
.NET Core Apps: Design & Development.NET Core Apps: Design & Development
.NET Core Apps: Design & DevelopmentGlobalLogic Ukraine
 
Learn Cloud-Native .NET: Core Configuration Fundamentals with Steeltoe
Learn Cloud-Native .NET: Core Configuration Fundamentals with SteeltoeLearn Cloud-Native .NET: Core Configuration Fundamentals with Steeltoe
Learn Cloud-Native .NET: Core Configuration Fundamentals with SteeltoeVMware Tanzu
 
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)QAware GmbH
 
Windows Azure & How to Deploy Wordress
Windows Azure & How to Deploy WordressWindows Azure & How to Deploy Wordress
Windows Azure & How to Deploy WordressGeorge Kanellopoulos
 
Azure Service Fabric: The road ahead for microservices
Azure Service Fabric: The road ahead for microservicesAzure Service Fabric: The road ahead for microservices
Azure Service Fabric: The road ahead for microservicesMicrosoft Tech Community
 
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Amazon Web Services
 
VMware Cloud on AWS: A World of Unique Integrations Between VMware and AWS - ...
VMware Cloud on AWS: A World of Unique Integrations Between VMware and AWS - ...VMware Cloud on AWS: A World of Unique Integrations Between VMware and AWS - ...
VMware Cloud on AWS: A World of Unique Integrations Between VMware and AWS - ...Amazon Web Services
 
Serverless in-action
Serverless in-actionServerless in-action
Serverless in-actionAssaf Gannon
 
Deep dive ECS & Fargate Deep Dive
Deep dive ECS & Fargate Deep DiveDeep dive ECS & Fargate Deep Dive
Deep dive ECS & Fargate Deep DiveAmazon Web Services
 
Overview of VS2010 and .NET 4.0
Overview of VS2010 and .NET 4.0Overview of VS2010 and .NET 4.0
Overview of VS2010 and .NET 4.0Bruce Johnson
 
Software-Defined Storage
Software-Defined StorageSoftware-Defined Storage
Software-Defined StorageNetApp
 
Event Streaming Architectures with Confluent and ScyllaDB
Event Streaming Architectures with Confluent and ScyllaDBEvent Streaming Architectures with Confluent and ScyllaDB
Event Streaming Architectures with Confluent and ScyllaDBScyllaDB
 

Similar to How Netflix Uses Data Abstraction to Operate Services at Scale - Vidhya Arvind, Netflix (20)

CloudStack DC Meetup - Apache CloudStack Overview and 4.1/4.2 Preview
CloudStack DC Meetup - Apache CloudStack Overview and 4.1/4.2 PreviewCloudStack DC Meetup - Apache CloudStack Overview and 4.1/4.2 Preview
CloudStack DC Meetup - Apache CloudStack Overview and 4.1/4.2 Preview
 
Introduction to google endpoints
Introduction to google endpointsIntroduction to google endpoints
Introduction to google endpoints
 
Scalable Deployment Patterns in WSO2 API Manager
Scalable Deployment Patterns in WSO2 API Manager Scalable Deployment Patterns in WSO2 API Manager
Scalable Deployment Patterns in WSO2 API Manager
 
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCF
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCFMigrate a on-prem platform to the public cloud with Java - SpringBoot and PCF
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCF
 
Confluent Platform 5.5 + Apache Kafka 2.5 => New Features (JSON Schema, Proto...
Confluent Platform 5.5 + Apache Kafka 2.5 => New Features (JSON Schema, Proto...Confluent Platform 5.5 + Apache Kafka 2.5 => New Features (JSON Schema, Proto...
Confluent Platform 5.5 + Apache Kafka 2.5 => New Features (JSON Schema, Proto...
 
MongoDB World 2018: Partner Talk - Red Hat: Deploying to Enterprise Kubernetes
MongoDB World 2018: Partner Talk - Red Hat: Deploying to Enterprise KubernetesMongoDB World 2018: Partner Talk - Red Hat: Deploying to Enterprise Kubernetes
MongoDB World 2018: Partner Talk - Red Hat: Deploying to Enterprise Kubernetes
 
Day 4 - Cloud Migration - But How?
Day 4 - Cloud Migration - But How?Day 4 - Cloud Migration - But How?
Day 4 - Cloud Migration - But How?
 
AWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul Maddox
AWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul MaddoxAWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul Maddox
AWS reinvent 2019 recap - Riyadh - Containers and Serverless - Paul Maddox
 
.NET Core Apps: Design & Development
.NET Core Apps: Design & Development.NET Core Apps: Design & Development
.NET Core Apps: Design & Development
 
Learn Cloud-Native .NET: Core Configuration Fundamentals with Steeltoe
Learn Cloud-Native .NET: Core Configuration Fundamentals with SteeltoeLearn Cloud-Native .NET: Core Configuration Fundamentals with Steeltoe
Learn Cloud-Native .NET: Core Configuration Fundamentals with Steeltoe
 
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
 
Windows Azure & How to Deploy Wordress
Windows Azure & How to Deploy WordressWindows Azure & How to Deploy Wordress
Windows Azure & How to Deploy Wordress
 
Azure Service Fabric: The road ahead for microservices
Azure Service Fabric: The road ahead for microservicesAzure Service Fabric: The road ahead for microservices
Azure Service Fabric: The road ahead for microservices
 
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
 
VMware Cloud on AWS: A World of Unique Integrations Between VMware and AWS - ...
VMware Cloud on AWS: A World of Unique Integrations Between VMware and AWS - ...VMware Cloud on AWS: A World of Unique Integrations Between VMware and AWS - ...
VMware Cloud on AWS: A World of Unique Integrations Between VMware and AWS - ...
 
Serverless in-action
Serverless in-actionServerless in-action
Serverless in-action
 
Deep dive ECS & Fargate Deep Dive
Deep dive ECS & Fargate Deep DiveDeep dive ECS & Fargate Deep Dive
Deep dive ECS & Fargate Deep Dive
 
Overview of VS2010 and .NET 4.0
Overview of VS2010 and .NET 4.0Overview of VS2010 and .NET 4.0
Overview of VS2010 and .NET 4.0
 
Software-Defined Storage
Software-Defined StorageSoftware-Defined Storage
Software-Defined Storage
 
Event Streaming Architectures with Confluent and ScyllaDB
Event Streaming Architectures with Confluent and ScyllaDBEvent Streaming Architectures with Confluent and ScyllaDB
Event Streaming Architectures with Confluent and ScyllaDB
 

More from Nordic APIs

How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...
How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...
How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...Nordic APIs
 
The Art of API Design, by David Biesack at Apiture
The Art of API Design, by David Biesack at ApitureThe Art of API Design, by David Biesack at Apiture
The Art of API Design, by David Biesack at ApitureNordic APIs
 
ABAC, ReBAC, Zanzibar, ALFA… How Should I Implement AuthZ in My APIs? by Dav...
ABAC, ReBAC, Zanzibar, ALFA…  How Should I Implement AuthZ in My APIs? by Dav...ABAC, ReBAC, Zanzibar, ALFA…  How Should I Implement AuthZ in My APIs? by Dav...
ABAC, ReBAC, Zanzibar, ALFA… How Should I Implement AuthZ in My APIs? by Dav...Nordic APIs
 
Crafting a Cloud Native API Platform to Accelerate Your Platform Maturity - B...
Crafting a Cloud Native API Platform to Accelerate Your Platform Maturity - B...Crafting a Cloud Native API Platform to Accelerate Your Platform Maturity - B...
Crafting a Cloud Native API Platform to Accelerate Your Platform Maturity - B...Nordic APIs
 
The Federated Future: Pioneering Next-Gen Solutions in API Management - Marku...
The Federated Future: Pioneering Next-Gen Solutions in API Management - Marku...The Federated Future: Pioneering Next-Gen Solutions in API Management - Marku...
The Federated Future: Pioneering Next-Gen Solutions in API Management - Marku...Nordic APIs
 
API Authorization Using an Identity Server and Gateway - Aldo Pietropaolo, SGNL
API Authorization Using an Identity Server and Gateway - Aldo Pietropaolo, SGNLAPI Authorization Using an Identity Server and Gateway - Aldo Pietropaolo, SGNL
API Authorization Using an Identity Server and Gateway - Aldo Pietropaolo, SGNLNordic APIs
 
API Discovery from Crawl to Run - Rob Dickinson, Graylog
API Discovery from Crawl to Run - Rob Dickinson, GraylogAPI Discovery from Crawl to Run - Rob Dickinson, Graylog
API Discovery from Crawl to Run - Rob Dickinson, GraylogNordic APIs
 
Productizing and Monetizing APIs - Derric Gilling, Moseif
Productizing and Monetizing APIs - Derric Gilling, MoseifProductizing and Monetizing APIs - Derric Gilling, Moseif
Productizing and Monetizing APIs - Derric Gilling, MoseifNordic APIs
 
Securely Boosting Any Product with Generative AI APIs - Ruben Sitbon, Sipios
Securely Boosting Any Product with Generative AI APIs - Ruben Sitbon, SipiosSecurely Boosting Any Product with Generative AI APIs - Ruben Sitbon, Sipios
Securely Boosting Any Product with Generative AI APIs - Ruben Sitbon, SipiosNordic APIs
 
Security of LLM APIs by Ankita Gupta, Akto.io
Security of LLM APIs by Ankita Gupta, Akto.ioSecurity of LLM APIs by Ankita Gupta, Akto.io
Security of LLM APIs by Ankita Gupta, Akto.ioNordic APIs
 
I'm an API Hacker, Here's How to Go from Making APIs to Breaking Them - Katie...
I'm an API Hacker, Here's How to Go from Making APIs to Breaking Them - Katie...I'm an API Hacker, Here's How to Go from Making APIs to Breaking Them - Katie...
I'm an API Hacker, Here's How to Go from Making APIs to Breaking Them - Katie...Nordic APIs
 
Unleashing the Potential of GraphQL with Streaming Data - Kishore Banala, Net...
Unleashing the Potential of GraphQL with Streaming Data - Kishore Banala, Net...Unleashing the Potential of GraphQL with Streaming Data - Kishore Banala, Net...
Unleashing the Potential of GraphQL with Streaming Data - Kishore Banala, Net...Nordic APIs
 
Reigniting the API Description Wars with TypeSpec and the Next Generation of ...
Reigniting the API Description Wars with TypeSpec and the Next Generation of...Reigniting the API Description Wars with TypeSpec and the Next Generation of...
Reigniting the API Description Wars with TypeSpec and the Next Generation of ...Nordic APIs
 
Establish, Grow, and Mature Your API Platform - James Higginbotham, LaunchAny
Establish, Grow, and Mature Your API Platform - James Higginbotham, LaunchAnyEstablish, Grow, and Mature Your API Platform - James Higginbotham, LaunchAny
Establish, Grow, and Mature Your API Platform - James Higginbotham, LaunchAnyNordic APIs
 
Inclusive, Accessible Tech: Bias-Free Language in Code and Configurations - A...
Inclusive, Accessible Tech: Bias-Free Language in Code and Configurations - A...Inclusive, Accessible Tech: Bias-Free Language in Code and Configurations - A...
Inclusive, Accessible Tech: Bias-Free Language in Code and Configurations - A...Nordic APIs
 
Going Platinum: How to Make a Hit API by Bill Doerrfeld, Nordic APIs
Going Platinum: How to Make a Hit API by Bill Doerrfeld, Nordic APIsGoing Platinum: How to Make a Hit API by Bill Doerrfeld, Nordic APIs
Going Platinum: How to Make a Hit API by Bill Doerrfeld, Nordic APIsNordic APIs
 
Getting Better at Risk Management Using Event Driven Mesh Architecture - Ragh...
Getting Better at Risk Management Using Event Driven Mesh Architecture - Ragh...Getting Better at Risk Management Using Event Driven Mesh Architecture - Ragh...
Getting Better at Risk Management Using Event Driven Mesh Architecture - Ragh...Nordic APIs
 
GenAI: Producing and Consuming APIs by Paul Dumas, Gartner
GenAI: Producing and Consuming APIs by Paul Dumas, GartnerGenAI: Producing and Consuming APIs by Paul Dumas, Gartner
GenAI: Producing and Consuming APIs by Paul Dumas, GartnerNordic APIs
 
The SAS developer portal – developer.sas.com 2.0: How we built it by Joe Furb...
The SAS developer portal –developer.sas.com 2.0: How we built it by Joe Furb...The SAS developer portal –developer.sas.com 2.0: How we built it by Joe Furb...
The SAS developer portal – developer.sas.com 2.0: How we built it by Joe Furb...Nordic APIs
 
cURL to SDK: Navigating the API Adoption Chasm - Sidney Maestre, APIMatic
cURL to SDK: Navigating the API Adoption Chasm - Sidney Maestre, APIMaticcURL to SDK: Navigating the API Adoption Chasm - Sidney Maestre, APIMatic
cURL to SDK: Navigating the API Adoption Chasm - Sidney Maestre, APIMaticNordic APIs
 

More from Nordic APIs (20)

How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...
How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...
How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...
 
The Art of API Design, by David Biesack at Apiture
The Art of API Design, by David Biesack at ApitureThe Art of API Design, by David Biesack at Apiture
The Art of API Design, by David Biesack at Apiture
 
ABAC, ReBAC, Zanzibar, ALFA… How Should I Implement AuthZ in My APIs? by Dav...
ABAC, ReBAC, Zanzibar, ALFA…  How Should I Implement AuthZ in My APIs? by Dav...ABAC, ReBAC, Zanzibar, ALFA…  How Should I Implement AuthZ in My APIs? by Dav...
ABAC, ReBAC, Zanzibar, ALFA… How Should I Implement AuthZ in My APIs? by Dav...
 
Crafting a Cloud Native API Platform to Accelerate Your Platform Maturity - B...
Crafting a Cloud Native API Platform to Accelerate Your Platform Maturity - B...Crafting a Cloud Native API Platform to Accelerate Your Platform Maturity - B...
Crafting a Cloud Native API Platform to Accelerate Your Platform Maturity - B...
 
The Federated Future: Pioneering Next-Gen Solutions in API Management - Marku...
The Federated Future: Pioneering Next-Gen Solutions in API Management - Marku...The Federated Future: Pioneering Next-Gen Solutions in API Management - Marku...
The Federated Future: Pioneering Next-Gen Solutions in API Management - Marku...
 
API Authorization Using an Identity Server and Gateway - Aldo Pietropaolo, SGNL
API Authorization Using an Identity Server and Gateway - Aldo Pietropaolo, SGNLAPI Authorization Using an Identity Server and Gateway - Aldo Pietropaolo, SGNL
API Authorization Using an Identity Server and Gateway - Aldo Pietropaolo, SGNL
 
API Discovery from Crawl to Run - Rob Dickinson, Graylog
API Discovery from Crawl to Run - Rob Dickinson, GraylogAPI Discovery from Crawl to Run - Rob Dickinson, Graylog
API Discovery from Crawl to Run - Rob Dickinson, Graylog
 
Productizing and Monetizing APIs - Derric Gilling, Moseif
Productizing and Monetizing APIs - Derric Gilling, MoseifProductizing and Monetizing APIs - Derric Gilling, Moseif
Productizing and Monetizing APIs - Derric Gilling, Moseif
 
Securely Boosting Any Product with Generative AI APIs - Ruben Sitbon, Sipios
Securely Boosting Any Product with Generative AI APIs - Ruben Sitbon, SipiosSecurely Boosting Any Product with Generative AI APIs - Ruben Sitbon, Sipios
Securely Boosting Any Product with Generative AI APIs - Ruben Sitbon, Sipios
 
Security of LLM APIs by Ankita Gupta, Akto.io
Security of LLM APIs by Ankita Gupta, Akto.ioSecurity of LLM APIs by Ankita Gupta, Akto.io
Security of LLM APIs by Ankita Gupta, Akto.io
 
I'm an API Hacker, Here's How to Go from Making APIs to Breaking Them - Katie...
I'm an API Hacker, Here's How to Go from Making APIs to Breaking Them - Katie...I'm an API Hacker, Here's How to Go from Making APIs to Breaking Them - Katie...
I'm an API Hacker, Here's How to Go from Making APIs to Breaking Them - Katie...
 
Unleashing the Potential of GraphQL with Streaming Data - Kishore Banala, Net...
Unleashing the Potential of GraphQL with Streaming Data - Kishore Banala, Net...Unleashing the Potential of GraphQL with Streaming Data - Kishore Banala, Net...
Unleashing the Potential of GraphQL with Streaming Data - Kishore Banala, Net...
 
Reigniting the API Description Wars with TypeSpec and the Next Generation of ...
Reigniting the API Description Wars with TypeSpec and the Next Generation of...Reigniting the API Description Wars with TypeSpec and the Next Generation of...
Reigniting the API Description Wars with TypeSpec and the Next Generation of ...
 
Establish, Grow, and Mature Your API Platform - James Higginbotham, LaunchAny
Establish, Grow, and Mature Your API Platform - James Higginbotham, LaunchAnyEstablish, Grow, and Mature Your API Platform - James Higginbotham, LaunchAny
Establish, Grow, and Mature Your API Platform - James Higginbotham, LaunchAny
 
Inclusive, Accessible Tech: Bias-Free Language in Code and Configurations - A...
Inclusive, Accessible Tech: Bias-Free Language in Code and Configurations - A...Inclusive, Accessible Tech: Bias-Free Language in Code and Configurations - A...
Inclusive, Accessible Tech: Bias-Free Language in Code and Configurations - A...
 
Going Platinum: How to Make a Hit API by Bill Doerrfeld, Nordic APIs
Going Platinum: How to Make a Hit API by Bill Doerrfeld, Nordic APIsGoing Platinum: How to Make a Hit API by Bill Doerrfeld, Nordic APIs
Going Platinum: How to Make a Hit API by Bill Doerrfeld, Nordic APIs
 
Getting Better at Risk Management Using Event Driven Mesh Architecture - Ragh...
Getting Better at Risk Management Using Event Driven Mesh Architecture - Ragh...Getting Better at Risk Management Using Event Driven Mesh Architecture - Ragh...
Getting Better at Risk Management Using Event Driven Mesh Architecture - Ragh...
 
GenAI: Producing and Consuming APIs by Paul Dumas, Gartner
GenAI: Producing and Consuming APIs by Paul Dumas, GartnerGenAI: Producing and Consuming APIs by Paul Dumas, Gartner
GenAI: Producing and Consuming APIs by Paul Dumas, Gartner
 
The SAS developer portal – developer.sas.com 2.0: How we built it by Joe Furb...
The SAS developer portal –developer.sas.com 2.0: How we built it by Joe Furb...The SAS developer portal –developer.sas.com 2.0: How we built it by Joe Furb...
The SAS developer portal – developer.sas.com 2.0: How we built it by Joe Furb...
 
cURL to SDK: Navigating the API Adoption Chasm - Sidney Maestre, APIMatic
cURL to SDK: Navigating the API Adoption Chasm - Sidney Maestre, APIMaticcURL to SDK: Navigating the API Adoption Chasm - Sidney Maestre, APIMatic
cURL to SDK: Navigating the API Adoption Chasm - Sidney Maestre, APIMatic
 

Recently uploaded

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 

Recently uploaded (20)

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 

How Netflix Uses Data Abstraction to Operate Services at Scale - Vidhya Arvind, Netflix