SlideShare une entreprise Scribd logo
1  sur  140
Télécharger pour lire hors ligne
real-time delivery architecture

@raffi
qcon shanghai 2013
@raffi
qcon shanghai 2013
http://twitpic.com/135xa There’s a plane in the
Hudson. I’m on a ferry
going to pick up the
people. Crazy.

!
15 Jan 09
Janis Krums @jkrums

@raffi
qcon shanghai 2013
what are the goals?
⇢ evolve from being solely a web stack

@raffi
qcon shanghai 2013
@raffi
qcon shanghai 2013
ROUTING

PRESENTATION

LOGIC

STORAGE &
RETRIEVAL

T-Bird

T-Flock +
Haplo
Monorail
Gizmoduck

Flock(s)

@raffi
qcon shanghai 2013
ROUTING

PRESENTATION

LOGIC

STORAGE &
RETRIEVAL

T-Bird

T-Flock +
Haplo
Monorail
Gizmoduck

Flock(s)

@raffi
qcon shanghai 2013
ROUTING

PRESENTATION

LOGIC

STORAGE &
RETRIEVAL

T-Bird

T-Flock +
Haplo
Monorail
Gizmoduck

Flock(s)

@raffi
qcon shanghai 2013
ROUTING

PRESENTATION

LOGIC

STORAGE &
RETRIEVAL

T-Bird

T-Flock +
Haplo
Monorail
Gizmoduck

Flock(s)

@raffi
qcon shanghai 2013
ROUTING

PRESENTATION

LOGIC

STORAGE &
RETRIEVAL

T-Bird

T-Flock +
Haplo
Monorail
Gizmoduck

Flock(s)

@raffi
qcon shanghai 2013
ROUTING

PRESENTATION

LOGIC

STORAGE &
RETRIEVAL

T-Bird

T-Flock +
Haplo
Monorail
Gizmoduck

Flock(s)

@raffi
qcon shanghai 2013
ROUTING

PRESENTATION

LOGIC

STORAGE &
RETRIEVAL

T-Bird

T-Flock +
Haplo
Monorail
Darkwing

Flock(s)

@raffi
qcon shanghai 2013
ROUTING

PRESENTATION

LOGIC

STORAGE &
RETRIEVAL

T-Bird

T-Flock +
Haplo
Monorail
Darkwing

Flock(s)

@raffi
qcon shanghai 2013
ROUTING

PRESENTATION

LOGIC

STORAGE &
RETRIEVAL

T-Bird

T-Flock +
Haplo
Monorail
Darkwing

Flock(s)

@raffi
qcon shanghai 2013
ROUTING

PRESENTATION

LOGIC

STORAGE &
RETRIEVAL

T-Bird

T-Flock +
Haplo
Monorail
Darkwing

Flock(s)

@raffi
qcon shanghai 2013
what are the goals?
⇢ evolve from being solely a web stack
⇢ isolate responsibilities and concerns
⇢ site speed and reliability
⇢ developer innovation speed
@raffi
qcon shanghai 2013
@raffi
qcon shanghai 2013
Pull
Targeted twitter.com
home_timeline API

Queried Search API

Push
User / Site Streams
Mobile Push (SMS, etc.)
Track / Follow Streams

@raffi
qcon shanghai 2013
Pull
Targeted twitter.com
home_timeline API

Queried Search API

Push
User / Site Streams
Mobile Push (SMS, etc.)
Track / Follow Streams

@raffi
qcon shanghai 2013
Pull
Targeted twitter.com
home_timeline API

Queried Search API

Push
User / Site Streams
Mobile Push (SMS, etc.)
Track / Follow Streams

@raffi
qcon shanghai 2013
Pull
Targeted twitter.com
home_timeline API

Queried Search API

Push
User / Site Streams
Mobile Push (SMS, etc.)
Track / Follow Streams

@raffi
qcon shanghai 2013
Pull
Targeted twitter.com
home_timeline API

Queried Search API

