cross channel communication at ebay kleinanzeigen

125
Cross Channel Communication at eBay Kleinanzeigen

Upload: manuel-aldana

Post on 08-Aug-2015

153 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Cross Channel Communication at eBay Kleinanzeigen

Cross Channel Communication

at eBay Kleinanzeigen

Page 2: Cross Channel Communication at eBay Kleinanzeigen

Matthias Huttar @MattHuttarWhisky, Vienna [email protected]

Manuel AldanaMusic, Football, Berlin [email protected]

Page 3: Cross Channel Communication at eBay Kleinanzeigen
Page 4: Cross Channel Communication at eBay Kleinanzeigen

Top-1013 M 15 M

7 M2.5 M

6 M 4 M

65 %

Most Visited Site in Germany

Ads (Kleinanzeigen)

Unique Visitors / Month

Visits / Day

Messages / Day

Android Downloads

iOS Downloads

Mobile Traffic

Page 5: Cross Channel Communication at eBay Kleinanzeigen

Platform

DevelopersProduct ManagerQA Engineer

811

511

Mobile Apps

Page 6: Cross Channel Communication at eBay Kleinanzeigen

Search

Contact

Post-Ad

Selling

Wait

Buying

Meet & Trade

Page 7: Cross Channel Communication at eBay Kleinanzeigen

-- Privacy --

Page 8: Cross Channel Communication at eBay Kleinanzeigen

2011

Page 9: Cross Channel Communication at eBay Kleinanzeigen

[email protected]

[email protected]

Seller Buyer

Bike (suuuper cool!)

Page 10: Cross Channel Communication at eBay Kleinanzeigen

WebsiteContact-Poster Form

ReplyTS

[email protected]

[email protected]

From: [email protected]

Hi! Would like to get this Bike.

Page 11: Cross Channel Communication at eBay Kleinanzeigen

WebsiteContact Seller Form

ReplyTS

[email protected]

[email protected]

From: [email protected]: [email protected]

Hi! Would like to get this Bike.

Page 12: Cross Channel Communication at eBay Kleinanzeigen

WebsiteContact Seller Form

ReplyTS

[email protected]

[email protected]: [email protected]

To: [email protected]

Sure! Let’s meet!

Page 13: Cross Channel Communication at eBay Kleinanzeigen

WebsiteContact Seller Form

ReplyTS

[email protected]

[email protected]: [email protected]

To: [email protected]

Sure! Let’s meet!

Page 14: Cross Channel Communication at eBay Kleinanzeigen

RFC 2822

Page 15: Cross Channel Communication at eBay Kleinanzeigen

Delivery Status Notifications

Autoresponder

Out-of-office Mails

Newsgroup Mails

Page 16: Cross Channel Communication at eBay Kleinanzeigen
Page 17: Cross Channel Communication at eBay Kleinanzeigen

SMTP

SMTP

FilterAnonymizer

HD

MySQL Cassandra

Page 18: Cross Channel Communication at eBay Kleinanzeigen

Theory is a Bastard

(2012)

Page 19: Cross Channel Communication at eBay Kleinanzeigen
Page 20: Cross Channel Communication at eBay Kleinanzeigen

SMTP

FilterAnonymizer

HD

Riak

SMTP

Page 21: Cross Channel Communication at eBay Kleinanzeigen

Riak

Page 22: Cross Channel Communication at eBay Kleinanzeigen

conversationconversation ID → Conversation Data

conversation_secretanonymous mail →

Conversation ID

Page 23: Cross Channel Communication at eBay Kleinanzeigen

AdConversation

Buyer Seller

Message

Message

Message

Page 24: Cross Channel Communication at eBay Kleinanzeigen

[ +18

]

=18

Page 25: Cross Channel Communication at eBay Kleinanzeigen

[ +18, - 4

]

=14

Page 26: Cross Channel Communication at eBay Kleinanzeigen

[ +18, - 4, -10

]

=4

Page 27: Cross Channel Communication at eBay Kleinanzeigen

[ +18, - 4, -10, +20

]

=24

Page 28: Cross Channel Communication at eBay Kleinanzeigen

[ +18, - 4, -10, +20, -10]

=14

Page 29: Cross Channel Communication at eBay Kleinanzeigen

Create Conversation13:00

Message from Buyer Received13:10

Message Sent13:11

Message from Seller Received13:22

Message from Seller Sent 13:22

Message From Seller Received14:11

Page 30: Cross Channel Communication at eBay Kleinanzeigen

A 13:00

B 13:10

C 13:11

A 13:00

B 13:10

D 13:50

A 13:00

B 13:10

C 13:11

D 13:50

Page 31: Cross Channel Communication at eBay Kleinanzeigen

