Aller au menu - Aller au contenu

Ejabberd 2.0 : le serveur Jabber en Erlang

Revenir à la liste des news
Participer à la discussion

Informations

Contributeur(s) : bluestorm
Publié : le 02/03/2008 à 16:08:43
Catégorie : Programmation
Visualisations : 2 008

Ejabberd 2.0 : le serveur Jabber en Erlang

Image utilisateur

Alors que les clients Jabber (Psi, Coccinella, Kopete...) se développent petit à petit, et que le nombre d'utilisateurs du réseau gagne sans cesse en importance, les serveurs aussi se modernisent. Aujourd'hui, présentons ejabberd, l'un des plus puissants serveurs disponibles, qui vient de passer en version 2 plus de 15 mois après la dernière publication.




Le réseau Jabber



La messagerie instantanée est un des domaines les plus morcelés de la communication sur Internet : contrairement aux pages webs ou aux emails, les utilisateurs sont enfermés dans des réseaux fermés qui ne sont que très peu inter-opérables : si vous êtes sur MSN, vous ne pouvez pas discuter avec un ami (par exemple d'un autre pays) qui utilise ICQ.

Une réponse à ce problème est Jabber, un système de messagerie instantanée standard et ouvert : le protocole de communication de Jabber, nommé XMPP, est en effet une norme IETF (un des organismes de standardisation des technologies informatiques, de même que le célèbre W3C pour les standards du Web). L'ensemble du système Jabber est ouvert, disponible à tous, et repose sur d'autres normes, en particulier le langage XML. L'ouverture et la normalisation de ce format permettent une grande interopérabilité : chacun peut créer un logiciel utilisant Jabber, et, s'il respecte les spécifications minimales, communiquer avec les autres utilisateurs de Jabber.

Une particularité de Jabber est qu'il est décentralisé : dans un système de messagerie instantanée classique, par exemple MSN, l'ensemble du réseau est géré par un seul serveur (ou un seul groupe de serveurs), il est donc centralisé. Jabber, au contraire, permet à différents utilisateurs d'utiliser des serveurs différents. Cela fonctionne comme les emails : quand vous êtes sous Hotmail, vous pouvez envoyer à un ami ayant une boîte mail chez Gmail : vous envoyez votre message au serveur Hotmail, qui le transmet au serveur GMail, qui le transmet à votre ami. De même, vous pouvez contacter quelqu'un sur un autre serveur Jabber, les serveurs s'occupant de la transmission des messages.

Cette structure décentralisée a de nombreux avantages, entre autres :

  • La charge est répartie sur différents serveurs, ce qui permet d'en utiliser plusieurs petits plutôt que un gros
  • L'utilisateur est libre de choisir son serveur (qui peut être installé sur sa propre machine), ce qui garantit la confidentialité des communications (pas de serveur unique qui pourrait espionner ou censurer, comme cela s'est vu pour certains protocoles propriétaires), un chiffrage des messages étant disponible
  • Les pannes générales sont évitées : contrairement à des réseaux classiques (comme le réseau MSN), la panne d'un serveur n'affecte que ses utilisateurs, et pas le reste du réseau
  • On peut créer des serveurs Jabbers qui ne soient pas connectés au reste de l'Internet, par exemple à l'intérieur d'une entreprise
