IntentPlatform est une solution modulaire conçue comme un assemblage de composants unitaires indépendants faiblement couplés appelés micro-services.
Dans cette approche d'architecture, chaque service est indépendant et responsable d'une fonction métier spécifique. Cette approche présente de nombreux avantages :
Scalabilité : chaque service peut être mis à l'échelle indépendamment, ce qui permet d'optimiser l'utilisation des ressources et de gérer les pics de charge
Résilience : la défaillance d'un service n'affecte pas l'ensemble de l'application, ce qui améliore la disponibilité et la fiabilité.
Agilité : les équipes de développement peuvent travailler de manière indépendante sur chaque service, ce qui accélère le développement, la maintenance et le déploiement.
Flexibilité technologique : chaque service peut utiliser les technologies les plus adaptées à la problématique à résoudre.
Maintenabilité : chaque service dispose d'une base de code compacte plus facile à maintenir.
Architecture orientée évènements (EDA)
La conception de micro-services autonomes est facilitée par le choix de s'appuyer sur une architecture d'intégration orientée évènements.
Dans cette architecture, les composants d'un système communiquent entre eux en produisant et en consommant des évènements. Les producteurs et les consommateurs sont découplés, ce qui signifie qu'ils n'ont pas besoin de se connaître directement.
Dans le cas d'IntentPlatform, la transmission des évènements entre micro-services s'effectue à l'aide d'un bus de messagerie asynchrone. Intent utilise le logiciel d'infrastructure open source Apache Kafka à cette fin.
Conteneurs
IntentPlatform est une plateforme pensée dès sa conception pour s'exécuter dans le cloud. Elle adopte pour ce faire plusieurs technologies dites cloud nativequi permettent un déploiement des applications optimisé pour les environnements de cloud computing modernes, tels que les clouds publics, privés et hybrides.
Nous utilisons une forme de virtualisation légère appelée conteneurs pour packager et déployer des applications de manière isolée et portable. Particulièrement adaptée aux architectures modulaires en micro-services, l'utilisation de conteneurs permet en outre d'optimiser la consommation des ressources sous-jacentes (calcul, stockage, réseau).
L'utilisation de conteneurs va de pair avec l'utilisation de technologies d'orchestration de conteneurs - pour l'automatisation du déploiement, de la mise à l'échelle et de la gestion des conteneurs - et de maillage de services (mesh) pour la gestion des communications entre services.
Intent s'appuie sur la technologie de conteneurs Docker, la solution d'orchestration Kubernetes, et la solution de maillage Istio.
Une plateforme ouverte
Avec IntentPlatform, nous avons depuis l'origine adopté une approche de conception API Firstqui place le développement d'APIs ouvertes au cœur de notre stratégie. Ce principe garantit que nos services sont accessibles et nativement inter-opérables.
Avec sa large palette d'APIs, IntentPlatform s’intègre facilement à votre système d'information et à vos processus métier.
Socle de développement
Notre socle de développement combine des technologies de pointe pour les couches serveur et client.
Back-end
Langage & Environnement :TypeScript pour le développement des applications, exécuté sur l'environnement Node.js. Ce choix assure un code robuste, typé, et des performances rapides pour les opérations I/O intensives.
Implémentation API : Utilisation de la librairie Express.js pour la création rapide et efficace des API REST/GraphQL des micro-services.
Gestion des Données :
OLTP (Opérations Transactionnelles) :MongoDB pour sa flexibilité et sa performance dans les scénarios de lecture/écriture intensifs.
ELT/OLAP (Analyse de Données) : langage SQL et moteur d'exécution DuckDB pour des traitements analytiques rapides et embarqués (OLAP - On-Line Analytical Processing et ELT - Extract, Load, Transform).
Conteneurisation & Déploiement : Les microservices sont empaquetés sous forme de conteneurs Docker, facilitant leur déploiement cohérent, leur isolation, et leur gestion dans des environnements d'orchestration (ex: Kubernetes).
Frontend
Nous adoptons une approche double pour couvrir tous les besoins d'interface utilisateur, de la richesse du web à l'uniformité du multi-écran.
Applications Full-Web (Desktop/Navigateur) :
Langage :TypeScript.
Framework :Angular. Ce choix permet de construire des applications d'entreprise (SPAs - Single Page Applications) riches, modulaires, et maintenables, idéales pour les tableaux de bord et les outils administratifs complexes.
Framework :Flutter. Cette combinaison permet de développer une base de code unique pour déployer des applications natives performantes sur iOS, Android, et Desktop, garantissant une expérience utilisateur homogène quel que soit l'appareil.
Services d'infrastructure cloud et techniques
Nos micro-services sont hébergées dans l'Union européenne dans le cloud public d'Amazon Web Services :
l'environnement de production : régions eu-west-2 (Francfort) et eu-west-3 (Paris)
les environnements de sauvegarde et de secours : région eu-west-1 (Dublin)
Pour se concentrer sur la valeur métier, nos micro-services s'appuient par ailleurs sur des services cloud gérés (SaaS/PaaS) leaders du marché pour l'implémentation de fonctionnalités techniques clés :
Catégorie
Service Cloud
Rôle et Fonctionnalité Clé
Bases de Données & Intégration
MongoDB Atlas & Aiven
Gestion et opération de nos clusters de bases de données MongoDB et de notre bus d'intégration Kafka (pour les communications asynchrones).
Sécurité & Identité
Auth0
Solution d'Authentification (SSO/OAuth) et de Gestion des Identités et des Accès (IAM) pour tous les utilisateurs.
Recherche
Algolia
Fourniture de fonctionnalités de recherche ultra-rapide (search-as-a-service) et de type-ahead pour l'expérience utilisateur.
Visualisation
Luzmo
Intégration de tableaux de bord et de visualisations de données analytiques embarquées.
Cartographie
MapTiler Cloud
Services de tuiles cartographiques, géocodage et routage pour les fonctionnalités géospatiales.
Notifications
SendGrid & Wonderpush
SendGrid pour les communications par e-mail transactionnelles et Wonderpush pour les notifications push multi-canal (Web et Mobile).