Push
User / Site Streams
Mobile Push (SMS, etc.)
Track / Follow Streams

@raffi
qcon shanghai 2013
Pull
Targeted twitter.com
home_timeline API

Queried Search API

Push
User / Site Streams
Mobile Push (SMS, etc.)
Track / Follow Streams

@raffi
qcon shanghai 2013
Pull
Targeted twitter.com
home_timeline API

Queried Search API

Push
User / Site Streams
Mobile Push (SMS, etc.)
Track / Follow Streams

@raffi
qcon shanghai 2013
Pull
Targeted twitter.com
home_timeline API

Queried Search API

Push
User / Site Streams
Mobile Push (SMS, etc.)
Track / Follow Streams

@raffi
qcon shanghai 2013
Pull
Targeted twitter.com
home_timeline API

Queried Search API

Push
User / Site Streams
Mobile Push (SMS, etc.)
Track / Follow Streams

@raffi
qcon shanghai 2013
Pull
Targeted twitter.com
home_timeline API

Queried Search API

Push
User / Site Streams
Mobile Push (SMS, etc.)
Track / Follow Streams

@raffi
qcon shanghai 2013
@raffi
qcon shanghai 2013
@raffi
qcon shanghai 2013
@raffi
qcon shanghai 2013
@raffi
qcon shanghai 2013
@raffi
qcon shanghai 2013
Write API

Ingester

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis

Timeline Cache

Search Cache

Redis

Fanout

@raffi
qcon shanghai 2013
Write API

Ingester

@raffi
qcon shanghai 2013
Write API

@raffi
qcon shanghai 2013
Write API

Ingester

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Cache

Redis
Redis
Earlybird

Fanout

@raffi
qcon shanghai 2013
Write API

Ingester

Hadoop

Batch Compute

Push Compute

Search Cache

Fanout

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Cache

Redis
Redis
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Cache

Redis
Redis
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Cache

Redis
Redis
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Cache

Redis
Redis
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Cache

Redis
Redis
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Blender

HTTP Push

Mobile
Push

Hadoop

Batch Compute

Redis
Redis
Redis

Timeline Cache

Search Cache

Redis
Redis
Earlybird

Fanout

Push Compute

Ingester

Social
Graph
Service

Timeline
Service

@raffi
qcon shanghai 2013
Write API

⇢ pipelined 4k
“destinations”
at a time
Blender

⇢ replicated

HTTP Push

Mobile
Push

Hadoop

Batch Compute

⇢ keyed off
“recipient”

Redis
Redis
Redis

Timeline Cache

Redis
Redis
Earlybird

Search Cache

insert

Fanout

Push Compute

Ingester

Social
Graph
Service

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

⇢ RPUSHX to
only add to
cached
timelines

Tweet IDPush User ID
HTTP
8 bytes
8 bytes
Mobile
Push

Bits

Hadoop
4 bytes

Batch Compute

⇢ native list
structure

Redis
Redis
Redis

Push Compute

Redis
Redis
Earlybird

Search Cache

using redis

Timeline Cache

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

⇢ RPUSHX to
only add to
cached
timelines

Tweet IDPush User ID
HTTP

Bits

Tweet ID

Bits Hadoop

User ID

Bits

Tweet ID

User ID

Bits

Tweet ID
Timeline
Service

Mobile
Tweet ID
User ID
Push

User ID

Bits

Tweet ID

User ID

Bits

Tweet ID

User ID

Bits

Tweet ID

User ID

Bits

Tweet ID

User ID

Bits

Tweet ID

User ID

Batch Compute

⇢ native list
structure

Redis
Redis
Redis

Push Compute

Redis
Redis
Earlybird

Search Cache

using redis

Timeline Cache

Fanout

Bits

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

⇢ RPUSHX to
only add to
cached
timelines

Tweet IDPush User ID
HTTP

Bits

Tweet ID

Bits Hadoop ID
Tweet

User ID

Bits

Tweet ID

User ID

Bits

Tweet ID

Timeline
Service

Mobile
Tweet ID
User ID
Push