A 13:00

B 13:10

C 13:11

A 13:00

B 13:10

D 13:50

A 13:00

B 13:10

C 13:11

D 13:50

Page 32: Cross Channel Communication at eBay Kleinanzeigen

A 13:00

B 13:10

C 13:11

A 13:00

B 13:10

D 13:50

A 13:00

B 13:10

C 13:11

D 13:50

Page 33: Cross Channel Communication at eBay Kleinanzeigen

A 13:00

B 13:10

C 13:11

A 13:00

B 13:10

D 13:50

A 13:00

B 13:10

C 13:11

D 13:50

Page 34: Cross Channel Communication at eBay Kleinanzeigen

A 13:00

B 13:10

C 13:11

A 13:00

B 13:10

D 13:50

A 13:00

B 13:10

C 13:11

D 13:50

Page 35: Cross Channel Communication at eBay Kleinanzeigen

Mai 2013:

1.000.000Mails a Day. Each Day.

(50 mails / sec)

Page 36: Cross Channel Communication at eBay Kleinanzeigen

BANG!

Page 37: Cross Channel Communication at eBay Kleinanzeigen
Page 38: Cross Channel Communication at eBay Kleinanzeigen

… some months later…

Page 39: Cross Channel Communication at eBay Kleinanzeigen

In-App Messaging

Page 40: Cross Channel Communication at eBay Kleinanzeigen

The Problem with E-Mail...

Page 41: Cross Channel Communication at eBay Kleinanzeigen
Page 42: Cross Channel Communication at eBay Kleinanzeigen
Page 43: Cross Channel Communication at eBay Kleinanzeigen
Page 44: Cross Channel Communication at eBay Kleinanzeigen

Mobile Growth

Page 45: Cross Channel Communication at eBay Kleinanzeigen
Page 46: Cross Channel Communication at eBay Kleinanzeigen
Page 47: Cross Channel Communication at eBay Kleinanzeigen

TargetKPIs

Page 48: Cross Channel Communication at eBay Kleinanzeigen

Welcome, CC-license https://flic.kr/p/6FP2Fu

Page 49: Cross Channel Communication at eBay Kleinanzeigen

MoreXY %

Visits / Day

Page 50: Cross Channel Communication at eBay Kleinanzeigen

speed lights 2, CC-license https://flic.kr/p/A5aTo

Page 51: Cross Channel Communication at eBay Kleinanzeigen

Reducedt1 + t2

Buyer Sellert1

t2

Page 52: Cross Channel Communication at eBay Kleinanzeigen

Smiley Face Graffiti, CC-license https://flic.kr/p/9PpYvj

Page 53: Cross Channel Communication at eBay Kleinanzeigen

Positive App Reviews

+Adoption Rate

Page 54: Cross Channel Communication at eBay Kleinanzeigen
Page 55: Cross Channel Communication at eBay Kleinanzeigen
Page 56: Cross Channel Communication at eBay Kleinanzeigen

2 in-house User-Tests later...

Page 57: Cross Channel Communication at eBay Kleinanzeigen

Screen 1:List-View

Screen 2:Detail-View

Page 58: Cross Channel Communication at eBay Kleinanzeigen
Page 59: Cross Channel Communication at eBay Kleinanzeigen
Page 60: Cross Channel Communication at eBay Kleinanzeigen

E-MailIn-App +E-MailIn-App

Page 61: Cross Channel Communication at eBay Kleinanzeigen

SMTP

FilterAnonymizer

HD

Riak

SMTP

Asynchronous

Page 62: Cross Channel Communication at eBay Kleinanzeigen

Asynchronous

Synchronous

In App Messaging

/postbox

SMTPSMTP

Page 63: Cross Channel Communication at eBay Kleinanzeigen

Problem:E-Mail Payload

Page 64: Cross Channel Communication at eBay Kleinanzeigen
Page 65: Cross Channel Communication at eBay Kleinanzeigen

?

Page 66: Cross Channel Communication at eBay Kleinanzeigen

Top / BottomPosting

Page 67: Cross Channel Communication at eBay Kleinanzeigen

1st Message2nd Message

Page 68: Cross Channel Communication at eBay Kleinanzeigen

QuotationMarks

Page 69: Cross Channel Communication at eBay Kleinanzeigen
Page 70: Cross Channel Communication at eBay Kleinanzeigen

Payload Mutation

Page 71: Cross Channel Communication at eBay Kleinanzeigen
Page 72: Cross Channel Communication at eBay Kleinanzeigen

Regular Expressions...

Page 73: Cross Channel Communication at eBay Kleinanzeigen

