SlideShare a Scribd company logo
1 of 31
Download to read offline
A vision for ejabberd
March 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 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
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
...
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 ?

More Related Content

What's hot

Introduction to Kafka
Introduction to KafkaIntroduction to Kafka
Introduction to KafkaDucas Francis
 
Building a Scalable Architecture for web apps
Building a Scalable Architecture for web appsBuilding a Scalable Architecture for web apps
Building a Scalable Architecture for web appsDirecti Group
 
NoSQL afternoon in Japan Kumofs & MessagePack
NoSQL afternoon in Japan Kumofs & MessagePackNoSQL afternoon in Japan Kumofs & MessagePack
NoSQL afternoon in Japan Kumofs & MessagePackSadayuki Furuhashi
 
Introduction to Long Running Workflows 3.7
Introduction to Long Running Workflows 3.7Introduction to Long Running Workflows 3.7
Introduction to Long Running Workflows 3.7StephenKardian
 
Usemon; Building The Big Brother Of The Java Virtual Machinve
Usemon; Building The Big Brother Of The Java Virtual MachinveUsemon; Building The Big Brother Of The Java Virtual Machinve
Usemon; Building The Big Brother Of The Java Virtual MachinvePaul René Jørgensen
 
Messaging with amqp and rabbitmq
Messaging with amqp and rabbitmqMessaging with amqp and rabbitmq
Messaging with amqp and rabbitmqSelasie Hanson
 
EQR Reporting: Rails + Amazon EC2
EQR Reporting:  Rails + Amazon EC2EQR Reporting:  Rails + Amazon EC2
EQR Reporting: Rails + Amazon EC2jeperkins4
 
How Much Kafka?
How Much Kafka?How Much Kafka?
How Much Kafka?confluent
 
Scalable Persistent Message Brokering with WSO2 Message Broker
Scalable Persistent Message Brokering with WSO2 Message BrokerScalable Persistent Message Brokering with WSO2 Message Broker
Scalable Persistent Message Brokering with WSO2 Message BrokerSrinath Perera
 
Mule Script Transformer
Mule Script TransformerMule Script Transformer
Mule Script TransformerAnkush Sharma
 
Stevens Hfc2010
Stevens Hfc2010Stevens Hfc2010
Stevens Hfc2010jzw200
 
Serve like a boss (part one)
Serve like a boss (part one)Serve like a boss (part one)
Serve like a boss (part one)Hamed Nemati
 
Realtime traffic analyser
Realtime traffic analyserRealtime traffic analyser
Realtime traffic analyserAlex Moskvin
 
Nimbus project
Nimbus projectNimbus project
Nimbus projectaimas06
 
Kafka 10000 feet view
Kafka 10000 feet viewKafka 10000 feet view
Kafka 10000 feet viewyounessx01
 

What's hot (19)

Introduction to Kafka
Introduction to KafkaIntroduction to Kafka
Introduction to Kafka
 
Art Of Message Queues
Art Of Message QueuesArt Of Message Queues
Art Of Message Queues
 
Pycon2013
Pycon2013Pycon2013
Pycon2013
 
Apache kafka introduction
Apache kafka introductionApache kafka introduction
Apache kafka introduction
 
Cloud Orchestration is Broken
Cloud Orchestration is BrokenCloud Orchestration is Broken
Cloud Orchestration is Broken
 
Building a Scalable Architecture for web apps
Building a Scalable Architecture for web appsBuilding a Scalable Architecture for web apps
Building a Scalable Architecture for web apps
 
NoSQL afternoon in Japan Kumofs & MessagePack
NoSQL afternoon in Japan Kumofs & MessagePackNoSQL afternoon in Japan Kumofs & MessagePack
NoSQL afternoon in Japan Kumofs & MessagePack
 
Introduction to Long Running Workflows 3.7
Introduction to Long Running Workflows 3.7Introduction to Long Running Workflows 3.7
Introduction to Long Running Workflows 3.7
 
