Dans l’atelier de l’éditeur de logiciel : nouveautés BlueMind et chantiers en cours – part.1

A mi-chemin de cette année particulière, nous avons donc décidé de vous présenter un état des lieux en 2 parties des dernières nouveautés et travaux en cours chez BlueMind

La première partie de l’année 2020 aura réservé son lot de surprises. Beaucoup d’entre nous ont dû expérimenter le travail à distance pour la première fois, changer leurs habitudes de travail, les outils du quotidien et déporter l’essentiel de l’organisation de l’activité sur le collaboratif en ligne. L’email s’est plus que jamais révélé comme l’oxygène des communications numériques.

Du côté d’un éditeur, dont le cœur de l’activité est l’amélioration permanente de la solution, le travail ne s’arrête jamais. Nous n’avons pas chômé pour mettre en œuvre d’imposants chantiers et poursuivre et accélérer la consolidation de la solution. Nous aurions aimé vous présenter ces évolutions à l’occasion d’un nouveau BlueMind Summit en 2020, malheureusement le contexte nous incite à le décaler en 2021.

L’évolution de l’architecture technique et logicielle, son maintien à l’état de l’art, l’optimisation des performances, la résorption de la dette technique, l’ajout de nouveaux outils et interfaces, l’enrichissement des outils existants et de l’écosystème, font partie des chantiers de fond de consolidation de la solution BlueMind. Parmi ces chantiers récents ou en cours, qui représentent plus de 70 % du travail quotidien d’un éditeur :

.

Thunderbird : anticiper les évolutions

Thunderbird suit le développement de Firefox par leur base de code commune et ainsi les changements profonds sur les extensions. Le changement de la structuration des extensions et de leur manière d’interagir avec Thunderbird avait commencé avec la précédente version majeure 68, mais c’est maintenant avec la version 78 que les modifications sont totalement effectives. On parle ici de passage d’extension legacy vers WebExtension. Pour BlueMind, cela a signifié un recodage quasiment complet de l’extension pour qu’elle corresponde à ces nouvelles exigences, sans coutures.

Thunderbird 78 vient de sortir, mais pas en mise à jour automatique. Celle-ci arrivera plus tard laissant le temps aux développeurs de finir d’adapter leurs extensions aux multiples modifications. BlueMind a anticipé et proposera très rapidement le connecteur pour la nouvelle version de Thunderbird.

.

Le stockage objet et optimisation

Dans un environnement ou la volumétrie de stockage devient très importante, l’utilisation d’un stockage objet offre beaucoup d’avantages.

Lire notre article dédié au stockage objet.

Beaucoup pensent qu’ajouter une interface S3 (ou Swift ou autre) suffit à mettre en œuvre le stockage objet d’une solution sur leur cloud. Non ! Le stockage objet nécessite :

  • de repenser en partie comment sont gérées et manipulées les données, sous peine d’inefficacité totale. C’est un des travaux qui a été réalisé dans le développement du stockage objet pour BlueMind / Cyrus IMAP.
  • Une solution de stockage objet répondant aux exigences de performance d’une messagerie
  • De développer des outils de simulation d’usage et de stress du système pour valider les différents scénarios d’usage et d’exploitation.

Grâce à l’utilisation de ces outils, il est apparu que la latence d’accès au serveur S3 en conditions d’exploitation n’est pas toujours optimale. Le principal facteur impactant la performance visible à l’utilisateur est la latence d’accès aux objets. La latence d’accès est le temps qui s’écoule entre le moment où l’on demande l’accès à un message et le moment où l’on obtient le message complet. Cette latence est liée à la vitesse d’accès réseau, cumulée à la latence inhérente au système de stockage objet.

Voici le schéma fonctionnel des briques entrant en jeu avec le stockage objet:

schéma fonctionnel des briques entrant en jeu avec le stockage objet

