Fier !

Après plusieurs mois de R&D, je suis Fier ! de l’architecture d’Alinto Protect v2 et de mes équipes.

10 ans après la version 1 d’Alinto Protect, notre serveur de relais de messagerie sécurisée, j’ai décidé de refondre l’architecture de notre produit phare. Et depuis plusieurs mois, je travaille avec mes équipes sur une refonte totale !

  • Qui a dit que la messagerie était simple ?
  • Qui a dit que les technos utilisées était vieilles ?
  • Qui a dit qu’il était impossible d’innover autour de la messagerie ?
  • Qui a dit que pour faire du Big Data il fallait bosser chez un très gros ?
  • Qui a dit qu’on ne pouvait pas s’éclater avec des technos ?

Laissez-moi vous prouver que d’utiliser les bonnes technos, couplé aux bonnes idées, et surtout avec les bonnes équipes, il est possible de s’éclater techniquement, tout en faisant des produits innovants.

En tout cas, c’est ma philosophie.

Grâce à mes équipes, je suis fier de vous présenter l’architecture d’Alinto Protect v2 : une architecture sympa, dans le but de vous fournir un produit sympa !

Le dashboard principal d'Alinto Protect v2

Le dashboard principal d’Alinto Protect v2

 

Architecture d’Alinto Protect v2

L’heure du Schéma All-in-one

Architecture d'Alinto Protect v2

Architecture d’Alinto Protect v2

 

Et maintenant, l’heure des mots-clés technos

Par ou commencer… Peut-être par l’UI

Il y a de cela un an maintenant, j’ai pu former durant une semaine, mon équipe R&D à ReactJS. Pourquoi ReactJS ? Peut être après avoir été refroidit par la “non-migration” d’AngularJS/Angular… allez savoir.

En tout cas, même s’il n’y a rien d’innovant à faire des composants graphiques – je faisais déjà cela il y a 20 avec les MFC 🙂 – je trouve que l’approche est plutôt sympa. En une semaine, j’ai donc isolé et formé mon équipe R&D, et nous avons pu ainsi poser les bases de la future version 2.

Quel choc de passer de Google GWT à un monde Full JS, heureusement que nous pouvions compter sur nos API REST et un backend solide. En tout cas, notre Stack UI est maintenant composée de :

  • ReactJS (bien évidement)
  • Redux-Saga
  • React-Router
  • yarn, jest, eslint coté dev tools…

Pour ne pas partir de rien, j’ai choisi ce boilerplate qui donne une bonne base si ça vous tente.

Business logic et API

Cette couche, nous la maitrisions déjà, il s’agit de Java EE avec Spring Boot. Comment partir sur une autre couche Java aujourd’hui ?

A nos habituels modules Security, Business rules, Kernel et REST API nous avons ajouté un Proxy ElasticSearch. Pourquoi ? Simplement parce que notre Stack ELK est “mutualisée” comme pour toutes les données de notre plateforme principale, et nous devons pouvoir dissocier les données de chacun de nos clients (et oui, nos applications sont multi-tenant nativement !). Ce module nous permet donc de n’afficher que les données des domaines de messageries de l’utilisateur connecté, même si elles se trouvent toutes dans les mêmes index ElasticSearch.

E-mail logs et statistiques

Vous l’avez deviné, il s’agit d’une couche ELK: ElasticSearch, Logstash et Kibana. Si nous n’utilisons pas Kibana, c’est justement à cause de la non-ségrégation de données.

En tout cas, c’est avec mon équipe d’exploitation que nous avons démarré il y a maintenant deux ans. Nous nous sommes amusés en passant, à monter tout cela dans une ferme Rancher à l’aide de containers Docker. Amusant ! surtout pour du Blue/Green deployment.

Indexer des millions de lignes de logs d’e-mails par jour est tout sauf simple. Je ne vais pas rentrer dans les détails ici, mais pour un e-mail qui se présente sur nos MX, nous pouvons avoir une quinzaine de lignes de logs. Il a donc fallu apprendre à agréger toutes ces données jusqu’à pouvoir en tirer des données exploitables. Et jusqu’il y a encore une semaine, je peux vous dire que ce n’était pas gagné !

E-mail Security

Si vous avez suivi notre actualité, vous savez surement que nous avons racheté Cleanmail il y a deux ans. Les équipes de Cleanmail travaillent sur Fuglu. C’est un moteur de filtrage Python composé de plugins. Nous avons donc basculé notre logique “filtrage” (Quarantaine, Rétention et Archivage) en plugin Fuglu, puis nous avons ajouté tout le savoir faire de Cleanmail concernant le filtrage Anti-Virus/Anti-Spam.

A cela vient ce coupler nos modules Milter (Java/Jython) qui complètent les règles de filtrages et de sécurité et de régulation des flux.

Spam dashboard

Le dashboard dédié à l’analyse Spam

Stockage

Comme pour tout service 24/7 qui se respecte, tout est entièrement redondé. C’est donc le cas pour notre Cluster MariaDB / Galera.

Il en va de même pour la couche Dovecot et ElasticSearch, bien évidemment !

Conclusion

Déjà, merci de m’avoir lu jusqu’ici 😉

Ensuite, j’en parlais encore avec Cédric et Séb y’a pas longtemps, mais je ne sais pas combien de boites peuvent proposer de s’éclater avec autant de techno différentes.

En tout cas, je peux vous dire que je suis Fier de notre univers technologique, mais avant tout, je suis Fier ! de mes équipes !

La suite ?

  • Qui a dit qu’on ne pouvait faire IA avec le mail ?

Charles CHAHBAZIAN

Laisser un commentaire

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