31
A vision for ejabberd March 2015, 25th ejabberd San Francisco Meetup Mickaël Rémond <[email protected]>

A vision for ejabberd - ejabberd SF Meetup

Embed Size (px)

Citation preview

Page 1: A vision for ejabberd - ejabberd SF Meetup

A vision for ejabberdMarch 2015, 25th ejabberd San Francisco Meetup Mickaël Rémond <[email protected]>

Page 2: A vision for ejabberd - ejabberd SF Meetup

Who am I ?

Mickaël Rémond, ProcessOne Founder

ejabberd tech lead, XMPP expert Focus on mobile networking and Internet of Things

Boxcar tech lead, push and alert s expert

Erlang developer since 1998 Author of French Erlang book Erlang User of the year in 2004

Polyglot programmer, fluent in many programming languages (Elixir, Objective C, Ruby)

Page 3: A vision for ejabberd - ejabberd SF Meetup

XMPP and ejabberd

Page 4: A vision for ejabberd - ejabberd SF Meetup

XMPP

XMPP stands for eXtensible Messaging and Presence Protocol This is a standard of IETF This is a decentralized / federated protocol

It is extremely versatile and widely used Created for Instant Messaging Expanded to group chat / social networks Was extended to support voice calls Managed to adapt to the smartphone era Widely use in gaming and social network Used to power the Internet of Things

Page 5: A vision for ejabberd - ejabberd SF Meetup

ejabberd

Actively developed since 2002 Most widely deployed XMPP server First server claiming XMPP protocol compliance. Renowed for massive scalability, robustness, high versatility. Deployed on the largest scale XMPP deployments on the planet. Very extensible through event-based API. Largest XMPP features set available, with good compliance and protocol coverage (Pubsub, MUC, privacy, MAM) Developed by a growing team of 60 developers. 1500+ stars, 500+ forks. Consistently top Erlang project among with Cowboy and Riak. Faced the challenge of managing the turning point of web and mobile.

Page 6: A vision for ejabberd - ejabberd SF Meetup

Interesting XMPP extensions and features

Multi User Chat PubSub and Personal eventing protocol Message archiving Management Privacy List Service Discovery Media proxies: Socks 5, Turn, Voice support: Jingle and SIP External components: Jabber component protocol, Priviledged entities Reliability: Message Delivery Receipt, Stream Management Several extensions around the Internet of Things (Provisioning, discovery,..) and more to be announced in april :)

Page 7: A vision for ejabberd - ejabberd SF Meetup

ejabberd architecture

Page 8: A vision for ejabberd - ejabberd SF Meetup

ejabberd internal architecture

ejabberd node

router

session managerc2s

Data Modulesone or several backends

Features Modules

Reliability & Security Modules

s2s(federation)

Pars

ing

- Soc

kets

- C

lust

erin

g

Authentication- Mnesia

- SQL (MySQL, Postgres)- NoSQL (Riak)

- LDAP- PAM

- Rest API

Contacts - Rosters- Mnesia

- SQL (MySQL, Postgres)- NoSQL (Riak)

- LDAP- Rest API

Message archive- Mnesia

- SQL (MySQL, Postgres)

Profile - VCards- Mnesia

- SQL (MySQL, Postgres)- LDAP

Carbon copy

Message acks

Stream management

Ping

Multi-User Chat

Pubsub

Offline

Personal events

Last activity

Message traceability

Anonymous access

Logging

Media transfer

Privacy

Shaping / anti DOS

Audit

Page 9: A vision for ejabberd - ejabberd SF Meetup

�����

Mobile - Desktop - Web Browser

XMPP - 5222HTTP - 80

HTTPS - 443

SQL

ejabberd Instant Messagingejabberd cluster

...

Load balancers

XMPP - 5222

Database Instant MessagingMySQL - Postgres

NoSQL storageRiak

...

RiakProtocol

LDAP - Active Directory

LDAP

Webservices

ejabberd data access layerselect one or several backends

ReST

ejabberd Instant Messagingother ejabberd cluster

...XMPP5269

Your companyinfrastructure

Typical large scale ejabberd deployment

XMPP5269

Opt

iona

l fed

erat

ion

Rest of the XMPPdomains in the world

...

Page 10: A vision for ejabberd - ejabberd SF Meetup

ejabberd changes

Page 11: A vision for ejabberd - ejabberd SF Meetup

New features added to ejabberd: Mobile and web

Mobile support: Carbon Copy (XEP-0280) Stream management XEP-0352: Client State Indication

Web: Websocket

Page 12: A vision for ejabberd - ejabberd SF Meetup

New features added to ejabberd: Voice and Media transfer

SIP proxy/registrar to integrate with IP phones (RFC-3261)

TURN Media relay: Traversal Using Relays around NAT (RFC-5766)

Page 13: A vision for ejabberd - ejabberd SF Meetup

New features added to ejabberd: Scalability, robustness, flexibility

Customizable session manager backends: Mnesia, SQL, Redis

New backend support with Riak

Improvement to mod_offline and new options.

