A vision for ejabberd - ejabberd SF Meetup

Preview:

Citation preview

A vision for ejabberdMarch 2015, 25th ejabberd San Francisco Meetup Mickaël Rémond <mremond@process-one.net>

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)

XMPP and ejabberd

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

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.

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 :)

ejabberd architecture

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

�����

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

...

ejabberd changes

New features added to ejabberd: Mobile and web

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

Web: Websocket

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)

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

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

New features added to ejabberd: Developers

Elixir support

Initiated documentation revamp

New features added to ejabberd: Administration

Package manager for contributions and custom modules

Easy cluster configuration

Configuration reload on live server

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.

A vision for ejabberd

What’s next ?

ejabberd is:

A testbed for XMPP extensions / a driver for innovation.

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)

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

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.

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.

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

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.

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

Documentation

docs.ejabberd.im

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

Collaborative effort

Tutorials

Screencasts

Video channel

ejabberd vision

Everything is tied together.

Our roadmap is what accelerates making ejabberd:

a platform

an ecosystem

The future ?

ejabberd is already an ubiquitous component for messaging in:

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

The future ?

ejabberd is becoming the center piece of:

a platform an ecosystem

for large scale federated realtime messaging.

Questions ?