Lorsqu’un client lourd demande une synchronisation de la messagerie au serveur BlueMind, le serveur Cyrus IMAP récupère les messages de manière séquentielle (l’un après l’autre). Si l’on considère que la latence d’accès aux messages est de 100 ms, alors, pour récupérer 30 messages, il faut compter au minimum 100 * 30 = 3000ms, ou 3 secondes.
Afin de réduire les effets d’une latence d’accès aux objets importants, nous avons développé une mécanique permettant de télécharger les messages en parallèle. Avec ce système, toujours avec une latence réseau de 100ms, le temps d’accès utilisateur aux 30 message n’est plus de 3000ms, mais de 100 ms. Nous téléchargeons jusqu’a 200 messages simultanément.

Afin de garder un œil sur les latences perçues par BlueMind, nous avons ajouté des métriques et un tableau de bord de contrôle dans la suite de monitoring TICK.

Nous en avons aussi profité pour ajouter une fonctionnalité permettant à l’administrateur de savoir ce qu’un backend imap est en train de faire. Cet outil permet rapidement d’identifier si un utilisateur utilise trop de connexions, ou de comprendre pourquoi un processus consomme beaucoup d’entrées sorties. Le nom du process imapd change automatiquement en fonction de ce que le processus fait.

Par exemple:

```
cyrus     3476  0.3  0.2  63776 16480 ?        S    14:44   0:01 imap: [192.168.132.240] laurent.coustet@s3.loc s3.loc!user.laurent^coustet.INBOX.Test move Idle
```

.

Outil de benchmark Email / S3

Pour aller plus loin et valider les infrastructures de stockage objet, nous avons développé un outil permettant de simuler la charge d’un serveur de messagerie sur le stockage objet et d’en mesurer la performance. Nous avons développé cet outil OpenSource, disponible sur github.

Contrairement à beaucoup d’autres outils de benchmark, nous avons essayé de simuler une charge globale d’un serveur de messagerie, pas simplement la vitesse de transfert brute. Nous mesurons la latence d’accès, ainsi que la bande passante disponible, avec des emails réels, issus de liste de diffusion ouvertes, telle que Linux Kernel Mailing List (LKML).

Voici un exemple du résultat d’une mesure de performance, avec une latence d’accès réseaux de 5 millisecondes. (Toulouse -> Roubaix).

```
+--------+--------------+-----+-----+-----+-----+-----+------+------+
|  TEST  |  THROUGHPUT  | AVG | P25 | P50 | P75 | P90 | P99  | MAX  |
+--------+--------------+-----+-----+-----+-----+-----+------+------+
| PUT 1  | 27.73 KiB/s  | 290 | 167 | 222 | 333 | 562 | 1030 | 5408 |
| GET 1  | 164.48 KiB/s |  49 |  32 |  38 |  47 |  72 |  252 | 2260 |
| PUT 4  | 122.93 KiB/s | 261 | 154 | 205 | 300 | 505 |  829 | 2597 |
| GET 4  | 692.30 KiB/s |  46 |  30 |  36 |  45 |  65 |  247 | 1574 |
| PUT 8  | 243.18 KiB/s | 264 | 159 | 211 | 305 | 493 |  777 | 2485 |
| GET 8  | 1.34 MiB/s   |  43 |  28 |  35 |  44 |  66 |  199 | 1319 |
| PUT 16 | 423.21 KiB/s | 302 | 176 | 241 | 373 | 598 |  819 | 2668 |
| GET 16 | 2.44 MiB/s   |  50 |  29 |  37 |  50 |  76 |  259 | 1894 |
| PUT 32 | 841.70 KiB/s | 304 | 169 | 232 | 372 | 612 |  992 | 2119 |
| GET 32 | 4.28 MiB/s   |  45 |  26 |  34 |  45 |  74 |  197 | 2267 |
| DEL 8  | 0.03 KiB/s   | 305 | 170 | 243 | 391 | 600 |  791 | 1861 |
+--------+--------------+-----+-----+-----+-----+-----+------+------+
```

On peut constater que les meilleurs débits sont atteints en utilisant 32 connexions simultanées vers le serveur de stockage, et que la latence de téléchargement reste constante, quel que soit le débit de transfert.

