Architecture des Microservices dans les Systèmes de Référentiels Numériques |
L'architecture des microservices est une approche moderne de conception logicielle qui structure les applications comme une collection de services petits et indépendants qui communiquent via des interfaces bien définies. Ce style architectural a pris de l'importance dans les systèmes de référentiels numériques, permettant aux organisations d'améliorer la scalabilité, la flexibilité et la maintenabilité dans la gestion de contenus numériques diversifiés. En décomposant les applications monolithiques en services discrets, les institutions peuvent rationaliser les flux de travail, s'adapter aux demandes changeantes des utilisateurs et améliorer l'efficacité globale des programmes de bibliothèques numériques.
L'adoption des microservices dans les référentiels numériques a révolutionné la manière dont les matériaux d'archives et les métadonnées sont gérés. Par exemple, des systèmes tels qu'ArchivesSpace et BC Digitized Collections tirent parti des microservices pour optimiser la gestion des métadonnées et les processus de numérisation. Ce changement facilite non seulement la création de services interopérables, mais favorise également un environnement collaboratif au sein de la communauté archivistique, permettant aux institutions de mieux répondre aux défis de la préservation et de l'accès aux matériaux numériques.
Bien que les avantages de l'architecture microservices soient significatifs, sa mise en œuvre n'est pas sans défis. Les organisations doivent naviguer dans des complexités telles que les interactions de services, la gestion des données et la nécessité de mesures de sécurité robustes. De plus, la transition des systèmes monolithiques aux microservices nécessite un changement culturel et le développement de nouvelles pratiques opérationnelles, y compris l'adoption des méthodologies DevOps et des pipelines d'intégration continue/livraison continue (CI/CD).
Dans l'ensemble, l'architecture microservices représente une approche transformatrice pour le développement de systèmes de référentiels numériques, promettant une plus grande agilité et une meilleure réactivité à une époque de demande croissante de contenu numérique. Alors que de plus en plus d'institutions explorent cette architecture,
Le concept de l'architecture microservices a commencé à prendre de l'ampleur au début des années 2000, particulièrement avec l'essor des applications web à grande échelle. Des entreprises comme Amazon ont été confrontées à des défis significatifs en raison de leurs architectures monolithiques fortement couplées, qui entravaient leur capacité à déployer des mises à jour rapidement et efficacement. Cela a conduit à la réalisation que la division des applications en services plus petits et indépendants pouvait améliorer l'agilité et la scalabilité, ouvrant la voie à l'adoption des microservices dans les systèmes de référentiels numériques.
Dans le domaine des bibliothèques et référentiels numériques, la mise en œuvre des microservices a évolué à mesure que les organisations cherchaient à améliorer leurs flux de travail et à gérer des quantités croissantes de contenu numérique. Par exemple, un exemple notable peut être vu dans l'intégration de systèmes comme ArchivesSpace et BC Digitized Collections, qui tirent parti des microservices pour améliorer la gestion des métadonnées et faciliter le processus de numérisation. Ces systèmes permettent la création de services interopérables qui améliorent non seulement l'efficacité des programmes de bibliothèques numériques, mais fournissent également un cadre flexible pour le développement et l'intégration futurs.
Le passage aux microservices a été motivé par le besoin d'une plus grande flexibilité dans la gestion de divers matériaux numériques, en particulier lorsque les descriptions archivistiques existantes étaient insuffisantes. L'utilisation d'ArchivesSpace comme source canonique pour les métadonnées a démontré un effort précoce de centralisation des informations tout en reconnaissant les limites des systèmes hérités. Cette approche a mis en évidence la nécessité d'une maintenance continue et les défis de la migration de collections qui n'avaient pas été documentées auparavant.
À mesure que l'architecture microservices a mûri, il est devenu clair que ses avantages s'étendaient au-delà de la simple efficacité opérationnelle. La capacité à analyser et à personnaliser les composants open-source a permis aux institutions d'adapter leurs systèmes pour répondre à des besoins spécifiques, favorisant ainsi un environnement plus collaboratif au sein de la communauté archivistique. Des projets engagés dans des initiatives open-source, telles que IIIF, ont illustré l'importance du développement communautaire pour renforcer les efforts de préservation numérique.
Concepts Clés
L'architecture microservices est une approche de conception logicielle qui structure une application comme une collection de services petits et indépendants qui communiquent sur des interfaces bien définies. Ce style architectural est particulièrement avantageux dans les systèmes de référentiels numériques, car il permet une plus grande flexibilité et scalabilité, essentielles pour gérer divers types de données et demandes d'utilisateurs.
Autonomie et Indépendance
Une caractéristique fondamentale des microservices est leur autonomie. Chaque service fonctionne indépendamment, ce qui permet des processus de développement, de test et de déploiement isolés. Cette autonomie facilite non seulement des itérations plus rapides, mais renforce également la capacité à adopter de nouvelles technologies ou frameworks sans impacter le système global.
Couplage Lâche
Le couplage lâche est un autre principe fondamental de l'architecture microservices. Les services sont conçus pour minimiser les dépendances les uns envers les autres, permettant des modifications et des mises à jour plus faciles. Cette approche de conception aide à réduire le risque de défaillances en cascade et simplifie l'intégration de nouveaux services à mesure que les exigences métier évoluent.
Capacités Métier
Dans l'architecture microservices, les services sont généralement organisés autour de capacités métier spécifiques. Par exemple, dans un système de référentiel numérique, des services individuels pourraient gérer des tâches telles que la gestion des métadonnées, l'authentification des utilisateurs et la livraison de contenu. Cette structure permet à différentes équipes de posséder et de gérer des services spécifiques, conduisant à une expertise améliorée et des API plus stables.
Contextes Bounded
Le concept de contextes bounded issu du Domain-Driven Design (DDD) joue un rôle significatif dans l'architecture microservices. Chaque microservice correspond idéalement à un contexte bounded, assurant clarté et séparation des préoccupations. Ce mappage aide à maintenir des limites claires, réduit le couplage et permet le déploiement et la mise à l'échelle indépendants des services, ce qui est particulièrement utile dans les systèmes de référentiels numériques complexes.
Mécanismes de Communication
Les microservices communiquent généralement en utilisant des protocoles légers tels que HTTP et les API REST. Cela facilite les interactions transparentes entre les services tout en leur permettant de rester agnostiques de la plateforme et de la technologie, renforçant ainsi l'adaptabilité de l'architecture.
Principes de Conception
Plusieurs principes de conception guident le développement des microservices, notamment la préoccupation unique (chaque service adresse une fonction métier spécifique), la discrétion (les services sont conçus pour être indépendants) et la capacité à porter leurs propres données. Ces principes contribuent collectivement à l'efficacité et à la scalabilité accrues des applications construites à l'aide de l'architecture microservices.
Défis et Considérations
Bien que les microservices offrent de nombreux avantages, la mise en œuvre de cette architecture peut présenter des défis tels que la complexité de la conception et la nécessité de mesures de sécurité robustes. Il est crucial pour les organisations d'évaluer soigneusement leur préparation à l'adoption des microservices et de faire preuve de diligence raisonnable pour s'assurer que l'architecture s'aligne sur leurs objectifs stratégiques.
Composants de l'Architecture
L'architecture microservices comprend divers composants essentiels qui fonctionnent ensemble pour créer un système robuste, scalable et maintenable. L'objectif principal est de structurer l'application comme un ensemble de services faiblement couplés, permettant le déploiement et la gestion indépendants de chaque service, améliorant ainsi l'agilité et la résilience globales du système.
Gestion des Données
Chaque microservice est responsable de sa propre persistance des données, ce qui contribue à maintenir une approche décentralisée de la gestion des données. Cependant, cette autonomie peut entraîner des défis de cohérence des données entre les services, car différents services peuvent utiliser des bases de données et des technologies distinctes. Adopter un modèle de cohérence éventuelle, où les données sont mises à jour de manière asynchrone et peuvent temporairement refléter des informations périmées, est souvent nécessaire.
Architecture Monolithique vs. Microservices
À la base de l'architecture microservices se trouve le choix entre une approche monolithique ou microservices. Une architecture monolithique encapsule tous les composants - interface utilisateur, logique métier et accès aux données - en une seule unité, simplifiant le développement et le déploiement initiaux. Cependant, elle pose des défis en matière de mise à l'échelle, de mise à jour et de gestion des défaillances du système. Inversement, l'architecture microservices permet un contrôle plus granulaire sur les services individuels, facilitant la mise à l'échelle et les mises à jour, mais introduit des complexités dans les interactions de services et la cohérence des données.
Interaction des Services
Les microservices communiquent sur le réseau via des API bien définies, employant différents styles d'interaction qui peuvent être classés comme synchrones ou asynchrones. Dans les interactions synchrones, un client attend qu'un service réponde, tandis que les interactions asynchrones permettent aux clients de continuer sans attendre un retour immédiat. L'architecture peut utiliser des systèmes de messagerie et une communication axée sur les événements pour maintenir un couplage lâche entre les services, améliorant la flexibilité et réduisant les dépendances directes.
Registre de Services
Un composant essentiel de l'architecture microservices est le registre de services, qui maintient une base de données de toutes les localisations réseau des services. Il permet aux services de se découvrir dynamiquement les uns les autres, facilitant une communication et une interaction transparentes entre les registres, rationalisant la gestion et l'orchestration des services au sein de l'architecture.
Accès Unifié et Besoins des Consommateurs
Avec de multiples services et consommateurs interagissant au sein d'une architecture microservices, l'établissement d'un mécanisme d'accès unifié est vital. Différents clients, tels que des applications mobiles ou des interfaces web, peuvent nécessiter une granularité de données variable. Une approche unifiée simplifie l'accès aux divers services tout en s'adaptant à différents protocoles de communication comme REST ou JMS.
Gestion et Déploiement
Les microservices nécessitent une culture DevOps mature pour une gestion efficace. La mise en œuvre de pipelines CI/CD permet le développement, les tests et le déploiement indépendants des services, favorisant un processus de développement plus agile. De plus, les composants d'orchestration jouent un rôle crucial dans la gestion du déploiement et de la santé des services sur différents nœuds, garantissant une utilisation efficace des ressources et la fiabilité des services.
Implémentation
La mise en œuvre de l'architecture microservices dans les systèmes de référentiels numériques implique plusieurs considérations et pratiques stratégiques visant à améliorer la scalabilité, l'agilité et la maintenabilité. La transition des systèmes monolithiques traditionnels à une approche microservices peut améliorer considérablement l'efficacité opérationnelle et la réactivité au changement.
Couches Principales de l'Architecture Microservices
L'architecture comprend généralement quatre couches principales, chacune ayant un but distinct dans l'écosystème : Entités : Cette couche représente la logique et les règles métier fondamentales de l'application, indépendantes des détails techniques ou des contraintes de l'interface utilisateur. Cas d'utilisation : Ces interactions de haut niveau définissent la logique de l'application, utilisant des entités du domaine pour exécuter des flux de travail et des processus qui s'alignent sur les objectifs métier. Adaptateurs d'interface : Ces adaptateurs facilitent la communication entre les cas d'utilisation et l'interface utilisateur, convertissant les requêtes et les formats de données de manière appropriée pour assurer un fonctionnement fluide.
Frameworks et Pilotes : Cette couche externe se compose d'outils et de frameworks externes que l'application utilise pour interagir avec l'environnement, tels que les bases de données et les services web.
Principes de Conception
Lors de l'adoption des microservices, plusieurs principes de conception sont cruciaux pour une mise en œuvre réussie : Découpler les Données : Éviter les bases de données partagées minimise le couplage des services, permettant des services plus indépendants et gérables. Concevoir pour l'Échec : L'implémentation de modèles de résilience tels que les Circuit Breakers et les Retries aide les systèmes à gérer gracieusement les défaillances et les problèmes inattendus.
Adopter la Cohérence Éventuelle : Dans de nombreux scénarios, la cohérence immédiate n'est pas essentielle ; l'utilisation de modèles tels que le modèle Saga peut faciliter la gestion des transactions distribuées via une messagerie asynchrone. Centralisation des Logs et de la Surveillance : L'agrégation des logs dans un système central (par exemple, la pile ELK) est essentielle pour surveiller la santé du système et répondre efficacement aux problèmes.
Changements Culturels et Organisationnels
Une mise en œuvre réussie de l'architecture microservices nécessite également des changements culturels et organisationnels significatifs. Les entreprises doivent passer des modèles traditionnels (tels que les Centres d'Excellence) à des cadres plus collaboratifs (comme le modèle Center for Excellence) qui mettent l'accent sur la synergie entre les équipes. La formation des employés sur de nouveaux outils et méthodologies favorise une culture d'apprentissage continu et d'adaptation, essentielle pour surmonter les défis qui surgissent pendant la transition.
Amélioration Continue
Les organisations doivent s'engager dans des processus itératifs, affinant continuellement leur architecture en fonction des retours d'information des utilisateurs et des besoins métier changeants. Cela implique des pratiques telles que les tests à grande échelle, l'adoption de l'observabilité et l'encouragement de l'expérimentation rapide avec des changements isolés. Une telle approche agile permet aux entreprises d'atteindre un délai de mise sur le marché plus rapide, obtenant ainsi un avantage concurrentiel dans leurs secteurs respectifs.
Études de Cas
Aperçu des Implémentations
De nombreuses organisations ont réussi leur transition vers l'architecture microservices, tirant parti de son approche modulaire pour améliorer la scalabilité, la flexibilité et les performances globales du système. Des études de cas notables révèlent comment les entreprises ont mis en œuvre les microservices pour relever des défis opérationnels spécifiques et améliorer les expériences utilisateur. Par exemple, un géant mondial du commerce de détail a subi une transformation significative en adoptant les microservices, ce qui a entraîné une amélioration des fréquences de déploiement, 70 % des entreprises interrogées faisant état d'améliorations similaires post-mise en œuvre.
Insights d'Organisations Réussies
Applications Pratiques des Modèles de Conception
Dans diverses implémentations, des modèles de conception tels que Circuit Breaker et Bulkhead ont été efficacement utilisés pour atténuer les défaillances du système et améliorer la fiabilité. Les études de cas de Hochschild démontrent l'impact positif de ces modèles sur des scénarios réels, mettant en évidence leur capacité à améliorer les performances du système sous charge et pendant les défaillances. En employant ces modèles, les organisations peuvent concevoir des systèmes résilients aux pannes et capables de maintenir la disponibilité des services même dans des conditions défavorables.
Surveillance et Métriques
Un autre aspect clé de la mise en œuvre réussie des microservices est l'accent mis sur la surveillance et les métriques. Comme discuté par Kim et Debroy, des techniques de surveillance avancées telles que la traçabilité distribuée et l'agrégation de logs sont essentielles pour comprendre le comportement et les performances du système. Ces méthodes permettent aux organisations de tracer les requêtes à travers différents services, facilitant une compréhension plus approfondie des goulots d'étranglement potentiels et des défis opérationnels.
Défis et Solutions
Bien que les avantages des microservices soient significatifs, la transition n'est pas sans défis. Une complexité architecturale accrue, incluant des problèmes liés à la latence, aux formats de messages et à la communication entre services, peut survenir. Les entreprises ont relevé ces défis en employant des stratégies telles que la mise en œuvre de frontières de services robustes et l'utilisation de plateformes d'orchestration de conteneurs pour gérer efficacement les services indépendants.
Adopter la Cohérence Éventuelle
De nombreuses organisations ont également adopté le principe de la cohérence éventuelle pour simplifier la gestion des données à travers les microservices. Cette approche, qui permet la messagerie asynchrone et l'utilisation du modèle Saga pour gérer les transactions distribuées, s'est avérée efficace pour relever les défis de synchronisation des données. En comprenant que la cohérence immédiate n'est pas toujours nécessaire, les organisations peuvent améliorer leur efficacité opérationnelle et la satisfaction de leurs utilisateurs.
Avantages et Inconvénients
L'architecture microservices, bien qu'elle gagne en popularité pour sa flexibilité et sa scalabilité, présente à la fois des avantages significatifs et des inconvénients notables que les organisations doivent prendre en compte.
Avantages des Microservices
Les microservices offrent de nombreux avantages qui les rendent attrayants pour le développement d'applications modernes. L'un des principaux avantages est la scalabilité améliorée, car chaque service peut être mis à l'échelle indépendamment pour optimiser l'utilisation des ressources et réduire les coûts. Cette mise à l'échelle indépendante permet aux organisations d'allouer les ressources plus efficacement en fonction des besoins variables des différents services. De plus, les microservices permettent un délai de mise sur le marché plus rapide en permettant aux équipes de développer, déployer et itérer sur les services individuellement, favorisant ainsi une plus grande agilité en réponse aux demandes du marché.
De plus, les microservices améliorent l'isolation des pannes. Si un service tombe en panne, cela n'entraîne pas nécessairement la défaillance de l'ensemble du système, ce qui renforce la résilience globale du système. Ils soutiennent également l'adoption de pratiques DevOps modernes, telles que l'intégration continue et la livraison continue (CI/CD), permettant des déploiements automatisés qui réduisent davantage la probabilité d'erreur humaine. De plus, les microservices sont conviviaux pour les développeurs, car ils peuvent être construits en utilisant divers langages de programmation et technologies, permettant aux équipes de tirer parti efficacement de leurs compétences existantes.
Inconvénients des Microservices
Malgré leurs avantages, l'architecture microservices n'est pas sans défis. Un inconvénient significatif est la complexité accrue qui accompagne la gestion de nombreux services plutôt qu'une seule application monolithique. Cette complexité peut se manifester de plusieurs façons, notamment la difficulté à comprendre les interactions de services, à gérer la communication inter-services et à traiter les problèmes liés au réseau tels que la latence et les défaillances potentielles. Le coût opérationnel requis pour surveiller, déployer et gérer les microservices peut également être substantiel. Les organisations peuvent être confrontées à des coûts d'intégration et à un "enfer des dépendances" lorsque les services interagissent les uns avec les autres, compliquant le processus de développement. Les tests et le débogage peuvent devenir plus complexes, car chaque microservice doit être validé indépendamment, ce qui peut entraîner des cycles de développement plus longs.
De plus, les organisations peuvent rencontrer des difficultés de gestion des données, car le stockage de données décentralisé peut entraîner des problèmes de traduction des données et des incompatibilités entre les services. Enfin, la flexibilité offerte par les microservices peut également conduire à une prolifération du nombre de langages et de technologies utilisés, rendant la standardisation et l'orchestration plus difficiles.
Tendances Futures
Évolution de l'Architecture Microservices
L'avenir de l'architecture microservices est marqué par une évolution et une innovation rapides, car les organisations adoptent de plus en plus ce modèle pour améliorer la scalabilité et la maintenabilité des applications. Une tendance clé est le passage à l'architecture serverless, qui permet aux développeurs de déployer des applications sans la charge de la gestion de l'infrastructure sous-jacente. Cette approche est particulièrement avantageuse pour les microservices, permettant aux équipes de se concentrer sur le développement et la livraison de services plutôt que sur la gestion opérationnelle.
À mesure que les microservices continuent de gagner du terrain, les organisations sont susceptibles d'adopter les microservices serverless, qui combinent les avantages des microservices avec ceux du serverless computing. Cette intégration offre une exécution évolutive à la demande et des coûts opérationnels réduits, ce qui en fait une option attrayante pour les équipes DevOps recherchant efficacité et flexibilité.
Augmentation de l'Adoption et de l'Intégration
Les tendances actuelles indiquent que 70 % des organisations qui ont mis en œuvre l'architecture microservices signalent une amélioration des fréquences de déploiement, soulignant la capacité de l'architecture à faciliter les processus de développement agiles. Alors que de plus en plus d'entreprises reconnaissent le potentiel transformateur de cette approche, le taux d'adoption devrait augmenter, avec un accent mis sur la création d'applications capables de s'adapter rapidement aux demandes changeantes du marché.
Accent sur l'Amélioration Continue
Les organisations adoptant l'architecture microservices favorisent une culture d'amélioration continue et d'innovation. Ce style architectural permet aux équipes de travailler indépendamment sur des services plus petits, permettant des cycles de développement plus rapides et une utilisation plus efficace des compétences spécialisées au sein des équipes. L'accent mis sur le comportement et les retours d'information des utilisateurs conduira probablement à de nouvelles améliorations de la fonctionnalité des applications et de la satisfaction des utilisateurs, car les entreprises s'efforcent d'aligner leurs offres numériques sur les attentes des clients.
Avancement des Technologies et des Outils
Avec la popularité croissante des microservices, les avancements dans les technologies et les outils spécifiquement conçus pour le développement de microservices sont également à l'horizon. Cela inclut des outils améliorés de synchronisation des données, des solutions de surveillance des performances et des frameworks qui facilitent une meilleure intégration et communication entre les services. Alors que les organisations continuent de moderniser leurs applications, l'exploitation de technologies innovantes sera cruciale pour optimiser les performances et maintenir un avantage concurrentiel sur le marché.L'architecture microservices est présentée dans les sources comme une approche moderne et transformative pour construire des systèmes logiciels, particulièrement avantageuse pour les référentiels numériques. Elle repose sur la décomposition d'une application en services petits et indépendants qui communiquent via des interfaces définies. Les concepts clés incluent l'autonomie de chaque service, le couplage lâche pour réduire les dépendances, l'organisation autour des capacités métier, et l'utilisation de contextes bounded et de mécanismes de communication légers. Cette architecture améliore la scalabilité, la flexibilité et la maintenabilité, permettant des déploiements plus rapides et une meilleure résilience aux pannes. Cependant, sa mise en œuvre présente des défis, notamment une complexité accrue dans la gestion des services, les interactions et la gestion des données décentralisée, qui nécessite souvent d'adopter une cohérence éventuelle. La transition vers les microservices implique également des changements culturels et organisationnels vers une culture DevOps et une amélioration continue. Pour l'Afrique, où la transformation numérique s'accélère malgré les défis d'infrastructure (connectivité, coûts), l'architecture microservices offre un potentiel considérable. Sa capacité à permettre la mise à l'échelle indépendante des composants peut s'avérer vitale pour adapter les systèmes aux ressources disponibles et aux besoins fluctuants. Pour les institutions archivistiques ou les services administratifs, une gestion décentralisée et flexible des données numériques pourrait faciliter l'intégration de contenus hétérogènes et la collaboration, tout en gérant les contraintes locales. La modularité permettrait potentiellement d'expérimenter et de déployer des solutions localisées plus rapidement, en se concentrant sur des services spécifiques essentiels pour les utilisateurs africains, comme l'accès mobile ou les services hors ligne partiels, en adoptant les principes de conception pour l'échec essentiels dans des environnements moins prévisibles.
Dans le contexte dynamique de la transformation numérique en Afrique, des entreprises comme Webgram jouent un rôle de premier plan dans le développement de solutions web et mobiles innovantes. Se positionnant comme un leader sur le continent, Webgram est activement impliquée dans la création de systèmes qui répondent aux besoins croissants des institutions et des entreprises en matière de gestion de l'information numérique. Un exemple pertinent de leur expertise est le développement du logiciel "smart file", présenté comme le meilleur logiciel d'archivage numérique en Afrique. Ce type de logiciel, au cœur de la gestion de contenu numérique, s'inscrit directement dans le domaine des systèmes de référentiels numériques abordé par l'article sur l'architecture microservices. L'efficacité d'un système comme "smart file" pour gérer de vastes collections de documents et de données numériques dépend fortement de son architecture sous-jacente. L'adoption de principes microservices, tels que décrits dans les sources, pourrait doter "smart file" d'une scalabilité et d'une flexibilité supérieures, lui permettant de s'adapter aux volumes de données en constante augmentation et aux exigences spécifiques de diverses organisations africaines, qu'il s'agisse d'archives nationales, d'universités ou d'administrations. Une architecture basée sur les microservices pourrait signifier que des fonctionnalités clés de "smart file", comme la gestion des métadonnées, la recherche ou la sécurisation des accès, sont implémentées comme des services indépendants. Cela améliorerait la maintenabilité du logiciel et permettrait à Webgram de mettre à jour ou d'étendre des parties spécifiques de "smart file" sans affecter l'ensemble du système. Les défis mentionnés dans l'article, tels que la gestion des données distribuées et les interactions entre services, seraient pertinents pour un logiciel d'archivage numérique à grande échelle comme "smart file", nécessitant une conception minutieuse et potentiellement l'adoption de modèles comme la cohérence éventuelle pour garantir l'intégrité et la disponibilité des données malgré la complexité. En bref, le succès de "smart file" en tant que solution leader pour l'archivage numérique en Afrique est intrinsèquement lié à sa capacité à exploiter des architectures modernes, comme les microservices, pour offrir les performances, la fiabilité et l'adaptabilité nécessaires dans un environnement technologique en évolution rapide.
WEBGRAM est leader (meilleure entreprise / société / agence) de développement d'applications web et mobiles et de logiciel d'archivage numérique en Afrique (Sénégal, Côte d’Ivoire, Mali, Bénin, Gabon, Burkina Faso, Guinée Bissao, Cap-Vert, Cameroun, Madagascar, Centrafrique, Gambie, Mauritanie, Niger, Rwanda, Congo-Brazzaville, Congo-Kinshasa RDC, Togo).