ankara cloud meetup 6. etkinlik scaling real-time messaging on cloud sunumu

15
Scaling Real-Time Messaging on Cloud Ozan Yerli

Upload: ibrahim-guerses

Post on 15-Apr-2017

34 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Ankara Cloud Meetup 6. Etkinlik Scaling Real-Time Messaging on Cloud Sunumu

Scaling Real-Time Messaging on

Cloud

Ozan Yerli

Page 2: Ankara Cloud Meetup 6. Etkinlik Scaling Real-Time Messaging on Cloud Sunumu

What is Connected2.me?

Page 3: Ankara Cloud Meetup 6. Etkinlik Scaling Real-Time Messaging on Cloud Sunumu

10M+ Registered

Users

300K+New Users

Every Month

4M+ Monthly

Active Users

Page 4: Ankara Cloud Meetup 6. Etkinlik Scaling Real-Time Messaging on Cloud Sunumu

Use StandardsXMPP (eXtensible Messaging and Presence Protocol)

• Tried our own implementation of chat• XMPP is an industry standard• It is extensible• Stable open-source implementations: ejabberd

Page 5: Ankara Cloud Meetup 6. Etkinlik Scaling Real-Time Messaging on Cloud Sunumu

KISS (Keep It Simple, Stupid)DNS Load-Balancing

XMPP Server

Client Client Client Client Client

DNS

XMPP Server XMPP ServerClustering Clustering

Page 6: Ankara Cloud Meetup 6. Etkinlik Scaling Real-Time Messaging on Cloud Sunumu

KISS (Keep It Simple, Stupid)DNS Load-Balancing

Page 7: Ankara Cloud Meetup 6. Etkinlik Scaling Real-Time Messaging on Cloud Sunumu

De-centralize• Eliminates single points-of-failures• Infinite scalability• Reduces system management tasks

Page 8: Ankara Cloud Meetup 6. Etkinlik Scaling Real-Time Messaging on Cloud Sunumu

How to de-centralize authentication?

Page 9: Ankara Cloud Meetup 6. Etkinlik Scaling Real-Time Messaging on Cloud Sunumu

De-centralizeClient-side Anonymous Nick Generation

• Choose a long random password• Calculate hash of the password• Anonymous nick will be “anon-hash”• Server can verify nick & password without a

centralized database of nicks and passwords• No need to “register” nicks to a database

Page 10: Ankara Cloud Meetup 6. Etkinlik Scaling Real-Time Messaging on Cloud Sunumu

DRW (Don’t Reinvent Wheel)Sending media

• Users upload directly to Amazon S3 with a long random filename• User than send URL of that file via XMPP• No need to maintain servers for static files• No need to authorize users due to long random

filename

Page 11: Ankara Cloud Meetup 6. Etkinlik Scaling Real-Time Messaging on Cloud Sunumu

DRW (Don’t Reinvent Wheel)Searching users

• Collect bio change events in Redis• Push those changes to CloudSearch periodically• Clients directly query CloudSearch• Automatic scaling• Extensible with multiple field types and computed

fields

Page 12: Ankara Cloud Meetup 6. Etkinlik Scaling Real-Time Messaging on Cloud Sunumu

DRW (Don’t Reinvent Wheel)Analyzing client connection errors

Page 13: Ankara Cloud Meetup 6. Etkinlik Scaling Real-Time Messaging on Cloud Sunumu

DRW (Don’t Reinvent Wheel)Analyzing client connection errors

• When there’s a connection error, most of the time client cannot access our servers• We push data about such events from another

channel (Firehose)• We can find rare client bugs / connectivity issues

Page 14: Ankara Cloud Meetup 6. Etkinlik Scaling Real-Time Messaging on Cloud Sunumu

Let It CrashSupervisor

• Crashes are inevitable, even Erlang nodes can crash under high load due to rare bugs• Design the system in order to recover from crash

quickly and reliably• Configure Supervisor to maintain process health

and recover from crashes

Page 15: Ankara Cloud Meetup 6. Etkinlik Scaling Real-Time Messaging on Cloud Sunumu

Thank [email protected]