Large test suite, supporting backends Mnesia, MySQL, Postgres, LDAP, Riak

Page 14: A vision for ejabberd - ejabberd SF Meetup

New features added to ejabberd: Security

TLS cypher configuration

Password encryption, SCRAM based

mod_fail2ban to ban IPs that show malicious signs

Elixir support

Package manager for contributions and custom modules Easy cluster configuration Configuration reload on live server

Page 15: A vision for ejabberd - ejabberd SF Meetup

New features added to ejabberd: Developers

Elixir support

Initiated documentation revamp

Page 16: A vision for ejabberd - ejabberd SF Meetup

New features added to ejabberd: Administration

Package manager for contributions and custom modules

Easy cluster configuration

Configuration reload on live server

Page 17: A vision for ejabberd - ejabberd SF Meetup

Coming in next releases

Message archiving support (MAM v0.3), with multiple backends support (Mnesia, SQL, Riak)

Revamped HTTP Bosh engine.

Build in metrics / monitoring.

Revamped web interface.

Page 18: A vision for ejabberd - ejabberd SF Meetup

A vision for ejabberd

Page 19: A vision for ejabberd - ejabberd SF Meetup

What’s next ?

ejabberd is:

A testbed for XMPP extensions / a driver for innovation.

Page 20: A vision for ejabberd - ejabberd SF Meetup

Testbed for new XMPP extensions

Where do you go when you are the de facto choice for server deployment ?

ejabberd is acting as reference implementation for XMPP extension. We want ejabberd to drive the standard experimentation process of new extensions by living on the edge:

This is what will make the XMPP protocol progress faster

This is what will drive the third wave / iteration of the protocol: ie. Multi User chat Version 2 Support rework of mobile reliability stack and push notification (Think ejabberd meet Boxcar skills)

Page 21: A vision for ejabberd - ejabberd SF Meetup

What’s next ?

ejabberd is:

A testbed for XMPP extensions / a driver for innovation.

An initiative to lead the scalability understanding effort and see the whole picture in XMPP systems.

A confluence between XMPP protocol and well crafted API

Page 22: A vision for ejabberd - ejabberd SF Meetup

Lead the XMPP scalability effort

Scalable component is only part of the vision

“Is your engine fast ?”

It depends on the use case

You need to think the system as a whole / system level. Clients behaviour is part of the system Backend is part of the system Operating system and network is part of the system

Best way to build scalable service is to have a strong cooperation between client and server developers.

Page 23: A vision for ejabberd - ejabberd SF Meetup

We created a measure for rating client behaviour

We are launching an effort to rate the client behaviour from the server standpoint.

We have a measure unit, the “jabs” a measure do decide how efficient a client is. The more jabs it consume per active user, the less “efficient” that client is.

This implies: Business model for our ejabberd SaaS platform. We can offer cheap prices as we are extremely confident of our scalability. To motivate client developers to do the right thing, we price the platform on jabs consumed per month. This is build upon real life feedback of platform behaviours using our ejabberd SaaS platform. We can improve the model for usage pattern from many different use cases.

Page 24: A vision for ejabberd - ejabberd SF Meetup

What’s next ?

ejabberd is:

A testbed for XMPP extensions / a driver for innovation.

An initiative to lead the scalability understanding effort and see the whole picture in XMPP systems.

A confluence between XMPP protocol and well crafted API

Page 25: A vision for ejabberd - ejabberd SF Meetup

XMPP protocol meet APIs - 1

XMPP is a standard. This is a well defined and interoperable protocol.

Mandatory to build long lasting platform. XMPP is there since 15 years It will be there in 15 years. It is the best thing widely available.

Standard protocol is not enough and developers need API: ejabberd SaaS is a great way to change the way XMPP server are deployed:

avoid customization. 1 protocol, 1 code base, 1 feature set = no lock in offer API to developers for integration. ReST based API.

Page 26: A vision for ejabberd - ejabberd SF Meetup

XMPP protocol meet APIs - 2

API is not only about integration. It is about using ejabberd as a platform, an application server.

We launched three initiatives:

Revamp of the internal ejabberd API to make them consistent and more extensive

Ramp up testing, validation and benchmarking

Documentation effort

Page 27: A vision for ejabberd - ejabberd SF Meetup

Documentation

docs.ejabberd.im

Admin guides and explanation on all available modules Architecture guide Development guide

Collaborative effort

Tutorials

Screencasts

Video channel

Page 28: A vision for ejabberd - ejabberd SF Meetup

ejabberd vision

Everything is tied together.

Our roadmap is what accelerates making ejabberd:

a platform

an ecosystem

Page 29: A vision for ejabberd - ejabberd SF Meetup

The future ?

ejabberd is already an ubiquitous component for messaging in:

Chat Social network Gaming Internet of Things Alerting / Notifications Voice / signaling / Web RTC

Page 30: A vision for ejabberd - ejabberd SF Meetup

The future ?

ejabberd is becoming the center piece of:

a platform an ecosystem

for large scale federated realtime messaging.

Page 31: A vision for ejabberd - ejabberd SF Meetup

Questions ?