Usemon; Building The Big Brother Of The Java Virtual Machinve
Usemon; Building The Big Brother Of The Java Virtual MachinveUsemon; Building The Big Brother Of The Java Virtual Machinve
Usemon; Building The Big Brother Of The Java Virtual Machinve
 
Messaging with amqp and rabbitmq
Messaging with amqp and rabbitmqMessaging with amqp and rabbitmq
Messaging with amqp and rabbitmq
 
EQR Reporting: Rails + Amazon EC2
EQR Reporting:  Rails + Amazon EC2EQR Reporting:  Rails + Amazon EC2
EQR Reporting: Rails + Amazon EC2
 
How Much Kafka?
How Much Kafka?How Much Kafka?
How Much Kafka?
 
Scalable Persistent Message Brokering with WSO2 Message Broker
Scalable Persistent Message Brokering with WSO2 Message BrokerScalable Persistent Message Brokering with WSO2 Message Broker
Scalable Persistent Message Brokering with WSO2 Message Broker
 
Mule Script Transformer
Mule Script TransformerMule Script Transformer
Mule Script Transformer
 
Stevens Hfc2010
Stevens Hfc2010Stevens Hfc2010
Stevens Hfc2010
 
Serve like a boss (part one)
Serve like a boss (part one)Serve like a boss (part one)
Serve like a boss (part one)
 
Realtime traffic analyser
Realtime traffic analyserRealtime traffic analyser
Realtime traffic analyser
 
Nimbus project
Nimbus projectNimbus project
Nimbus project
 
Kafka 10000 feet view
Kafka 10000 feet viewKafka 10000 feet view
Kafka 10000 feet view
 

Viewers also liked

ProcessOne Push Platform: XMPP-based Push Solutions
ProcessOne Push Platform: XMPP-based Push SolutionsProcessOne Push Platform: XMPP-based Push Solutions
ProcessOne Push Platform: XMPP-based Push SolutionsProcessOne
 
Ejabberd installation configuration
Ejabberd installation configurationEjabberd installation configuration
Ejabberd installation configurationShaojie Yang
 
Nanomsg - Scalable Networking Library
Nanomsg - Scalable Networking LibraryNanomsg - Scalable Networking Library
Nanomsg - Scalable Networking LibraryHamidreza Soleimani
 
WaveOne server and client by ProcessOne
WaveOne server and client by ProcessOneWaveOne server and client by ProcessOne
WaveOne server and client by ProcessOneMickaël Rémond
 
Multi Chat
Multi ChatMulti Chat
Multi ChatSoftTeco
 
Event Driven Architecture Concepts in Web Technologies - Part 2
Event Driven Architecture Concepts in Web Technologies - Part 2Event Driven Architecture Concepts in Web Technologies - Part 2
Event Driven Architecture Concepts in Web Technologies - Part 2Hamidreza Soleimani
 
2015: L'année d'Elixir, Code, écosystème et communauté
2015: L'année d'Elixir, Code, écosystème et communauté2015: L'année d'Elixir, Code, écosystème et communauté
2015: L'année d'Elixir, Code, écosystème et communautéMickaël Rémond
 
Real time Web Application with XMPP and Wave
Real time Web Application with XMPP and WaveReal time Web Application with XMPP and Wave
Real time Web Application with XMPP and WaveMickaël Rémond
 
Real life XMPP Instant Messaging
Real life XMPP Instant MessagingReal life XMPP Instant Messaging
Real life XMPP Instant MessagingMickaël Rémond
 
Nodejs Applications in Production
Nodejs Applications in ProductionNodejs Applications in Production
Nodejs Applications in ProductionHamidreza Soleimani
 
Event Driven Architecture Concepts in Web Technologies - Part 1
Event Driven Architecture Concepts in Web Technologies - Part 1Event Driven Architecture Concepts in Web Technologies - Part 1
Event Driven Architecture Concepts in Web Technologies - Part 1Hamidreza Soleimani
 
XMPP IoT Sensor Data (XEP-0323)
XMPP IoT Sensor Data (XEP-0323)XMPP IoT Sensor Data (XEP-0323)
XMPP IoT Sensor Data (XEP-0323)Peter Waher
 