On peut par ailleurs spécialiser certains serveurs, par exemple en les transformant en "passerelles", qui sont des serveurs communiquant de Jabber vers un autre protocole. Il existe par exemple plusieurs serveurs gratuits proposant par exemple une communication depuis Jabber vers MSN (bien que le protocole de Microsoft soit loin d'être entièrement supporté, car il est fermé et il faut donc deviner son fonctionnement).

Jabber est par ailleurs développé publiquement, selon un mécanisme de proposition d'améliorations (nommées XEP, XMP Extension Protocols). Sa base XML le rend facile à étendre pour lui ajouter des fonctionnalités spécifiques, qui ne sont pas nécessaires à tous les clients, comme la Voix sur Ip.



Le serveur ejabberd



Les serveurs sont les éléments clés de l'infrastructure Jabber. Ce sont eux qui gèrent les connexions des utilisateurs et leur mise en contact. Comme Jabber repose sur un protocole ouvert, de nombreux logiciels serveurs sont disponibles, dont certains sont libres et sont installables n'importe où; vous pouvez installer un serveur Jabber chez vous si vous le souhaitez : si le SDZ avait un serveur Jabber, vous pourriez avoir des adresses Jabber en @siteduzero.com, la classe ! C'est l'un de ces serveurs libres, ejabberd, qui fait l'actualité avec la sortie de sa très attendue version 2.0.

Ejabberd se distingue par un vaste support des XEPs, ainsi que l'intégration de nombreux services comme les discussions multi-utilisateurs, la présence d'un "annuaire des utilisateurs", etc., ce qui en fait un serveur complet utilisable dès son déploiement. Il est également possible d'utiliser de nombreux modules, par exemple des transports (AIM, ICQ, MSN, SMS...) ou d'autres bases de données que celle proposée par défaut (par exemple PostgreSQL). Enfin, il se caractérise par une certaine facilité d'administration, en proposant par exemple plusieurs interfaces différentes (web, ligne de commande, en passant directement par Jabber...), ainsi que des scripts de migration depuis jabberd14 (le tout premier serveur jabber, écrit en C++).

Image utilisateur

Il en existe de nombreuses autres, dont la liste est disponible sur le site officiel.

Cependant, les qualités principales d'ejabberd sont une très grande stabilité, y compris aux moments les plus critiques (certains tests parlent de 350 000 sessions simultanées !), ainsi qu'une bonne capacité pour le logiciel à être regroupé au sein de grappes de serveurs. Ces nombreuses qualités font d'ejabberd un serveur puissant et maniable. Cela explique par exemple que la Jabber Software Foundation ait décidé en 2006 de l'utiliser à la place de jabberd14, auparavant installé depuis 1999.

La sortie, le 21 février dernier, de la version 2 du serveur a donc provoqué un certain remous.
    ejabberd 2 apporte donc son lot de nouveautés, parmi lesquelles, entre autres,
  • Des améliorations du service LDAP (un service d'annuaire) ainsi que quelques retouches aux services déjà disponibles.
  • Une traduction dans 24 langues (un appel aux traducteurs avait été lancé en plein mois de janvier), parmi lesquelles le Catalan ou l'Esperanto.
  • Ainsi que le support d'une extension du protocole permettant à l'utilisateur de publier différentes informations d'importance secondaire, comme la musique qu'il écoute, son avatar, etc. Cette technologie, nommée PEP, est supportée partiellement par certains clients comme Psi ou Coccinella dans leurs versions les plus récentes.


Une puissance qui ne vient pas de nulle part - le langage erlang



Comment expliquer cette fiabilité hors normes du serveur ejabberd ? Elle est en grande partie liée au langage de programmation choisi. En effet, plutôt que l'habituel C++, les programmeurs d'ejabberd ont choisi un langage exotique, moins connu, et spécialisé dans les applications concurrentes : Erlang.
Développé initialement par Ericsson pour des besoins internes (écrire des logiciels de routeurs téléphoniques), ce langage a été conçu pour réaliser des logiciels stables, avec une gestion des erreurs (matérielles aussi bien que logicielles) optimale, capables de supporter des milliers d'activités en parallèle (c'est ce qu'on appelle la concurrence) sans ralentissements, et ce pendant des années entières, sur un réseau entier (on dit qu'il est distribué), composé de machines hétérogènes (donc erlang devait être parfaitement portable). Enfin, erlang tourne sur une machine virtuelle, qui gère les processus : utiliser des processus natifs, dépendants du système, aurait perturbé le caractère multi-plateforme du langage, et, surtout, aurait diminué les performances. Les processus erlang sont en effet très légers, et il est fréquent d'en voir plusieurs dizaines de milliers tourner en même temps, sur une même machine. :)

On comprend qu'Ericsson ait eu besoin de toutes ces caractéristiques : imaginez un réseau téléphonique dont certaines parties du réseau se mettent à ne plus fonctionner inopinément, ou un nombre limité d'utilisateurs connectés en même temps ? Ainsi, dans un tel système, il est fréquent de voir des chiffres tels que 2 heures de panne en... 40 ans.

Comme le SDZ est aussi fréquenté par des programmeurs, nous avons pensé que vous pourriez souhaiter en apprendre plus sur ce langage : il est toujours enrichissant de se confronter à des langages qui changent nos habitudes, afin d'élargir notre point de vue, et de progresser.

Voici donc, pour les programmeurs parmis vous, un petit exemple de programme erlang (attention, c'est différent !) :

Code : Autre
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-module(todo_list).
-export([start/0, loop/1]).
 
loop(Liste) ->
    receive
        {add, X} -> loop([X|Liste]);
        {del, X} -> loop([Y || Y <- Liste, Y =/= X]);
        {From, show} -> From ! Liste,
                        loop(Liste);
        close -> io:format("Fin de la connexion~n")
    end.
 
start() ->
    io:format("Création d'un processus~n"),
    spawn(todo_list, loop, [[]]).

Si vous souhaitez en apprendre un tout petit peu plus sur ce langage (ou même simplement comprendre cet exemple), un mini-tuto a été écrit pour l'occasion : Avant goût du langage erlang : une todo-list distribuée. N'hésitez pas à aller le lire, il n'est pas si long et devrait vous intéresser (si vous aimez la programmation).

Placé sous une licence open source en 1998, le langage est ainsi sorti des laboratoires d'Ericsson, pour être adopté par une petite communauté qui grossit chaque jour un peu plus. Outre ejabberd, voici certains projets représentatifs.

Yaws, un serveur web.



Yaws est un serveur HTTP développé en erlang, pouvant tourner de façon indépendante ou bien embarqué au sein d'une autre application. Ses fichiers de configuration ressemblent à ceux écrits pour Apache, mais les modules sont également écrits en erlang, et il permet un développement web ressemblant à celui proposé par PHP avec ce langage. Grâce à la très bonne gestion des processus d'erlang, il supporte ainsi des milliers de connexions en parallèle.

Mnesia, une base de données modulaire.



Vous connaissez certainement des bases de données comme MySQL ou autres. Mnesia en est une, qui se différencie des bases de données "habituelles" par plusieurs points : premièrement, ça n'est pas une base de données de type SQL. Les requêtes sont ainsi faites en erlang pur. Deuxièmement, elle est à la base faite pour garder les données en mémoire, et non pas pour les stocker sur le disque - c'est possible, bien sûr, mais c'est une option à préciser ^^ . Enfin, elle est particulièrement légère, et donc adaptée à l'embarqué, tout comme erlang.

Elle peut donc être utilisée dans d'autres applications - par exemple dans Yaws, ou dans ejabberd ;) .
Image utilisateur
Bob l'éponge fait avec Wings 3D

Wings3D, un logiciel de modélisation.



Sans être aussi puissant qu'un Blender, le logiciel utilise une extension OpenGL d'erlang afin de modéliser des polygones en trois dimensions. Il est également utilisé pour le texturage. Il ne permet pas de faire d'animation, mais peut en revanche être utilisé pour des besoins simples, étant réputé pour sa simplicité d'utilisation.

En conclusion



Pour conclure, ejabberd est un serveur puissant, dont les améliorations seront très certainement appréciées par les différents administrateurs ou utilisateurs qui l'utilisent.

Si vous décidez de l'utiliser, il est très fortement conseillé d'apprendre erlang afin de le personnaliser par vos propres modules. Vous intéresser aux autres applications en erlang vous permettra également d'en tirer partie en les utilisant conjointement - par exemple pour faire une page web décrivant votre noeud Jabber :) .

Merci à Dark-Side et lastsseldon pour leurs conseils, ainsi qu'à Linktim et Octal pour leurs relectures diligentes.

Note :
Cette news a été écrite par iPoulet; bluestorm n'a fait que modifier des passages.

52 Participations

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1  2  Suivante
Pseudo Discussion
1 visiteur sur cette news (0 membre et 1 Anonyme)
Page 1  2  Suivante
Hors ligne Niipsey # Posté le 02/03/2008 à 16:15:23
Real' Brothaz
Avatar

Merci pour la news :)

That which does not kill me only makes me stronger (Tupac Shakur)
 
Hors ligne StocKo # Posté le 02/03/2008 à 16:17:13
To Protect And Entertain
Avatar

Bonne news !
Décidemment, cette journée aura été placée sous le signe de l'Erlang, entre cette news et le nouveau tutoriel de Bluestorm. Un langage qui mériterait que j'y consacre quelques temps :).