public static final Pattern MESSAGEBOX_OFFER_PATTERN = Pattern.compile("Angebot:\\s+[0-9\\.,]+\\s+EUR\\s+Angebot annehmen\\s+Gegenangebot"); // not used for push notifications. check PushNotificationTextShortener for that purpose. this impl is more defensive to ensure correct results. public static final List<Pattern> REPLACE_PATTERNS = ImmutableList.of( Pattern.compile("[<]http:.*?[>]", Pattern.MULTILINE), Pattern.compile("[*]", Pattern.MULTILINE), Pattern.compile("---* ?Urspr.*?-.*$", Pattern.MULTILINE), Pattern.compile("---* ?Original.*?-.*$", Pattern.MULTILINE), Pattern.compile("---* ?Reply.*?-.*$", Pattern.MULTILINE), Pattern.compile("Anfang der weitergeleiteten .*$", Pattern.MULTILINE), Pattern.compile(" hat am.*?geschrieben:", Pattern.MULTILINE Pattern.compile("(^| )wrote:", Pattern.MULTILINE), Pattern.compile("(^| )schrieb:", Pattern.MULTILINE), Pattern.compile("Am [0-9][0-9][.].*? schrieb:?(.*?ber eBay Pattern.compile("On [0-9][0-9][.].*? wrote:?(.*?ber eBay Kleinanzeigen)?", Pattern.compile("Sent:.*?$", Pattern.MULTILINE), Pattern.compile("Gesendet:.*?$", Pattern.MULTILINE), Pattern.compile("On.*?$", Pattern.MULTILINE), Pattern.compile("^.*?[<].*?@.*?[>].*?$", Pattern.MULTILINE), Pattern.compile("\\<mailto:.*?@.*?\\>"), Pattern.compile("\\[mailto:.*?@.*?\\]"), Pattern.compile("interessent-.*[email protected]:?"), Pattern.compile("anbieter-.*[email protected]:?"), Pattern.compile("[Vv]om [Ii][Pp]hone gesendet"), // no Pattern.CASE_INSENSITIVE Pattern.compile("[Vv]on meinem [Ii][Pp]hone gesendet"), // no Pattern.CASE_INSENSITIVE Pattern.compile("(eBay Kleinanzeigen [|] Kosten.*?)?Anfrage zu Ihrer.*?Ein Pattern.compile("^.*?Nachricht von:.*$", Pattern.MULTILINE), Pattern.compile("Artikel bereits verkauft.*?[|].*?Kontakt(\\[.*?\\])?", Pattern.DOTALL | Pattern.MULTILINE), Pattern.compile("Beantworten Sie diese Nachricht einfach.*?[|].*?Kontakt(\\[.*?\\])?", Pattern.DOTALL | Pattern.MULTILINE), MESSAGEBOX_OFFER_PATTERN

Page 74: Cross Channel Communication at eBay Kleinanzeigen

… andNGram based

Diff

Page 75: Cross Channel Communication at eBay Kleinanzeigen

1. Tokenize2. Seek3. Cleanup

NGram-Diff

Page 76: Cross Channel Communication at eBay Kleinanzeigen

Thunderbird:Yes, pick it up.> Still there? Am interested.

Outlook: Yes, pick it up.I’ll be there tomorrow.> Still there? Am interested.

n+1

n

Page 77: Cross Channel Communication at eBay Kleinanzeigen

Yes, pick it up.

thunderbird:Yes, pick it up.> Still there? Am interested.

Still there? Am interested.

n

Tokenize

Page 78: Cross Channel Communication at eBay Kleinanzeigen

Outlook: Yes, pick it up.I’ll be there tomorrow.> Still there? Am interested.

I’ll be there tomorrow.

n+1

Yes, pick it up.

Still there? Am interested.

Tokenize

Page 79: Cross Channel Communication at eBay Kleinanzeigen

Ja

SeekYes, pick it up.

Still there? Am interested.

I’ll be there tomorrow.

Yes, pick it up.

Still there? Am interested.

Yes,

Yes, pick

it

it

up.

up.

pick

Still

I’ll be there tomorrow.

Still

there? Am interested.

interested.there? Am

Page 80: Cross Channel Communication at eBay Kleinanzeigen

Ok bin morgen da.

Ja kannst du abholen.

Bereits verkauft? Habe Interesse.

Yes, pick it up.

I’ll be there tomorrow.

Still interested.there? Am

Cleanup

Page 81: Cross Channel Communication at eBay Kleinanzeigen

Regex +NGram Diff

Page 82: Cross Channel Communication at eBay Kleinanzeigen

Push-Notifications

Page 83: Cross Channel Communication at eBay Kleinanzeigen
Page 84: Cross Channel Communication at eBay Kleinanzeigen

Push-ServerPush-Server

Page 85: Cross Channel Communication at eBay Kleinanzeigen

