Pourquoi concevoir une architecture logicielle en microservices ?

architecture microservices

Pourquoi concevoir une architecture logicielle en microservices ?

L’architecture logicielle décrit les différents éléments d’une application et leurs intentions. La conception de l’architecture est donc une étape particulièrement cruciale du développement logiciel. De cette phase, va dépendre non seulement la stabilité, la robustesse ou encore la scalabilité d’une application, mais également le rapport coût /efficacité.

architecture microservices

Les objectifs de la structure en microservices

Depuis toujours, les deux objectifs principaux de toute architecture logicielle sont la réduction des coûts et l’augmentation de la qualité du logiciel ; jusqu’à présent, la réduction des coûts était principalement réalisée par la réutilisation de composants logiciels et par la diminution du temps de maintenance (correction d’erreurs et adaptation du logiciel). Quant à la qualité, cela s’exprimait à travers un ensemble de critères dont l’efficacité, la pérennité, la stabilité et l’interopérabilité. S’ajoutent aujourd’hui 2 nouvelles questions :  Comment réduire les empêchements au changement ? Et comment libérer les développeurs des contraintes de la complexité et du déploiement ?

Principes de l’Architecture microservices

Les applications logicielles étant de plus en plus gourmandes en consommation de ressources physiques des machines sur lesquelles elles s’exécutent, les entreprises utilisatrices doivent faire face à des coûts d’infrastructures plus importants, des problèmes éventuels de performances, ainsi qu’à des coûts de maintenabilité. C’est pourquoi, depuis quelques années, la conception logicielle s’oriente vers une architecture Microservices (évolution de l’architecture SOA – Services Oriented Architecture).

Cette approche propose une solution extrêmement simple : une application logicielle voit son code découpé en modules fonctionnels ou techniques appelés microservices, parfaitement indépendants et donc autonomes, qui exposent une API REST (Application Programming Interface) permettant ainsi aux autres microservices de les consommer si besoin. Cela sous-entend que chaque microservice doit avoir son modèle de données de domaine et sa logique de domaine associés (souveraineté et gestion des données décentralisée). Il peut être basé sur différentes technologies de stockage de données (SQL, NoSQL) et sur différents langages de programmation.

Microservices, que des avantages ?

Les microservices affichent normalement une plus grande maintenabilité dans les systèmes d’informations complexes et hautement scalables, en permettant de créer des applications basées sur de nombreux services qui peuvent être déployés indépendamment, chacun ayant des cycles de vie granulaires et autonomes. On ne déploie plus une application monolithique mais seulement les services modifiés.

Autre avantage, les microservices peuvent monter en charge (scale out) de façon indépendante. Ainsi, vous pouvez effectuer un scale-out ciblé de la zone fonctionnelle qui nécessite plus de puissance de traitement ou plus de bande passante réseau pour satisfaire la demande, au lieu d’effectuer un scale-out d’autres zones de l’application qui n’en ont pas besoin.Par conséquent , les ressources physiques sont ajustables.

Nous vous proposons des solutions autour du système d’information, système expert, embarqué et édition de logiciels,  nous permettant de répondre à la plupart des exigences du marché. 

La transformation digitale du ferroviaire en pleine avancée

automatisation trains ter

La transformation digitale du ferroviaire en pleine avancée

automatisation trains ter

Le monde du ferroviaire révolutionné par l’automatisation des trains

Face à la montée de la demande en transports en commun et en marge de la rénovation du réseau ferroviaire en France, l’automatisation des trains devient la solution inévitable. En plus de se définir comme une solution facilitante, elle est favorisée par divers facteurs déclenchants :

  • La modernisation des systèmes
  • L’augmentation de la charge des voyageurs
  • L’extension du réseau ferroviaire

Aucun secteur n’échappe à la transformation digitale, pas même le ferroviaire…

La transformation digitale du ferroviaire : une étape inéluctable