User ID

Bits

Tweet ID

User ID

Bits

Tweet ID

User ID

Bits

Tweet ID

User ID

Bits

Tweet ID

User ID

Bits

Tweet ID

User ID

Batch Compute

⇢ native list
structure

Redis
Redis
Redis

Push Compute

Redis
Redis
Earlybird

Search Cache

using redis

Timeline Cache

Fanout

Bits

Tweet ID

Tweet ID

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Cache

Redis
Redis
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Cache

Redis
Redis
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Cache

Redis
Redis
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Cache

Redis
Redis
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Pull
Targeted twitter.com
home_timeline API

Queried Search API

Push
User / Site Streams
Mobile Push (SMS, etc.)
Track / Follow Streams

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Cache

Redis
Redis
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Cache

Redis
Redis
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Cache

Redis
Redis
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Timeline
Service

HTTP Push

Hadoop

⇢ queries one
replica of all
indexes
Mobile
Push

Batch Compute

blender
Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

⇢ merges &
ranks results
@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Pull
Targeted twitter.com
home_timeline API

Queried Search API

Push
User / Site Streams
Mobile Push (SMS, etc.)
Track / Follow Streams

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
http push / hosebird
⇢ maintains persistent connections with
end clients
⇢ processes tweet & social graph events
⇢ event-based “router”
@raffi
qcon shanghai 2013
Hosebird
Write API

Hosebird

Firehose
User Streams

Hosebird

Track / Follow

Text

@raffi
qcon shanghai 2013
Hosebird
Write API

Hosebird

Firehose
User Streams

Hosebird

Track / Follow

@raffi
qcon shanghai 2013
Hosebird
Write API

Hosebird

Firehose
User Streams

Hosebird

Track / Follow

event propagation
⇢ write API sends all events into hosebird;
sees content creation events, social graph
changes, etc.
⇢ different queues for public tweets,
protected tweets, social events, etc.
@raffi
qcon shanghai 2013
Hosebird
Write API

Hosebird

Firehose
User Streams

Hosebird

Track / Follow

@raffi
qcon shanghai 2013
Hosebird
Write API

Hosebird

Firehose
User Streams

Hosebird

Track / Follow

event cascading
⇢ bandwidth management
⇢ simultaneous connection management
(~1m long lived & open connections to this
cluster)
@raffi
qcon shanghai 2013
Hosebird
Write API

Hosebird

Firehose
User Streams

Hosebird

Track / Follow

@raffi
qcon shanghai 2013
Hosebird
Write API

Hosebird

Firehose
User Streams

Hosebird

Track / Follow

firehose
⇢ edge machine simply outputs the public
tweet queue
⇢ only allow a limited number of firehoses
per hosebird box for bandwidth
management
@raffi
qcon shanghai 2013
Hosebird
Write API

Hosebird

Firehose
Track / Follow

Hosebird

User Streams

@raffi
qcon shanghai 2013
Hosebird
Write API

Hosebird

Firehose
Track / Follow

Hosebird

User Streams

track / follow
⇢ simple query based on tweet content
⇢ keeps list of terms / users of interest
⇢ parses public tweets at the edge, and if
term matches a token, or user is of
interest, then route
@raffi
qcon shanghai 2013
Hosebird
Write API

Hosebird

Firehose
Track / Follow

Hosebird

User Streams

@raffi
qcon shanghai 2013
Hosebird
Write API

Hosebird

Firehose
Track / Follow

Hosebird

User Streams

user streams
⇢ replicate home timeline experience
⇢ upon login, obtain “following” list
⇢ keep cached following list coherent by
seeing social graph updates
⇢ route tweet if from a followed user
@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Pull
Targeted twitter.com
home_timeline API

Queried Search API

Push
User / Site Streams
Mobile Push (SMS, etc.)
Track / Follow Streams

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop
Social
Graph
Service

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop
Social
Graph
Service

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop
Social
Graph
Service

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop
Social
Graph
Service

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Pull
Targeted twitter.com
home_timeline API

