Upload
mickael-remond
View
529
Download
4
Tags:
Embed Size (px)
Citation preview
A vision for ejabberdMarch 2015, 25th ejabberd San Francisco Meetup Mickaël Rémond <[email protected]>
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 ?