Phoenix Presence: Le service temps réel de Phoenix - Paris.ex #8
Phoenix Presence: Le service temps réel de Phoenix - Paris.ex #8 Phoenix Presence: Le service temps réel de Phoenix - Paris.ex #8
Phoenix Presence: Le service temps réel de Phoenix - Paris.ex #8 Mickaël Rémond
 

Viewers also liked (20)

ProcessOne Push Platform: XMPP-based Push Solutions
ProcessOne Push Platform: XMPP-based Push SolutionsProcessOne Push Platform: XMPP-based Push Solutions
ProcessOne Push Platform: XMPP-based Push Solutions
 
Ejabberd installation configuration
Ejabberd installation configurationEjabberd installation configuration
Ejabberd installation configuration
 
Nanomsg - Scalable Networking Library
Nanomsg - Scalable Networking LibraryNanomsg - Scalable Networking Library
Nanomsg - Scalable Networking Library
 
WaveOne server and client by ProcessOne
WaveOne server and client by ProcessOneWaveOne server and client by ProcessOne
WaveOne server and client by ProcessOne
 
Erlang White Label
Erlang White LabelErlang White Label
Erlang White Label
 
OneTeam Media Server
OneTeam Media ServerOneTeam Media Server
OneTeam Media Server
 
Multi Chat
Multi ChatMulti Chat
Multi Chat
 
Create Your Own Language
Create Your Own LanguageCreate Your Own Language
Create Your Own Language
 
Event Driven Architecture Concepts in Web Technologies - Part 2
Event Driven Architecture Concepts in Web Technologies - Part 2Event Driven Architecture Concepts in Web Technologies - Part 2
Event Driven Architecture Concepts in Web Technologies - Part 2
 
2015: L'année d'Elixir, Code, écosystème et communauté
2015: L'année d'Elixir, Code, écosystème et communauté2015: L'année d'Elixir, Code, écosystème et communauté
2015: L'année d'Elixir, Code, écosystème et communauté
 
Real time Web Application with XMPP and Wave
Real time Web Application with XMPP and WaveReal time Web Application with XMPP and Wave
Real time Web Application with XMPP and Wave
 
Real life XMPP Instant Messaging
Real life XMPP Instant MessagingReal life XMPP Instant Messaging
Real life XMPP Instant Messaging
 
Nodejs Applications in Production
Nodejs Applications in ProductionNodejs Applications in Production
Nodejs Applications in Production
 
Multitasking in iOS 7
Multitasking in iOS 7Multitasking in iOS 7
Multitasking in iOS 7
 
Event Driven Architecture Concepts in Web Technologies - Part 1
Event Driven Architecture Concepts in Web Technologies - Part 1Event Driven Architecture Concepts in Web Technologies - Part 1
Event Driven Architecture Concepts in Web Technologies - Part 1
 
Practical Look at Erlang
Practical Look at ErlangPractical Look at Erlang
Practical Look at Erlang
 
Analisis trafico wireshark
Analisis trafico wiresharkAnalisis trafico wireshark
Analisis trafico wireshark
 
XMPP IoT Sensor Data (XEP-0323)
XMPP IoT Sensor Data (XEP-0323)XMPP IoT Sensor Data (XEP-0323)
XMPP IoT Sensor Data (XEP-0323)
 
Rethinking Cloud Proxies
Rethinking Cloud ProxiesRethinking Cloud Proxies
Rethinking Cloud Proxies
 
Phoenix Presence: Le service temps réel de Phoenix - Paris.ex #8
Phoenix Presence: Le service temps réel de Phoenix - Paris.ex #8 Phoenix Presence: Le service temps réel de Phoenix - Paris.ex #8
Phoenix Presence: Le service temps réel de Phoenix - Paris.ex #8
 

Similar to A vision for ejabberd - ejabberd SF Meetup

10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...Mullaiselvan Mohan
 