Queried Search API

Push
User / Site Streams
Mobile Push (SMS, etc.)
Track / Follow Streams

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Synchronous Path
Write API

Ingester

Blender

Timeline
Service

Mobile
Push

Asynchronous Path
Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Query Path

@raffi
qcon shanghai 2013
Synchronous Path
Write API

Ingester

Blender

Timeline
Service

Mobile
Push

Asynchronous Path
Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Query Path

@raffi
qcon shanghai 2013
Synchronous Path
Write API

Ingester

Blender

Timeline
Service

Mobile
Push

Asynchronous Path
Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Query Path

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
Blender

Write Path

HTTP Push

Mobile
Push

Hadoop

Batch Compute

Redis
Redis
Redis

Timeline Cache

Redis
Earlybird
Earlybird

Fanout

Push Compute

Ingester

Search Index

Read Path

Write API

Timeline
Service

@raffi
qcon shanghai 2013
Blender

Write Path

HTTP Push

Mobile
Push

Hadoop

Batch Compute

Redis
Redis
Redis

Timeline Cache

Redis
Earlybird
Earlybird

Fanout

Push Compute

Ingester

Search Index

Read Path

Write API

Timeline
Service

@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
things we’re trying...

@raffi
qcon shanghai 2013
@raffi
qcon shanghai 2013
Write API

Redis
Earlybird
Earlybird

Fanout

Search Index

Ingester

Redis
Redis
Redis

@raffi
qcon shanghai 2013
Write API

Redis
Redis
Redis

Timeline Cache

Redis
Earlybird
Earlybird

Fanout

Search Index

Ingester

@raffi
qcon shanghai 2013
Write API

Redis
Redis
Redis

Timeline Cache

Redis
Earlybird
Earlybird

Fanout

Search Index

Ingester

@raffi
qcon shanghai 2013
Write API

Redis
Redis
Redis

Timeline Cache

Redis
Earlybird
Earlybird

Fanout

Search Index

Ingester

@raffi
qcon shanghai 2013
Write API

Redis
Redis
Redis

Timeline Cache

Redis
Earlybird
Earlybird

Fanout

Search Index

Ingester

@raffi
qcon shanghai 2013
Write API

Redis
Redis
Redis

Timeline Cache

Redis
Earlybird
Earlybird

Fanout

Search Index

Ingester

@raffi
qcon shanghai 2013
Write API

Redis
Redis
Redis

Timeline Cache

Redis
Earlybird
Earlybird

Fanout

Search Index

Ingester

@raffi
qcon shanghai 2013
Write API

search index
⇢[‘hello’,‘world’]

Redis
Redis
Redis

Timeline Cache

Redis
Earlybird
Earlybird

Fanout

Search Index

Ingester

fanout index
⇢[@danadanger, ...]
@raffi
qcon shanghai 2013
User Intent

Query Expansion

“Hello, world”

“Hello” AND “world”

@raffi’s home timeline

home_timeline:raffi

@raffi
qcon shanghai 2013
User Intent

Query Expansion

“Hello, world”

“Hello” AND “world”

@raffi’s home timeline

home_timeline:raffi

@raffi
qcon shanghai 2013
User Intent

Query Expansion

“Hello, world”

“Hello” AND “world”

@raffi’s home timeline

home_timeline:raffi

@raffi
qcon shanghai 2013
User Intent

Query Expansion

“Hello, world”

“Hello” AND “world”

@raffi’s home timeline

home_timeline:raffi

@raffi
qcon shanghai 2013
User Intent

Query Expansion

“Hello, world”

“Hello” AND “world”

@raffi’s home timeline

home_timeline:raffi

@raffi
qcon shanghai 2013
User Intent

Query Expansion

“Hello, world”

“Hello” AND “world”

@raffi’s home timeline

home_timeline:raffi

@raffi
qcon shanghai 2013
User Intent

Query Expansion

“Hello, world”

“Hello” AND “world”

@raffi’s home timeline

home_timeline:raffi