Face aux forts afflux du trafic et à la multiplication des voies des réseaux ferrés, l’automatisation des trains, permise grâce aux logiciels ferroviaires permet de répondre à de nombreuses problématiques. Ainsi, la transformation digitale du ferroviaire marquée par son automatisation permettrait en premier lieu d’optimiser un problème récurrent et nuisant au bon fonctionnement du trafic ferroviaire : la sécurité. En effet, l’automatisation des trains permet d’améliorer la sécurité du réseau ferroviaire grâce à ses infrastructures fortifiantes (portes automatiques). Cela permet ainsi de réduire les accidents voyageurs et de ne pas en causer de nouveaux (réduire la marge d’erreur).

Ainsi, la transformation du réseau ferroviaire permet l’optimisation de la qualité des services, des économies d’énergie, de la sécurité et des performances du réseau, améliorant ainsi l’expérience des passagers.

Mais comment l’automatisation des trains améliore-t-elle la qualité du trafic ferroviaire ?

Outre ses avantages sécuritaires et écologiques, l’automatisation ferroviaire permettrait d’apporter bien des solutions pour résoudre les déficits de la gestion du réseau ferroviaire. En effet, utiliser une machine (ici, des logiciels ferroviaires : systèmes embarqués) permet d’éviter des erreurs que l’homme aurait pu commettre. Il est donc intéressant de s’appuyer sur la transformation digitale dans n’importe quel domaine pour faire avancer son activité.

Les différents facteurs optimisés par la transformation digitale du réseau ferroviaire

La SNCF épaulée par Thalès, RATP et autres grands acteurs du ferroviaire démultiplient leurs travaux dans l’automatisation des trains, voyant le grand nombre de bénéfices s’offrant à son utilisation.

Tout d’abord, l’automatisation ferroviaire permet de réaliser des économies d’échelle non négligeables. Entre les économies liées à la maintenance et celles dues à un meilleur trafic, l’automatisation se définit comme LA solution miracle pour optimiser la productivité du réseau ferroviaire.

Outre l’économie générée par cette solution, l’aspect sécuritaire demeure l’une des révolutions des trains automatisés. Entre contrôle temps réel permis grâce à des logiciels ferroviaires toujours plus innovants, limitation des incidents grâce aux portes automatisées et réduction de la marge d’erreur grâce au facteur humain effacé, les promesses des trains autonomes sont nombreuses.

Ainsi, entre gain de temps (intervalles réduits entre les trains), d’argent (augmenter l’offre quotidienne en un coût marginal faible) et fiabilité (systèmes temps réels), l’automatisation des trains devrait s’accroître de plus en plus.

En outre, en plus d’être une solution économique, ergonomique, sécuritaire et écologique pour les distributeurs de trains en France, la transformation digitale des trains sert également et principalement les usagers. De ce fait, en leur garantissant des services simplifiés, en temps réel et désintermédiés (retour à la normale en quelques minutes suite à un incident), elle leur offre une expérience de leur voyage optimale. Elle met ainsi le progrès technique au service du progrès social.

Après les métros autonomes, TER lance ses premiers trains autonomes à l’essai

Dans le même élan que la RATP et ses métros autonomes, TER Hauts-de-France se lance dans les trains autonomes. Dans le cadre d’un projet mené par la SNCF, Thalès met à l’essai ses produits en France en vue de proposer les TER autonomes d’ici 2025. De ce fait, le train Metrolinx Go circule depuis janvier en collectant des données en temps réel pour entraîner les systèmes ferroviaires à détecter les dangers et reconnaître les obstacles.

Le but final de recourir aux trains autonomes : réduction des retards, renforcement de la sécurité, amélioration de la maintenance et optimisation de l’exploitation et de la gestion du trafic.

La transformation digitale du ferroviaire n’a donc pas fini de faire parler d’elle…

Nous vous proposons des solutions autour du système d’information, système expert, embarqué et édition de logiciels,  nous permettant de répondre à la plupart des exigences du marché. 

Reconnaissance vocale de locuteurs : Comment, pourquoi

reconnaissance vocale

La reconnaissance vocale de locuteurs : comment et pourquoi

Reconnaitre une personne par sa voix est de plus en plus un enjeu fort en matière d’authentification des personnes à des fins de vérification et de sécurité. La reconnaissance de locuteurs est un sous-ensemble de la reconnaissance vocale qui, par le deep learning en lieu et place des méthodes statistiques, progresse très fortement.