Apache Kafka - Scalable Message-Processing and more !
Apache Kafka - Scalable Message-Processing and more !Apache Kafka - Scalable Message-Processing and more !
Apache Kafka - Scalable Message-Processing and more !Guido Schmutz
 
Apache Thrift, a brief introduction
Apache Thrift, a brief introductionApache Thrift, a brief introduction
Apache Thrift, a brief introductionRandy Abernethy
 
2014 carlos gzlez florido nksip the erlang sip application server
2014 carlos gzlez florido nksip the erlang sip application server2014 carlos gzlez florido nksip the erlang sip application server
2014 carlos gzlez florido nksip the erlang sip application serverVOIP2DAY
 
Apache Pulsar: Why Unified Messaging and Streaming Is the Future - Pulsar Sum...
Apache Pulsar: Why Unified Messaging and Streaming Is the Future - Pulsar Sum...Apache Pulsar: Why Unified Messaging and Streaming Is the Future - Pulsar Sum...
Apache Pulsar: Why Unified Messaging and Streaming Is the Future - Pulsar Sum...StreamNative
 
Easy enterprise application integration with RabbitMQ and AMQP
Easy enterprise application integration with RabbitMQ and AMQPEasy enterprise application integration with RabbitMQ and AMQP
Easy enterprise application integration with RabbitMQ and AMQPRabbit MQ
 
Microservice Pattern Launguage
Microservice Pattern LaunguageMicroservice Pattern Launguage
Microservice Pattern LaunguageInho Kang
 
Microservices for performance - GOTO Chicago 2016
Microservices for performance - GOTO Chicago 2016Microservices for performance - GOTO Chicago 2016
Microservices for performance - GOTO Chicago 2016Peter Lawrey
 
An Introduction to Microservices
An Introduction to MicroservicesAn Introduction to Microservices
An Introduction to MicroservicesAd van der Veer
 
Monitoring&Logging - Stanislav Kolenkin
Monitoring&Logging - Stanislav Kolenkin  Monitoring&Logging - Stanislav Kolenkin
Monitoring&Logging - Stanislav Kolenkin Kuberton
 
The Art of Message Queues - TEKX
The Art of Message Queues - TEKXThe Art of Message Queues - TEKX
The Art of Message Queues - TEKXMike Willbanks
 
Learn more about the tremendous value Open Data Plane brings to NFV
Learn more about the tremendous value Open Data Plane brings to NFVLearn more about the tremendous value Open Data Plane brings to NFV
Learn more about the tremendous value Open Data Plane brings to NFVGhodhbane Mohamed Amine
 
Better IT Operations and Security through Enhanced z/OS Analytics: New Featur...
Better IT Operations and Security through Enhanced z/OS Analytics: New Featur...Better IT Operations and Security through Enhanced z/OS Analytics: New Featur...
Better IT Operations and Security through Enhanced z/OS Analytics: New Featur...Precisely
 
Big mountain data and dev conference apache pulsar with mqtt for edge compu...
Big mountain data and dev conference   apache pulsar with mqtt for edge compu...Big mountain data and dev conference   apache pulsar with mqtt for edge compu...
Big mountain data and dev conference apache pulsar with mqtt for edge compu...Timothy Spann
 
Introduction to MANTL Data Platform
Introduction to MANTL Data PlatformIntroduction to MANTL Data Platform
Introduction to MANTL Data PlatformCisco DevNet
 
OFI Overview 2019 Webinar
OFI Overview 2019 WebinarOFI Overview 2019 Webinar
OFI Overview 2019 Webinarseanhefty
 

Similar to A vision for ejabberd - ejabberd SF Meetup (20)

10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
10 years in Network Protocol testing L2 L3 L4-L7 Tcl Python Manual and Automa...
 
Apache Kafka - Scalable Message-Processing and more !
Apache Kafka - Scalable Message-Processing and more !Apache Kafka - Scalable Message-Processing and more !
Apache Kafka - Scalable Message-Processing and more !
 
DhevendranResume
DhevendranResumeDhevendranResume
DhevendranResume
 