@raffi
qcon shanghai 2013
User Intent

Query Expansion

“Hello, world”

“Hello” AND “world”

@raffi’s home timeline

home_timeline:raffi

@raffi
qcon shanghai 2013
Write API

fan-in
⇢ O(n) read
Redis
Earlybird
Earlybird

⇢ O(n) write

Fanout

Redis
Redis
Redis

Timeline Cache

Ingester

Search Index

⇢ O(1) write

fan-out
⇢ O(1) read

@raffi
qcon shanghai 2013
User Intent

Query Expansion

“Hello, world”

“Hello” AND “world”

@raffi’s home timeline

home_timeline:raffi

@raffi
qcon shanghai 2013
User Intent

Query Expansion

“Hello, world”

“Hello” AND “world”

@raffi’s home timeline

home_timeline:raffi
OR
user_timeline:taylorswift13

@raffi
qcon shanghai 2013
streaming compute
⇢ continuous computation
⇢ driven by the events that come into
twitter
⇢ generalizing the push mechanism
@raffi
qcon shanghai 2013
Write API

Ingester

Blender

Mobile
Push

Hadoop

Batch Compute

HTTP Push

Push Compute

Redis
Redis
Redis

Timeline Cache

Search Index

Redis
Earlybird
Earlybird

Fanout

Timeline
Service

@raffi
qcon shanghai 2013
timeline query statistics
⇢ >150m active users worldwide
⇢ 300k qps poll-based timelines 

@ 1ms p50 / 4ms p99
⇢ 30k qps search-based timelines
@raffi
qcon shanghai 2013
tweet input
⇢ ~340m tweets per day
⇢ ~4K/sec daily average
⇢ ~6K/sec daily peak
⇢ >10K/sec during large events
@raffi
qcon shanghai 2013
@raffi
qcon shanghai 2013
followed by

following

@raffi
qcon shanghai 2013
@raffi
qcon shanghai 2013
timeline delivery statistics
⇢ 26b deliveries / day (~18m / min)
⇢ 3.5 seconds @ p50 to deliver to 1m
⇢ ~300k deliveries / sec

@raffi
qcon shanghai 2013
thanks!

Contenu connexe

En vedette (6)

FeedTso, History of a WP7 FeedReader
FeedTso, History of a WP7 FeedReaderFeedTso, History of a WP7 FeedReader
FeedTso, History of a WP7 FeedReader
 
Moodle 2 Top 10 Issues
Moodle 2 Top 10 IssuesMoodle 2 Top 10 Issues
Moodle 2 Top 10 Issues
 
Reliance 2013 Brochure
Reliance 2013 BrochureReliance 2013 Brochure
Reliance 2013 Brochure
 
Moodle to Mars
Moodle to MarsMoodle to Mars
Moodle to Mars
 
The ViewModel pattern
The ViewModel patternThe ViewModel pattern
The ViewModel pattern
 
Enough Theory! Let's put that content strategy into action!
Enough Theory! Let's put that content strategy into action! Enough Theory! Let's put that content strategy into action!
Enough Theory! Let's put that content strategy into action!
 

Similaire à Q con shanghai2013-[jains krums]-[real-time-delivery-archiecture]

Similaire à Q con shanghai2013-[jains krums]-[real-time-delivery-archiecture] (20)

BDD to the Bone: Using Behave and Selenium to Test-Drive Web Applications
BDD to the Bone: Using Behave and Selenium to Test-Drive Web ApplicationsBDD to the Bone: Using Behave and Selenium to Test-Drive Web Applications
BDD to the Bone: Using Behave and Selenium to Test-Drive Web Applications
 
Microformats
MicroformatsMicroformats
Microformats
 
Feedback en continu grâce au TDD et au AsCode
Feedback en continu grâce au TDD et au AsCodeFeedback en continu grâce au TDD et au AsCode
Feedback en continu grâce au TDD et au AsCode
 