reconnaissance vocale

Reconnaissance dépendante ou indépendante

Il existe deux types de reconnaissance de locuteur : soit par la reconnaissance dépendante du texte (Text-dependant speaker recognition), soit par la reconnaissance indépendante du texte (Text-independant speaker recognition). Dans le premier cas, l’algorithme est entrainé par des phrases pré établies et dites par un panel de locuteurs à reconnaitre. Dans le second cas, il n’y a pas d’entrainement sur une phrase spécifique, ce qui rend la méthode sans doute moins efficace.

Identification ou authentification vocale

La majorité des solutions développées en reconnaissance de locuteurs ont une objectif d’authentification, c’est-à-dire vérifier avec un niveau de doute minimal qu’une personne est bien celle qui a enregistré sa voix pour vérification. Cela répond aux besoin des entreprises de minimiser les risques de fraude (usurpation d’identité notamment) vis-à-vis de leurs clients. Maintenant ces solutions ne permettent pas reconnaitre la personne, parmi un groupe de locuteurs, qui nous a principalement adressé la parole. Dans ce cas, il s’agit de mettre en place un algorithme d’identification. L’approche est d’autant plus complexe si plusieurs personnes (locuteurs) parlent en même temps, auquel cas la méthode d’authentification vocale doit intégrer le principe de diarisation, c’est-à-dire une segmentation de l’enregistrement vocal de sorte d’obtenir des segments vocaux ne contenant si possible qu’un seul locuteur.

Python, Pyannote et DeepSpeaker

Il existe aujourd’hui une offre commerciale de solutions de reconnaissance de locuteurs (Microsoft Azure, Oxford Wave Research Vocalize …). Cela reste un domaine pour lequel beaucoup de travaux de recherche sont en cours. Pacte Novation s’est essayé à la construction d’un logiciel en s’appuyant sur le langage Python, la librairie Panda pour la gestion des données, la librairie Tensorflow de Google avec une surcouche Keras pour la construction du réseau de neurones, Pyannote.audio pour la diarisation des locuteurs et enfin DeepSpeaker, un système d’intégration de haut-parleurs neuronaux. Après 6 mois d’effort, l’algorithme de d’authentification vocale est efficace à 73%.

Nous vous proposons des solutions autour du système d’information, système expert, embarqué et édition de logiciels,  nous permettant de répondre à la plupart des exigences du marché. 

Apache Kafka, c’est quoi ?

apache kafka

Apache Kafka, c’est quoi ?

Le Framework Kafka a été développé initialement en 2011 chez LinkedIn puis mis à disposition par la fondation Apache depuis 2014. L’éditeur Confluent distribue également ce Framework en lui ajoutant des fonctionnalités intéressantes au sein de sa plateforme.

apache kafka

Qu'apporte le framework Kafka lancé par Apache ?

Kafka peut être défini de façon schématique comme un outil de diffusion de messages destinés à être lus par quiconque intéressé. Avec ce Framework, l’émetteur du message publie ce dernier dans un Broker sans savoir exactement qui va être intéressé par sa lecture. En plus du message originel, l’émetteur va ajouter des propriétés caractérisant ce message au moment de sa publication de façon à le typer. Chaque composant désirant lire des messages s’abonne au Broker en lui indiquant quels types de messages l’intéressent. Ainsi, dès qu’un nouveau message est publié par quiconque dans le Broker avec une typologie particulière, seuls les abonnés ayant souscrits à ce type de message seront notifiés de son arrivée, sans savoir qui l’a posté.

Kafka est donc une plateforme de distribution de messages – d’évènements, ou de logs selon la sémantique que l’on veut donner à l’information publiée – en temps réel, scalable et extrêmement fiable. Apache a constitué ce Framework afin qu’il puisse traiter des millions de messages par seconde en garantissant qu’aucun d’entre eux n’est perdu. L’ensemble des messages sont persistés sur disques dans des fichiers (principe de rétention). Leur suppression n’est effective qu’après l’écoulement d’un délai (par défaut 7 jour) ou si ces fichiers excèdent une taille donnée (1 Go par défaut). Le point essentiel est que la lecture d’un message ne le retire pas du Broker : il peut être lu à volonté par un même abonné ou généralement par plusieurs abonnés.