Apache Thrift, a brief introduction
Apache Thrift, a brief introductionApache Thrift, a brief introduction
Apache Thrift, a brief introduction
 
2014 carlos gzlez florido nksip the erlang sip application server
2014 carlos gzlez florido nksip the erlang sip application server2014 carlos gzlez florido nksip the erlang sip application server
2014 carlos gzlez florido nksip the erlang sip application server
 
Apache Pulsar: Why Unified Messaging and Streaming Is the Future - Pulsar Sum...
Apache Pulsar: Why Unified Messaging and Streaming Is the Future - Pulsar Sum...Apache Pulsar: Why Unified Messaging and Streaming Is the Future - Pulsar Sum...
Apache Pulsar: Why Unified Messaging and Streaming Is the Future - Pulsar Sum...
 
NkSIP: The Erlang SIP application server
NkSIP: The Erlang SIP application serverNkSIP: The Erlang SIP application server
NkSIP: The Erlang SIP application server
 
Easy enterprise application integration with RabbitMQ and AMQP
Easy enterprise application integration with RabbitMQ and AMQPEasy enterprise application integration with RabbitMQ and AMQP
Easy enterprise application integration with RabbitMQ and AMQP
 
Rajesh - CV
Rajesh - CVRajesh - CV
Rajesh - CV
 
Microservice Pattern Launguage
Microservice Pattern LaunguageMicroservice Pattern Launguage
Microservice Pattern Launguage
 
Microservices for performance - GOTO Chicago 2016
Microservices for performance - GOTO Chicago 2016Microservices for performance - GOTO Chicago 2016
Microservices for performance - GOTO Chicago 2016
 
An Introduction to Microservices
An Introduction to MicroservicesAn Introduction to Microservices
An Introduction to Microservices
 
Monitoring&Logging - Stanislav Kolenkin
Monitoring&Logging - Stanislav Kolenkin  Monitoring&Logging - Stanislav Kolenkin
Monitoring&Logging - Stanislav Kolenkin
 
The Art of Message Queues - TEKX
The Art of Message Queues - TEKXThe Art of Message Queues - TEKX
The Art of Message Queues - TEKX
 
LAMP TECHNOLOGY
LAMP TECHNOLOGYLAMP TECHNOLOGY
LAMP TECHNOLOGY
 
Learn more about the tremendous value Open Data Plane brings to NFV
Learn more about the tremendous value Open Data Plane brings to NFVLearn more about the tremendous value Open Data Plane brings to NFV
Learn more about the tremendous value Open Data Plane brings to NFV
 
Better IT Operations and Security through Enhanced z/OS Analytics: New Featur...
Better IT Operations and Security through Enhanced z/OS Analytics: New Featur...Better IT Operations and Security through Enhanced z/OS Analytics: New Featur...
Better IT Operations and Security through Enhanced z/OS Analytics: New Featur...
 
Big mountain data and dev conference apache pulsar with mqtt for edge compu...
Big mountain data and dev conference   apache pulsar with mqtt for edge compu...Big mountain data and dev conference   apache pulsar with mqtt for edge compu...
Big mountain data and dev conference apache pulsar with mqtt for edge compu...
 
Introduction to MANTL Data Platform
Introduction to MANTL Data PlatformIntroduction to MANTL Data Platform
Introduction to MANTL Data Platform
 
OFI Overview 2019 Webinar
OFI Overview 2019 WebinarOFI Overview 2019 Webinar
OFI Overview 2019 Webinar
 

More from Mickaël Rémond

Go for Real Time Streaming Architectures - DotGo 2017
Go for Real Time Streaming Architectures - DotGo 2017Go for Real Time Streaming Architectures - DotGo 2017
Go for Real Time Streaming Architectures - DotGo 2017Mickaël Rémond
 
Fighting XMPP abuse and spam with ejabberd - ejabberd Workshop #1
Fighting XMPP abuse and spam with ejabberd - ejabberd Workshop #1Fighting XMPP abuse and spam with ejabberd - ejabberd Workshop #1
Fighting XMPP abuse and spam with ejabberd - ejabberd Workshop #1Mickaël Rémond
 