Advanced search for your legacy application - David Pilato - Codemotion Rome ...
Advanced search for your legacy application - David Pilato - Codemotion Rome ...Advanced search for your legacy application - David Pilato - Codemotion Rome ...
Advanced search for your legacy application - David Pilato - Codemotion Rome ...
 
The Power of Open Data
The Power of Open DataThe Power of Open Data
The Power of Open Data
 
"gRPC vs REST: let the battle begin!" GeeCON Krakow 2018 edition
"gRPC vs REST: let the battle begin!" GeeCON Krakow 2018 edition"gRPC vs REST: let the battle begin!" GeeCON Krakow 2018 edition
"gRPC vs REST: let the battle begin!" GeeCON Krakow 2018 edition
 
"gRPC vs REST: let the battle begin!" DevoxxUK 2018 edition
"gRPC vs REST: let the battle begin!" DevoxxUK 2018 edition"gRPC vs REST: let the battle begin!" DevoxxUK 2018 edition
"gRPC vs REST: let the battle begin!" DevoxxUK 2018 edition
 
BFF Pattern in Action: SoundCloud’s Microservices
BFF Pattern in Action: SoundCloud’s MicroservicesBFF Pattern in Action: SoundCloud’s Microservices
BFF Pattern in Action: SoundCloud’s Microservices
 
AWS Stripe Meetup - Powering UK Startup Economy
AWS Stripe Meetup - Powering UK Startup EconomyAWS Stripe Meetup - Powering UK Startup Economy
AWS Stripe Meetup - Powering UK Startup Economy
 
"gRPC vs REST: let the battle begin!" OSCON 2018 edition
"gRPC vs REST: let the battle begin!" OSCON 2018 edition"gRPC vs REST: let the battle begin!" OSCON 2018 edition
"gRPC vs REST: let the battle begin!" OSCON 2018 edition
 
HTTPS The Road To A More Secure Web / SEOCamp Paris
HTTPS The Road To A More Secure Web / SEOCamp ParisHTTPS The Road To A More Secure Web / SEOCamp Paris
HTTPS The Road To A More Secure Web / SEOCamp Paris
 
BigWP: Delivering the news over HTTPS
BigWP: Delivering the news over HTTPSBigWP: Delivering the news over HTTPS
BigWP: Delivering the news over HTTPS
 
Experiences in Architecting & Implementing Platforms using Serverless.pdf
Experiences in Architecting & Implementing Platforms using Serverless.pdfExperiences in Architecting & Implementing Platforms using Serverless.pdf
Experiences in Architecting & Implementing Platforms using Serverless.pdf
 
Timelines at scale
Timelines at scaleTimelines at scale
Timelines at scale
 
Timelines at Scale (Raffi Krikorian - VP of Engineering at Twitter)
Timelines at Scale (Raffi Krikorian - VP of Engineering at Twitter)Timelines at Scale (Raffi Krikorian - VP of Engineering at Twitter)
Timelines at Scale (Raffi Krikorian - VP of Engineering at Twitter)
 
Raffi Krikorian, Twitter Timelines at Scale
Raffi Krikorian, Twitter Timelines at ScaleRaffi Krikorian, Twitter Timelines at Scale
Raffi Krikorian, Twitter Timelines at Scale
 
Building Serverless applications with Python
Building Serverless applications with PythonBuilding Serverless applications with Python
Building Serverless applications with Python
 
Twitter API 2.0
Twitter API 2.0Twitter API 2.0
Twitter API 2.0
 
AWS CodeStar 및 Cloud9을 통한 서버리스(Serverless) 앱 개발 길잡이 - 윤석찬 (AWS 테크에반젤리스트)
AWS CodeStar 및 Cloud9을 통한 서버리스(Serverless) 앱 개발 길잡이 - 윤석찬 (AWS 테크에반젤리스트)AWS CodeStar 및 Cloud9을 통한 서버리스(Serverless) 앱 개발 길잡이 - 윤석찬 (AWS 테크에반젤리스트)
AWS CodeStar 및 Cloud9을 통한 서버리스(Serverless) 앱 개발 길잡이 - 윤석찬 (AWS 테크에반젤리스트)
 