Push-Server

([email protected] , dev123)

Device-Registration

Page 86: Cross Channel Communication at eBay Kleinanzeigen

Push-Server

javapns gcm4j

GCMAPNS

‘hello world’ an ‘[email protected]

[email protected]’ -> ‘dev123’

‘hello world’ an ‘dev123’

Push-Trigger

Page 87: Cross Channel Communication at eBay Kleinanzeigen

Push-Server

APNSGCM

‘hello world’ an ‘dev123’

Push-Receiving

Page 88: Cross Channel Communication at eBay Kleinanzeigen

Push-Server

javapns gcm4j

GCMAPNS

Page 89: Cross Channel Communication at eBay Kleinanzeigen

Rollout 1:Start Dec 2013

(~2 months)

Page 90: Cross Channel Communication at eBay Kleinanzeigen

Backend-ServerLoad

Page 91: Cross Channel Communication at eBay Kleinanzeigen

“Let’s try out new feature (swiping hell)…”Normal Traffic Pattern

Page 92: Cross Channel Communication at eBay Kleinanzeigen

Firefight Mode (CPU doubled)

Page 93: Cross Channel Communication at eBay Kleinanzeigen

Backend for Async-Requirements (Mail-Sending)

Backend for Sync-Requirements (User Facing Traffic)

Page 94: Cross Channel Communication at eBay Kleinanzeigen

Riak Read/Write

Page 95: Cross Channel Communication at eBay Kleinanzeigen

Riak Response-Times

Page 96: Cross Channel Communication at eBay Kleinanzeigen

iOSPush-Server

(APNS)

Page 97: Cross Channel Communication at eBay Kleinanzeigen

Push-Errors

Invalid Device-Tokens

Page 98: Cross Channel Communication at eBay Kleinanzeigen

Cause: Buggy Device Registration

Bug Fix

Page 99: Cross Channel Communication at eBay Kleinanzeigen

Push-Messages sent

Fix

Rollout

Page 100: Cross Channel Communication at eBay Kleinanzeigen
Page 101: Cross Channel Communication at eBay Kleinanzeigen

Android ≈ iOS.clone();

Page 102: Cross Channel Communication at eBay Kleinanzeigen

Rollout 2:

Start Feb 2014

(~2 weeks)

Page 103: Cross Channel Communication at eBay Kleinanzeigen

AndroidPush-Server

(GCM)

Page 104: Cross Channel Communication at eBay Kleinanzeigen

Push-Message Load

Page 105: Cross Channel Communication at eBay Kleinanzeigen

Push-Error Rate

GCM stability (502 Gateway)

Page 106: Cross Channel Communication at eBay Kleinanzeigen

Iteration 3:

Page 107: Cross Channel Communication at eBay Kleinanzeigen
Page 108: Cross Channel Communication at eBay Kleinanzeigen
Page 109: Cross Channel Communication at eBay Kleinanzeigen

Web Sockets?

Page 110: Cross Channel Communication at eBay Kleinanzeigen

Long Polling?

Page 111: Cross Channel Communication at eBay Kleinanzeigen

Old-School Polling!

Page 112: Cross Channel Communication at eBay Kleinanzeigen

5%

Page 113: Cross Channel Communication at eBay Kleinanzeigen

Rollout 3:Mid Feb. 2014

AB-Test

(~3 weeks)

Page 114: Cross Channel Communication at eBay Kleinanzeigen

factor 30x(-> but no impact)

Polling Bug

Page 115: Cross Channel Communication at eBay Kleinanzeigen

KPIs Revisited

Page 116: Cross Channel Communication at eBay Kleinanzeigen

MoreXY %

Visits / Day

Page 117: Cross Channel Communication at eBay Kleinanzeigen

Mobile: +15-20%Desktop:+5-10%

Page 118: Cross Channel Communication at eBay Kleinanzeigen

Reducedt1 + t2

Buyer Sellert1

t2

Page 119: Cross Channel Communication at eBay Kleinanzeigen

-50%

The Hourse, CC-license, https://flic.kr/p/eLbQcD

Page 120: Cross Channel Communication at eBay Kleinanzeigen

Positive App Reviews

+Adoption Rate

Page 121: Cross Channel Communication at eBay Kleinanzeigen

Email

iOS

Android

Desktop

Page 122: Cross Channel Communication at eBay Kleinanzeigen
Page 123: Cross Channel Communication at eBay Kleinanzeigen

...Iterate...

...Think X-Platform... ...Monitor...

...Live BizDevOps...

Page 124: Cross Channel Communication at eBay Kleinanzeigen

That’s it!

Questions?

Page 125: Cross Channel Communication at eBay Kleinanzeigen