Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

A vision for ejabberd - ejabberd SF Meetup


Published on

This is Mickaël Rémond presentation from ejabberd San Francisco Bay Area Meetup in march 2015. He presents latest achievements and progress made on ejabberd during the last few months. He then share his vision about the next steps to bring ejabberd XMPP platform to the next level.

Published in: Technology

A vision for ejabberd - ejabberd SF Meetup

  1. 1. A vision for ejabberd March 2015, 25th ejabberd San Francisco Meetup Mickaël Rémond <>
  2. 2. 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)
  3. 3. XMPP and ejabberd
  4. 4. 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
  5. 5. 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.
  6. 6. 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 :)
  7. 7. ejabberd architecture
  8. 8. ejabberd internal architecture … … ejabberd node router session manager c2s Data Modules one or several backends Features Modules Reliability & Security Modules s2s (federation) Parsing-Sockets-Clustering 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
  9. 9. Mobile - Desktop - Web Browser XMPP - 5222 HTTP - 80 HTTPS - 443 SQL ejabberd Instant Messaging ejabberd cluster ... Load balancers XMPP - 5222 Database Instant Messaging MySQL - Postgres NoSQL storage Riak ... Riak Protocol LDAP - Active Directory LDAP Webservices ejabberd data access layer select one or several backends ReST ejabberd Instant Messaging other ejabberd cluster ...XMPP 5269 Your company infrastructure Typical large scale ejabberd deployment XMPP 5269 Optionalfederation Rest of the XMPP domains in the world ...
  10. 10. ejabberd changes
  11. 11. New features added to ejabberd: Mobile and web Mobile support: Carbon Copy (XEP-0280) Stream management XEP-0352: Client State Indication Web: Websocket
  12. 12. 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)
  13. 13. 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
  14. 14. 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
  15. 15. New features added to ejabberd: Developers Elixir support Initiated documentation revamp
  16. 16. New features added to ejabberd: Administration Package manager for contributions and custom modules Easy cluster configuration Configuration reload on live server
  17. 17. 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.
  18. 18. A vision for ejabberd
  19. 19. What’s next ? ejabberd is: A testbed for XMPP extensions / a driver for innovation.
  20. 20. 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)
  21. 21. 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
  22. 22. 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.
  23. 23. 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.
  24. 24. 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
  25. 25. 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.
  26. 26. 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
  27. 27. Documentation Admin guides and explanation on all available modules Architecture guide Development guide Collaborative effort Tutorials Screencasts Video channel
  28. 28. ejabberd vision Everything is tied together. Our roadmap is what accelerates making ejabberd: a platform an ecosystem
  29. 29. The future ? ejabberd is already an ubiquitous component for messaging in: Chat Social network Gaming Internet of Things Alerting / Notifications Voice / signaling / Web RTC
  30. 30. The future ? ejabberd is becoming the center piece of: a platform an ecosystem for large scale federated realtime messaging.
  31. 31. Questions ?