Front End Development for Back End Developers - vJUG24 2017
Front End Development for Back End Developers - vJUG24 2017Front End Development for Back End Developers - vJUG24 2017
Front End Development for Back End Developers - vJUG24 2017
 

Plus de Michael Zhang

2014 GITC 帶上數據去創業 talkingdata—高铎
 2014 GITC 帶上數據去創業 talkingdata—高铎 2014 GITC 帶上數據去創業 talkingdata—高铎
2014 GITC 帶上數據去創業 talkingdata—高铎
Michael Zhang
 
Cuda 6 performance_report
Cuda 6 performance_reportCuda 6 performance_report
Cuda 6 performance_report
Michael Zhang
 
Q con shanghai2013-[ben lavender]-[long-distance relationships with robots]
Q con shanghai2013-[ben lavender]-[long-distance relationships with robots]Q con shanghai2013-[ben lavender]-[long-distance relationships with robots]
Q con shanghai2013-[ben lavender]-[long-distance relationships with robots]
Michael Zhang
 
Q con shanghai2013-[刘海锋]-[京东文件系统简介]
Q con shanghai2013-[刘海锋]-[京东文件系统简介]Q con shanghai2013-[刘海锋]-[京东文件系统简介]
Q con shanghai2013-[刘海锋]-[京东文件系统简介]
Michael Zhang
 
Q con shanghai2013-[韩军]-[超大型电商系统架构解密]
Q con shanghai2013-[韩军]-[超大型电商系统架构解密]Q con shanghai2013-[韩军]-[超大型电商系统架构解密]
Q con shanghai2013-[韩军]-[超大型电商系统架构解密]
Michael Zhang
 
Q con shanghai2013-[黄舒泉]-[intel it openstack practice]
Q con shanghai2013-[黄舒泉]-[intel it openstack practice]Q con shanghai2013-[黄舒泉]-[intel it openstack practice]
Q con shanghai2013-[黄舒泉]-[intel it openstack practice]
Michael Zhang
 
Q con shanghai2013-罗婷-performance methodology
Q con shanghai2013-罗婷-performance methodologyQ con shanghai2013-罗婷-performance methodology
Q con shanghai2013-罗婷-performance methodology
Michael Zhang
 
Q con shanghai2013-赵永明-ats与cdn实践
Q con shanghai2013-赵永明-ats与cdn实践Q con shanghai2013-赵永明-ats与cdn实践
Q con shanghai2013-赵永明-ats与cdn实践
Michael Zhang
 

Plus de Michael Zhang (20)

廣告系統在Docker/Mesos上的可靠性實踐
廣告系統在Docker/Mesos上的可靠性實踐廣告系統在Docker/Mesos上的可靠性實踐
廣告系統在Docker/Mesos上的可靠性實踐
 
HKIX Upgrade to 100Gbps-Based Two-Tier Architecture
HKIX Upgrade to 100Gbps-Based Two-Tier ArchitectureHKIX Upgrade to 100Gbps-Based Two-Tier Architecture
HKIX Upgrade to 100Gbps-Based Two-Tier Architecture
 
2014 GITC 帶上數據去創業 talkingdata—高铎
 2014 GITC 帶上數據去創業 talkingdata—高铎 2014 GITC 帶上數據去創業 talkingdata—高铎
2014 GITC 帶上數據去創業 talkingdata—高铎
 
Fastsocket Linxiaofeng
Fastsocket LinxiaofengFastsocket Linxiaofeng
Fastsocket Linxiaofeng
 
Spark sql meetup
Spark sql meetupSpark sql meetup
Spark sql meetup
 
2014 Hpocon 李志刚 1号店 - puppet在1号店的实践
2014 Hpocon 李志刚   1号店 - puppet在1号店的实践2014 Hpocon 李志刚   1号店 - puppet在1号店的实践
2014 Hpocon 李志刚 1号店 - puppet在1号店的实践
 