On note cependant aussi que la latence d’accès à un message est de de 45 millisecondes en moyenne, bien que la latence réseau ne soit que de 5 millisecondes. D’où l’importance d’utiliser des outils de mesure pour s’assurer que l’object storage est configuré correctement dans le cas d’une utilisation comme stockage de messagerie.

.

Mapi : nativement compatible Outlook

Être nativement compatible avec Outlook, c’est :

  • Intégrer le protocole MAPI, le protocole (ou plutôt la famille de protocoles!) développé par Microsoft pour Exchange.
  • Gérer le modèle de données complexe de Microsoft basé sur un principe de propriété/valeur. La seule liste des propriétés connues dans Exchange compte 376 pages de spécifications… et cette liste n’est qu’un seul document sur 130 qu’en compte les spécifications rendues publiques.. Amis des meta-objets et formats binaires et fluctuant selon les versions et contextes, bienvenus !
  • Adapter la solution pour répondre efficacement aux demandes d’Outlook, au travers d’une API REST.  Ceci a nécessité une évolution profonde de l’architecture de BlueMind, notamment pour la gestion et stockage d’informations des emails pour être capable de répondre aux requêtes d’Outlook qui sont du type base de données / propriétés, sans aucun rapport avec les transactions mails ou IMAP standards.

Ce travail titanesque que seul BlueMind a mené à terme nous a permis de lancer en 2019 BlueMind v4, nativement compatible avec Outlook.

Comme tout lancement de nouvelle version, ce fut une épreuve de réalité ! Ce qui fonctionne in vitro réserve parfois des surprises (et de nouveaux cas) in vivo. 2020 a été et est encore un peu l’année de finitions et d’adaptations aux « situations réelles de production ».

Notre implémentation MAPI a amélioré sa couverture fonctionnelle d’Outlook, s’est enrichie de nouveaux outils de diagnostic, supervision et exploitation. Nos équipes restent à pied d’œuvre pour consolider et adapter BlueMind v4.

Mise en conformité des données

.

L’outil de mise à jour

Le challenge de la volumétrie ou comment réduire la durée d’interruption de service. La version 4 de BlueMind a nécessité des modifications importantes d’architecture pour permettre de stocker et exposer de façon différenteplus d’informations sur les emails.

Pour mettre à jour une installation BlueMind vers la version 4, l’outil doit donc parcourir chaque message afin que BlueMind en ingère le contenu. Relire l’ensemble des messages d’une installation est une opération couteuse et longue.

De même, la mise à jour en version 4 nécessite la ré-indexation des messages.. Cette opération est également une opération prenant un temps conséquent. Pour qu’une mise à jour puisse s’effectuer dans des délais compatibles avec les exigences de production et éviter les interruptions de service trop longues nous avons fait évoluer les outils de mise à jour pour qu’ils puissent pré-traiter ces longues opérations en amont de la bascule sans interrompre le service en production.

Ainsi, lorsque le processus de mise à jour détecte la présence des données préparées, le parcours de chaque message n’est plus nécessaire. L’interruption de service est réduite au minimum, et ne prend pas beaucoup plus de temps que n’importe quelle autre mise à jour majeure.

BM35_to_4_migration_before_preindex

.

L’outil de migration depuis Zimbra

Nous avons développé un outil permettant la migration d’une infrastructure Zimbra vers une installation BlueMind. Cet outil est développé en Python, en utilisant exclusivement les interfacesde programmation (API) ouvertes disponibles dans BlueMind et dans Zimbra.

Notre outil de migration ne se limite pas à synchroniser les emails, nous avons intégré toutes les fonctionnalités essentielles à une migration réussie. Par exemple, nous migrons les utilisateurs de Zimbra vers BlueMind, en conservant leurs informations de contact, leurs paramétrages « Out of Office », ou bien encore la redirection vers une adresse email externe.

La gestion des mots de passe peut aussi poser problème. Pour cette raison nous avons intégré dans BlueMind la gestion de tous les types de mots de passe gérés par Zimbra. De la sorte, aucune modification sur les mots de passe n’est nécessaire lors de la bascule de Zimbra vers BlueMind.