Maybe it's the sheep who've been telling me lies.
 
Hors ligne Karimus # Posté le 02/03/2008 à 16:17:49
Ca coule de source
Avatar

Merci pour la news, je connaissais pas. ;)
 
Hors ligne logicboard # Posté le 02/03/2008 à 16:23:28

Études : EPSIC

Citation : bluestorm
Cette news a été écrite par iPoulet; bluestorm n'a fait que modifier des passages.


Je me disais aussi que cette news ne pouvait pas être de bluestorm vu la longueur de la news, :p . Bonne news sinon !
Hors ligne bluestorm # Posté le 02/03/2008 à 16:26:12
dont ask to ask
Avatar
Groupe : Anciens
Flux RSS

Raté, ni la news ni le tuto ne sont de moi :pirate:

(Bon, j'ai participé aux deux, et je les ai soumis)
 
Hors ligne akiavara # Posté le 02/03/2008 à 16:30:21
Avatar
Flux RSS

Bonne news, très instructive !
 
Hors ligne Pingouin chauffé # Posté le 02/03/2008 à 16:31:24
Oči tíško plačúúúú
Avatar

Vous débordez pas un peu de sujet vers la fin :o ?
Très bonne new par ailleurs, ça fait plaisir d'entendre parler de ce type de langage.
Hors ligne vincent le grand # Posté le 02/03/2008 à 16:31:41

Très bonne news qui, en plus, me permet de découvrir un nouveau langage que je ne soupçonnais pas...
Bravo !

Vincent le Grand, un petit zero...
 
Hors ligne rks` # Posté le 02/03/2008 à 16:40:32
Avatar

Études : Paris 7 Denis Diderot

Huhu, Bob l'Éponge <3

Image utilisateur

The Lambda Church
« What we represent to them is freedom. »
 
Hors ligne JulienBarrier # Posté le 02/03/2008 à 16:44:35
Jappix is your future !
Avatar
Flux RSS

merci! :p

Jappix, un réseau social libre, qui n’attend que vous !
 
Hors ligne seb13 # Posté le 02/03/2008 à 16:47:54

Oui bonne news sur un bon sujet.
 
Hors ligne Ver des Roches2 # Posté le 02/03/2008 à 17:01:38
Avatar

Belle news qui parle de ce reseau Jabber, un super concepte (libre, avec possibilité de passerelles vers les autres réseaux, si c'est pas une bonne idée ça ;) ) et qui ne demande qu'a se démocratiser... et Google s'y intéresse avec GoogleTalk basé sur Jabber, donc ça ne pourras que l'aider à se démocratiser !

I like airplane, I'm like a bird, I love flying, I'm free ! Consulter mon site Web sur l'aéronautique et l'informatique.

Ver des Roches o_O ... qui ne creuse pas la vase ! ;)
 
Hors ligne SpyBen # Posté le 02/03/2008 à 17:02:43
Noob Spotted !!
Avatar

Vraiment super news, bien expliquée!
Hors ligne err303 # Posté le 02/03/2008 à 17:10:46
Liberté, Farniente, Immobilité
Avatar

@Ver des Roches2 : Google s'y est DÉJÀ intéressé et y a apporté pas mal d'améliorations, particulièrement en ce qui concerne la VoIP et trucs du genre :)

Très bonne news ceci dit ;)

Err303 - Techexo
Co-initiateur du projet Creatike (voir le site)
 
Hors ligne anonyme # Posté le 02/03/2008 à 17:19:02

Bonne news, langage interressant.
Hors ligne GuGus963 # Posté le 02/03/2008 à 17:34:09
Thelonious Monk is a god
Avatar

Études : Télécom Bretagne

Bonne news, merci :)

Interviewer: "What other interests do you have?"
Monk: "Life in general."
Interviewer: "What do you do about it?"
Monk: "Keep breathing."
...
Interviewer: "What do you think the purpose of life is?"
Monk: "To die."

« Jimi Hendrix isn't as good as me! » David Gilmour
« Prince, ce que vous êtes, vous l’êtes par le hasard de la naissance. Ce que je suis, je le suis par moi. Des princes, il y en a et il y en aura encore des milliers. Il n’y a qu’un Beethoven. » Ludwig van Beethoven
 
Hors ligne Manuu # Posté le 02/03/2008 à 17:34:22
Avatar

Yep, pas mal ^^

PS : qu'Ericsson ait. C'est du subjonctif ;)
Hors ligne ValCapri # Posté le 02/03/2008 à 17:55:28
Avatar
Flux RSS

Ville : Vaux-sous-chêvremont
Pays : Belgique
Études : Helmo Saint Laurent Sup'

Merci pour l'information, il est toujours intéressant de voir d'autres langages se démocratiser.

Cordialement, ValCapri
 
Hors ligne alex.hitman # Posté le 02/03/2008 à 18:24:40

Très intéressant, merci.
 
Hors ligne nicknick63 # Posté le 02/03/2008 à 18:26:04
Avatar
Flux RSS

Ville : Clermont-ferrand
Pays : France métropolitaine

Ah Jabber, que du bon ^^ . Après le sujet de la news est très intéressant mais peut être limité :-° .

Et sinon pour ceux que Jabber intéresse mais qui voudraient garder leur adresse MSN et qui voudraient par exemple discuter sur IRC avec un seul et unique logiciel, il existe d'excellent logiciels multi-protocoles tel que Miranda ou Pidgin ;) .
 
Hors ligne souls killer # Posté le 02/03/2008 à 18:28:01
Groupe : aigris
Avatar
Groupe : Bannis
Flux RSS

Ville : Chevilly-larue
Pays : France métropolitaine
Études : Université Paris XII

pas encore eu le temps de la lire en entier. :-°

J'ai lu en gros la première moitié, et c'est déjà très intéressant. :)

Remarque, on est habitué à ça avec les news publiées par bluestorm. ;)

La ligne droite est le plus long chemin d'un point à un autre. — Théorème mathématique shadok.
Mon blog (un peu mort depuis quelques mois) | Twitter

Discutez en direct avec les membres du site.
 
Hors ligne kyo DRALLIAM # Posté le 02/03/2008 à 18:36:45
Avatar

Pour une fois que l'on parle de wings 3D :)

On devrait en parler un peu plus je pense (et pas seulement sur le sdz), il permet d'avoir une initiation rapide a la 3D et est trés amusant pour les débutants.
Par contre je ne savais pas qu'il avait été écrit en Erlang. :euh:
Juste pour info, est-ce que Erlang est trés adapté pour la 3D ? (gestion des ressources, rapidité)

Nouveau projet : Kylatis
Terminé à 0,00000000000001% :p
Bientot en ligne o_O
 
Hors ligne patroum # Posté le 02/03/2008 à 18:42:08
Avatar

C'est bien qu'on parle d'un language différent pour faire changement.
Et bon... je crois bien que je vais aller lire le tuto :-°
Hors ligne rks` # Posté le 02/03/2008 à 19:00:32
Avatar

Études : Paris 7 Denis Diderot

Citation : nicknick63
il existe d'excellent logiciels multi-protocoles tel que Miranda ou Pidgin ;) .


Ou kopete.

The Lambda Church
« What we represent to them is freedom. »
 
Hors ligne nicknick63 # Posté le 02/03/2008 à 19:15:48
Avatar
Flux RSS

Ville : Clermont-ferrand
Pays : France métropolitaine

Citation : Dark-Side
Citation : nicknick63
il existe d'excellent logiciels multi-protocoles tel que Miranda ou Pidgin ;) .


Ou kopete.

Ah oui c'est vrai ^^ . J'avais oublié car à mon grand regret il n'est pas disponible sous Windows :( . Raison de plus pour passer sous Linux :-° .
Pour une liste plus exhaustive :
http://wiki.jabberfr.org/Clients#Clients_multi-protocoles
 
Hors ligne dk53 # Posté le 02/03/2008 à 19:17:29
Agena
Avatar
Groupe : Bannis

En effet on voit bien que ce n'est pas du bluestorm.

Ca aurait été beaucoup plus long ...

Intel Core 2 quad Q6600 / 2048 Mo DDR2 corsair / Gigabyte GA-P35C-DS3R / Samsung 7200T/Min 2*250Go (Spinpoint T166) en Raid 0 / Nvidia GeForce 8800 GtS 512 Mo / Fortron blue storm II 400w /razer Copperhead /Antec Nine hundred.

Changer une image d'eté en une image hivernale
 
Hors ligne ice13om # Posté le 02/03/2008 à 19:20:23
Et Paf !
Avatar

Très sympathique cette news, merci :)
Je connaissais Jabber, pas Erlang, je m'y mettrai peut-être, qui sait :)
 
Hors ligne hugo125 # Posté le 02/03/2008 à 19:41:15
Pourquoi faire simple ?

très bonne news, je ne connaissais pas l'erlang...
@+
Hors ligne geenux # Posté le 02/03/2008 à 19:47:58
Vive Qt
Avatar

Ville : Brest
Pays : France métropolitaine

J'ai juste une question à propos de jabber. Si on se crée une addresse jabber, on ne peut pas parler avec les utilisateurs de MSN, si?
Hors ligne Jellyka # Posté le 02/03/2008 à 20:02:24
Nerevan
Avatar

Super news, vraiment !
J'avais déjà entendu parlé de Jabber, mais c'est bien d'avoir autant de détail ^^
Merci Bien !
 
Pour accéder à cette section
Connectez-vous !
connexion_rpx

Revenir à la liste des news