2014 Hpocon 姚仁捷 唯品会 - data driven ops
2014 Hpocon 姚仁捷   唯品会 - data driven ops2014 Hpocon 姚仁捷   唯品会 - data driven ops
2014 Hpocon 姚仁捷 唯品会 - data driven ops
 
2014 Hpocon 高驰涛 云智慧 - apm在高性能架构中的应用
2014 Hpocon 高驰涛   云智慧 - apm在高性能架构中的应用2014 Hpocon 高驰涛   云智慧 - apm在高性能架构中的应用
2014 Hpocon 高驰涛 云智慧 - apm在高性能架构中的应用
 
2014 Hpocon 黄慧攀 upyun - 平台架构的服务监控
2014 Hpocon 黄慧攀   upyun - 平台架构的服务监控2014 Hpocon 黄慧攀   upyun - 平台架构的服务监控
2014 Hpocon 黄慧攀 upyun - 平台架构的服务监控
 
2014 Hpocon 吴磊 ucloud - 由点到面 提升公有云服务可用性
2014 Hpocon 吴磊   ucloud - 由点到面 提升公有云服务可用性2014 Hpocon 吴磊   ucloud - 由点到面 提升公有云服务可用性
2014 Hpocon 吴磊 ucloud - 由点到面 提升公有云服务可用性
 
2014 Hpocon 周辉 大众点评 - 大众点评混合开发模式下的加速尝试
2014 Hpocon 周辉   大众点评 - 大众点评混合开发模式下的加速尝试2014 Hpocon 周辉   大众点评 - 大众点评混合开发模式下的加速尝试
2014 Hpocon 周辉 大众点评 - 大众点评混合开发模式下的加速尝试
 
Cuda 6 performance_report
Cuda 6 performance_reportCuda 6 performance_report
Cuda 6 performance_report
 
The Data Center and Hadoop
The Data Center and HadoopThe Data Center and Hadoop
The Data Center and Hadoop
 
Hadoop Hardware @Twitter: Size does matter.
Hadoop Hardware @Twitter: Size does matter.Hadoop Hardware @Twitter: Size does matter.
Hadoop Hardware @Twitter: Size does matter.
 
Q con shanghai2013-[ben lavender]-[long-distance relationships with robots]
Q con shanghai2013-[ben lavender]-[long-distance relationships with robots]Q con shanghai2013-[ben lavender]-[long-distance relationships with robots]
Q con shanghai2013-[ben lavender]-[long-distance relationships with robots]
 
Q con shanghai2013-[刘海锋]-[京东文件系统简介]
Q con shanghai2013-[刘海锋]-[京东文件系统简介]Q con shanghai2013-[刘海锋]-[京东文件系统简介]
Q con shanghai2013-[刘海锋]-[京东文件系统简介]
 
Q con shanghai2013-[韩军]-[超大型电商系统架构解密]
Q con shanghai2013-[韩军]-[超大型电商系统架构解密]Q con shanghai2013-[韩军]-[超大型电商系统架构解密]
Q con shanghai2013-[韩军]-[超大型电商系统架构解密]
 
Q con shanghai2013-[黄舒泉]-[intel it openstack practice]
Q con shanghai2013-[黄舒泉]-[intel it openstack practice]Q con shanghai2013-[黄舒泉]-[intel it openstack practice]
Q con shanghai2013-[黄舒泉]-[intel it openstack practice]
 
Q con shanghai2013-罗婷-performance methodology
Q con shanghai2013-罗婷-performance methodologyQ con shanghai2013-罗婷-performance methodology
Q con shanghai2013-罗婷-performance methodology
 
Q con shanghai2013-赵永明-ats与cdn实践
Q con shanghai2013-赵永明-ats与cdn实践Q con shanghai2013-赵永明-ats与cdn实践
Q con shanghai2013-赵永明-ats与cdn实践
 

Dernier

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Dernier (20)

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

Q con shanghai2013-[jains krums]-[real-time-delivery-archiecture]