L’outil permet la migration des calendriers et carnets d’adresses de chaque utilisateur, avec les permissions et partages associés. Les paramètres des calendriers sont directement synchronisés sur le calendrier utilisateur, sans qu’il n’y ait besoin de s’y abonner manuellement. Nous avons également intégré toutes les gestions de partage aussi bien pour les calendriers que pour les carnets d’adresses.

Vidéo du webinar « Migrer vers BlueMind depuis Zimbra »

Une migration d’un serveur Zimbra vers un serveur BlueMind peut se faire en plusieurs étapes, espacées dans le temps. Pour cette raison nous avons intégré les outils d’administration permettant de synchroniser par différentiel Zimbra et BlueMind. Ainsi, il est possible de lancer une première synchronisation, puis de vérifier le bon fonctionnement sur quelques utilisateurs. Par la suite, relancer la synchronisation permet de se maintenir à niveau par rapport aux nouvelles données présentes dans Zimbra. Le différentiel accélère le temps de traitement et réduit la quantité de logs produits par l’outil, limitant ainsi le travail de vérification nécessaire au minimum.

Étant donné que l’outil bm-migrator utilise les API publiques, il peut être lancé sur n’importe quelle machine disposant d’un accès réseau aux serveurs Zimbra et BlueMind.

Nous avons travaillé pour rendre l’installation de l’outil simple. Un simple excutable contient l’intégralité de l’outil de migration (à l’exception de imap-sync, qu’il faut installer manuellement, avant de lancer la synchronisation des messages).

Pour nos amis développeurs, nous avons intégré un shell dans l’outil, afin de faciliter l’écriture de scripts supplémentaires, pour des besoins spécifiques, qui peuvent ainsi utiliser toutes les directives et données BlueMind et Zimbra. Par exemple si une migration s’interrompt du fait d’une donnée non valide ou cohérente, il est possible de la modifier en live et d’indiquer à l’outil de migration de reprendre à cet endroit.

.

BM-Cli : l’administration de BlueMind en ligne de commande

BM-Cli est l’outil de pilotage de BlueMind en ligne de commande. Il vous permet d’automatiser vos opérations d’administration et vous en simplifie la gestion au quotidien.

Pourquoi BM-Cli ? On aurait presque envie de répondre que les personnes qui ne voient pas l’intérêt d’une interface en ligne de commande ne doivent pas être les lecteurs de ces sujets d’administration. Aujourd’hui, la plupart des manipulations sur BlueMind sont faites à partir d’une interface web, via la console d’administration.

Cependant une console d’adminstration propose un nombre d’actions et de possibilités définies. Un CLI complète une console d’administration en permettant de scripter les opérations, d’extraire les différentes données pour les lister ou les traiter de façon spécifique, d’automatiser des séquences d’actions, d’effectuer des opérations depuis des programmes externes,..

BM-Cli est un outil intégré qui fait appel à des API pour automatiser un maximum d’actions, faire des réparations multiples (multithread), sans avoir besoin de coder.

Le CLI de BlueMind est en perpetuelle amélioration pour le rendre de plus en plus complet, permettre des opérations sur tous les types données gérés par BlueMind et automatiser le plus de tâches.

Retrouvez ici en vidéo la présentation de BM-Cli et le process d’installation détaillé.

.

A suivre…

Fin de cette première partie ! La seconde arrive au mois d’août et nous ferons notamment le point sur les travaux suivants :

  • Perfectionnements du calendrier
  • Avancées sur le nouveau webmail
  • Maintenance et mise à jour du socle 
  • Amélioration globale des performances
  • Maturité du diagnostic TICK
Image de Leslie Saladin

Leslie Saladin

Partagez cet article

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

1 + = 7

A propos de BlueMind

Accessible depuis tous les clients mail, web et mobiles. BlueMind offre le meilleur support collaboratif disponible pour Thunderbird et est la seule solution du marché 100 % compatible Outlook sans connecteur.

Articles récents

Suivez-nous

Inscription à la newsletter

Un e-mail par mois pour rester au courant de toutes les nouveautés BlueMind