Messaging temps réel avec Go
Messaging temps réel avec GoMessaging temps réel avec Go
Messaging temps réel avec GoMickaël Rémond
 
Building Scalable Systems: What you can learn from Erlang - DotScale 2016
Building Scalable Systems: What you can learn from Erlang - DotScale 2016Building Scalable Systems: What you can learn from Erlang - DotScale 2016
Building Scalable Systems: What you can learn from Erlang - DotScale 2016Mickaël Rémond
 
Property-based testing of XMPP: generate your tests automatically - ejabberd ...
Property-based testing of XMPP: generate your tests automatically - ejabberd ...Property-based testing of XMPP: generate your tests automatically - ejabberd ...
Property-based testing of XMPP: generate your tests automatically - ejabberd ...Mickaël Rémond
 
Deep Dive Into ejabberd Pubsub Implementation
Deep Dive Into ejabberd Pubsub ImplementationDeep Dive Into ejabberd Pubsub Implementation
Deep Dive Into ejabberd Pubsub ImplementationMickaël Rémond
 

More from Mickaël Rémond (7)

Go for Real Time Streaming Architectures - DotGo 2017
Go for Real Time Streaming Architectures - DotGo 2017Go for Real Time Streaming Architectures - DotGo 2017
Go for Real Time Streaming Architectures - DotGo 2017
 
Fighting XMPP abuse and spam with ejabberd - ejabberd Workshop #1
Fighting XMPP abuse and spam with ejabberd - ejabberd Workshop #1Fighting XMPP abuse and spam with ejabberd - ejabberd Workshop #1
Fighting XMPP abuse and spam with ejabberd - ejabberd Workshop #1
 
Messaging temps réel avec Go
Messaging temps réel avec GoMessaging temps réel avec Go
Messaging temps réel avec Go
 
Building Scalable Systems: What you can learn from Erlang - DotScale 2016
Building Scalable Systems: What you can learn from Erlang - DotScale 2016Building Scalable Systems: What you can learn from Erlang - DotScale 2016
Building Scalable Systems: What you can learn from Erlang - DotScale 2016
 
Property-based testing of XMPP: generate your tests automatically - ejabberd ...
Property-based testing of XMPP: generate your tests automatically - ejabberd ...Property-based testing of XMPP: generate your tests automatically - ejabberd ...
Property-based testing of XMPP: generate your tests automatically - ejabberd ...
 
Deep Dive Into ejabberd Pubsub Implementation
Deep Dive Into ejabberd Pubsub ImplementationDeep Dive Into ejabberd Pubsub Implementation
Deep Dive Into ejabberd Pubsub Implementation
 
OneTeam Media Server
OneTeam Media ServerOneTeam Media Server
OneTeam Media Server
 

Recently uploaded

Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 

Recently uploaded (20)

Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 

A vision for ejabberd - ejabberd SF Meetup

  • 1. A vision for ejabberd March 2015, 25th ejabberd San Francisco Meetup Mickaël Rémond <mremond@process-one.net>
  • 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)
  • 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. 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. 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 :)
  • 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. 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 ...
  • 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. 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. 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. 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. New features added to ejabberd: Developers Elixir support Initiated documentation revamp
  • 16. New features added to ejabberd: Administration Package manager for contributions and custom modules Easy cluster configuration Configuration reload on live server
  • 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. A vision for ejabberd
  • 19. What’s next ? ejabberd is: A testbed for XMPP extensions / a driver for innovation.
  • 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. 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. 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. 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. 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. 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. 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. Documentation docs.ejabberd.im Admin guides and explanation on all available modules Architecture guide Development guide Collaborative effort Tutorials Screencasts Video channel
  • 28. ejabberd vision Everything is tied together. Our roadmap is what accelerates making ejabberd: a platform an ecosystem
  • 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. The future ? ejabberd is becoming the center piece of: a platform an ecosystem for large scale federated realtime messaging.