Apache Kafka peut à ce titre être considéré comme un système hybride entre une messagerie et une base de données.

Les composants de Kafka plus en détail

Faisons un zoom sur les constituants essentiels d’Apache Kafka pour bien fixer les idées.

Le cluster : le cœur du fonctionnement de Kafka

La mise en œuvre d’un serveur Kafka se fait par l’intermédiaire d’un cluster qui va regrouper les composants techniques essentiels, les Brokers. Le Broker est l’élément central par lequel vont transiter tous les messages depuis leur publication jusqu’à leur persistance sur disque, en passant par leur distribution vers les consommateurs. Afin de rendre le plus robuste possible un serveur Kafka, ce Broker est redondé par l’intermédiaire d’un autre Broker, voire plusieurs. Le Broker principal est nommé leader, les autres sont les réplicas. Les producteurs se connectent sur le leader pour publier leurs messages.

En plus de ces Brokers existe également un Broker Controller dont le rôle est d’assumer la gestion technique du cluster dans son ensemble et d’effectuer son monitoring. Chaque cluster Kafka contient donc au moins 3 Brokers : le leader, un réplica et le Controller.

Les messages et Topics

Un message contient la donnée, quelle qu’elle soit, qui va être envoyée par les producteurs dans le Broker. Il est intéressant de noter qu’un producteur peut envoyer des messages par batch, on parlera alors de groupe de messages. Chaque message envoyé concerne un Topic particulier qui a pour vocation de caractériser le message, et ainsi cibler les consommateurs concernés par ce dernier. Kafka autorise une gestion très fine de ces Topics en les découpant en partitions pour une gestion fine de leur redondance et de leur performance. Mais ceci est une autre histoire…

Les producteurs et les consommateurs

Ils n’ont plus de secret pour vous maintenant : un producteur écrit un message dans le Broker concernant un Topic en particulier. Chaque consommateur s’abonne au Broker pour les messages liés aux Topics qui les intéressent. Et lorsque qu’un message est posté, tous les consommateurs concernés par le Topic du message sont notifiés. Pour rappel, la lecture d’un message ne l’enlève pas du Broker, c’est la politique de rétention qui gère la durée de vie des messages au sein du serveur Kafka.

Dans la version Kafka de l’éditeur Confluent, un moteur de requêtes ksqlDB est également présent offrant ainsi aux producteurs et aux consommateurs une interface simple pour toute la manipulation des données dans le Broker. Un formalisme proche du langage SQL est ainsi disponible avec toutes les facilités afférentes.

cluster kafka apache

Kafka pour faire quoi ?

Le champ des possibles est assez vaste, et il serait fastidieux de dresser la liste exhaustive des cas d’usage pour lesquels Kafka se positionne correctement. Sa capacité à traiter sous la forme de flux des millions de messages par seconde peut s’appliquer à de nombreux domaines. Citons quelques exemples.

En tant que producteur, toute sorte d’application peut aller écrire des messages sur un serveur Kafka. En particulier les services ou micro services collectant des données venant du terrain par le biais de capteurs (appareils connectés, matériel médical, lignes de montage), des WebServices interrogeant des Data Center pour diffuser des évènements essentiels pour un domaine métier (finance, assurances, e-commerce), des services générant des logs de supervision, etc.

Du coté des consommateurs, tout applicatif intéressé par l’ingestion de données à la volée et/ou volumineuse est candidat : bases de données devant persister les données intéressantes, applicatif élaborant des rapports/synthèses, BigData, plateformes de traitement ETL, et bien sur tout type d’application métier et temps-réel.

Pour finir, quelques exemples de sociétés ayant mis en œuvre Kafka pour traiter en temps-réel les données en masse qui constituent leur cœur de métier (messages, notations, avis…) : Twitter, Netflix, Paypal, LinkedIn, Tinder, Uber.

Nous vous proposons des solutions autour de l’ingénierie logicielle : systèmes d’information, systèmes embarqués, édition logiciels… Découvrez nos expertises sans plus attendre !