<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Engineering Archives | Clever Cloud</title>
	<atom:link href="https://stagingv6.cleverapps.io/fr/blog/category/engineering-fr/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>From Code to Product</description>
	<lastBuildDate>Wed, 06 Nov 2024 08:54:18 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/03/cropped-cropped-favicon-32x32.png</url>
	<title>Engineering Archives | Clever Cloud</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Qu’est-ce que le cloud computing ?</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/engineering-fr/2024/11/04/qu-est-ce-que-le-cloud-computing/</link>
		
		<dc:creator><![CDATA[Leo Le Levé Dandé]]></dc:creator>
		<pubDate>Mon, 04 Nov 2024 12:37:00 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=14742</guid>

					<description><![CDATA[<p><img width="1600" height="710" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-fr.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Tout savoir sur le cloud computing" decoding="async" fetchpriority="high" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-fr.png 1600w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-fr-300x133.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-fr-1024x454.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-fr-768x341.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-fr-1536x682.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-fr-1368x607.png 1368w" sizes="(max-width: 1600px) 100vw, 1600px" /></p><!-- wp:paragraph -->
<p>Retour aux fondamentaux avec ce premier article d’une nouvelle série. Découvrons ensemble le fonctionnement du cloud computing, ses différentes architectures (public, privé, hybride), ses nombreux avantages pour les entreprises ainsi que les différences entre cloud computing, edge computing, et on-premise pour vous aider à choisir la solution la plus adaptée à vos besoins.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Cloud computing : définition et origines</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing a profondément transformé la manière dont les entreprises et les particuliers accèdent aux ressources informatiques. L'idée est simple mais novatrice : plutôt que de posséder et de gérer ses propres serveurs et centres de données, l'utilisateur peut désormais accéder à des services informatiques à la demande, via un réseau. Ces services incluent la puissance de calcul, le stockage de données, et parfois même la gestion de bases de données, offrant une flexibilité et une accessibilité jusqu’alors inédites. Une idée qui ne date d’ailleurs pas d’hier…</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">L’évolution de l’« informatique en nuage »</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le concept de l’informatique en nuage, plus connu sous le nom de cloud computing, bien que largement popularisé au début des années 2000, puise ses racines dans les années 1960. À cette époque, des pionniers de l'informatique envisageaient déjà l'idée de rendre la puissance de calcul accessible comme d’utilité publique. Durant les années 1990, les schémas réseaux ont commencé à utiliser l'image d'un "nuage" pour représenter Internet, symbolisant la complexité et l'interconnexion des réseaux qui permettent aujourd'hui au cloud computing de fonctionner comme une architecture mondiale et flexible.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>La véritable force du cloud réside dans sa capacité à fournir des ressources informatiques distantes et évolutives, permettant aux entreprises de simplifier la gestion de leur infrastructure, d'éviter le gaspillage de ressources, et d'<a href="https://stagingv6.cleverapps.io/fr/cloud-et-green-it-fr/">améliorer l'efficacité énergétique</a> à travers trois piliers :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><strong>Unification de la facturation</strong> : Le cloud propose un système de <a href="https://developers.clever-cloud.com/doc/billing/unified-invoices/">facturation unique</a> qui simplifie la gestion des coûts pour les entreprises. Cette transparence permet de suivre précisément les dépenses et d'optimiser les coûts ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><strong>Accès centralisé et sécurisé</strong> : Le cloud offre une interface unique qui simplifie l'accès aux services, tout en centralisant la gestion. Les systèmes IAM (Identity and Access Management) assurent une sécurité renforcée avec des outils d'auditabilité pour une meilleure conformité ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><strong>Marketplace riche et diversifiée</strong> : Le cloud met à disposition une vaste place de marché, permettant aux entreprises d'accéder à un <a href="https://stagingv6.cleverapps.io/fr/product/">large éventail de produits</a> et services. Cette diversité favorise la flexibilité et la scalabilité des solutions déployées.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Comment définir simplement le cloud computing ?</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>En termes simples, le cloud computing se définit comme l'accès à distance à des ressources informatiques partagées, sans la complexité de gérer l'infrastructure physique sous-jacente. Cette approche permet aux entreprises d'investir à long terme dans la pérennité de la gestion et de l'hébergement de leurs données, tout en leur offrant la flexibilité nécessaire pour ajuster rapidement leurs capacités selon leurs besoins. Par exemple, Clever Cloud automatise cette scalabilité, optimisant les ressources en temps réel pour répondre à la demande.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Comment fonctionne le cloud computing ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Reposant sur un modèle de services informatiques via réseaux, le cloud permet aux entreprises d'accéder à des ressources telles que le stockage de données, la puissance de calcul, et l’accès à un catalogue d’applications en ligne, sans la nécessité de gérer directement l'infrastructure matérielle. Cette approche offre une flexibilité accrue, une optimisation des coûts, et une efficacité opérationnelle qui favorisent l'innovation.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading"><strong>Les éléments clés du fonctionnement du cloud</strong></h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Plusieurs éléments fondamentaux assurent l’efficacité et l’évolutivité du cloud. Voici un aperçu des éléments clés qui le composent.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">L'infrastructure matérielle</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Au cœur du cloud, se trouve une <a href="https://stagingv6.cleverapps.io/fr/infrastructure/">infrastructure physique</a> composée de serveurs, de systèmes de stockage, et de réseaux interconnectés. Ces infrastructures sont présentes dans des centres de données répartis à travers le monde, promettant une très haute disponibilité, <a href="https://stagingv6.cleverapps.io/fr/security/">une sécurité renforcée</a>, et une performance optimale. Les fournisseurs de cloud comme Clever Cloud investissent massivement pour maintenir des standards de qualité élevés, vérifiés à travers différentes certifications.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">La virtualisation</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Ce principe fondamental permet de créer des versions virtuelles de ressources physiques, comme des serveurs ou des systèmes de stockage. La virtualisation améliore l'efficacité en permettant à plusieurs utilisateurs ou applications d'exploiter les mêmes ressources de manière optimisée : les fameuses Virtual Machines (VM) . Cette technologie simplifie également la gestion et réduit les coûts d'exploitation en déconnectant l'infrastructure matérielle de l'expérience utilisateur.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Les interfaces d'accès et API</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Les interfaces des services cloud sont conçues pour être sécurisées et performantes, facilitant la gestion des ressources et le déploiement d'applications. Les <a href="https://stagingv6.cleverapps.io/doc/api/">API</a> offrent aux administrateurs systèmes, DevOps et développeurs la possibilité d'automatiser et d'intégrer des services cloud dans leurs propres systèmes, maximisant ainsi la personnalisation, l'efficacité, la flexibilité et élargissant les fonctionnalités possibles.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Les différentes architectures cloud : public, privé et hybride</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Chaque architecture cloud présente ses propres avantages et s'adresse à des besoins différents. La clé est de choisir celle qui s'aligne le mieux avec les objectifs stratégiques et les contraintes opérationnelles propres à votre organisation.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Cloud public : l’accessibilité et scalabilité simplifiées pour l’hébergement de données</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud public est l'architecture la plus courante. Ici, les ressources informatiques y sont hébergées sur des serveurs appartenant à des fournisseurs de services cloud, comme Clever Cloud. Ces services sont accessibles via réseau, offrant une solution évolutive et particulièrement scalable, capable de s'adapter rapidement aux besoins changeants des entreprises.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Le cloud public propose différents niveaux de services, allant de l'Infrastructure as a Service (IaaS) à la Platform as a Service (PaaS), en passant par le Software as a Service (SaaS). Cette diversité permet aux entreprises de choisir la solution la plus adaptée à leurs besoins, tout en bénéficiant de l'absence d'investissement initial dans l'infrastructure.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Cloud privé : l’hébergement de données contrôlé et sécurisé</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud privé est une solution dédiée à une seule organisation, par définition. Contrairement au cloud public, les serveurs du client lui sont dédiés. Il s’agit souvent d’une zone d’hébergement derrière le pare-feu du client, mise à disposition par un fournisseur de cloud. Cette architecture offre un contrôle total sur les données et une sécurité renforcée, ce qui est idéal pour les secteurs soumis à des régulations strictes (financier, santé, pharmaceutique, public, défense, juridique, industriel, etc.). Le cloud privé permet une personnalisation accrue de l’architecture d’hébergement de données, adaptée aux besoins spécifiques de l'entreprise.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Cloud hybride : ne pas mettre tous ses œufs dans le même panier</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud hybride permet de gagner en résilience en combinant les avantages du cloud public et privé. En diversifiant les environnements, les entreprises évitent de mettre tous leurs œufs dans le même panier. Par exemple, elles peuvent stocker leurs données sensibles dans un cloud privé tout en utilisant un cloud public pour les sauvegardes ou les charges de travail moins critiques. Cela permet de basculer d'un environnement à l'autre selon les besoins en termes de performance, de coût ou de sécurité. Cependant, avec les frais de sortie (egress fees) élevés des hyperscalers, cette approche peut devenir coûteuse.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En réalité, le cloud hybride est déjà une pratique courante, souvent sans que les entreprises en aient pleinement conscience. Depuis la démocratisation du SaaS, la majorité des applications ne sont plus uniquement en on-premise, mais reposent sur un mix de cloud public, cloud privé et services SaaS.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Quels sont les différents types de cloud computing ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing est divisé en plusieurs catégories principales : Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS) et le Function as a Service (FaaS). Chaque type offre des niveaux de contrôle, de flexibilité et de gestion différents, permettant à chacun de choisir celui qui répond le mieux à ses besoins.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Infrastructure as a Service (IaaS) pour une personnalisation  maximale</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>L'Infrastructure as a Service (IaaS) est historiquement le modèle le plus répandu du cloud computing. Avec l'IaaS, les entreprises louent des ressources informatiques telles que des serveurs, des machines virtuelles, du stockage et des réseaux directement auprès d'un fournisseur de services cloud.&nbsp; Les clients&nbsp; s’occupent du maintien en conditions opérationnelles de leur OS, des bases de données, des runtimes, etc. grâce à des administrateurs systèmes, présents en interne ou chez un infogéreur. Cela permet aux entreprises d’avoir une architecture spécifique répondant à leur besoin.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Platform as a Service (PaaS) pour un déploiement rapide et une mise à jour automatique</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le <a href="https://stagingv6.cleverapps.io/">Platform as a Service (PaaS)</a> va un cran plus loin que l'IaaS en fournissant un OS, le middleware,&nbsp; une console permettant de facilement déployer des runtimes voire même des bases de données ou des services tiers, que l’on appelle add-ons. Le client n’a plus à se préoccuper du maintien en condition opérationnelle (MCO), c’est à la charge du fournisseur de cloud.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Les solutions PaaS facilitent le déploiement rapide des applications, tout en assurant la maintenance et la mise à jour automatiques de l'infrastructure. Avec des outils de développement intégrés et une architecture modulable, Clever Cloud simplifie le travail des développeurs et des DevOps en leur offrant un environnement prêt à l'emploi pour accélérer l'innovation : déployez du code, on se charge du reste !&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Software as a Service (SaaS) pour plus de simplicité</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le Software as a Service (SaaS) est le modèle le plus courant du cloud computing. Les applications SaaS sont hébergées et gérées par des fournisseurs de services, permettant aux utilisateurs d'y accéder via Internet, généralement sur abonnement. Ce modèle élimine le besoin d'installer et de maintenir des logiciels localement, ce qui réduit les coûts et la complexité technique.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Le SaaS est particulièrement utile pour les entreprises cherchant à standardiser leurs outils logiciels sans investir dans l'infrastructure IT. Par exemple, les outils de collaboration, les systèmes de gestion de la relation client (CRM) et les suites bureautiques sont souvent déployés sous forme de services SaaS pour une simplicité maximale.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Functions as a Service  (FaaS) pour une grande agilité</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le Functions as a Service (FaaS), est une évolution du modèle PaaS qui permet aux développeurs de créer et de déployer des fonctions individuelles sans se soucier de la gestion des serveurs. Le fournisseur de cloud s'occupe de l'ensemble de l'infrastructure, de la mise à l'échelle et de la gestion des ressources, ne facturant que le temps d'exécution des fonctions.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Les fonctions sont déclenchées suite à des événements définis à l’avance, permettant à la fonction de lancer son action (traitement d’une image, conversion d’un fichier, etc.) et donc de s’allumer, d’être active le temps de l’action puis de s'éteindre. services pour des questions économiques. Le FaaS est souvent complémentaire d’un PaaS.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Quels sont les avantages du cloud computing ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Que ce soit en matière de scalabilité et de sécurité, le cloud offre de nombreux bénéfices pour les organisations qui décident de l’adopter, dont voici les principales.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Optimisation des coûts : une approche stratégique plutôt que de simples économies</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing peut répondre à une stratégie financière, notamment en transformant les dépenses d'investissement (CAPEX) en dépenses opérationnelles (OPEX). Cette transition budgétaire permet aux entreprises d’externaliser leurs coûts initiaux liés à l'infrastructure informatique (achat des serveurs, entretiens des datacenters, maintenance, gestion de la fibre, recrutement d’une équipe dédiée, etc.). Les organisations peuvent adopter un modèle de paiement à l'usage, ajustant ainsi leurs dépenses en fonction de leurs besoins réels. Certains hyperscalers vont tout de même proposer de payer des instances réservées, qui seront à payer même si elles ne sont pas utilisées mais il ne s'agit pas de la majorité des usages.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Scalabilité : le cloud s’adapte à vos besoins</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Que ce soit pour augmenter la capacité de traitement lors d'un pic d'activité ou pour réduire les ressources pendant les périodes creuses, le cloud se veut flexible et scalable à la demande, grâce à des sondes et des orchestrateurs. Cette réactivité garantit une utilisation optimale des ressources et offre aux entreprises une agilité accrue pour faire face aux évolutions du marché et de la demande. Chez Clever Cloud, la scalabilité est automatique, ce qui signifie qu’elle s’adapte en temps réel à vos besoins et vous permet de ne payer que ce que vous consommez réellement.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Sécurité : un pilier capital pour les entreprises</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing améliore grandement la sécurité de vos données. Les clouds providers investissent, assurent une veille constante et ont pour rôle d’avertir leur clients ou de mettre à jour les zones exposées. Le stockage dans le cloud et ses sauvegardes permettent une grande résilience. Il est facilement possible d’accéder aux&nbsp; données sauvegardées ou de lancer un PRA ou un PCA. Chez Clever Cloud, nous allons même plus loin : nos bases de données Materia sont automatiquement répliquées sur&nbsp; nos trois datacenters parisiens, ce qui vous assure une grande tranquilité d’esprit. Autre point capital : de nombreuses certifications de sécurité peuvent être demandées lorsque l’on héberge des données critiques ou personnelles. Les fournisseurs de clouds s’engagent à les respecter.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Accessibilité : l’instantané comme répondre aux nouvelles tendances de travail</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing favorise l’accessibilité à vos données, permettant à vos équipes de collaborer efficacement, peu importe leur localisation. Les données et les applications hébergées dans le cloud peuvent être disponibles 24/7. Ce qui facilite le télétravail, accélère les processus de prise de décision et améliore la productivité des équipes, tout en garantissant une synchronisation en temps réel des informations.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Mises à jour automatiques et maintien en condition opérationnelle</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Avec le cloud computing, les mises à jour logicielles et les correctifs de sécurité sont automatiquement gérés par le fournisseur, sans intervention de l'équipe informatique du client. Cela permet non seulement de réduire la charge de travail interne, mais aussi de garantir que les systèmes n’ont pas de failles de sécurité.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Qui utilise le cloud computing ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing est désormais une composante essentielle pour les entreprises de toutes tailles et de tous secteurs. Son adoption massive est motivée par l'externalisation de la gestion et du MCO, par l’unification des coûts et par l’accès à une marketplace.&nbsp; Que ce soit pour le stockage et la sauvegarde de données, l'analyse de Big Data, l’hébergement de serveurs mails ou encore le développement et le déploiement d'applications web, le cloud est devenu incontournable pour répondre aux exigences croissantes du marché.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>À titre d’exemple, les organisations du secteur financier utilisent le cloud computing pour détecter et prévenir les fraudes en temps réel, en s'appuyant sur des algorithmes de machine learning et des analyses prédictives. Les entreprises de santé, quant à elles, exploitent ces technologies pour offrir des traitements plus personnalisés, améliorant ainsi la qualité des soins pour leurs patients. Le secteur du divertissement et les créateurs de jeux vidéo s'appuient sur le cloud pour diffuser leurs contenus à des millions d'utilisateurs dans le monde entier, garantissant une expérience fluide et immersive.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Mais cette technologie n'est pas réservée aux grandes entreprises : PME, startups, freelance et particuliers adoptent également le cloud pour bénéficier d'une infrastructure évolutive sans avoir à supporter les coûts élevés liés aux datacenters physiques. En optant pour ces solutions, elles peuvent se concentrer sur leur besoin.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Quelles sont les utilisations du cloud computing ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing offre une multitude d'utilisations pour les entreprises et les particuliers, dont voici les principales.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Stocker et sauvegarder des données</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud permet aux entreprises de protéger leurs informations tout en bénéficiant d'une grande capacité de stockage, et ce, tout en gardant un contrôle sur la facturation. Les données peuvent être facilement accessibles depuis n'importe quel appareil connecté, ce qui facilite la récupération en cas de problème technique.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Héberger des applications, des sites web</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>L'hébergement d'applications et de sites web est une autre utilisation clé du cloud computing permettant de créer et déployer des applications tout en bénéficiant d’une grande scalabilité. Les développeurs bénéficient ainsi d'une solution fiable pour offrir une expérience utilisateur fluide et performante.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Diffuser des logiciels et des contenus as a service</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing facilite également le développement de logiciels et de contenus sous forme de services (SaaS). Ce modèle réduit les besoins en installations locales et permet aux entreprises de proposer des mises à jour régulières sans interruption de service, accessible à tout moment et sur tout type d’appareil. Elles peuvent se concentrer sur l'amélioration continue de leurs produits tout en simplifiant la gestion des versions logicielles.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Analyse de données et intelligence artificielle (IA)</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>L'analyse de données et l'intégration de l'intelligence artificielle (IA) sont rendues possibles grâce aux capacités et performances du cloud computing. Les entreprises peuvent centraliser leurs données dans des systèmes cloud, comme des datalakes ou des data warehouse&nbsp; et utiliser et entraîner des services de machine learning pour en extraire des éléments souhaités. Ces technologies aident à développer des modèles prédictifs, à automatiser des processus, générer du texte ou des images , etc.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Test et développement d'applications</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud est également un outil puissant pour le test et le développement d'applications. Grâce à la standardisation des environnements de tests, il est désormais possible d’obtenir des espaces dédiés en quelques clics, et permet aux équipes de développeurs de gagner du temps. Les infrastructures cloud offrent une forte flexibilité pour créer, tester et déployer des applications tout en facilitant l'intégration continue et le déploiement continu (CI/CD). Cette approche accélère le cycle de développement et permet aux entreprises de réduire leur time to market.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Edge computing et cloud computing : les différences</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing et l'edge computing sont deux architectures distinctes qui répondent à des besoins différents. Alors que le cloud computing centralise les ressources et les traitements dans de grands datacenters, l'edge computing déplace ces opérations au plus près des sources de données grâce à des infrastructures de petites tailles.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Cette approche permet à l'edge computing de réduire la latence et d'améliorer la rapidité de traitement, un atout essentiel pour des applications telles que l'Internet des objets (IoT), les véhicules autonomes et la réalité augmentée. Le choix entre ces deux technologies dépend souvent du contexte et des exigences de performance, de sécurité et de connectivité. L’edge computing permet aussi de proposer une architecture hybride, qui peut prendre le relai en cas de problématique de disponibilité.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Le cloud computing se distingue par sa capacité à offrir des ressources évolutives et mutualisées, accessibles via Internet, ce qui en fait une solution idéale pour des applications nécessitant une grande puissance de calcul et de stockage. En revanche, l'edge computing privilégie un traitement local pour des réponses en temps réel, réduisant ainsi les dépendances vis-à-vis de la connectivité réseau.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Quand choisir l’edge computing plutôt que le cloud computing ?</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Choisir entre edge computing et cloud computing dépend de plusieurs facteurs clés :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Réactivité et faible latence : L'edge computing est la meilleure solution lorsqu'une réponse instantanée est cruciale. Par exemple, pour les systèmes de contrôle industriel ou les véhicules autonomes, chaque milliseconde compte. Le traitement local des données par l'edge computing réduit les délais et améliore la fiabilité des opérations ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Volume de données à traiter : Lorsque le volume de données généré est trop important pour être transféré rapidement vers un datacenter central, l'edge computing devient indispensable. Il permet de filtrer et de traiter les données à la source, minimisant ainsi le trafic réseau et optimisant l'utilisation de la bande passante ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Environnements isolés ou à connectivité limitée : Dans des zones où la connexion à Internet est instable ou inexistante, l'edge computing assure le traitement des données sans interruption. Cela en fait une solution idéale pour des sites distants, comme les installations industrielles ou les infrastructures critiques ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Sécurité et confidentialité des données : L'edge computing offre un niveau de sécurité supplémentaire en traitant les données localement, ce qui limite leur exposition aux cybermenaces potentielles. Ce point est particulièrement important pour les secteurs sensibles, comme la santé ou les services financiers.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Ainsi, bien que le cloud computing soit adapté aux tâches nécessitant de vastes ressources et une accessibilité globale, l'edge computing s'impose dans les contextes où la rapidité, la localité et la sécurité des données sont primordiales.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">On-premise et cloud computing : les différences</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>L’évolution des infrastructures informatiques a mené à deux principales approches : le on-premise et le cloud computing. Ces deux solutions présentent des différences fondamentales en termes de déploiement, de gestion, de coûts et d'évolutivité. Le <a href="https://stagingv6.cleverapps.io/clever-cloud-on-premises-3/">on-premise</a> implique d’acheter, d'installer et de gérer le matériel et les logiciels directement sur les serveurs de l'entreprise grâce à une équipe formée, offrant ainsi un contrôle total sur les données, le réseau et la sécurité. En revanche, le cloud computing repose sur l’externalisation de ces tâches afin de laisser l’entreprise se concentrer sur son cœur de métier.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Quand choisir du on-premise plutôt que le cloud computing ?</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Opter pour une infrastructure on-premise peut être un choix stratégique, tant d’un point de vue budgétaire, technique que RH. Si l’entreprise souhaite payer et amortir ses investissements, contrôler l’ensemble de la chaîne de valeurs&nbsp; et est en capacité de recruter et garder ses talents, le choix de l’on-premise peut à fait lui convenir. Si elle souhaite se concentrer sur son coeur de mieux, elle se tournera plus facilement vers le cloud computing afin d’externaliser cette charge à un prestataire dont c’est le métier.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Le futur du cloud computing</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing continue d'évoluer à une vitesse fulgurante, et son potentiel ne cesse de se développer. Nous sommes à l'aube d'une ère où les technologies de pointe comme l'intelligence artificielle (IA), l'informatique quantique et l'edge computing vont redéfinir les paradigmes actuels du cloud. Ce futur promet une intégration accrue des plateformes low-code et no-code, ainsi qu'une adoption massive de l'Internet des Objets (IoT), permettant aux entreprises et développeurs de concevoir des solutions innovantes sans forcément bénéficier d’une expertise technique avancée.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1600" height="710" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-fr.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Tout savoir sur le cloud computing" decoding="async" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-fr.png 1600w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-fr-300x133.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-fr-1024x454.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-fr-768x341.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-fr-1536x682.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-fr-1368x607.png 1368w" sizes="(max-width: 1600px) 100vw, 1600px" /></p><!-- wp:paragraph -->
<p>Retour aux fondamentaux avec ce premier article d’une nouvelle série. Découvrons ensemble le fonctionnement du cloud computing, ses différentes architectures (public, privé, hybride), ses nombreux avantages pour les entreprises ainsi que les différences entre cloud computing, edge computing, et on-premise pour vous aider à choisir la solution la plus adaptée à vos besoins.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Cloud computing : définition et origines</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing a profondément transformé la manière dont les entreprises et les particuliers accèdent aux ressources informatiques. L'idée est simple mais novatrice : plutôt que de posséder et de gérer ses propres serveurs et centres de données, l'utilisateur peut désormais accéder à des services informatiques à la demande, via un réseau. Ces services incluent la puissance de calcul, le stockage de données, et parfois même la gestion de bases de données, offrant une flexibilité et une accessibilité jusqu’alors inédites. Une idée qui ne date d’ailleurs pas d’hier…</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">L’évolution de l’« informatique en nuage »</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le concept de l’informatique en nuage, plus connu sous le nom de cloud computing, bien que largement popularisé au début des années 2000, puise ses racines dans les années 1960. À cette époque, des pionniers de l'informatique envisageaient déjà l'idée de rendre la puissance de calcul accessible comme d’utilité publique. Durant les années 1990, les schémas réseaux ont commencé à utiliser l'image d'un "nuage" pour représenter Internet, symbolisant la complexité et l'interconnexion des réseaux qui permettent aujourd'hui au cloud computing de fonctionner comme une architecture mondiale et flexible.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>La véritable force du cloud réside dans sa capacité à fournir des ressources informatiques distantes et évolutives, permettant aux entreprises de simplifier la gestion de leur infrastructure, d'éviter le gaspillage de ressources, et d'<a href="https://stagingv6.cleverapps.io/fr/cloud-et-green-it-fr/">améliorer l'efficacité énergétique</a> à travers trois piliers :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><strong>Unification de la facturation</strong> : Le cloud propose un système de <a href="https://developers.clever-cloud.com/doc/billing/unified-invoices/">facturation unique</a> qui simplifie la gestion des coûts pour les entreprises. Cette transparence permet de suivre précisément les dépenses et d'optimiser les coûts ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><strong>Accès centralisé et sécurisé</strong> : Le cloud offre une interface unique qui simplifie l'accès aux services, tout en centralisant la gestion. Les systèmes IAM (Identity and Access Management) assurent une sécurité renforcée avec des outils d'auditabilité pour une meilleure conformité ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><strong>Marketplace riche et diversifiée</strong> : Le cloud met à disposition une vaste place de marché, permettant aux entreprises d'accéder à un <a href="https://stagingv6.cleverapps.io/fr/product/">large éventail de produits</a> et services. Cette diversité favorise la flexibilité et la scalabilité des solutions déployées.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Comment définir simplement le cloud computing ?</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>En termes simples, le cloud computing se définit comme l'accès à distance à des ressources informatiques partagées, sans la complexité de gérer l'infrastructure physique sous-jacente. Cette approche permet aux entreprises d'investir à long terme dans la pérennité de la gestion et de l'hébergement de leurs données, tout en leur offrant la flexibilité nécessaire pour ajuster rapidement leurs capacités selon leurs besoins. Par exemple, Clever Cloud automatise cette scalabilité, optimisant les ressources en temps réel pour répondre à la demande.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Comment fonctionne le cloud computing ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Reposant sur un modèle de services informatiques via réseaux, le cloud permet aux entreprises d'accéder à des ressources telles que le stockage de données, la puissance de calcul, et l’accès à un catalogue d’applications en ligne, sans la nécessité de gérer directement l'infrastructure matérielle. Cette approche offre une flexibilité accrue, une optimisation des coûts, et une efficacité opérationnelle qui favorisent l'innovation.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading"><strong>Les éléments clés du fonctionnement du cloud</strong></h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Plusieurs éléments fondamentaux assurent l’efficacité et l’évolutivité du cloud. Voici un aperçu des éléments clés qui le composent.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">L'infrastructure matérielle</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Au cœur du cloud, se trouve une <a href="https://stagingv6.cleverapps.io/fr/infrastructure/">infrastructure physique</a> composée de serveurs, de systèmes de stockage, et de réseaux interconnectés. Ces infrastructures sont présentes dans des centres de données répartis à travers le monde, promettant une très haute disponibilité, <a href="https://stagingv6.cleverapps.io/fr/security/">une sécurité renforcée</a>, et une performance optimale. Les fournisseurs de cloud comme Clever Cloud investissent massivement pour maintenir des standards de qualité élevés, vérifiés à travers différentes certifications.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">La virtualisation</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Ce principe fondamental permet de créer des versions virtuelles de ressources physiques, comme des serveurs ou des systèmes de stockage. La virtualisation améliore l'efficacité en permettant à plusieurs utilisateurs ou applications d'exploiter les mêmes ressources de manière optimisée : les fameuses Virtual Machines (VM) . Cette technologie simplifie également la gestion et réduit les coûts d'exploitation en déconnectant l'infrastructure matérielle de l'expérience utilisateur.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Les interfaces d'accès et API</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Les interfaces des services cloud sont conçues pour être sécurisées et performantes, facilitant la gestion des ressources et le déploiement d'applications. Les <a href="https://stagingv6.cleverapps.io/doc/api/">API</a> offrent aux administrateurs systèmes, DevOps et développeurs la possibilité d'automatiser et d'intégrer des services cloud dans leurs propres systèmes, maximisant ainsi la personnalisation, l'efficacité, la flexibilité et élargissant les fonctionnalités possibles.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Les différentes architectures cloud : public, privé et hybride</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Chaque architecture cloud présente ses propres avantages et s'adresse à des besoins différents. La clé est de choisir celle qui s'aligne le mieux avec les objectifs stratégiques et les contraintes opérationnelles propres à votre organisation.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Cloud public : l’accessibilité et scalabilité simplifiées pour l’hébergement de données</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud public est l'architecture la plus courante. Ici, les ressources informatiques y sont hébergées sur des serveurs appartenant à des fournisseurs de services cloud, comme Clever Cloud. Ces services sont accessibles via réseau, offrant une solution évolutive et particulièrement scalable, capable de s'adapter rapidement aux besoins changeants des entreprises.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Le cloud public propose différents niveaux de services, allant de l'Infrastructure as a Service (IaaS) à la Platform as a Service (PaaS), en passant par le Software as a Service (SaaS). Cette diversité permet aux entreprises de choisir la solution la plus adaptée à leurs besoins, tout en bénéficiant de l'absence d'investissement initial dans l'infrastructure.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Cloud privé : l’hébergement de données contrôlé et sécurisé</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud privé est une solution dédiée à une seule organisation, par définition. Contrairement au cloud public, les serveurs du client lui sont dédiés. Il s’agit souvent d’une zone d’hébergement derrière le pare-feu du client, mise à disposition par un fournisseur de cloud. Cette architecture offre un contrôle total sur les données et une sécurité renforcée, ce qui est idéal pour les secteurs soumis à des régulations strictes (financier, santé, pharmaceutique, public, défense, juridique, industriel, etc.). Le cloud privé permet une personnalisation accrue de l’architecture d’hébergement de données, adaptée aux besoins spécifiques de l'entreprise.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Cloud hybride : ne pas mettre tous ses œufs dans le même panier</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud hybride permet de gagner en résilience en combinant les avantages du cloud public et privé. En diversifiant les environnements, les entreprises évitent de mettre tous leurs œufs dans le même panier. Par exemple, elles peuvent stocker leurs données sensibles dans un cloud privé tout en utilisant un cloud public pour les sauvegardes ou les charges de travail moins critiques. Cela permet de basculer d'un environnement à l'autre selon les besoins en termes de performance, de coût ou de sécurité. Cependant, avec les frais de sortie (egress fees) élevés des hyperscalers, cette approche peut devenir coûteuse.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En réalité, le cloud hybride est déjà une pratique courante, souvent sans que les entreprises en aient pleinement conscience. Depuis la démocratisation du SaaS, la majorité des applications ne sont plus uniquement en on-premise, mais reposent sur un mix de cloud public, cloud privé et services SaaS.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Quels sont les différents types de cloud computing ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing est divisé en plusieurs catégories principales : Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS) et le Function as a Service (FaaS). Chaque type offre des niveaux de contrôle, de flexibilité et de gestion différents, permettant à chacun de choisir celui qui répond le mieux à ses besoins.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Infrastructure as a Service (IaaS) pour une personnalisation  maximale</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>L'Infrastructure as a Service (IaaS) est historiquement le modèle le plus répandu du cloud computing. Avec l'IaaS, les entreprises louent des ressources informatiques telles que des serveurs, des machines virtuelles, du stockage et des réseaux directement auprès d'un fournisseur de services cloud.&nbsp; Les clients&nbsp; s’occupent du maintien en conditions opérationnelles de leur OS, des bases de données, des runtimes, etc. grâce à des administrateurs systèmes, présents en interne ou chez un infogéreur. Cela permet aux entreprises d’avoir une architecture spécifique répondant à leur besoin.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Platform as a Service (PaaS) pour un déploiement rapide et une mise à jour automatique</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le <a href="https://stagingv6.cleverapps.io/">Platform as a Service (PaaS)</a> va un cran plus loin que l'IaaS en fournissant un OS, le middleware,&nbsp; une console permettant de facilement déployer des runtimes voire même des bases de données ou des services tiers, que l’on appelle add-ons. Le client n’a plus à se préoccuper du maintien en condition opérationnelle (MCO), c’est à la charge du fournisseur de cloud.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Les solutions PaaS facilitent le déploiement rapide des applications, tout en assurant la maintenance et la mise à jour automatiques de l'infrastructure. Avec des outils de développement intégrés et une architecture modulable, Clever Cloud simplifie le travail des développeurs et des DevOps en leur offrant un environnement prêt à l'emploi pour accélérer l'innovation : déployez du code, on se charge du reste !&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Software as a Service (SaaS) pour plus de simplicité</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le Software as a Service (SaaS) est le modèle le plus courant du cloud computing. Les applications SaaS sont hébergées et gérées par des fournisseurs de services, permettant aux utilisateurs d'y accéder via Internet, généralement sur abonnement. Ce modèle élimine le besoin d'installer et de maintenir des logiciels localement, ce qui réduit les coûts et la complexité technique.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Le SaaS est particulièrement utile pour les entreprises cherchant à standardiser leurs outils logiciels sans investir dans l'infrastructure IT. Par exemple, les outils de collaboration, les systèmes de gestion de la relation client (CRM) et les suites bureautiques sont souvent déployés sous forme de services SaaS pour une simplicité maximale.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Functions as a Service  (FaaS) pour une grande agilité</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le Functions as a Service (FaaS), est une évolution du modèle PaaS qui permet aux développeurs de créer et de déployer des fonctions individuelles sans se soucier de la gestion des serveurs. Le fournisseur de cloud s'occupe de l'ensemble de l'infrastructure, de la mise à l'échelle et de la gestion des ressources, ne facturant que le temps d'exécution des fonctions.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Les fonctions sont déclenchées suite à des événements définis à l’avance, permettant à la fonction de lancer son action (traitement d’une image, conversion d’un fichier, etc.) et donc de s’allumer, d’être active le temps de l’action puis de s'éteindre. services pour des questions économiques. Le FaaS est souvent complémentaire d’un PaaS.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Quels sont les avantages du cloud computing ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Que ce soit en matière de scalabilité et de sécurité, le cloud offre de nombreux bénéfices pour les organisations qui décident de l’adopter, dont voici les principales.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Optimisation des coûts : une approche stratégique plutôt que de simples économies</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing peut répondre à une stratégie financière, notamment en transformant les dépenses d'investissement (CAPEX) en dépenses opérationnelles (OPEX). Cette transition budgétaire permet aux entreprises d’externaliser leurs coûts initiaux liés à l'infrastructure informatique (achat des serveurs, entretiens des datacenters, maintenance, gestion de la fibre, recrutement d’une équipe dédiée, etc.). Les organisations peuvent adopter un modèle de paiement à l'usage, ajustant ainsi leurs dépenses en fonction de leurs besoins réels. Certains hyperscalers vont tout de même proposer de payer des instances réservées, qui seront à payer même si elles ne sont pas utilisées mais il ne s'agit pas de la majorité des usages.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Scalabilité : le cloud s’adapte à vos besoins</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Que ce soit pour augmenter la capacité de traitement lors d'un pic d'activité ou pour réduire les ressources pendant les périodes creuses, le cloud se veut flexible et scalable à la demande, grâce à des sondes et des orchestrateurs. Cette réactivité garantit une utilisation optimale des ressources et offre aux entreprises une agilité accrue pour faire face aux évolutions du marché et de la demande. Chez Clever Cloud, la scalabilité est automatique, ce qui signifie qu’elle s’adapte en temps réel à vos besoins et vous permet de ne payer que ce que vous consommez réellement.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Sécurité : un pilier capital pour les entreprises</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing améliore grandement la sécurité de vos données. Les clouds providers investissent, assurent une veille constante et ont pour rôle d’avertir leur clients ou de mettre à jour les zones exposées. Le stockage dans le cloud et ses sauvegardes permettent une grande résilience. Il est facilement possible d’accéder aux&nbsp; données sauvegardées ou de lancer un PRA ou un PCA. Chez Clever Cloud, nous allons même plus loin : nos bases de données Materia sont automatiquement répliquées sur&nbsp; nos trois datacenters parisiens, ce qui vous assure une grande tranquilité d’esprit. Autre point capital : de nombreuses certifications de sécurité peuvent être demandées lorsque l’on héberge des données critiques ou personnelles. Les fournisseurs de clouds s’engagent à les respecter.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Accessibilité : l’instantané comme répondre aux nouvelles tendances de travail</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing favorise l’accessibilité à vos données, permettant à vos équipes de collaborer efficacement, peu importe leur localisation. Les données et les applications hébergées dans le cloud peuvent être disponibles 24/7. Ce qui facilite le télétravail, accélère les processus de prise de décision et améliore la productivité des équipes, tout en garantissant une synchronisation en temps réel des informations.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Mises à jour automatiques et maintien en condition opérationnelle</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Avec le cloud computing, les mises à jour logicielles et les correctifs de sécurité sont automatiquement gérés par le fournisseur, sans intervention de l'équipe informatique du client. Cela permet non seulement de réduire la charge de travail interne, mais aussi de garantir que les systèmes n’ont pas de failles de sécurité.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Qui utilise le cloud computing ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing est désormais une composante essentielle pour les entreprises de toutes tailles et de tous secteurs. Son adoption massive est motivée par l'externalisation de la gestion et du MCO, par l’unification des coûts et par l’accès à une marketplace.&nbsp; Que ce soit pour le stockage et la sauvegarde de données, l'analyse de Big Data, l’hébergement de serveurs mails ou encore le développement et le déploiement d'applications web, le cloud est devenu incontournable pour répondre aux exigences croissantes du marché.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>À titre d’exemple, les organisations du secteur financier utilisent le cloud computing pour détecter et prévenir les fraudes en temps réel, en s'appuyant sur des algorithmes de machine learning et des analyses prédictives. Les entreprises de santé, quant à elles, exploitent ces technologies pour offrir des traitements plus personnalisés, améliorant ainsi la qualité des soins pour leurs patients. Le secteur du divertissement et les créateurs de jeux vidéo s'appuient sur le cloud pour diffuser leurs contenus à des millions d'utilisateurs dans le monde entier, garantissant une expérience fluide et immersive.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Mais cette technologie n'est pas réservée aux grandes entreprises : PME, startups, freelance et particuliers adoptent également le cloud pour bénéficier d'une infrastructure évolutive sans avoir à supporter les coûts élevés liés aux datacenters physiques. En optant pour ces solutions, elles peuvent se concentrer sur leur besoin.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Quelles sont les utilisations du cloud computing ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing offre une multitude d'utilisations pour les entreprises et les particuliers, dont voici les principales.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Stocker et sauvegarder des données</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud permet aux entreprises de protéger leurs informations tout en bénéficiant d'une grande capacité de stockage, et ce, tout en gardant un contrôle sur la facturation. Les données peuvent être facilement accessibles depuis n'importe quel appareil connecté, ce qui facilite la récupération en cas de problème technique.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Héberger des applications, des sites web</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>L'hébergement d'applications et de sites web est une autre utilisation clé du cloud computing permettant de créer et déployer des applications tout en bénéficiant d’une grande scalabilité. Les développeurs bénéficient ainsi d'une solution fiable pour offrir une expérience utilisateur fluide et performante.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Diffuser des logiciels et des contenus as a service</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing facilite également le développement de logiciels et de contenus sous forme de services (SaaS). Ce modèle réduit les besoins en installations locales et permet aux entreprises de proposer des mises à jour régulières sans interruption de service, accessible à tout moment et sur tout type d’appareil. Elles peuvent se concentrer sur l'amélioration continue de leurs produits tout en simplifiant la gestion des versions logicielles.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Analyse de données et intelligence artificielle (IA)</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>L'analyse de données et l'intégration de l'intelligence artificielle (IA) sont rendues possibles grâce aux capacités et performances du cloud computing. Les entreprises peuvent centraliser leurs données dans des systèmes cloud, comme des datalakes ou des data warehouse&nbsp; et utiliser et entraîner des services de machine learning pour en extraire des éléments souhaités. Ces technologies aident à développer des modèles prédictifs, à automatiser des processus, générer du texte ou des images , etc.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Test et développement d'applications</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud est également un outil puissant pour le test et le développement d'applications. Grâce à la standardisation des environnements de tests, il est désormais possible d’obtenir des espaces dédiés en quelques clics, et permet aux équipes de développeurs de gagner du temps. Les infrastructures cloud offrent une forte flexibilité pour créer, tester et déployer des applications tout en facilitant l'intégration continue et le déploiement continu (CI/CD). Cette approche accélère le cycle de développement et permet aux entreprises de réduire leur time to market.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Edge computing et cloud computing : les différences</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing et l'edge computing sont deux architectures distinctes qui répondent à des besoins différents. Alors que le cloud computing centralise les ressources et les traitements dans de grands datacenters, l'edge computing déplace ces opérations au plus près des sources de données grâce à des infrastructures de petites tailles.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Cette approche permet à l'edge computing de réduire la latence et d'améliorer la rapidité de traitement, un atout essentiel pour des applications telles que l'Internet des objets (IoT), les véhicules autonomes et la réalité augmentée. Le choix entre ces deux technologies dépend souvent du contexte et des exigences de performance, de sécurité et de connectivité. L’edge computing permet aussi de proposer une architecture hybride, qui peut prendre le relai en cas de problématique de disponibilité.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Le cloud computing se distingue par sa capacité à offrir des ressources évolutives et mutualisées, accessibles via Internet, ce qui en fait une solution idéale pour des applications nécessitant une grande puissance de calcul et de stockage. En revanche, l'edge computing privilégie un traitement local pour des réponses en temps réel, réduisant ainsi les dépendances vis-à-vis de la connectivité réseau.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Quand choisir l’edge computing plutôt que le cloud computing ?</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Choisir entre edge computing et cloud computing dépend de plusieurs facteurs clés :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Réactivité et faible latence : L'edge computing est la meilleure solution lorsqu'une réponse instantanée est cruciale. Par exemple, pour les systèmes de contrôle industriel ou les véhicules autonomes, chaque milliseconde compte. Le traitement local des données par l'edge computing réduit les délais et améliore la fiabilité des opérations ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Volume de données à traiter : Lorsque le volume de données généré est trop important pour être transféré rapidement vers un datacenter central, l'edge computing devient indispensable. Il permet de filtrer et de traiter les données à la source, minimisant ainsi le trafic réseau et optimisant l'utilisation de la bande passante ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Environnements isolés ou à connectivité limitée : Dans des zones où la connexion à Internet est instable ou inexistante, l'edge computing assure le traitement des données sans interruption. Cela en fait une solution idéale pour des sites distants, comme les installations industrielles ou les infrastructures critiques ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Sécurité et confidentialité des données : L'edge computing offre un niveau de sécurité supplémentaire en traitant les données localement, ce qui limite leur exposition aux cybermenaces potentielles. Ce point est particulièrement important pour les secteurs sensibles, comme la santé ou les services financiers.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Ainsi, bien que le cloud computing soit adapté aux tâches nécessitant de vastes ressources et une accessibilité globale, l'edge computing s'impose dans les contextes où la rapidité, la localité et la sécurité des données sont primordiales.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">On-premise et cloud computing : les différences</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>L’évolution des infrastructures informatiques a mené à deux principales approches : le on-premise et le cloud computing. Ces deux solutions présentent des différences fondamentales en termes de déploiement, de gestion, de coûts et d'évolutivité. Le <a href="https://stagingv6.cleverapps.io/clever-cloud-on-premises-3/">on-premise</a> implique d’acheter, d'installer et de gérer le matériel et les logiciels directement sur les serveurs de l'entreprise grâce à une équipe formée, offrant ainsi un contrôle total sur les données, le réseau et la sécurité. En revanche, le cloud computing repose sur l’externalisation de ces tâches afin de laisser l’entreprise se concentrer sur son cœur de métier.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Quand choisir du on-premise plutôt que le cloud computing ?</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Opter pour une infrastructure on-premise peut être un choix stratégique, tant d’un point de vue budgétaire, technique que RH. Si l’entreprise souhaite payer et amortir ses investissements, contrôler l’ensemble de la chaîne de valeurs&nbsp; et est en capacité de recruter et garder ses talents, le choix de l’on-premise peut à fait lui convenir. Si elle souhaite se concentrer sur son coeur de mieux, elle se tournera plus facilement vers le cloud computing afin d’externaliser cette charge à un prestataire dont c’est le métier.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Le futur du cloud computing</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le cloud computing continue d'évoluer à une vitesse fulgurante, et son potentiel ne cesse de se développer. Nous sommes à l'aube d'une ère où les technologies de pointe comme l'intelligence artificielle (IA), l'informatique quantique et l'edge computing vont redéfinir les paradigmes actuels du cloud. Ce futur promet une intégration accrue des plateformes low-code et no-code, ainsi qu'une adoption massive de l'Internet des Objets (IoT), permettant aux entreprises et développeurs de concevoir des solutions innovantes sans forcément bénéficier d’une expertise technique avancée.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Une mise à jour mineure a entraîné une cascade d&#8217;erreurs : comment cela s&#8217;est passé, ce que nous avons appris</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/engineering-fr/2024/08/14/incident-mise-a-jour-mineur/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Wed, 14 Aug 2024 14:41:56 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Entreprise]]></category>
		<category><![CDATA[incident]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=13741</guid>

					<description><![CDATA[<p><img width="1600" height="710" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/08/2024-08-14-clever-cloud-banniere-blog-incident-2-aout-2024-fr.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="incident erreur mineur" decoding="async" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/08/2024-08-14-clever-cloud-banniere-blog-incident-2-aout-2024-fr.png 1600w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/08/2024-08-14-clever-cloud-banniere-blog-incident-2-aout-2024-fr-300x133.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/08/2024-08-14-clever-cloud-banniere-blog-incident-2-aout-2024-fr-1024x454.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/08/2024-08-14-clever-cloud-banniere-blog-incident-2-aout-2024-fr-768x341.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/08/2024-08-14-clever-cloud-banniere-blog-incident-2-aout-2024-fr-1536x682.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/08/2024-08-14-clever-cloud-banniere-blog-incident-2-aout-2024-fr-1368x607.png 1368w" sizes="(max-width: 1600px) 100vw, 1600px" /></p><!-- wp:heading -->
<h2 class="wp-block-heading">Une mise à jour mineure, des conséquences plus importantes</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>L'incident global a commencé après que nous ayons lancé une mise à jour mineure de maintenance d'Apache Pulsar (3.3.1). Elle activait un nouvel algorithme d'équilibrage pour l'optimisation du placement des bundles, qui a causé des problèmes. Nous l'avons rapidement détecté, avons conservé la version 3.3.1 et annulé la configuration défectueuse.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Le problème initial, bien que résolu, a entraîné un conflit de métadonnées. Nous avons dû arrêter tous les brokers de messagerie pour n'en démarrer qu'un seul, afin d'éviter tout conflit de métadonnées entre eux, et avons réussi à revenir à une situation nominale. Mais par la suite, notre infrastructure a subi une pression sur les entrées/sorties (E/S) et la mémoire, provoquant le plantage de certains hyperviseurs.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>L'indisponibilité de la couche de messagerie Apache Pulsar a entraîné la mise en mémoire tampon de certains agents de télémétrie sur les machines virtuelles (VM) fonctionnant sur des hyperviseurs (HV). Elle a commencé alors que les endpoints du service de messagerie étaient indisponibles.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Les limites de nos plus petites machines virtuelles&nbsp;</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Les petites machines virtuelles ont rapidement atteint une limite de mémoire, déclenchant une forte pression sur le noyau. Lorsque cela se produit, le noyau tente de vider la mémoire et les caches, de supprimer les processus de la mémoire pour les charger instruction par instruction à partir du disque. Cela génère une forte pression sur les E/S disque de l'hyperviseur sous-jacent. Quelques minutes après l'augmentation de la charge des HV, nous avons commencé à observer des “paniques” du noyau sur certains d'entre eux.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Les petites machines virtuelles étant réparties globalement entre nos zones de disponibilité, nous nous sommes retrouvés avec une infrastructure de serveurs surchargée. Alors que nous avions besoin du scheduler pour gérer la situation, le control plane ne fonctionnait pas de manière optimale et l'infrastructure avait du mal à fournir les ressources disponibles.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous avons donc dû arrêter tous les services non critiques et notre équipe SRE a redéployé une à une les petites machines virtuelles surchargées. Nous avons alors commencé à reprendre le contrôle de tous les hyperviseurs et avons pu ramener notre infrastructure à son état optimal.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Les prochaines étapes</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour les versions non mineures, nous utilisons un processus de simulation qui émule un environnement complet dans lequel nous injectons des changements. Cela permet de valider les mises à jour et les changements en observant le comportement de l'infrastructure avant de passer en production. Ce processus n'était pas utilisé pour les mises à jour de maintenance mineures ou les (apparemment) petits changements du profil de configuration.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Cet incident nous a beaucoup appris et nous avons identifié quelques domaines de progrès concernant nos images, la configuration et l'intégration des outils, ou la configuration des petites machines virtuelles. Nous avons pris des mesures immédiates et travaillerons sur des sujets plus approfondis dans les semaines à venir.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Nous nous excusons sincèrement pour les désagréments que cet incident a pu causer. Votre confiance est primordiale pour nous, et nous nous engageons à vous fournir le plus haut niveau de fiabilité de service</strong>. Vous pourrez en apprendre plus sur le calendrier et l'analyse technique de l'incident dans <a href="https://developers.clever-cloud.com/postmortem/2024-08-02/">notre post-mortem public</a>. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Si vous avez des questions ou des inquiétudes, n'hésitez pas à <a href="https://console.clever-cloud.com/ticket-center-choice">contacter notre support</a>.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1600" height="710" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/08/2024-08-14-clever-cloud-banniere-blog-incident-2-aout-2024-fr.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="incident erreur mineur" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/08/2024-08-14-clever-cloud-banniere-blog-incident-2-aout-2024-fr.png 1600w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/08/2024-08-14-clever-cloud-banniere-blog-incident-2-aout-2024-fr-300x133.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/08/2024-08-14-clever-cloud-banniere-blog-incident-2-aout-2024-fr-1024x454.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/08/2024-08-14-clever-cloud-banniere-blog-incident-2-aout-2024-fr-768x341.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/08/2024-08-14-clever-cloud-banniere-blog-incident-2-aout-2024-fr-1536x682.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/08/2024-08-14-clever-cloud-banniere-blog-incident-2-aout-2024-fr-1368x607.png 1368w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></p><!-- wp:heading -->
<h2 class="wp-block-heading">Une mise à jour mineure, des conséquences plus importantes</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>L'incident global a commencé après que nous ayons lancé une mise à jour mineure de maintenance d'Apache Pulsar (3.3.1). Elle activait un nouvel algorithme d'équilibrage pour l'optimisation du placement des bundles, qui a causé des problèmes. Nous l'avons rapidement détecté, avons conservé la version 3.3.1 et annulé la configuration défectueuse.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Le problème initial, bien que résolu, a entraîné un conflit de métadonnées. Nous avons dû arrêter tous les brokers de messagerie pour n'en démarrer qu'un seul, afin d'éviter tout conflit de métadonnées entre eux, et avons réussi à revenir à une situation nominale. Mais par la suite, notre infrastructure a subi une pression sur les entrées/sorties (E/S) et la mémoire, provoquant le plantage de certains hyperviseurs.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>L'indisponibilité de la couche de messagerie Apache Pulsar a entraîné la mise en mémoire tampon de certains agents de télémétrie sur les machines virtuelles (VM) fonctionnant sur des hyperviseurs (HV). Elle a commencé alors que les endpoints du service de messagerie étaient indisponibles.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Les limites de nos plus petites machines virtuelles&nbsp;</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Les petites machines virtuelles ont rapidement atteint une limite de mémoire, déclenchant une forte pression sur le noyau. Lorsque cela se produit, le noyau tente de vider la mémoire et les caches, de supprimer les processus de la mémoire pour les charger instruction par instruction à partir du disque. Cela génère une forte pression sur les E/S disque de l'hyperviseur sous-jacent. Quelques minutes après l'augmentation de la charge des HV, nous avons commencé à observer des “paniques” du noyau sur certains d'entre eux.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Les petites machines virtuelles étant réparties globalement entre nos zones de disponibilité, nous nous sommes retrouvés avec une infrastructure de serveurs surchargée. Alors que nous avions besoin du scheduler pour gérer la situation, le control plane ne fonctionnait pas de manière optimale et l'infrastructure avait du mal à fournir les ressources disponibles.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous avons donc dû arrêter tous les services non critiques et notre équipe SRE a redéployé une à une les petites machines virtuelles surchargées. Nous avons alors commencé à reprendre le contrôle de tous les hyperviseurs et avons pu ramener notre infrastructure à son état optimal.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Les prochaines étapes</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour les versions non mineures, nous utilisons un processus de simulation qui émule un environnement complet dans lequel nous injectons des changements. Cela permet de valider les mises à jour et les changements en observant le comportement de l'infrastructure avant de passer en production. Ce processus n'était pas utilisé pour les mises à jour de maintenance mineures ou les (apparemment) petits changements du profil de configuration.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Cet incident nous a beaucoup appris et nous avons identifié quelques domaines de progrès concernant nos images, la configuration et l'intégration des outils, ou la configuration des petites machines virtuelles. Nous avons pris des mesures immédiates et travaillerons sur des sujets plus approfondis dans les semaines à venir.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Nous nous excusons sincèrement pour les désagréments que cet incident a pu causer. Votre confiance est primordiale pour nous, et nous nous engageons à vous fournir le plus haut niveau de fiabilité de service</strong>. Vous pourrez en apprendre plus sur le calendrier et l'analyse technique de l'incident dans <a href="https://developers.clever-cloud.com/postmortem/2024-08-02/">notre post-mortem public</a>. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Si vous avez des questions ou des inquiétudes, n'hésitez pas à <a href="https://console.clever-cloud.com/ticket-center-choice">contacter notre support</a>.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Métriques : archiver des milliards de points chaque mois</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/engineering-fr/2024/04/04/metriques-archiver-milliards-de-points-tous-les-mois/</link>
		
		<dc:creator><![CDATA[Alexandre Burgoni]]></dc:creator>
		<pubDate>Thu, 04 Apr 2024 14:39:47 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=12044</guid>

					<description><![CDATA[<p><img width="1600" height="710" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-3.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-3.png 1600w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-3-300x133.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-3-1024x454.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-3-768x341.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-3-1536x682.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-3-1368x607.png 1368w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></p><!-- wp:paragraph -->
<p>Pour nous assurer que chaque Clever App ait assez de ressources pour fonctionner, nous utilisons les métriques comme indicateur pour augmenter ou non le nombre d'instances d'une application.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ces métriques, comme toutes celles de notre infrastructure interne, sont stockées dans une base de données time serie. Avec une croissance de 2 To par semaine, nous devons penser au cycle de vie de chaque métrique. Puisque nous ne souhaitons pas la supprimer, nous avons mis en place une solution d'archivage automatisée à partir de <a href="https://stagingv6.cleverapps.io/fr/product/stockage-objet-cellar/">Cellar</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Notre infrastructure </h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Avec plusieurs milliers d'applications clientes, et plusieurs centaines pour des usages internes, nous avions besoin d'un moyen permettant d’accepter des centaines de milliers de points par seconde.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En production depuis octobre 2023, notre cluster <strong>warp10-c2</strong> permet de répondre à ce besoin. Basé sur <a href="https://warp10.io/">Warp10</a> et grâce à sa couche de stockage utilisant <a href="https://www.foundationdb.org/">FoundationDB</a>, nous sommes capables de tenir la charge face à des piques d'ingestions de plus de 500 000 points/seconde tout en permettant de lire 5 millions de points/seconde.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Un cluster en constante linéaire</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Bien avant de pouvoir mettre en place cette stratégie d’archivage, notre équipe data a été confrontée à bon nombre de problèmes depuis la mise en production de c2.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Tout d’abord, pendant les premières semaines, le cluster a subi des problèmes de performances. Afin de pouvoir se concentrer sur ces derniers, nous avons continuellement ajouté de l’espace de stockage physique. Dès lors que ces problèmes de stabilité furent résolus, en ajoutant des nœuds permettant d’augmenter notre capacité de stockage, nous avons fait face à de nouveaux problèmes de ressources. Cette fois-ci liés au CPU et à la RAM. Et puisque nous n’avons pas des ressources infinies, nous avons gagner en capacité de stockage sans perte d’informations.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Les strategies possibles</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>La solution la plus naïve serait de sélectionner continuellement toutes les séries et points, et de les réécrire dans Cellar sans apporter de changement. Bien que c2 soit capable de gérer des millions de lectures par seconde, nous parlons ici de milliards de points. Même avec des machines de requêtes dédiées, cela aurait entraîné des problèmes de performances provenant de notre couche de stockage. De plus, nous aurons un espace disque utilisé similaire à celui des données dans le stockage à chaud.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Une seconde manière de procéder serait de réduire la résolution des métriques, plutôt que d’avoir des informations avec une précision à la seconde, la réduire pour avoir la moyenne sur une heure ou une journée. Cette stratégie amène beaucoup plus de questions que de réponses, comme :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Que faire des extremums dans une série, doivent-ils être supprimés ou conservés ?&nbsp;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Comment savoir depuis combien de temps une application fonctionne ?</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Doit-on appliquer cette stratégie sur nos applications internes, doit-on les traiter au cas par cas ?</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Cette solution aurait exigé trop d’efforts dans un système qui aurait tout de même des défauts.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Enfin, la dernière stratégie consiste à utiliser l’extension Warp10 HFiles, une extension vendue par l'éditeur du logiciel permettant de générer des fichiers compacts de manière efficiente, avec des capacités de chiffrement. Cette solution peut nous aider à avoir un taux de compression fort en garantissant zéro perte, transformant des téraoctets de données en quelques dizaines de gigaoctets. Ce fort ratio de compression est notamment dû au fait que le nombre de valeurs qu’un point peut prendre est rarement infini, un pourcentage d’utilisation CPU par exemple ne peut avoir qu’un nombre fini de valeurs.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En février 2024, nous avons choisi cette troisième stratégie comme solution à notre problème. Cependant, nous avons dû mettre en place tout un workflow automatisé autour de cette extension afin de ne pas avoir à exécuter cette tâche manuellement chaque mois.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Automatiser le processus</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Avant d’aborder la manière dont nous avons rendu cela possible, une brève introduction aux HFiles est nécessaire afin de mieux comprendre pourquoi nous avons procédé ainsi. Ensuite, nous explorons la mise en place de l’orchestrateur de workflow que nous utilisions pour automatiser le processus. Enfin, nous partagerons les chiffres du lancement de ce processus d’archivage.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Introduction aux HFiles de Warp10</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Un "HFile" est une extension de fichier proposé par l’extension Warp10 HFiles. Le processus de génération d’un HFile est assez simple. Tout d’abord, nous l’extension va générer un cache local avec toutes les séries qui doivent être archivées en se basant sur des critères de sélection donnés par l’utilisateur. Pour chacune des séries, l’extension va récupérer tous les points dans une plage de temps spécifiée, tout en compressant continuellement ces points. Au travers de plusieurs expérimentations, nous savons que ce processus peut facilement prendre beaucoup de temps, parfois plusieurs jours.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Cependant, avec des paramètres et des critères de sélection spécifiques, nous sommes capables de générer des HFiles en quelques heures. Ces générations sont synchrones, ce qui signifie que vous devez conserver une connexion HTTP ouverte avec la machine exécutant la génération.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous avons principalement ajusté trois paramètres afin d'optimiser le temps de traitement :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><strong>Plage temporelle des points</strong> : elle permet de récupérer uniquement des points de données entre deux dates ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><strong>Parallélisation</strong> : puisqu’une génération peut prendre plusieurs heures, nous pouvons paralléliser plusieurs exécution afin d’optimiser une mieux nos capacités de génération ;</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><strong>Nombre de séries</strong> : parce que pour chaque série dans le cache, l’extension essaiera de récupérer les données liées (même si la série est vide dans la plage de temps spécifiée), réduire le nombre de série dans le cache permet de limiter le nombre de requêtes au système de stockage.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p><strong>Que signifie une « série » ?</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Une série, aussi appelée GTS (“Geo Time Serie”) dans le contexte de Warp10 est un nom unique sous lequel sont enregistrés des points de données. Une série est composée d’un nom de métrique et de labels permettant de donner du contexte. Par exemple, pour une Clever App, une série qui contient la consommation du processeur serait cpu.usage_guest{app_id='app_87e33fea-9dde-4a99-b347-674de382ff7b'}.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Dans notre cluster c2, nous avons plus de 150 millions de séries uniques.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">L'orchestrateur de workflow</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour permettre un archivage de manière automatisée, nous étions à la recherche d’un outil répondant aux contraintes suivantes :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Planification : pour éviter de devoir déclencher l'action manuellement chaque mois ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Retry et failover : en cas d'échec d'une génération de HFile, il doit pouvoir réessayer, ou si un nœud du système crash, l’outil doit pouvoir reprendre la ou il s’était arrêté ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Alerting : lorsque plusieurs tentatives ne suffisent pas, nous devons être informé par un message Slack que le système n’a pas réussi de générer un HFile;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Capacité à exécuter de longues tâches : comme nous le savons, nos générations peuvent prendre plusieurs heures, il ne faut donc pas que l’outil empêche cela.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Après avoir essayé plusieurs outils d’orchestration, notre avis final s’est placé sur <a href="https://github.com/kestra-io/kestra">Kestra</a>. Un outil Open Source qui répond à toutes nos contraintes et à notre besoin. Déployé en tant que Clever App, nous avons pu mettre en place des workflows qui minimisent le temps de génération d’un HFile en utilisant nos paramètres optimisés. </p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":12052,"width":"603px","height":"auto","sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-full is-resized"><img src="https://cdn.clever-cloud.com/uploads/2024/04/image.png" alt="" class="wp-image-12052" style="width:603px;height:auto" /></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Fin février, nous avons terminé notre workflow complet de génération de HFile, comme le montre le schéma ci-dessus, il est plutôt simple, mais très efficace. Jusqu'à présent, il a été exécuté sur les données du mois de Novembre, sans supprimer les données. Il s’agissait d’un test qui nous a permis d’avoir suffisamment confiance en Kestra pour permettre de valider nos dernières interrogations. Nous avons ensuite exécuté la suppression manuellement, afin de s’assurer qu’il n’y ait pas d’effet de bord, ou d’oublis.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Aujourd’hui, la génération des HFiles et la suppression des données est complètement automatisée grâce à <a href="https://github.com/kestra-io/kestra">Kestra</a>. Même si notre utilisation de l’outil est assez simple, nous avons l’ambition de l’utiliser pour de nouveaux cas à l'avenir.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading"><strong>Chiffres sur les métriques du mois de Novembre 2023</strong></h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Début Mars, nous avons lancé notre premier archivage, avec succès. Cet archivage est basé sur le mois de Novembre puisque nous souhaitons garder 3 mois de mesures disponibles.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ce premier mois est particulier puisque c2 a été mis en production fin octobre, et toutes les applications clientes de Clever Cloud ont dû être redéployées pour utiliser le nouveau cluster. Cela signifie que les chiffres suivants comportent un nombre de séries et de points plus élevé que les mois qui suivront.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous avons archivé plus de 22 milliards de points provenant de plus de 33 millions de séries. Ces séries et points utilisaient environ 20 To d’espace disque. Une fois compressé, nous sommes rendus à 20 Go. Une chose importante à noter est que les données dans le cluster sont chiffrées, ce qui signifie que la taille d’un point est plusieurs fois celle du vrai point, puisque nous appliquons un algorithme de chiffrement.</p>
<!-- /wp:paragraph -->

<!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"}} -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://stagingv6.cleverapps.io/fr/contact/">Contactez-nous</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->]]></description>
										<content:encoded><![CDATA[<p><img width="1600" height="710" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-3.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-3.png 1600w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-3-300x133.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-3-1024x454.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-3-768x341.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-3-1536x682.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-3-1368x607.png 1368w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></p><!-- wp:paragraph -->
<p>Pour nous assurer que chaque Clever App ait assez de ressources pour fonctionner, nous utilisons les métriques comme indicateur pour augmenter ou non le nombre d'instances d'une application.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ces métriques, comme toutes celles de notre infrastructure interne, sont stockées dans une base de données time serie. Avec une croissance de 2 To par semaine, nous devons penser au cycle de vie de chaque métrique. Puisque nous ne souhaitons pas la supprimer, nous avons mis en place une solution d'archivage automatisée à partir de <a href="https://stagingv6.cleverapps.io/fr/product/stockage-objet-cellar/">Cellar</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Notre infrastructure </h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Avec plusieurs milliers d'applications clientes, et plusieurs centaines pour des usages internes, nous avions besoin d'un moyen permettant d’accepter des centaines de milliers de points par seconde.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En production depuis octobre 2023, notre cluster <strong>warp10-c2</strong> permet de répondre à ce besoin. Basé sur <a href="https://warp10.io/">Warp10</a> et grâce à sa couche de stockage utilisant <a href="https://www.foundationdb.org/">FoundationDB</a>, nous sommes capables de tenir la charge face à des piques d'ingestions de plus de 500 000 points/seconde tout en permettant de lire 5 millions de points/seconde.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Un cluster en constante linéaire</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Bien avant de pouvoir mettre en place cette stratégie d’archivage, notre équipe data a été confrontée à bon nombre de problèmes depuis la mise en production de c2.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Tout d’abord, pendant les premières semaines, le cluster a subi des problèmes de performances. Afin de pouvoir se concentrer sur ces derniers, nous avons continuellement ajouté de l’espace de stockage physique. Dès lors que ces problèmes de stabilité furent résolus, en ajoutant des nœuds permettant d’augmenter notre capacité de stockage, nous avons fait face à de nouveaux problèmes de ressources. Cette fois-ci liés au CPU et à la RAM. Et puisque nous n’avons pas des ressources infinies, nous avons gagner en capacité de stockage sans perte d’informations.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Les strategies possibles</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>La solution la plus naïve serait de sélectionner continuellement toutes les séries et points, et de les réécrire dans Cellar sans apporter de changement. Bien que c2 soit capable de gérer des millions de lectures par seconde, nous parlons ici de milliards de points. Même avec des machines de requêtes dédiées, cela aurait entraîné des problèmes de performances provenant de notre couche de stockage. De plus, nous aurons un espace disque utilisé similaire à celui des données dans le stockage à chaud.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Une seconde manière de procéder serait de réduire la résolution des métriques, plutôt que d’avoir des informations avec une précision à la seconde, la réduire pour avoir la moyenne sur une heure ou une journée. Cette stratégie amène beaucoup plus de questions que de réponses, comme :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Que faire des extremums dans une série, doivent-ils être supprimés ou conservés ?&nbsp;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Comment savoir depuis combien de temps une application fonctionne ?</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Doit-on appliquer cette stratégie sur nos applications internes, doit-on les traiter au cas par cas ?</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Cette solution aurait exigé trop d’efforts dans un système qui aurait tout de même des défauts.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Enfin, la dernière stratégie consiste à utiliser l’extension Warp10 HFiles, une extension vendue par l'éditeur du logiciel permettant de générer des fichiers compacts de manière efficiente, avec des capacités de chiffrement. Cette solution peut nous aider à avoir un taux de compression fort en garantissant zéro perte, transformant des téraoctets de données en quelques dizaines de gigaoctets. Ce fort ratio de compression est notamment dû au fait que le nombre de valeurs qu’un point peut prendre est rarement infini, un pourcentage d’utilisation CPU par exemple ne peut avoir qu’un nombre fini de valeurs.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En février 2024, nous avons choisi cette troisième stratégie comme solution à notre problème. Cependant, nous avons dû mettre en place tout un workflow automatisé autour de cette extension afin de ne pas avoir à exécuter cette tâche manuellement chaque mois.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Automatiser le processus</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Avant d’aborder la manière dont nous avons rendu cela possible, une brève introduction aux HFiles est nécessaire afin de mieux comprendre pourquoi nous avons procédé ainsi. Ensuite, nous explorons la mise en place de l’orchestrateur de workflow que nous utilisions pour automatiser le processus. Enfin, nous partagerons les chiffres du lancement de ce processus d’archivage.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Introduction aux HFiles de Warp10</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Un "HFile" est une extension de fichier proposé par l’extension Warp10 HFiles. Le processus de génération d’un HFile est assez simple. Tout d’abord, nous l’extension va générer un cache local avec toutes les séries qui doivent être archivées en se basant sur des critères de sélection donnés par l’utilisateur. Pour chacune des séries, l’extension va récupérer tous les points dans une plage de temps spécifiée, tout en compressant continuellement ces points. Au travers de plusieurs expérimentations, nous savons que ce processus peut facilement prendre beaucoup de temps, parfois plusieurs jours.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Cependant, avec des paramètres et des critères de sélection spécifiques, nous sommes capables de générer des HFiles en quelques heures. Ces générations sont synchrones, ce qui signifie que vous devez conserver une connexion HTTP ouverte avec la machine exécutant la génération.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous avons principalement ajusté trois paramètres afin d'optimiser le temps de traitement :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><strong>Plage temporelle des points</strong> : elle permet de récupérer uniquement des points de données entre deux dates ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><strong>Parallélisation</strong> : puisqu’une génération peut prendre plusieurs heures, nous pouvons paralléliser plusieurs exécution afin d’optimiser une mieux nos capacités de génération ;</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><strong>Nombre de séries</strong> : parce que pour chaque série dans le cache, l’extension essaiera de récupérer les données liées (même si la série est vide dans la plage de temps spécifiée), réduire le nombre de série dans le cache permet de limiter le nombre de requêtes au système de stockage.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p><strong>Que signifie une « série » ?</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Une série, aussi appelée GTS (“Geo Time Serie”) dans le contexte de Warp10 est un nom unique sous lequel sont enregistrés des points de données. Une série est composée d’un nom de métrique et de labels permettant de donner du contexte. Par exemple, pour une Clever App, une série qui contient la consommation du processeur serait cpu.usage_guest{app_id='app_87e33fea-9dde-4a99-b347-674de382ff7b'}.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Dans notre cluster c2, nous avons plus de 150 millions de séries uniques.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">L'orchestrateur de workflow</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour permettre un archivage de manière automatisée, nous étions à la recherche d’un outil répondant aux contraintes suivantes :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Planification : pour éviter de devoir déclencher l'action manuellement chaque mois ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Retry et failover : en cas d'échec d'une génération de HFile, il doit pouvoir réessayer, ou si un nœud du système crash, l’outil doit pouvoir reprendre la ou il s’était arrêté ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Alerting : lorsque plusieurs tentatives ne suffisent pas, nous devons être informé par un message Slack que le système n’a pas réussi de générer un HFile;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Capacité à exécuter de longues tâches : comme nous le savons, nos générations peuvent prendre plusieurs heures, il ne faut donc pas que l’outil empêche cela.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Après avoir essayé plusieurs outils d’orchestration, notre avis final s’est placé sur <a href="https://github.com/kestra-io/kestra">Kestra</a>. Un outil Open Source qui répond à toutes nos contraintes et à notre besoin. Déployé en tant que Clever App, nous avons pu mettre en place des workflows qui minimisent le temps de génération d’un HFile en utilisant nos paramètres optimisés. </p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":12052,"width":"603px","height":"auto","sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-full is-resized"><img src="https://cdn.clever-cloud.com/uploads/2024/04/image.png" alt="" class="wp-image-12052" style="width:603px;height:auto" /></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Fin février, nous avons terminé notre workflow complet de génération de HFile, comme le montre le schéma ci-dessus, il est plutôt simple, mais très efficace. Jusqu'à présent, il a été exécuté sur les données du mois de Novembre, sans supprimer les données. Il s’agissait d’un test qui nous a permis d’avoir suffisamment confiance en Kestra pour permettre de valider nos dernières interrogations. Nous avons ensuite exécuté la suppression manuellement, afin de s’assurer qu’il n’y ait pas d’effet de bord, ou d’oublis.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Aujourd’hui, la génération des HFiles et la suppression des données est complètement automatisée grâce à <a href="https://github.com/kestra-io/kestra">Kestra</a>. Même si notre utilisation de l’outil est assez simple, nous avons l’ambition de l’utiliser pour de nouveaux cas à l'avenir.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading"><strong>Chiffres sur les métriques du mois de Novembre 2023</strong></h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Début Mars, nous avons lancé notre premier archivage, avec succès. Cet archivage est basé sur le mois de Novembre puisque nous souhaitons garder 3 mois de mesures disponibles.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ce premier mois est particulier puisque c2 a été mis en production fin octobre, et toutes les applications clientes de Clever Cloud ont dû être redéployées pour utiliser le nouveau cluster. Cela signifie que les chiffres suivants comportent un nombre de séries et de points plus élevé que les mois qui suivront.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous avons archivé plus de 22 milliards de points provenant de plus de 33 millions de séries. Ces séries et points utilisaient environ 20 To d’espace disque. Une fois compressé, nous sommes rendus à 20 Go. Une chose importante à noter est que les données dans le cluster sont chiffrées, ce qui signifie que la taille d’un point est plusieurs fois celle du vrai point, puisque nous appliquons un algorithme de chiffrement.</p>
<!-- /wp:paragraph -->

<!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"}} -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://stagingv6.cleverapps.io/fr/contact/">Contactez-nous</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Déployer depuis GitLab ou GitHub</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/engineering-fr/2024/04/02/deployez-depuis-github-gitlab/</link>
		
		<dc:creator><![CDATA[Julia March]]></dc:creator>
		<pubDate>Tue, 02 Apr 2024 14:17:21 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[ci/cd]]></category>
		<category><![CDATA[giltab]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[heptapod]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=12025</guid>

					<description><![CDATA[<p><img width="6912" height="3456" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/github-gitlab.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Déployer des review apps sur Clever Cloud depuis GitHub ou GitLab" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/github-gitlab.png 6912w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/github-gitlab-300x150.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/github-gitlab-1024x512.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/github-gitlab-768x384.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/github-gitlab-1536x768.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/github-gitlab-2048x1024.png 2048w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/github-gitlab-1368x684.png 1368w" sizes="auto, (max-width: 6912px) 100vw, 6912px" /></p><!-- wp:paragraph -->
<p>Depuis quelques mois, les questions pour déployer depuis GitHub ou GitLab vers Clever Cloud se sont multipliées parmi nos clients. Les deux plateformes diffèrent sensiblement sur le sujet, mais sont celles massivement utilisées  pour stocker leur code et collaborer.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Chez Clever Cloud, nous avons à cœur de fournir, une diversité de produits et de fonctionnalités à même de faciliter les déploiements et la maintenance des applications. Nous souhaitons améliorer constamment l'expérience de l'usage de la plateforme. Dans cet article, nous vous détaillons comment nous avons abordé le sujet de la CI/CD pour simplifier celle-ci.<br></p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Deux plateformes, des principes communs</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Clever Cloud fournit une CLI pour déployer et gérer aussi bien les applications que les add-ons. Jusqu'à présent, nous avons suggéré à nos clients de l'utiliser pour construire leur CI/CD et déployer depuis GitHub ou GitLab. Toutefois, écrire une pipeline pour déployer depuis GitHub ou GitLab, même avec un outil facilitateur comme une CLI pour se connecter à Clever Cloud, est une tâche longue et fastidieuse. Surtout quand on est occupés à développer son application.<br><br>En gardant en tête l'un de nos principes fondateurs, à savoir, faciliter un maximum le travail des développeurs et des équipes IT, nous avons commencé à fournir des outils un peu plus poussés de CI/CD pour GitHub et GitLab.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Déployer depuis GitHub : aller plus loin avec des review apps</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Les clients utilisant GitHub connaissent déjà <a href="https://developers.clever-cloud.com/doc/ci-cd/#deploy-from-github" target="_blank" rel="noreferrer noopener">notre intégration permettant de déployer depuis cette plateforme</a>. En plus de cette intégration, n'importe qui pouvait utiliser la CLI pour personnaliser sa pipeline grâce aux <a href="https://docs.github.com/en/actions" target="_blank" rel="noreferrer noopener">GitHub Actions</a>.  Ces dernières permettent d'automatiser de nombreuses tâches, ce dont nous avons tiré profit sur <a href="https://github.com/CleverCloud/documentation" target="_blank" rel="noreferrer noopener">notre projet public de documentation</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>À partir de cette configuration, nous avons mis à disposition <a href="https://github.com/CleverCloud/clever-cloud-review-app" target="_blank" rel="noreferrer noopener">un template de workflow </a>permettant de déployer des review apps depuis GitHub vers Clever Cloud.  Ce script réalise les actions suivantes : </p>
<!-- /wp:paragraph -->

<!-- wp:list {"ordered":true} -->
<ol><!-- wp:list-item -->
<li>Créer et déployer une application sur Clever Cloud depuis la branche où la PR est ouverte, avec un nom de domaine de test ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Mettre à jour  l'application à chaque nouveau commit ; </li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Supprimer l'application à la fermeture de la PR. </li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Un commentaire poste le lien vers la review app à chaque nouveau déploiement, et annonce la suppression de l'app une fois ce job effectué.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Le script récupère les variables d'environnement et les secrets ajoutés à votre projet sur GitHub. Il est possible d'aller plus loin et d'y ajouter des commandes ; par exemple, pour connecter la review app à une base de données de test, vous pourriez ajouter la commande <code>clever&nbsp;service&nbsp;link-addon &lt;nom-de-l-addon&gt;</code>. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ce template est en développement constant pour simplifier progressivement votre flux de travail et le rendre plus efficace. À terme, cette Action devrait fonctionner uniquement avec des inputs plutôt que des lignes de commandes. En attendant, n'hésitez pas à <a href="https://github.com/CleverCloud/clever-cloud-review-app/issues/new" target="_blank" rel="noreferrer noopener">ouvrir une issue sur le projet</a> en fonction de vos besoins. </p>
<!-- /wp:paragraph -->

<!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"}} -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://github.com/CleverCloud/clever-cloud-review-app" target="_blank" rel="noreferrer noopener">Accéder au template sur GitHub</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Déployer depuis GitLab</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nos clients travaillant sur GitLab (en SaasS ou en instance autohébergée) ont également exprimé des besoins similaires pour automatiser leurs déploiements. GitLab diffère sensiblement de GitHub, avec une approche bien plus DIY de la CI/CD, et des configurations différentes. Sur GitLab, <a href="https://docs.gitlab.com/ee/ci/variables/predefined_variables.html#predefined-variables-for-merge-request-pipelines" target="_blank" rel="noreferrer noopener">aucune variable</a> ne permet la détection de l'état d'une Merge Request (ouverte ou fermée), contrairement à GitHub. Si nous souhaitons lancer un job automatiquement à sa fermeture, à la place,<a href="https://docs.gitlab.com/ee/ci/environments/#environment-states" target="_blank" rel="noreferrer noopener"> nous devrons utiliser l'état des environnements</a>, et non celui des MR.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Chez Clever Cloud, nous avions déjà différentes pipelines de déploiement en place depuis GitLab pour certains projets. Nous avons unifié et simplifié leur usage en créant des composants de pipelines dans le catalogue CI/CD de GitLab. Les composants remplacent <a href="https://docs.gitlab.com/ee/development/cicd/templates.html" target="_blank" rel="noreferrer noopener">l'ancien catalogue de templates chez GitLab</a>. Ils permettent de construire une pipeline modulaire à l'aide d'inputs. Plus besoin, donc, de personnaliser un fichier de script à la main.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Notre contribution au catalogue comporte actuellement quatre composants : </p>
<!-- /wp:paragraph -->

<!-- wp:list {"ordered":true} -->
<ol><!-- wp:list-item -->
<li>Déployer en production ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Créer une review app depuis une Merge Request ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Mettre à jour la review app ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Supprimer la review app.</li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Les valeurs des inputs ont été prédéfinies pour vous faire économiser du temps lors de l'utilisation. Ces composants peuvent être utilisés aussi bien sur gitlab.com que sur votre instance auto-hébergée. Il n'y a rien à modifier dans le projet, mais <a href="https://docs.gitlab.com/ee/ci/components/#use-a-gitlabcom-component-in-a-self-managed-instance" target="_blank" rel="noreferrer noopener">quelques configurations de votre instance à vérifier</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Dans les deux cas, nous vous conseillons de tester le déclenchement manuel des composants sur votre projet, dans un premier temps. Nous ajouterons d'autres composants en fonction des  besoins de nos clients, et sommes ouverts à vos propositions. Vous pouvez les  soumettre directement sur le projet qui leur est dédié.</p>
<!-- /wp:paragraph -->

<!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"}} -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://gitlab.com/explore/catalog/CleverCloud/clever-cloud-pipeline" target="_blank" rel="noreferrer noopener">Accéder au catalogue GitLab</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Le meilleur des deux mondes : Heptapod</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Si vous utilisez le fork de l'édition Community de GitLab hébergé par nos soins, vous bénéficierez des avantages d'une offre GitLab as a Service, mais aussi d'un hébergement sur des serveurs européens et managés par une entreprise française.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Le catalogue de pipeline CI/CD est déjà intégré à notre offre Heptapod, vous permettant d'utiliser les composants directement dans votre projet, sans configuration de l'instance à réaliser. </p>
<!-- /wp:paragraph -->

<!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"}} -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://developers.clever-cloud.com/doc/addons/heptapod/" target="_blank" rel="noreferrer noopener">Documentation Heptapod</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Une pipeline simplifiée</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Lors de vos déploiements, Clever Cloud intègre les phases de build, d'installation et de run. Vous n'avez qu'à pousser votre code, le processus est automatique. En incluant le déploiement sur Clever Cloud dans votre pipeline, vous obtiendrez ainsi les logs de votre application lors du déploiement et de ses différentes étapes directement dans la console du runner. Ainsi: </p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Vous pouvez vous passer du job de build dans votre pipeline, notre plateforme s'en charge déjà</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Vous pouvez surveiller votre pipeline et ses logs directement depuis GitHub, GitLab ou Heptapod, du début à la fin</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Le déploiement échoue ? Pas d'inquiétude, votre app restera en ligne avec le dernier commit poussé avant votre mis à jour. <a href="https://stagingv6.cleverapps.io/fr/blog/entreprise/2022/09/05/quest-ce-quil-a-de-clever-notre-cloud/">Vos utilisateurs ne le remarquerons même pas.</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Les deux projets étant en développement constant, nous prévoyons d'aller encore plus loin dans l'ajout de souplesse et d'agilité à vos processus de déploiements.  Nous restons ouverts à vos propositions !</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="6912" height="3456" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/github-gitlab.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Déployer des review apps sur Clever Cloud depuis GitHub ou GitLab" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/github-gitlab.png 6912w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/github-gitlab-300x150.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/github-gitlab-1024x512.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/github-gitlab-768x384.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/github-gitlab-1536x768.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/github-gitlab-2048x1024.png 2048w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/github-gitlab-1368x684.png 1368w" sizes="auto, (max-width: 6912px) 100vw, 6912px" /></p><!-- wp:paragraph -->
<p>Depuis quelques mois, les questions pour déployer depuis GitHub ou GitLab vers Clever Cloud se sont multipliées parmi nos clients. Les deux plateformes diffèrent sensiblement sur le sujet, mais sont celles massivement utilisées  pour stocker leur code et collaborer.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Chez Clever Cloud, nous avons à cœur de fournir, une diversité de produits et de fonctionnalités à même de faciliter les déploiements et la maintenance des applications. Nous souhaitons améliorer constamment l'expérience de l'usage de la plateforme. Dans cet article, nous vous détaillons comment nous avons abordé le sujet de la CI/CD pour simplifier celle-ci.<br></p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Deux plateformes, des principes communs</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Clever Cloud fournit une CLI pour déployer et gérer aussi bien les applications que les add-ons. Jusqu'à présent, nous avons suggéré à nos clients de l'utiliser pour construire leur CI/CD et déployer depuis GitHub ou GitLab. Toutefois, écrire une pipeline pour déployer depuis GitHub ou GitLab, même avec un outil facilitateur comme une CLI pour se connecter à Clever Cloud, est une tâche longue et fastidieuse. Surtout quand on est occupés à développer son application.<br><br>En gardant en tête l'un de nos principes fondateurs, à savoir, faciliter un maximum le travail des développeurs et des équipes IT, nous avons commencé à fournir des outils un peu plus poussés de CI/CD pour GitHub et GitLab.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Déployer depuis GitHub : aller plus loin avec des review apps</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Les clients utilisant GitHub connaissent déjà <a href="https://developers.clever-cloud.com/doc/ci-cd/#deploy-from-github" target="_blank" rel="noreferrer noopener">notre intégration permettant de déployer depuis cette plateforme</a>. En plus de cette intégration, n'importe qui pouvait utiliser la CLI pour personnaliser sa pipeline grâce aux <a href="https://docs.github.com/en/actions" target="_blank" rel="noreferrer noopener">GitHub Actions</a>.  Ces dernières permettent d'automatiser de nombreuses tâches, ce dont nous avons tiré profit sur <a href="https://github.com/CleverCloud/documentation" target="_blank" rel="noreferrer noopener">notre projet public de documentation</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>À partir de cette configuration, nous avons mis à disposition <a href="https://github.com/CleverCloud/clever-cloud-review-app" target="_blank" rel="noreferrer noopener">un template de workflow </a>permettant de déployer des review apps depuis GitHub vers Clever Cloud.  Ce script réalise les actions suivantes : </p>
<!-- /wp:paragraph -->

<!-- wp:list {"ordered":true} -->
<ol><!-- wp:list-item -->
<li>Créer et déployer une application sur Clever Cloud depuis la branche où la PR est ouverte, avec un nom de domaine de test ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Mettre à jour  l'application à chaque nouveau commit ; </li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Supprimer l'application à la fermeture de la PR. </li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Un commentaire poste le lien vers la review app à chaque nouveau déploiement, et annonce la suppression de l'app une fois ce job effectué.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Le script récupère les variables d'environnement et les secrets ajoutés à votre projet sur GitHub. Il est possible d'aller plus loin et d'y ajouter des commandes ; par exemple, pour connecter la review app à une base de données de test, vous pourriez ajouter la commande <code>clever&nbsp;service&nbsp;link-addon &lt;nom-de-l-addon&gt;</code>. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ce template est en développement constant pour simplifier progressivement votre flux de travail et le rendre plus efficace. À terme, cette Action devrait fonctionner uniquement avec des inputs plutôt que des lignes de commandes. En attendant, n'hésitez pas à <a href="https://github.com/CleverCloud/clever-cloud-review-app/issues/new" target="_blank" rel="noreferrer noopener">ouvrir une issue sur le projet</a> en fonction de vos besoins. </p>
<!-- /wp:paragraph -->

<!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"}} -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://github.com/CleverCloud/clever-cloud-review-app" target="_blank" rel="noreferrer noopener">Accéder au template sur GitHub</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Déployer depuis GitLab</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nos clients travaillant sur GitLab (en SaasS ou en instance autohébergée) ont également exprimé des besoins similaires pour automatiser leurs déploiements. GitLab diffère sensiblement de GitHub, avec une approche bien plus DIY de la CI/CD, et des configurations différentes. Sur GitLab, <a href="https://docs.gitlab.com/ee/ci/variables/predefined_variables.html#predefined-variables-for-merge-request-pipelines" target="_blank" rel="noreferrer noopener">aucune variable</a> ne permet la détection de l'état d'une Merge Request (ouverte ou fermée), contrairement à GitHub. Si nous souhaitons lancer un job automatiquement à sa fermeture, à la place,<a href="https://docs.gitlab.com/ee/ci/environments/#environment-states" target="_blank" rel="noreferrer noopener"> nous devrons utiliser l'état des environnements</a>, et non celui des MR.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Chez Clever Cloud, nous avions déjà différentes pipelines de déploiement en place depuis GitLab pour certains projets. Nous avons unifié et simplifié leur usage en créant des composants de pipelines dans le catalogue CI/CD de GitLab. Les composants remplacent <a href="https://docs.gitlab.com/ee/development/cicd/templates.html" target="_blank" rel="noreferrer noopener">l'ancien catalogue de templates chez GitLab</a>. Ils permettent de construire une pipeline modulaire à l'aide d'inputs. Plus besoin, donc, de personnaliser un fichier de script à la main.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Notre contribution au catalogue comporte actuellement quatre composants : </p>
<!-- /wp:paragraph -->

<!-- wp:list {"ordered":true} -->
<ol><!-- wp:list-item -->
<li>Déployer en production ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Créer une review app depuis une Merge Request ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Mettre à jour la review app ;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Supprimer la review app.</li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Les valeurs des inputs ont été prédéfinies pour vous faire économiser du temps lors de l'utilisation. Ces composants peuvent être utilisés aussi bien sur gitlab.com que sur votre instance auto-hébergée. Il n'y a rien à modifier dans le projet, mais <a href="https://docs.gitlab.com/ee/ci/components/#use-a-gitlabcom-component-in-a-self-managed-instance" target="_blank" rel="noreferrer noopener">quelques configurations de votre instance à vérifier</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Dans les deux cas, nous vous conseillons de tester le déclenchement manuel des composants sur votre projet, dans un premier temps. Nous ajouterons d'autres composants en fonction des  besoins de nos clients, et sommes ouverts à vos propositions. Vous pouvez les  soumettre directement sur le projet qui leur est dédié.</p>
<!-- /wp:paragraph -->

<!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"}} -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://gitlab.com/explore/catalog/CleverCloud/clever-cloud-pipeline" target="_blank" rel="noreferrer noopener">Accéder au catalogue GitLab</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Le meilleur des deux mondes : Heptapod</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Si vous utilisez le fork de l'édition Community de GitLab hébergé par nos soins, vous bénéficierez des avantages d'une offre GitLab as a Service, mais aussi d'un hébergement sur des serveurs européens et managés par une entreprise française.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Le catalogue de pipeline CI/CD est déjà intégré à notre offre Heptapod, vous permettant d'utiliser les composants directement dans votre projet, sans configuration de l'instance à réaliser. </p>
<!-- /wp:paragraph -->

<!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"}} -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://developers.clever-cloud.com/doc/addons/heptapod/" target="_blank" rel="noreferrer noopener">Documentation Heptapod</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Une pipeline simplifiée</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Lors de vos déploiements, Clever Cloud intègre les phases de build, d'installation et de run. Vous n'avez qu'à pousser votre code, le processus est automatique. En incluant le déploiement sur Clever Cloud dans votre pipeline, vous obtiendrez ainsi les logs de votre application lors du déploiement et de ses différentes étapes directement dans la console du runner. Ainsi: </p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Vous pouvez vous passer du job de build dans votre pipeline, notre plateforme s'en charge déjà</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Vous pouvez surveiller votre pipeline et ses logs directement depuis GitHub, GitLab ou Heptapod, du début à la fin</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Le déploiement échoue ? Pas d'inquiétude, votre app restera en ligne avec le dernier commit poussé avant votre mis à jour. <a href="https://stagingv6.cleverapps.io/fr/blog/entreprise/2022/09/05/quest-ce-quil-a-de-clever-notre-cloud/">Vos utilisateurs ne le remarquerons même pas.</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Les deux projets étant en développement constant, nous prévoyons d'aller encore plus loin dans l'ajout de souplesse et d'agilité à vos processus de déploiements.  Nous restons ouverts à vos propositions !</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Déployez llama, mistral, openchat ou votre propre modèle sur Clever Cloud</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/engineering-fr/2023/11/27/deployez-llama-mistral-openchat-ou-votre-propre-modele-sur-clever-cloud/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Mon, 27 Nov 2023 09:22:00 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[IA]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=11187</guid>

					<description><![CDATA[<p><img width="900" height="355" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/11/deploiementiasurcc.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Bannière de blog pour illustrer le déploiement d&#039;IA sur Clever Cloud" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/11/deploiementiasurcc.png 900w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/11/deploiementiasurcc-300x118.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/11/deploiementiasurcc-768x303.png 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></p><!-- wp:paragraph -->
<p><strong>Si l'IA fait parler d'elle ces derniers temps, c'est notamment au travers des larges modèles de langages (LLMs)  qui nécessitent une puissance de calcul conséquente pour leur entrainement ou leur exécution. Ainsi, il est courant de voir les développeurs y recourir à travers des API clés en main, comme nous l'avions fait <a href="https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2023/10/11/deployez-un-chatgpt-personnalise-base-sur-php/">dans un précédent article</a>. Mais cela change grâce à des modèles et outils plus ouverts et efficaces, que vous pouvez très facilement déployer sur Clever Cloud.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En effet, si notre plateforme a été pensée pour certains usages, nous avons toujours accordé une grande importance à sa flexibilité et à la liberté laissée à nos clients. Ils peuvent ainsi aisément l'exploiter pour attaquer de nouveaux marchés, avec très peu de travail d'adaptation.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Pour le vérifier, nous avons récemment tenté de déployer des modèles d'IA open source tels que ceux dérivés de LLaMA et Mistral. Ils ont pour particularité d'exister dans des versions allégées, ne nécessitant pas forcément de GPU pour fonctionner. Ainsi, il est possible de les héberger comme de simples applications Clever Cloud, tant qu'assez de mémoire leur est attribuée.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Let's ollama (avec une interface web) !</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour cela, nous avons choisi d'utiliser <a href="https://github.com/jmorganca/ollama" target="_blank" rel="noreferrer noopener">ollama</a>, un projet sous licence MIT qui permet de télécharger des modèles disponibles depuis <a href="https://ollama.ai/library">un registre</a> ou même <a href="https://github.com/jmorganca/ollama/blob/main/docs/modelfile.md" target="_blank" rel="noreferrer noopener">les vôtres</a>. Il prend la forme d'un serveur qui communique via une API, très simple à héberger sur nos infrastructures.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://api.clever-cloud.com/v2/session/signup">Créer un compte Clever Cloud</a>&nbsp;(et obtenir 20 euros de crédits)</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Pour commencer, vous devrez disposer d'un compte Clever Cloud. Vous pouvez créer l'application et suivre les étapes suivantes en utilisant notre interface web,<a href="https://console.clever-cloud.com"> la Console</a>, mais aussi à travers notre CLI open source : <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a>. C'est ce que nous ferons ci-dessous. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous partirons ainsi du principe que vous disposez d’une machine avec&nbsp;<a href="https://git-scm.com/book/fr/v2/D%C3%A9marrage-rapide-Installation-de-Git" target="_blank" rel="noreferrer noopener">git</a>&nbsp;et&nbsp;<a href="https://nodejs.org/en/learn/getting-started/how-to-install-nodejs" target="_blank" rel="noreferrer noopener">Node.js</a>&nbsp;dans une version récente. Si vous n’avez pas encore installé les Clever Tools sur votre système, tapez (avec les droits administrateur de votre système ou&nbsp;<code>sudo</code>&nbsp;si nécessaire) :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">npm i -g clever-tools
clever login</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois connecté, vous pourrez vérifier que tout s’est bien passé avec la commande suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever profile</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ensuite, nous créons une application Clever Cloud avec Node.js. Elle installera ollama pour télécharger et exécuter nos modèles, en lui ajoutant avec une interface web (<a href="https://github.com/ivanfioravanti/chatbot-ollama" target="_blank" rel="noreferrer noopener">chatbot-ollama</a>, également sous licence MIT) qui nous permettra d'interroger le serveur depuis n'importe quel navigateur, exécuté depuis un ordinateur ou même un simple smartphone.  </p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"wide","id":11239,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image alignwide size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/11/sans-titre-1-scaled.webp" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/11/sans-titre-1-scaled.webp" alt="Chatbot Ollama" class="wp-image-11239" title="Chatbot Ollama"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Cette solution a également l'intérêt de stocker les conversations localement, dans le navigateur. Elle ne nécessite donc pas de base de données, mais propose une fonction d'import/export. On peut également choisir entre différents modèles, régler certains de leurs paramètres, configurer des instructions système, différents prompts, etc.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">mkdir myollama && cd myollama
git init
curl -L https://github.com/ivanfioravanti/chatbot-ollama/archive/refs/heads/main.tar.gz | tar -xz --strip-components=1

clever create -t node myollama && clever scale --flavor L
clever env set CC_POST_BUILD_HOOK "npx next telemetry disable && npm run build"
clever env set CC_PRE_BUILD_HOOK "./ollama_setup.sh"
clever env set CC_PRE_RUN_HOOK "./ollama_start.sh"

echo "orca-mini" > models.list
echo "mistral" >> models.list
echo "codellama" >> models.list</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Le code ci-dessus créé l'application. Nous y ajoutons un fichier qui contiendra la liste des modèles à récupérer lors de son initialisation. Nous optons pour une instance L, la taille minimale pour charger de tels modèles en mémoire. On déclare ensuite plusieurs variables d'environnement pour lancer des scripts afin d'installer ollama, démarrer le serveur et désactiver la télémétrie du framework Next.js, utilisé pour construire l'interface web après l'installation des dépendances.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Ajoutons quelques scripts</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Notre application est presque prête. Il nous reste en effet à créer deux fichiers, exécutables :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">touch ollama_setup.sh && chmod +x ollama_setup.sh
touch ollama_start.sh && chmod +x ollama_start.sh</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p><code>ollama_setup.sh</code> télécharge le binaire d'ollama puis les modèles de notre liste. Ouvrez-le avec l'éditeur de votre choix et placez-y le contenu suivant :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">#!/bin/bash

# We define the folder (in $PATH), where the ollama binary will be placed
BIN_DIR=${HOME}/.local/bin
mkdir -p ${BIN_DIR} 

ollama_start() {
    echo "Downloading and launching ollama..."
    curl -Ls https://ollama.ai/download/ollama-linux-amd64 -o ${BIN_DIR}/ollama
    chmod +x ${BIN_DIR}/ollama
    ollama serve &> /dev/null &
    echo -e "Finished: \033[32m✔\033[0m\n"
}

get_models() {
    MODELS_FILE="models.list"
    MODELS_DEFAULT="orca-mini"

    # We check if the models file exists
    if [ ! -f ${MODELS_FILE} ]; then
        echo "File ${MODELS_FILE} not found, ${MODELS_DEFAULT} used by default."
        echo ${MODELS_DEFAULT} > ${MODELS_FILE}
    fi

    # Loop through each line and pull model
    while IFS= read -r line; do
        echo "Pulling ${line} model..."
        ollama pull "${line}" > /dev/null 2>&1
        echo -e "Finished: \033[32m✔\033[0m\n"

    done < ${MODELS_FILE}
}

# We start ollama, and wait for it to respond
ollama_start
if [ $? -ne 0 ]; then
    echo -e "\nError during ollama setup."
    exit 1
fi

count=0
MAX_TIME=10

while ! pgrep -x "ollama" > /dev/null; do
    if [ ${count} -lt ${MAX_TIME} ]; then
        sleep 1
        count=$((count+1))
    else
        echo "Application 'ollama' did not launch within 10 seconds."
        exit 1
    fi
done

get_models
if [ $? -ne 0 ]; then
    echo -e "\nError during models downloading."
    exit 1
fi
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ce code peut paraître un peu long, mais c'est notamment parce que nous l'avons rendu modulaire, en n'écrivant dans les logs que les étapes réussies ou les éventuelles erreurs.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><code>ollama_start.sh</code> détecte si le serveur ollama est déjà présent avant de démarrer l'interface web. Si ce n'est pas le cas, on le lance en tâche de fond (nous verrons plus bas pourquoi). </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ouvrez-le avec l'éditeur de votre choix et placez-y le contenu suivant :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">if ! pgrep -f "ollama" > /dev/null; then
    # If 'ollama' is not running, start it in the background
    ollama serve &
    echo "Application 'ollama' started."
else
    # If 'ollama' is already running
    echo "'ollama' application is already running."
fi
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois ces deux fichiers créés, on peut déployer notre application : </p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">git add . && git commit -m "Init application"
clever deploy
clever domain</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous verrez alors le domaine pour accéder à votre application (que vous pouvez personnaliser).</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Cache et (re)démarrage rapide</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Utiliser Clever Cloud, ce n'est pas simplement déployer facilement une telle application, disposer de logs et de monitoring, pouvoir changer instantanément son scaling horizontal et/ou vertical. C'est aussi pouvoir en faire une image prête à redéployer très rapidement.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En effet, toute application que nous hébergeons est stockée sous la forme d'une archive constituée juste avant l'installation des dépendances. Elle peut ainsi être arrêtée et de rédémarrée sous cette forme, ce qui nous permet de ne pas retélécharger les modèles à chaque fois. Pour cela, il suffit d'indiquer les dossiers à ajouter à l'archive :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env set CC_OVERRIDE_BUILDCACHE "/:../.ollama/:../.local/bin/"
clever restart --without-cache --follow</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>L'application redémarrera, mais prendra cette fois les l'interface web construite, ollama et les modèles dans son cache, les étapes <code>CC_PRE_BUILD_HOOK</code> et <code>CC_PRE_BUILD_HOOK</code> n'étant pas exécutées. C'est notamment pour cela que nous devons nous assurer que l'on démarre bien le serveur ollama avec <code>CC_PRE_RUN_HOOK</code>, mais que l'on vérifie que cela n'a pas déjà été fait lors d'un démarrage classique; où il est utilisé pour télécharger les modèles avant de les exécuter.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Dès que cette étape est terminée, vous pouvez arrêter l'application et la redémarrer lorsque vous voulez, cela sera désormais bien plus rapide. Et vous ne serez facturé que le temps de son usage, à la seconde. Si vous voulez modifier la liste des modèles à utiliser, faites le dans le fichier prévu à cet effet, un <em>git push</em> suffira à reconstituer le nouveau cache.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash"># Stop/Restart the application
clever stop
clever restart

# After a modification in models.list, git push to recreate the cache
git add models.list && git commit -m "New models" 
clever deploy</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous retrouverez le fichiers nécessaires à ce projet dans <a href="https://github.com/CleverCloud/ollama-chat-deploy" target="_blank" rel="noreferrer noopener">ce dépôt GitHub</a>, avec les variables d'environnement prêtes à importer (<code>clever env import &lt; .env</code>). </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Et si jamais vous voulez aller plus loin en déployant d'autres modèles et outils pour vos applications, qui nécessitent plus de puissance et/ou du GPU, <a href="https://stagingv6.cleverapps.io/fr/contact/">faites-le nous savoir</a> !</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="900" height="355" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/11/deploiementiasurcc.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Bannière de blog pour illustrer le déploiement d&#039;IA sur Clever Cloud" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/11/deploiementiasurcc.png 900w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/11/deploiementiasurcc-300x118.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/11/deploiementiasurcc-768x303.png 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></p><!-- wp:paragraph -->
<p><strong>Si l'IA fait parler d'elle ces derniers temps, c'est notamment au travers des larges modèles de langages (LLMs)  qui nécessitent une puissance de calcul conséquente pour leur entrainement ou leur exécution. Ainsi, il est courant de voir les développeurs y recourir à travers des API clés en main, comme nous l'avions fait <a href="https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2023/10/11/deployez-un-chatgpt-personnalise-base-sur-php/">dans un précédent article</a>. Mais cela change grâce à des modèles et outils plus ouverts et efficaces, que vous pouvez très facilement déployer sur Clever Cloud.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En effet, si notre plateforme a été pensée pour certains usages, nous avons toujours accordé une grande importance à sa flexibilité et à la liberté laissée à nos clients. Ils peuvent ainsi aisément l'exploiter pour attaquer de nouveaux marchés, avec très peu de travail d'adaptation.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Pour le vérifier, nous avons récemment tenté de déployer des modèles d'IA open source tels que ceux dérivés de LLaMA et Mistral. Ils ont pour particularité d'exister dans des versions allégées, ne nécessitant pas forcément de GPU pour fonctionner. Ainsi, il est possible de les héberger comme de simples applications Clever Cloud, tant qu'assez de mémoire leur est attribuée.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Let's ollama (avec une interface web) !</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Pour cela, nous avons choisi d'utiliser <a href="https://github.com/jmorganca/ollama" target="_blank" rel="noreferrer noopener">ollama</a>, un projet sous licence MIT qui permet de télécharger des modèles disponibles depuis <a href="https://ollama.ai/library">un registre</a> ou même <a href="https://github.com/jmorganca/ollama/blob/main/docs/modelfile.md" target="_blank" rel="noreferrer noopener">les vôtres</a>. Il prend la forme d'un serveur qui communique via une API, très simple à héberger sur nos infrastructures.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://api.clever-cloud.com/v2/session/signup">Créer un compte Clever Cloud</a>&nbsp;(et obtenir 20 euros de crédits)</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Pour commencer, vous devrez disposer d'un compte Clever Cloud. Vous pouvez créer l'application et suivre les étapes suivantes en utilisant notre interface web,<a href="https://console.clever-cloud.com"> la Console</a>, mais aussi à travers notre CLI open source : <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a>. C'est ce que nous ferons ci-dessous. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous partirons ainsi du principe que vous disposez d’une machine avec&nbsp;<a href="https://git-scm.com/book/fr/v2/D%C3%A9marrage-rapide-Installation-de-Git" target="_blank" rel="noreferrer noopener">git</a>&nbsp;et&nbsp;<a href="https://nodejs.org/en/learn/getting-started/how-to-install-nodejs" target="_blank" rel="noreferrer noopener">Node.js</a>&nbsp;dans une version récente. Si vous n’avez pas encore installé les Clever Tools sur votre système, tapez (avec les droits administrateur de votre système ou&nbsp;<code>sudo</code>&nbsp;si nécessaire) :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">npm i -g clever-tools
clever login</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois connecté, vous pourrez vérifier que tout s’est bien passé avec la commande suivante :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever profile</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ensuite, nous créons une application Clever Cloud avec Node.js. Elle installera ollama pour télécharger et exécuter nos modèles, en lui ajoutant avec une interface web (<a href="https://github.com/ivanfioravanti/chatbot-ollama" target="_blank" rel="noreferrer noopener">chatbot-ollama</a>, également sous licence MIT) qui nous permettra d'interroger le serveur depuis n'importe quel navigateur, exécuté depuis un ordinateur ou même un simple smartphone.  </p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"wide","id":11239,"sizeSlug":"full","linkDestination":"media"} -->
<figure class="wp-block-image alignwide size-full"><a href="https://cdn.clever-cloud.com/uploads/2023/11/sans-titre-1-scaled.webp" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2023/11/sans-titre-1-scaled.webp" alt="Chatbot Ollama" class="wp-image-11239" title="Chatbot Ollama"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Cette solution a également l'intérêt de stocker les conversations localement, dans le navigateur. Elle ne nécessite donc pas de base de données, mais propose une fonction d'import/export. On peut également choisir entre différents modèles, régler certains de leurs paramètres, configurer des instructions système, différents prompts, etc.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">mkdir myollama && cd myollama
git init
curl -L https://github.com/ivanfioravanti/chatbot-ollama/archive/refs/heads/main.tar.gz | tar -xz --strip-components=1

clever create -t node myollama && clever scale --flavor L
clever env set CC_POST_BUILD_HOOK "npx next telemetry disable && npm run build"
clever env set CC_PRE_BUILD_HOOK "./ollama_setup.sh"
clever env set CC_PRE_RUN_HOOK "./ollama_start.sh"

echo "orca-mini" > models.list
echo "mistral" >> models.list
echo "codellama" >> models.list</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Le code ci-dessus créé l'application. Nous y ajoutons un fichier qui contiendra la liste des modèles à récupérer lors de son initialisation. Nous optons pour une instance L, la taille minimale pour charger de tels modèles en mémoire. On déclare ensuite plusieurs variables d'environnement pour lancer des scripts afin d'installer ollama, démarrer le serveur et désactiver la télémétrie du framework Next.js, utilisé pour construire l'interface web après l'installation des dépendances.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Ajoutons quelques scripts</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Notre application est presque prête. Il nous reste en effet à créer deux fichiers, exécutables :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">touch ollama_setup.sh && chmod +x ollama_setup.sh
touch ollama_start.sh && chmod +x ollama_start.sh</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p><code>ollama_setup.sh</code> télécharge le binaire d'ollama puis les modèles de notre liste. Ouvrez-le avec l'éditeur de votre choix et placez-y le contenu suivant :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">#!/bin/bash

# We define the folder (in $PATH), where the ollama binary will be placed
BIN_DIR=${HOME}/.local/bin
mkdir -p ${BIN_DIR} 

ollama_start() {
    echo "Downloading and launching ollama..."
    curl -Ls https://ollama.ai/download/ollama-linux-amd64 -o ${BIN_DIR}/ollama
    chmod +x ${BIN_DIR}/ollama
    ollama serve &> /dev/null &
    echo -e "Finished: \033[32m✔\033[0m\n"
}

get_models() {
    MODELS_FILE="models.list"
    MODELS_DEFAULT="orca-mini"

    # We check if the models file exists
    if [ ! -f ${MODELS_FILE} ]; then
        echo "File ${MODELS_FILE} not found, ${MODELS_DEFAULT} used by default."
        echo ${MODELS_DEFAULT} > ${MODELS_FILE}
    fi

    # Loop through each line and pull model
    while IFS= read -r line; do
        echo "Pulling ${line} model..."
        ollama pull "${line}" > /dev/null 2>&1
        echo -e "Finished: \033[32m✔\033[0m\n"

    done < ${MODELS_FILE}
}

# We start ollama, and wait for it to respond
ollama_start
if [ $? -ne 0 ]; then
    echo -e "\nError during ollama setup."
    exit 1
fi

count=0
MAX_TIME=10

while ! pgrep -x "ollama" > /dev/null; do
    if [ ${count} -lt ${MAX_TIME} ]; then
        sleep 1
        count=$((count+1))
    else
        echo "Application 'ollama' did not launch within 10 seconds."
        exit 1
    fi
done

get_models
if [ $? -ne 0 ]; then
    echo -e "\nError during models downloading."
    exit 1
fi
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Ce code peut paraître un peu long, mais c'est notamment parce que nous l'avons rendu modulaire, en n'écrivant dans les logs que les étapes réussies ou les éventuelles erreurs.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><code>ollama_start.sh</code> détecte si le serveur ollama est déjà présent avant de démarrer l'interface web. Si ce n'est pas le cas, on le lance en tâche de fond (nous verrons plus bas pourquoi). </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ouvrez-le avec l'éditeur de votre choix et placez-y le contenu suivant :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">if ! pgrep -f "ollama" > /dev/null; then
    # If 'ollama' is not running, start it in the background
    ollama serve &
    echo "Application 'ollama' started."
else
    # If 'ollama' is already running
    echo "'ollama' application is already running."
fi
</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois ces deux fichiers créés, on peut déployer notre application : </p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">git add . && git commit -m "Init application"
clever deploy
clever domain</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous verrez alors le domaine pour accéder à votre application (que vous pouvez personnaliser).</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Cache et (re)démarrage rapide</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Utiliser Clever Cloud, ce n'est pas simplement déployer facilement une telle application, disposer de logs et de monitoring, pouvoir changer instantanément son scaling horizontal et/ou vertical. C'est aussi pouvoir en faire une image prête à redéployer très rapidement.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En effet, toute application que nous hébergeons est stockée sous la forme d'une archive constituée juste avant l'installation des dépendances. Elle peut ainsi être arrêtée et de rédémarrée sous cette forme, ce qui nous permet de ne pas retélécharger les modèles à chaque fois. Pour cela, il suffit d'indiquer les dossiers à ajouter à l'archive :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever env set CC_OVERRIDE_BUILDCACHE "/:../.ollama/:../.local/bin/"
clever restart --without-cache --follow</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>L'application redémarrera, mais prendra cette fois les l'interface web construite, ollama et les modèles dans son cache, les étapes <code>CC_PRE_BUILD_HOOK</code> et <code>CC_PRE_BUILD_HOOK</code> n'étant pas exécutées. C'est notamment pour cela que nous devons nous assurer que l'on démarre bien le serveur ollama avec <code>CC_PRE_RUN_HOOK</code>, mais que l'on vérifie que cela n'a pas déjà été fait lors d'un démarrage classique; où il est utilisé pour télécharger les modèles avant de les exécuter.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Dès que cette étape est terminée, vous pouvez arrêter l'application et la redémarrer lorsque vous voulez, cela sera désormais bien plus rapide. Et vous ne serez facturé que le temps de son usage, à la seconde. Si vous voulez modifier la liste des modèles à utiliser, faites le dans le fichier prévu à cet effet, un <em>git push</em> suffira à reconstituer le nouveau cache.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash"># Stop/Restart the application
clever stop
clever restart

# After a modification in models.list, git push to recreate the cache
git add models.list && git commit -m "New models" 
clever deploy</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous retrouverez le fichiers nécessaires à ce projet dans <a href="https://github.com/CleverCloud/ollama-chat-deploy" target="_blank" rel="noreferrer noopener">ce dépôt GitHub</a>, avec les variables d'environnement prêtes à importer (<code>clever env import &lt; .env</code>). </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Et si jamais vous voulez aller plus loin en déployant d'autres modèles et outils pour vos applications, qui nécessitent plus de puissance et/ou du GPU, <a href="https://stagingv6.cleverapps.io/fr/contact/">faites-le nous savoir</a> !</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Nos connecteurs Sōzu Open Source</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/engineering-fr/2023/09/25/nos-connecteurs-sozu-open-source/</link>
		
		<dc:creator><![CDATA[Emmanuel Bosquet]]></dc:creator>
		<pubDate>Mon, 25 Sep 2023 13:02:22 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[reverse proxy]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=10301</guid>

					<description><![CDATA[<p><img width="573" height="266" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/09/clever-cloud-devoile-ses-connecteurs-sozu-open-source.svg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="bannière Sozu" decoding="async" loading="lazy" /></p><!-- wp:media-text {"align":"wide","mediaPosition":"right","mediaId":8027,"mediaLink":"https://stagingv6.cleverapps.io/?attachment_id=8027","mediaType":"image","mediaWidth":15} -->
<div class="wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile" style="grid-template-columns:auto 15%"><div class="wp-block-media-text__content"><!-- wp:paragraph {"placeholder":"Content…"} -->
<p>Clever Cloud est aujourd'hui le principal développeur de <a href="https://www.sozu.io"><strong>Sōzu</strong></a>, un Reverse Proxy créé par nos soins, en <a href="https://stagingv6.cleverapps.io/blog/engineering/2016/11/02/falling-for-rust/">Rust</a>, pour répondre aux besoins de notre infrastructure en termes de performance et de rechargement à chaud. Sōzu est utilisé sur tout le périmètre Clever Cloud, associé à HAProxy, pour acheminer le trafic vers les applications de nos clients.</p>
<!-- /wp:paragraph --></div><figure class="wp-block-media-text__media"><img src="https://cdn.clever-cloud.com/uploads/2023/07/canvas-1-358x447.png" alt="" class="wp-image-8027 size-full"/></figure></div>
<!-- /wp:media-text -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading"><strong><strong>Ce que nous faisions </strong></strong>:</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Jusqu'à présent, notre Reverse Proxy Sōzu était géré dans Clever Cloud à l'aide d'un programme propriétaire exécuté sur la même machine et assurant deux grandes responsabilités&nbsp;:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Premièrement, écouter un topic RabbitMQ et rediriger les requêtes vers Sōzu (via sa socket UNIX).</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Deuxièmement, surveiller un dossier PKI (Public Key Infrastructure) pour rediriger les certificats TLS vers Sōzu (via sa socket UNIX).</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading"><strong>Virage open source</strong></h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Alors que nous travaillions sur un nouveau connecteur Prometheus pour Sōzu, nous nous sommes rendus compte que nous pouvions le rendre open source. <strong>C'est ainsi qu'est née l'idée de porter  l'ancien gestionnaire de Sōzu (décrit ci-dessus) de son état propriétaire vers de nouveaux dépôts Open Source.</strong><br>Notre objectif final est de développer un écosystème entièrement open-source autour de notre reverse proxy Sōzu.<br>Ce billet de blog décrit ces nouveaux composants open source et résume ce qu'ils font.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Notre écosystème Open Source autour de <strong>Sōzu</strong></h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3,"fontSize":"large"} -->
<h3 class="wp-block-heading has-large-font-size"><a href="https://github.com/CleverCloud/sozu-prometheus-connector">Connecteur Sōzu Prometheus</a></h3>
<!-- /wp:heading -->

<!-- wp:media-text {"align":"wide","mediaPosition":"right","mediaId":8023,"mediaLink":"https://stagingv6.cleverapps.io/?attachment_id=8023","mediaType":"image","mediaWidth":15} -->
<div class="wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile" style="grid-template-columns:auto 15%"><div class="wp-block-media-text__content"><!-- wp:paragraph {"placeholder":"Content…"} -->
<p><a href="https://prometheus.io/docs/introduction/overview/" target="_blank" rel="noreferrer noopener">Prometheus</a> est une suite logicielle de surveillance et d'alerte.<br>Ce connecteur simple fonctionne parallèlement à Sōzu. Il écoute les requêtes HTTP sur la route /metrics, demande à Sōzu ses métriques, les formate pour qu'elles soient compatibles avec Prometheus et les envoie dans la réponse HTTP.<br>Cela signifie que<strong> les métriques Prometheus sont facilement disponibles sur l'adresse IP d'une machine Sōzu.</strong></p>
<!-- /wp:paragraph --></div><figure class="wp-block-media-text__media"><img src="https://cdn.clever-cloud.com/uploads/2023/07/1200px-Prometheus_software_logo.svg_-1024x1015-1-451x447.png" alt="" class="wp-image-8023 size-full"/></figure></div>
<!-- /wp:media-text -->

<!-- wp:heading {"level":3,"fontSize":"large"} -->
<h3 class="wp-block-heading has-large-font-size"><a href="https://github.com/CleverCloud/sozu-pulsar-connector">Connecteur Sōzu Pulsar</a></h3>
<!-- /wp:heading -->

<!-- wp:media-text {"align":"wide","mediaPosition":"right","mediaId":8025,"mediaLink":"https://stagingv6.cleverapps.io/?attachment_id=8025","mediaType":"image","mediaWidth":15} -->
<div class="wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile" style="grid-template-columns:auto 15%"><div class="wp-block-media-text__content"><!-- wp:paragraph {"placeholder":"Content…"} -->
<p><a href="https://github.com/CleverCloud/sozu-pulsar-connector" target="_blank" rel="noreferrer noopener">Apache Pulsar</a> est une plateforme de messagerie hautement évolutive. Nous l'apprécions chez Clever Cloud en raison de son aspect distribué et de ses performances de pointe en matière de débit.<br>Le connecteur Sōzu Pulsar s'abonne à un topic Pulsar et transmet des messages à Sōzu. Sōzu utilise ces messages pour effectuer un chargement à chaud sur le proxy, cette fonction est une caractéristique clé de notre Reverse Proxy.<br>Pour tout utilisateur de l'écosystème Sōzu, cela signifie que ce connecteur permet de <strong>mettre à jour la redirection du trafic en temps réel.</strong></p>
<!-- /wp:paragraph --></div><figure class="wp-block-media-text__media"><img src="https://cdn.clever-cloud.com/uploads/2023/07/1_7F-rMchWXbujnBT7QUN4zA-1.jpeg" alt="" class="wp-image-8025 size-full"/></figure></div>
<!-- /wp:media-text -->

<!-- wp:heading {"level":3,"fontSize":"large"} -->
<h3 class="wp-block-heading has-large-font-size"><a href="https://github.com/CleverCloud/sozu-pki-connector">Connecteur Sōzu PKI</a></h3>
<!-- /wp:heading -->

<!-- wp:media-text {"align":"wide","mediaPosition":"right","mediaId":8026,"mediaLink":"https://stagingv6.cleverapps.io/?attachment_id=8026","mediaType":"image","mediaWidth":15} -->
<div class="wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile" style="grid-template-columns:auto 15%"><div class="wp-block-media-text__content"><!-- wp:paragraph -->
<p>PKI signifie <strong>P</strong>ublic <strong>K</strong>ey <strong>I</strong>nfrastructure (infrastructure à clé publique), un cadre de sécurité omniprésent sur l'internet, généralement utilisé pour sécuriser les connexions avec HTTPS (entre autres). Dans le cadre du PKI, Sōzu fonctionne comme une<strong> terminaison TLS</strong> : il déchiffre le trafic HTTPS en trafic HTTP.<br>Le connecteur PKI de Sōzu fonctionne parallèlement à ce dernier, surveille un répertoire donné du système de fichiers, lit les certificats TLS qui y ont été placés par l'homme ou la machine et les transmet à Sōzu.<br>En résumé, cela signifie que si l'on écrit un <strong>certificat TLS sur la machine, Sōzu l'aura.</strong></p>
<!-- /wp:paragraph --></div><figure class="wp-block-media-text__media"><img src="https://cdn.clever-cloud.com/uploads/2023/07/TLS_icon-e1586274007843.png" alt="" class="wp-image-8026 size-full"/></figure></div>
<!-- /wp:media-text -->

<!-- wp:paragraph {"fontSize":"large"} -->
<p class="has-large-font-size"><a href="https://github.com/CleverCloud/sozu-client">Client Sōzu</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>C'est une librairie utilisée par tous les connecteurs pré-cités. Elle poole les connections à la socket UNIX de Sōzu, et fonctionne de façon entièrement asynchrone. En somme, elle permet d'<strong>écrire de nouveaux connecteurs facilement.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Et la suite ?</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>La meilleure chose que nous puissions souhaiter serait que la communauté open-source se joigne à nous pour utiliser et améliorer Sōzu au fur et à mesure. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous espérons ainsi à terme construire une interface web pour gérer une instance de Sōzu dans le navigateur.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="573" height="266" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/09/clever-cloud-devoile-ses-connecteurs-sozu-open-source.svg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="bannière Sozu" decoding="async" loading="lazy" /></p><!-- wp:media-text {"align":"wide","mediaPosition":"right","mediaId":8027,"mediaLink":"https://stagingv6.cleverapps.io/?attachment_id=8027","mediaType":"image","mediaWidth":15} -->
<div class="wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile" style="grid-template-columns:auto 15%"><div class="wp-block-media-text__content"><!-- wp:paragraph {"placeholder":"Content…"} -->
<p>Clever Cloud est aujourd'hui le principal développeur de <a href="https://www.sozu.io"><strong>Sōzu</strong></a>, un Reverse Proxy créé par nos soins, en <a href="https://stagingv6.cleverapps.io/blog/engineering/2016/11/02/falling-for-rust/">Rust</a>, pour répondre aux besoins de notre infrastructure en termes de performance et de rechargement à chaud. Sōzu est utilisé sur tout le périmètre Clever Cloud, associé à HAProxy, pour acheminer le trafic vers les applications de nos clients.</p>
<!-- /wp:paragraph --></div><figure class="wp-block-media-text__media"><img src="https://cdn.clever-cloud.com/uploads/2023/07/canvas-1-358x447.png" alt="" class="wp-image-8027 size-full"/></figure></div>
<!-- /wp:media-text -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading"><strong><strong>Ce que nous faisions </strong></strong>:</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Jusqu'à présent, notre Reverse Proxy Sōzu était géré dans Clever Cloud à l'aide d'un programme propriétaire exécuté sur la même machine et assurant deux grandes responsabilités&nbsp;:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Premièrement, écouter un topic RabbitMQ et rediriger les requêtes vers Sōzu (via sa socket UNIX).</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Deuxièmement, surveiller un dossier PKI (Public Key Infrastructure) pour rediriger les certificats TLS vers Sōzu (via sa socket UNIX).</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading"><strong>Virage open source</strong></h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Alors que nous travaillions sur un nouveau connecteur Prometheus pour Sōzu, nous nous sommes rendus compte que nous pouvions le rendre open source. <strong>C'est ainsi qu'est née l'idée de porter  l'ancien gestionnaire de Sōzu (décrit ci-dessus) de son état propriétaire vers de nouveaux dépôts Open Source.</strong><br>Notre objectif final est de développer un écosystème entièrement open-source autour de notre reverse proxy Sōzu.<br>Ce billet de blog décrit ces nouveaux composants open source et résume ce qu'ils font.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Notre écosystème Open Source autour de <strong>Sōzu</strong></h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3,"fontSize":"large"} -->
<h3 class="wp-block-heading has-large-font-size"><a href="https://github.com/CleverCloud/sozu-prometheus-connector">Connecteur Sōzu Prometheus</a></h3>
<!-- /wp:heading -->

<!-- wp:media-text {"align":"wide","mediaPosition":"right","mediaId":8023,"mediaLink":"https://stagingv6.cleverapps.io/?attachment_id=8023","mediaType":"image","mediaWidth":15} -->
<div class="wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile" style="grid-template-columns:auto 15%"><div class="wp-block-media-text__content"><!-- wp:paragraph {"placeholder":"Content…"} -->
<p><a href="https://prometheus.io/docs/introduction/overview/" target="_blank" rel="noreferrer noopener">Prometheus</a> est une suite logicielle de surveillance et d'alerte.<br>Ce connecteur simple fonctionne parallèlement à Sōzu. Il écoute les requêtes HTTP sur la route /metrics, demande à Sōzu ses métriques, les formate pour qu'elles soient compatibles avec Prometheus et les envoie dans la réponse HTTP.<br>Cela signifie que<strong> les métriques Prometheus sont facilement disponibles sur l'adresse IP d'une machine Sōzu.</strong></p>
<!-- /wp:paragraph --></div><figure class="wp-block-media-text__media"><img src="https://cdn.clever-cloud.com/uploads/2023/07/1200px-Prometheus_software_logo.svg_-1024x1015-1-451x447.png" alt="" class="wp-image-8023 size-full"/></figure></div>
<!-- /wp:media-text -->

<!-- wp:heading {"level":3,"fontSize":"large"} -->
<h3 class="wp-block-heading has-large-font-size"><a href="https://github.com/CleverCloud/sozu-pulsar-connector">Connecteur Sōzu Pulsar</a></h3>
<!-- /wp:heading -->

<!-- wp:media-text {"align":"wide","mediaPosition":"right","mediaId":8025,"mediaLink":"https://stagingv6.cleverapps.io/?attachment_id=8025","mediaType":"image","mediaWidth":15} -->
<div class="wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile" style="grid-template-columns:auto 15%"><div class="wp-block-media-text__content"><!-- wp:paragraph {"placeholder":"Content…"} -->
<p><a href="https://github.com/CleverCloud/sozu-pulsar-connector" target="_blank" rel="noreferrer noopener">Apache Pulsar</a> est une plateforme de messagerie hautement évolutive. Nous l'apprécions chez Clever Cloud en raison de son aspect distribué et de ses performances de pointe en matière de débit.<br>Le connecteur Sōzu Pulsar s'abonne à un topic Pulsar et transmet des messages à Sōzu. Sōzu utilise ces messages pour effectuer un chargement à chaud sur le proxy, cette fonction est une caractéristique clé de notre Reverse Proxy.<br>Pour tout utilisateur de l'écosystème Sōzu, cela signifie que ce connecteur permet de <strong>mettre à jour la redirection du trafic en temps réel.</strong></p>
<!-- /wp:paragraph --></div><figure class="wp-block-media-text__media"><img src="https://cdn.clever-cloud.com/uploads/2023/07/1_7F-rMchWXbujnBT7QUN4zA-1.jpeg" alt="" class="wp-image-8025 size-full"/></figure></div>
<!-- /wp:media-text -->

<!-- wp:heading {"level":3,"fontSize":"large"} -->
<h3 class="wp-block-heading has-large-font-size"><a href="https://github.com/CleverCloud/sozu-pki-connector">Connecteur Sōzu PKI</a></h3>
<!-- /wp:heading -->

<!-- wp:media-text {"align":"wide","mediaPosition":"right","mediaId":8026,"mediaLink":"https://stagingv6.cleverapps.io/?attachment_id=8026","mediaType":"image","mediaWidth":15} -->
<div class="wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile" style="grid-template-columns:auto 15%"><div class="wp-block-media-text__content"><!-- wp:paragraph -->
<p>PKI signifie <strong>P</strong>ublic <strong>K</strong>ey <strong>I</strong>nfrastructure (infrastructure à clé publique), un cadre de sécurité omniprésent sur l'internet, généralement utilisé pour sécuriser les connexions avec HTTPS (entre autres). Dans le cadre du PKI, Sōzu fonctionne comme une<strong> terminaison TLS</strong> : il déchiffre le trafic HTTPS en trafic HTTP.<br>Le connecteur PKI de Sōzu fonctionne parallèlement à ce dernier, surveille un répertoire donné du système de fichiers, lit les certificats TLS qui y ont été placés par l'homme ou la machine et les transmet à Sōzu.<br>En résumé, cela signifie que si l'on écrit un <strong>certificat TLS sur la machine, Sōzu l'aura.</strong></p>
<!-- /wp:paragraph --></div><figure class="wp-block-media-text__media"><img src="https://cdn.clever-cloud.com/uploads/2023/07/TLS_icon-e1586274007843.png" alt="" class="wp-image-8026 size-full"/></figure></div>
<!-- /wp:media-text -->

<!-- wp:paragraph {"fontSize":"large"} -->
<p class="has-large-font-size"><a href="https://github.com/CleverCloud/sozu-client">Client Sōzu</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>C'est une librairie utilisée par tous les connecteurs pré-cités. Elle poole les connections à la socket UNIX de Sōzu, et fonctionne de façon entièrement asynchrone. En somme, elle permet d'<strong>écrire de nouveaux connecteurs facilement.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Et la suite ?</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>La meilleure chose que nous puissions souhaiter serait que la communauté open-source se joigne à nous pour utiliser et améliorer Sōzu au fur et à mesure. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Nous espérons ainsi à terme construire une interface web pour gérer une instance de Sōzu dans le navigateur.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Déployer une application Scala / Akka avec intégration PostgreSQL</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/engineering-fr/2022/06/09/deployer-une-application-scala-akka-avec-integration-postgresql/</link>
		
		<dc:creator><![CDATA[Geoffrey GUILBON]]></dc:creator>
		<pubDate>Thu, 09 Jun 2022 12:43:59 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[deployment]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=6842</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/akka.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="akka" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/akka.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/akka-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/akka-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/akka-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/akka-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:media-text {"align":"wide","mediaId":6741,"mediaLink":"https://stagingv6.cleverapps.io/?attachment_id=6741","mediaType":"image","mediaWidth":30} -->
<div class="wp-block-media-text alignwide is-stacked-on-mobile" style="grid-template-columns:30% auto"><figure class="wp-block-media-text__media"><img src="https://cdn.clever-cloud.com/uploads/2022/06/akkatoolkitlogo.png" alt="akka_toolkit_logo" class="wp-image-6741 size-full"/></figure><div class="wp-block-media-text__content"><!-- wp:paragraph -->
<p>Lorsque j'ai commencé à travailler chez Clever Cloud, j'ai passé du temps à m'amuser pour me familiariser avec la plateforme et ses outils. Ce billet de blog vous présentera comment j'ai réussi à :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>créer une simple application Scala/Akka HTTP template avec persistance PostgreSQL</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>lier l'application à un serveur PostgreSQL géré</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>la déployer</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>l'essayer !</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></div></div>
<!-- /wp:media-text -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Créer un modèle HTTP Scala/Akka 🔨</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Obtenez les sources</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><a href="https://github.com/CleverCloud/scala-akka-http-postgres-example">Clonez</a> le projet généré à partir du modèle de <a href="https://github.com/akka/akka-http-quickstart-scala.g8" target="_blank" rel="noreferrer noopener">démarrage rapide Akka Github</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ce service offre la possibilité de gérer un simple registre d'utilisateurs en mémoire exposant 4 routes :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Lister tous les utilisateurs</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Obtenir un utilisateur spécifique</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Créer un utilisateur</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Supprimer un utilisateur</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Une description complète des commandes cURL disponibles peut être trouvée <a href="https://developer.lightbend.com/guides/akka-http-quickstart-scala/#cURL-commands" target="_blank" rel="noreferrer noopener">ici</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Ajouter des fonctionnalités supplémentaires</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Quelques fonctionnalités ont été ajoutées à l'exemple original :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>stocker le registre dans une base de données PostgreSQL (au lieu d'être en mémoire)</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>lire les paramètres de la base de données à partir des <a href="https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2022/03/22/lediteur-de-variables-denvironnement-sameliore/">variables d'environnement</a></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>ajouter une basic auth codée en dur</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Tous les paramètres peuvent être spécifiés dans le <a href="https://github.com/CleverCloud/scala-akka-http-postgres-example/blob/master/src/main/resources/application.conf">fichier application.conf</a> :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>basic auth</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>paramètres de la base de données</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Les paramètres sont récupérés à partir des variables d'environnement, ou de la valeur par défaut spécifiée si aucune n'est trouvée.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">app {
  basic-auth {
    user = "foo"
    user = ${?BASIC_AUTH_USER}
    password = "bar"
    password = ${?BASIC_AUTH_PASSWORD}
  }
  routes {
    # If ask takes more time than this to complete the request is failed
    ask-timeout = 5s
  }

  db {
    host = "localhost"
    host = ${?POSTGRESQL_ADDON_HOST}
    port = "5432"
    port = ${?POSTGRESQL_ADDON_PORT}
    database = "postgres"
    database = ${?POSTGRESQL_ADDON_DB}
    user = "login"
    user = ${?POSTGRESQL_ADDON_USER}
    pass = "pass"
    pass = ${?POSTGRESQL_ADDON_PASSWORD}
  }
}</code></pre>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Exécuter l'application en utilisant Clever Cloud CLI 🚀</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Créez une application Clever Cloud</h3>
<!-- /wp:heading -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever create --type sbt myakka --region par --org testorg</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Cette commande crée une nouvelle application</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>de type sbt pour Scala</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>nommée myakka</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>dans la région de Paris</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>dans mon organisation de test testorg</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Activer une instance de build dédiée pour un build plus rapide (pro tip optionnel)</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Par défaut, une application nouvellement créée exécutera une instance XS qui est assez petite pour construire rapidement des applications Scala. Une façon de construire plus rapidement est d'utiliser une instance de build dédiée : Dans la console Clever Cloud, allez dans votre application -&gt; options, et cochez la case [] <code>Activer l'instance de build dédiée</code>. De cette façon, vous pouvez conserver votre instance XS pour exécuter l'application, mais vous pouvez choisir une instance XL pour le temps de build. Ou avec l'outil de ligne de commande :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever scale -a myakka --build-flavor XL</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Créez une base de données PostgreSQL</h3>
<!-- /wp:heading -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever addon -l myakka create postgresql-addon myakkadb</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Cette commande commande une instance d'addon PostgreSQL et la lie à <code>myakka</code>, en injectant les bonnes variables d'environnement dans l'instance de l'application pour contacter la base de données.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>La création et la migration de la base de données sont effectuées à l'aide de l'outil <a href="https://flywaydb.org/" target="_blank" rel="noreferrer noopener">flywaydb</a>. Ces scripts se trouvent dans le répertoire <a href="https://github.com/CleverCloud/scala-akka-http-postgres-example/tree/master/src/main/resources/db/migration">migration/db</a> des ressources de l'application.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>La migration sera automatiquement appelée une fois que vous aurez spécifié le hook de build approprié dans les variables d'environnement</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><code>CC_POST_BUILD_HOOK avec la valeur sbt flywayMigrate</code></p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever env -a myakka set <kbd>CC_POST_BUILD_HOOK</kbd> "sbt flywayMigrate"</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configurer les variables d'environnement de la basic auth</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le login et le mot de passe de la basic auth peuvent être spécifiés comme variables d'environnement en utilisant la commande <code>clever env</code>. Si aucune variable n'est trouvée, la basic auth prendra par défaut les valeurs du fichier <code>application.conf</code></p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever env -a myakka set BASIC_AUTH_USER &lt;YOUR_AUTH_USER&gt;
clever env -a myakka set BASIC_AUTH_PASSWORD &lt;YOUR_AUTH_PASSWORD&gt;</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Reliez votre repo local à votre instance d'application Clever Cloud.</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Récupérez l'identifiant de votre application avec</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever applications</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Liez ensuite le référentiel local à l'application (en créant un fichier <code>.clever.json</code>)</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever link app_&lt;UUID&gt;</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Déployer</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Vous êtes maintenant prêt à déployer et à exécuter votre code, il suffit d'exécuter</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever deploy</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous pouvez maintenant suivre le processus de déploiement jusqu'à ce qu'il se termine avec succès.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Votre application fonctionne maintenant !</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Essayez-la</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Il est temps de l'expérimenter en utilisant <code>curl</code> ou votre interface graphique préférée.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Ajouter un utilisateur</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Adaptez cette commande afin d'insérer un nouvel utilisateur dans le registre :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">curl --request POST \
  --url https://app-&lt;UUID&gt;.cleverapps.io/users \
  --header 'Content-type: application/json' \
  -u '&lt;YOUR_AUTH_USER&gt;:&lt;YOUR_AUTH_PASSWORD&gt;' \
  --data '{
  "name": "Serge",
  "age": 42,
  "countryOfResidence": "Greenland"
}'

{
	"description": "User Serge created."
}</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Récupérer tous les utilisateurs</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Vérifiez que l'utilisateur a été correctement créé, en obtenant la liste des utilisateurs :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">curl --request GET \
  --url https://app-&lt;UUID&gt;.cleverapps.io/users \
  -u '&lt;YOUR_AUTH_USER&gt;:&lt;YOUR_AUTH_PASSWORD&gt;'

{"users":[{"age":42,"countryOfResidence":"Greenland","name":"Serge"}]}</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ça marche, c'est un succès ! 🎉</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/akka.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="akka" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/akka.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/akka-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/akka-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/akka-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/akka-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:media-text {"align":"wide","mediaId":6741,"mediaLink":"https://stagingv6.cleverapps.io/?attachment_id=6741","mediaType":"image","mediaWidth":30} -->
<div class="wp-block-media-text alignwide is-stacked-on-mobile" style="grid-template-columns:30% auto"><figure class="wp-block-media-text__media"><img src="https://cdn.clever-cloud.com/uploads/2022/06/akkatoolkitlogo.png" alt="akka_toolkit_logo" class="wp-image-6741 size-full"/></figure><div class="wp-block-media-text__content"><!-- wp:paragraph -->
<p>Lorsque j'ai commencé à travailler chez Clever Cloud, j'ai passé du temps à m'amuser pour me familiariser avec la plateforme et ses outils. Ce billet de blog vous présentera comment j'ai réussi à :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>créer une simple application Scala/Akka HTTP template avec persistance PostgreSQL</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>lier l'application à un serveur PostgreSQL géré</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>la déployer</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>l'essayer !</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list --></div></div>
<!-- /wp:media-text -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Créer un modèle HTTP Scala/Akka 🔨</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Obtenez les sources</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><a href="https://github.com/CleverCloud/scala-akka-http-postgres-example">Clonez</a> le projet généré à partir du modèle de <a href="https://github.com/akka/akka-http-quickstart-scala.g8" target="_blank" rel="noreferrer noopener">démarrage rapide Akka Github</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ce service offre la possibilité de gérer un simple registre d'utilisateurs en mémoire exposant 4 routes :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Lister tous les utilisateurs</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Obtenir un utilisateur spécifique</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Créer un utilisateur</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Supprimer un utilisateur</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Une description complète des commandes cURL disponibles peut être trouvée <a href="https://developer.lightbend.com/guides/akka-http-quickstart-scala/#cURL-commands" target="_blank" rel="noreferrer noopener">ici</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Ajouter des fonctionnalités supplémentaires</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Quelques fonctionnalités ont été ajoutées à l'exemple original :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>stocker le registre dans une base de données PostgreSQL (au lieu d'être en mémoire)</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>lire les paramètres de la base de données à partir des <a href="https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2022/03/22/lediteur-de-variables-denvironnement-sameliore/">variables d'environnement</a></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>ajouter une basic auth codée en dur</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Tous les paramètres peuvent être spécifiés dans le <a href="https://github.com/CleverCloud/scala-akka-http-postgres-example/blob/master/src/main/resources/application.conf">fichier application.conf</a> :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>basic auth</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>paramètres de la base de données</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Les paramètres sont récupérés à partir des variables d'environnement, ou de la valeur par défaut spécifiée si aucune n'est trouvée.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">app {
  basic-auth {
    user = "foo"
    user = ${?BASIC_AUTH_USER}
    password = "bar"
    password = ${?BASIC_AUTH_PASSWORD}
  }
  routes {
    # If ask takes more time than this to complete the request is failed
    ask-timeout = 5s
  }

  db {
    host = "localhost"
    host = ${?POSTGRESQL_ADDON_HOST}
    port = "5432"
    port = ${?POSTGRESQL_ADDON_PORT}
    database = "postgres"
    database = ${?POSTGRESQL_ADDON_DB}
    user = "login"
    user = ${?POSTGRESQL_ADDON_USER}
    pass = "pass"
    pass = ${?POSTGRESQL_ADDON_PASSWORD}
  }
}</code></pre>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Exécuter l'application en utilisant Clever Cloud CLI 🚀</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Créez une application Clever Cloud</h3>
<!-- /wp:heading -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever create --type sbt myakka --region par --org testorg</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Cette commande crée une nouvelle application</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>de type sbt pour Scala</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>nommée myakka</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>dans la région de Paris</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>dans mon organisation de test testorg</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Activer une instance de build dédiée pour un build plus rapide (pro tip optionnel)</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Par défaut, une application nouvellement créée exécutera une instance XS qui est assez petite pour construire rapidement des applications Scala. Une façon de construire plus rapidement est d'utiliser une instance de build dédiée : Dans la console Clever Cloud, allez dans votre application -&gt; options, et cochez la case [] <code>Activer l'instance de build dédiée</code>. De cette façon, vous pouvez conserver votre instance XS pour exécuter l'application, mais vous pouvez choisir une instance XL pour le temps de build. Ou avec l'outil de ligne de commande :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever scale -a myakka --build-flavor XL</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Créez une base de données PostgreSQL</h3>
<!-- /wp:heading -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever addon -l myakka create postgresql-addon myakkadb</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Cette commande commande une instance d'addon PostgreSQL et la lie à <code>myakka</code>, en injectant les bonnes variables d'environnement dans l'instance de l'application pour contacter la base de données.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>La création et la migration de la base de données sont effectuées à l'aide de l'outil <a href="https://flywaydb.org/" target="_blank" rel="noreferrer noopener">flywaydb</a>. Ces scripts se trouvent dans le répertoire <a href="https://github.com/CleverCloud/scala-akka-http-postgres-example/tree/master/src/main/resources/db/migration">migration/db</a> des ressources de l'application.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>La migration sera automatiquement appelée une fois que vous aurez spécifié le hook de build approprié dans les variables d'environnement</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><code>CC_POST_BUILD_HOOK avec la valeur sbt flywayMigrate</code></p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever env -a myakka set <kbd>CC_POST_BUILD_HOOK</kbd> "sbt flywayMigrate"</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configurer les variables d'environnement de la basic auth</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le login et le mot de passe de la basic auth peuvent être spécifiés comme variables d'environnement en utilisant la commande <code>clever env</code>. Si aucune variable n'est trouvée, la basic auth prendra par défaut les valeurs du fichier <code>application.conf</code></p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever env -a myakka set BASIC_AUTH_USER &lt;YOUR_AUTH_USER&gt;
clever env -a myakka set BASIC_AUTH_PASSWORD &lt;YOUR_AUTH_PASSWORD&gt;</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Reliez votre repo local à votre instance d'application Clever Cloud.</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Récupérez l'identifiant de votre application avec</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever applications</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Liez ensuite le référentiel local à l'application (en créant un fichier <code>.clever.json</code>)</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever link app_&lt;UUID&gt;</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Déployer</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Vous êtes maintenant prêt à déployer et à exécuter votre code, il suffit d'exécuter</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever deploy</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous pouvez maintenant suivre le processus de déploiement jusqu'à ce qu'il se termine avec succès.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Votre application fonctionne maintenant !</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Essayez-la</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Il est temps de l'expérimenter en utilisant <code>curl</code> ou votre interface graphique préférée.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Ajouter un utilisateur</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Adaptez cette commande afin d'insérer un nouvel utilisateur dans le registre :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">curl --request POST \
  --url https://app-&lt;UUID&gt;.cleverapps.io/users \
  --header 'Content-type: application/json' \
  -u '&lt;YOUR_AUTH_USER&gt;:&lt;YOUR_AUTH_PASSWORD&gt;' \
  --data '{
  "name": "Serge",
  "age": 42,
  "countryOfResidence": "Greenland"
}'

{
	"description": "User Serge created."
}</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Récupérer tous les utilisateurs</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Vérifiez que l'utilisateur a été correctement créé, en obtenant la liste des utilisateurs :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">curl --request GET \
  --url https://app-&lt;UUID&gt;.cleverapps.io/users \
  -u '&lt;YOUR_AUTH_USER&gt;:&lt;YOUR_AUTH_PASSWORD&gt;'

{"users":[{"age":42,"countryOfResidence":"Greenland","name":"Serge"}]}</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ça marche, c'est un succès ! 🎉</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Comment et pourquoi installer Matomo pour remplacer Google Analytics</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/engineering-fr/2022/05/16/comment-installer-matomo/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Mon, 16 May 2022 08:34:02 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[fonctionnalité]]></category>
		<category><![CDATA[légal]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=6288</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/matomo.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="matomo" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/matomo.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/matomo-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/matomo-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/matomo-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/matomo-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph -->
<p>Bonne nouvelle ! La procédure pour installer Matomo (anciennement Piwik) sur une instance Clever Cloud est désormais beaucoup plus simple ! Nous avons automatisé l'ensemble pour que vous n'ayez plus qu'à ajouter un add-on depuis <a href="https://console.clever-cloud.com/" target="_blank" rel="noreferrer noopener">la Console Clever Cloud</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Matomo est pour rappel un outil de mesure d'audience reconnu pour sa qualité, qui apporte des statistiques fiables et détaillées sur les visiteurs et leur parcours. Il vous permet de remplacer des solutions telles que Google Analytics dont l'utilisation est devenue illicite en Europe, du fait d'un transfert vers les États-Unis, en l’absence d’un consentement spécifique avant toute collecte de données.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Il y a quelques années, nous vous expliquions <a href="https://stagingv6.cleverapps.io/blog/features/2016/11/09/deploy-piwik-with-clever-cloud/" target="_blank" rel="noreferrer noopener nofollow">comment installer Piwik</a> (devenu depuis Matomo) chez Clever Cloud, au sein de nos serveurs hébergés en France. La procédure nécessitait alors plusieurs étapes. Il suffit désormais d’ajouter un add-on via la Console. Vous profiterez alors de tous les avantages de notre plateforme en termes d’adaptation à la montée en charge, de facturation à la seconde, de maintien en conditions opérationnelles, de gestion simplifiée et de mise à jour.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Avant de vous expliquer comment faire, expliquons pourquoi.</p>
<!-- /wp:paragraph -->

<!-- wp:video {"id":6471} -->
<figure class="wp-block-video"><video controls src="https://cdn.clever-cloud.com/uploads/2022/05/matomo-2-fr-web-1.mp4"></video></figure>
<!-- /wp:video -->

<!-- wp:heading -->
<h2 class="wp-block-heading"><strong>Pourquoi imposer Google Analytics est devenu illégal en France</strong></h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Dans un <a href="https://www.cnil.fr/fr/utilisation-de-google-analytics-et-transferts-de-donnees-vers-les-etats-unis-la-cnil-met-en-demeure" target="_blank" rel="noreferrer noopener">communiqué du 10 février</a>, la CNIL a fait savoir à l’ensemble des éditeurs de sites et applications français qu’ils ne peuvent plus intégrer Google Analytics comme ils le faisaient, sous peine de sanctions. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Trois entreprises ont été mises en demeure de changer d’outil pour leur analyse d’audience, sauf à exclure des statistiques tous ceux qui refusent le dépôt d’un cookie Google Analytics. La commission chargée de veiller à la protection des données personnelles constate en effet que la solution de Google implique un transfert des données des visiteurs vers les États-Unis d’Amérique, ce qui n’est pas légal actuellement au regard du RGPD. En avril 2022, l'autorité autrichienne de protection des données est <a href="https://noyb.eu/sites/default/files/2022-04/Bescheid%20geschw%C3%A4rzt%20EN.pdf">arrivée à la même conclusion</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ces décisions sont une conséquence attendue de <a href="https://curia.europa.eu/juris/documents.jsf?num=C-311/18" target="_blank" rel="noreferrer noopener">l’arrêt “Schrems II”</a> de la Cour de justice de l’Union européenne (CJUE) du 16 juillet 2020. Elle a en effet invalidé le mécanisme juridique par lequel la Commission européenne prétendait que les USA assurent un niveau adéquat de protection des données personnelles reçues. D’un avis totalement contraire, la Cour a dit très clairement que la législation américaine en matière de renseignement est disproportionnée et que les voies de recours sont insuffisantes.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Elle a donc supprimé le cadre juridique global par lequel les transferts vers les USA étaient possibles, et laissé aux autorités nationales le soin de vérifier si d’autres mécanismes (contractuels) étaient exploitables. En France et en Autriche, les APD concluent qu’il est impossible de transférer des données vers les USA en l’état actuel de la législation américaine et des encadrements prévus. D’où les discussions en cours, à l’issue encore incertaine, sur un aménagement permettant un nouvel accord UE-USA de transferts.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>D’ici là, les entreprises qui ne remplaceront pas Google Analytics ou des outils opérant des transferts avec les USA sans consentement spécifique et préalable prennent le risque d’être sanctionnés par la CNIL ou une autre APD en cas de contrôle. En rendant public des mises en demeure sans donner le nom des entreprises sanctionnées, la Commission veut faire comprendre que toutes doivent se conformer, par exemple en utilisant une alternative, qui permet aux données de rester dans l’Union européenne.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Remplacer Google Analytics par Matomo</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>C’est ce que vous permet <a href="https://github.com/matomo-org/matomo" target="_blank" rel="noreferrer noopener">Matomo</a>, un outil d’analyse d’audience très complet et open source, recommandé depuis plusieurs années <a href="https://www.cnil.fr/fr/cookies-solutions-pour-les-outils-de-mesure-daudience" target="_blank" rel="noreferrer noopener">par la CNIL</a>. Il peut même faire l’objet d’une exemption de demande de consentement lorsqu'il est <a href="https://www.cnil.fr/sites/default/files/atoms/files/matomo_analytics_-_exemption_-_guide_de_configuration.pdf" target="_blank" rel="noreferrer noopener">configuré de la bonne manière</a>.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>S’il est déjà possible de le mettre en place sur Clever Cloud, nous avons facilité la procédure avec la création d’un add-on dédié. En installant une instance Matomo via notre plateforme, vous gardez la main sur les données d’analyse de l’audience de vos visiteurs. Elles ne sont plus envoyées vers les Etats-Unis.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Clever Cloud héberge ces données pour vous, sur des serveurs situés en France.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Comment installer Matomo ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Depuis la Console Clever Cloud et dans l’organisation souhaitée, sélectionnez "Créer…" puis "... un add-on" et "Matomo". Validez et c’est terminé ! Nous avons fait le choix de rendre les dépendances de cet add-on transparentes et indépendantes.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Comment fonctionne Matomo sur Clever Cloud</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>L’add-on Matomo sur Clever Cloud déploie ainsi automatiquement :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Une application PHP configurée avec un Matomo fonctionnel (instance Nano)</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Une base de données MySQL (instance XXS BigStorage)</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Un cache Redis (instance S)</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Vous pourrez alors ajuster les paramètres à votre convenance pour adapter le niveau de performance selon votre besoin, ou même activer l'auto-scaling (horizontal et/ou vertical).&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Comme pour les autres add-ons que nous proposons, Matomo est spécialement configuré pour exploiter l’identification Single Sign On (SSO) de la console Clever Cloud, vous pourrez ensuite créer vos utilisateurs directement depuis Matomo. La documentation est disponible <a href="https://stagingv6.cleverapps.io/doc/deploy/addon/matomo/" target="_blank" rel="noreferrer noopener">ici</a>.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/matomo.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="matomo" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/matomo.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/matomo-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/matomo-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/matomo-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/05/matomo-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph -->
<p>Bonne nouvelle ! La procédure pour installer Matomo (anciennement Piwik) sur une instance Clever Cloud est désormais beaucoup plus simple ! Nous avons automatisé l'ensemble pour que vous n'ayez plus qu'à ajouter un add-on depuis <a href="https://console.clever-cloud.com/" target="_blank" rel="noreferrer noopener">la Console Clever Cloud</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Matomo est pour rappel un outil de mesure d'audience reconnu pour sa qualité, qui apporte des statistiques fiables et détaillées sur les visiteurs et leur parcours. Il vous permet de remplacer des solutions telles que Google Analytics dont l'utilisation est devenue illicite en Europe, du fait d'un transfert vers les États-Unis, en l’absence d’un consentement spécifique avant toute collecte de données.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Il y a quelques années, nous vous expliquions <a href="https://stagingv6.cleverapps.io/blog/features/2016/11/09/deploy-piwik-with-clever-cloud/" target="_blank" rel="noreferrer noopener nofollow">comment installer Piwik</a> (devenu depuis Matomo) chez Clever Cloud, au sein de nos serveurs hébergés en France. La procédure nécessitait alors plusieurs étapes. Il suffit désormais d’ajouter un add-on via la Console. Vous profiterez alors de tous les avantages de notre plateforme en termes d’adaptation à la montée en charge, de facturation à la seconde, de maintien en conditions opérationnelles, de gestion simplifiée et de mise à jour.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Avant de vous expliquer comment faire, expliquons pourquoi.</p>
<!-- /wp:paragraph -->

<!-- wp:video {"id":6471} -->
<figure class="wp-block-video"><video controls src="https://cdn.clever-cloud.com/uploads/2022/05/matomo-2-fr-web-1.mp4"></video></figure>
<!-- /wp:video -->

<!-- wp:heading -->
<h2 class="wp-block-heading"><strong>Pourquoi imposer Google Analytics est devenu illégal en France</strong></h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Dans un <a href="https://www.cnil.fr/fr/utilisation-de-google-analytics-et-transferts-de-donnees-vers-les-etats-unis-la-cnil-met-en-demeure" target="_blank" rel="noreferrer noopener">communiqué du 10 février</a>, la CNIL a fait savoir à l’ensemble des éditeurs de sites et applications français qu’ils ne peuvent plus intégrer Google Analytics comme ils le faisaient, sous peine de sanctions. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Trois entreprises ont été mises en demeure de changer d’outil pour leur analyse d’audience, sauf à exclure des statistiques tous ceux qui refusent le dépôt d’un cookie Google Analytics. La commission chargée de veiller à la protection des données personnelles constate en effet que la solution de Google implique un transfert des données des visiteurs vers les États-Unis d’Amérique, ce qui n’est pas légal actuellement au regard du RGPD. En avril 2022, l'autorité autrichienne de protection des données est <a href="https://noyb.eu/sites/default/files/2022-04/Bescheid%20geschw%C3%A4rzt%20EN.pdf">arrivée à la même conclusion</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ces décisions sont une conséquence attendue de <a href="https://curia.europa.eu/juris/documents.jsf?num=C-311/18" target="_blank" rel="noreferrer noopener">l’arrêt “Schrems II”</a> de la Cour de justice de l’Union européenne (CJUE) du 16 juillet 2020. Elle a en effet invalidé le mécanisme juridique par lequel la Commission européenne prétendait que les USA assurent un niveau adéquat de protection des données personnelles reçues. D’un avis totalement contraire, la Cour a dit très clairement que la législation américaine en matière de renseignement est disproportionnée et que les voies de recours sont insuffisantes.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Elle a donc supprimé le cadre juridique global par lequel les transferts vers les USA étaient possibles, et laissé aux autorités nationales le soin de vérifier si d’autres mécanismes (contractuels) étaient exploitables. En France et en Autriche, les APD concluent qu’il est impossible de transférer des données vers les USA en l’état actuel de la législation américaine et des encadrements prévus. D’où les discussions en cours, à l’issue encore incertaine, sur un aménagement permettant un nouvel accord UE-USA de transferts.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>D’ici là, les entreprises qui ne remplaceront pas Google Analytics ou des outils opérant des transferts avec les USA sans consentement spécifique et préalable prennent le risque d’être sanctionnés par la CNIL ou une autre APD en cas de contrôle. En rendant public des mises en demeure sans donner le nom des entreprises sanctionnées, la Commission veut faire comprendre que toutes doivent se conformer, par exemple en utilisant une alternative, qui permet aux données de rester dans l’Union européenne.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Remplacer Google Analytics par Matomo</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>C’est ce que vous permet <a href="https://github.com/matomo-org/matomo" target="_blank" rel="noreferrer noopener">Matomo</a>, un outil d’analyse d’audience très complet et open source, recommandé depuis plusieurs années <a href="https://www.cnil.fr/fr/cookies-solutions-pour-les-outils-de-mesure-daudience" target="_blank" rel="noreferrer noopener">par la CNIL</a>. Il peut même faire l’objet d’une exemption de demande de consentement lorsqu'il est <a href="https://www.cnil.fr/sites/default/files/atoms/files/matomo_analytics_-_exemption_-_guide_de_configuration.pdf" target="_blank" rel="noreferrer noopener">configuré de la bonne manière</a>.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>S’il est déjà possible de le mettre en place sur Clever Cloud, nous avons facilité la procédure avec la création d’un add-on dédié. En installant une instance Matomo via notre plateforme, vous gardez la main sur les données d’analyse de l’audience de vos visiteurs. Elles ne sont plus envoyées vers les Etats-Unis.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Clever Cloud héberge ces données pour vous, sur des serveurs situés en France.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Comment installer Matomo ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Depuis la Console Clever Cloud et dans l’organisation souhaitée, sélectionnez "Créer…" puis "... un add-on" et "Matomo". Validez et c’est terminé ! Nous avons fait le choix de rendre les dépendances de cet add-on transparentes et indépendantes.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Comment fonctionne Matomo sur Clever Cloud</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>L’add-on Matomo sur Clever Cloud déploie ainsi automatiquement :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Une application PHP configurée avec un Matomo fonctionnel (instance Nano)</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Une base de données MySQL (instance XXS BigStorage)</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Un cache Redis (instance S)</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Vous pourrez alors ajuster les paramètres à votre convenance pour adapter le niveau de performance selon votre besoin, ou même activer l'auto-scaling (horizontal et/ou vertical).&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Comme pour les autres add-ons que nous proposons, Matomo est spécialement configuré pour exploiter l’identification Single Sign On (SSO) de la console Clever Cloud, vous pourrez ensuite créer vos utilisateurs directement depuis Matomo. La documentation est disponible <a href="https://stagingv6.cleverapps.io/doc/deploy/addon/matomo/" target="_blank" rel="noreferrer noopener">ici</a>.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		<enclosure url="https://cdn.clever-cloud.com/uploads/2022/05/matomo-2-fr-web-1.mp4" length="14633944" type="video/mp4" />

			</item>
		<item>
		<title>Annonce du Clever Cloud Rust SDK</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/engineering-fr/2022/04/28/annonce-du-clever-cloud-rust-sdk/</link>
		
		<dc:creator><![CDATA[Florentin Dubois]]></dc:creator>
		<pubDate>Thu, 28 Apr 2022 08:41:43 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=6199</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-sdk-rust.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="sdk Rust" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-sdk-rust.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-sdk-rust-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-sdk-rust-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-sdk-rust-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-sdk-rust-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph {"dropCap":true} -->
<p class="has-drop-cap">Bonjour 🖖, amis humains et robots ! Notre équipe d'ingénieurs est fière d'annoncer un tout nouveau kit de développement logiciel (sdk) Rust, également connu sous le nom de "<a href="https://crates.io/crates/clevercloud-sdk" target="_blank" rel="noreferrer noopener">clevercloud-sdk</a>" sur <a href="https://crates.io/crates/clevercloud-sdk" target="_blank" rel="noreferrer noopener">crates.io</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Certains d'entre vous ont peut-être remarqué qu'il y a de nouveaux dépots sur notre organisation GitHub. Ces dépots sont nommés "<a href="https://github.com/CleverCloud/clevercloud-sdk-rust" target="_blank" rel="noreferrer noopener">clevercloud-sdk-rust</a>" et "<a href="https://github.com/CleverCloud/oauth10a-rust" target="_blank" rel="noreferrer noopener">oauth10a-rust</a>". Leur objectif est de fournir un moyen pratique d'interagir avec l'API de Clever Cloud avec des fonctionnalités intéressantes que nous allons vous faire découvrir dans ce blogpost!</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Conçu pour être asynchrone</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le kit de développement logiciel et le client oauth 1.0a sont principalement construits sur la base de deux crates bien connus de la communauté. Il s'agit de <a href="https://github.com/hyperium/hyper">hyper</a>, et du runtime asynchrone qui le propulse, nommé <a href="https://tokio.rs/" target="_blank" rel="noreferrer noopener">tokio</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>L'idée principale derrière l'utilisation de la crate hyper et par extension du runtime asynchrone tokio est de tirer parti de l'écosystème actuel qui gravite autour de ces crates et des efforts pour intégrer une nouvelle API du kernel appelée <a href="https://kernel.dk/io_uring.pdf" target="_blank" rel="noreferrer noopener">io_uring</a>. Une fois que cette nouvelle API kernel sera intégrée dans le runtime tokio, cela conduira à une amélioration significative de la performance, selon le <a href="https://tokio.rs/blog/2021-07-tokio-uring" target="_blank" rel="noreferrer noopener">billet de blog de l'annonce de tokio</a>. Nous attendons avec impatience cette amélioration qui nous permettra d'itérer plus rapidement ! 🚀</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">L'observabilité au cœur de l'outil</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Ces crates sont développées avec l'idée d'être entièrement observables. Cela a été réalisé par d'autres crates bien connus comme <a href="https://crates.io/crates/log" target="_blank" rel="noreferrer noopener">log</a> et <a href="https://crates.io/crates/tracing" target="_blank" rel="noreferrer noopener">tracing</a>, ou en utilisant des initiatives communautaires comme le crate <a href="https://crates.io/crates/prometheus" target="_blank" rel="noreferrer noopener">prometheus</a>. Les intégrations de ces crates font partie du <a href="https://doc.rust-lang.org/cargo/reference/features.html">système de flags de fonctionnalités de compilateur</a> fourni par le <a href="https://doc.rust-lang.org/book/ch01-03-hello-cargo.html" target="_blank" rel="noreferrer noopener">dépot cargo</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Façade de logs standard</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Tout d'abord, vous devez savoir que la façade de logs standard est activée par défaut. Elle fournira des informations utiles sur les comportements internes des crates ci-dessus, en utilisant le logger standard s'il est défini. Elle vous aidera à comprendre comment les appels à l'API de Clever Cloud sont réalisés avec quelques informations de débogage, si vous en avez besoin.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-toml">clevercloud-sdk = { version = "^0.10.0", default-features = false }</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Si vous voulez le désactiver, vous devez désactiver les ensembles par défaut de fonctionnalités activées. Cela peut être réalisé en utilisant la syntaxe suivante pour le <code>crate clevercloud-sdk</code> dans votre fichier <code>Cargo.toml</code>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Orienté métriques</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous pensons que les métriques sont importantes. Elles aident à comprendre les systèmes en mettant en corrélation des choses qui ne semblent pas être liées au départ.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>C'est pourquoi nous avons lancé <a href="https://stagingv6.cleverapps.io/blog/features/2018/01/16/realtime-metrics/" target="_blank" rel="noreferrer noopener">Clever Cloud Metrics</a> assez rapidement, il y a quelques années. Nous l'avons récemment enrichi de nouvelles fonctionnalités en offrant plus de moyens d'interroger Clever Cloud Metrics, grâce à <a href="https://github.com/ovh/erlenmeyer" target="_blank" rel="noreferrer noopener">Erlenmeyer</a> qui est un proxy de langage d'interrogation de séries temporelles. Vous trouverez plus de détails sur la façon dont vous pouvez l'utiliser dans <a href="https://stagingv6.cleverapps.io/blog/engineering/2021/10/12/enabling-promql-queries-with-erlenmeyer/" target="_blank" rel="noreferrer noopener">cet article de blog</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Enfin, nous avons annoncé le produit <a href="https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2021/11/23/annonce-dune-base-de-donnees-time-series-sur-clever-cloud-avec-tardis/">Tardis</a> qui vous permet de nous envoyer vos métriques et nous nous occupons du reste comme nous le faisons toujours et, plus récemment, nous avons intégré des tableaux de bord Grafana pré-construits pour vous aider à visualiser l'état de vos applications et add-ons, vous pouvez <a href="https://stagingv6.cleverapps.io/fr/blog/non-classifiee/2021/10/28/grafana-pour-des-metriques-d-applications/" target="_blank" rel="noreferrer noopener">en savoir plus ici</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Revenons à nos crates. Vous pouvez activer la collecte de métriques à l'aide du crate prometheus, en activant les flags de métriques au niveau du crate dans votre fichier <code>Cargo.toml</code>. Cela peut être réalisé en utilisant la syntaxe suivante.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
clevercloud-sdk = { version = "^0.10.0", features = ["metrics"] }
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois cette fonctionnalité activée, il n'y a plus grand-chose à faire. Vous devrez exposer les métriques via un serveur HTTP ou les envoyer en utilisant la passerelle push de prometheus. Cette partie est décrite dans la <a href="https://docs.rs/prometheus" target="_blank" rel="noreferrer noopener">documentation du crate prometheus</a> ou dans ces <a href="https://github.com/tikv/rust-prometheus/tree/master/examples" target="_blank" rel="noreferrer noopener">exemples</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Capacités de traces</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le dernier pilier de l'observabilité, mais non le moindre, sont les traces. Selon l'initiative et la documentation d'OpenTelemetry, les traces sont définies comme suit :</p>
<!-- /wp:paragraph -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p>Les traces suivent la progression d'une demande unique, appelée <strong>trace</strong>, telle qu'elle est traitée par les services qui composent une application. La demande peut être initiée par un utilisateur ou une application. Les traces distribués sont une forme de trace qui traverse les frontières du processus, du réseau et de la sécurité. Chaque unité de travail dans une trace est appelée un <strong>span</strong> ; une trace est un arbre de spans. Les spans sont des objets qui représentent le travail effectué par les services ou les composants individuels impliqués dans une requête au fur et à mesure qu'elle circule dans un système. Un span contient un contexte de span, qui est un ensemble d'identifiants uniques au monde représentant la demande unique dont chaque span fait partie. Un span fournit des mesures de Demande, Erreur et Durée (RED) qui peuvent être utilisées pour déboguer les problèmes de disponibilité et de performance…</p>
<!-- /wp:paragraph --><cite>Documentation sur OpenTelemetry</cite></blockquote>
<!-- /wp:quote -->

<!-- wp:paragraph -->
<p>Si vous souhaitez vous intéresser de plus près aux traces, même si elles ne sont pas en Rust, vous pouvez consulter l'organisation <a href="https://github.com/open-telemetry/" target="_blank" rel="noreferrer noopener">OpenTelemetry GitHub</a>. Il y a beaucoup de bibliothèques, de SDKs et de documentation pour vous aider à construire votre solution de traces ou à l'intégrer à une solution déjà existante. En outre, si vous utilisez le langage rust et peut-être le runtime tokio, vous pouvez consulter les articles de blog qui expliquent <a href="https://tokio.rs/blog/2019-08-tracing" target="_blank" rel="noreferrer noopener">comment les traces fonctionnent </a>dans le runtime asynchrone ci-dessus et comment les visualiser à l'aide de la <a href="https://tokio.rs/blog/2021-09-console-dev-diary-1" target="_blank" rel="noreferrer noopener">console</a> ou en utilisant le connecteur <a href="https://github.com/tokio-rs/tracing/tree/master/tracing-opentelemetry" target="_blank" rel="noreferrer noopener">OpenTelemetry</a> qui permet d'envoyer des traces à plus de puits, la liste est disponible sur le dépot rust GitHub d'OpenTelemetry.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Alors comment activer concrètement la fonctionnalité de traces à l'aide de clevercloud-sdk ? Comme mentionné ci-dessus, toutes les fonctionnalités sont pilotées par un flag de fonctionnalité, donc pour obtenir des capacités de traces, vous devez activer le flag de trace.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
clevercloud-sdk = { version = "^0.10.0", features = ["trace"] }
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois que l'indicateur de fonctionnalité a été activé, vous devrez collecter et envoyer des traces en utilisant le connecteur et les sinks ci-dessus.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">À quoi ça ressemble ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Prenons un exemple concret pour illustrer ce à quoi ressemble le clevercloud-sdk. Mais avant de passer en revue l'utilisation de clevercloud-sdk, je vais vous présenter les dépendances et les exigences dont vous aurez besoin. La première chose à faire est de déclarer les crates dans le fichier <code>Cargo.toml</code>.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
[dependencies]
tokio = { version = "^1.17.0", features = ["full"] }
clevercloud-sdk = { version = "^0.10.0", features = ["metrics", "tokio", "trace", "jsonschemas"] }
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Nous sommes maintenant capables d'écrire un logiciel à l'aide de clevercloud-sdk. Voici un exemple de la façon d'utiliser le SDK : </p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-rust">...
use clevercloud_sdk::{
    oauth10a::{
        proxy::{self, ProxyConnectorBuilder},
        Credentials,
    },
    v2::myself,
    Client,
};
...

// See the full code at:
// - https://github.com/CleverCloud/clevercloud-sdk-rust/blob/main/examples/cleverctl
// - https://github.com/CleverCloud/clevercloud-sdk-rust/blob/main/examples/cleverctl/src/cmd/myself.rs
pub async fn get(config: Arc&lt;Configuration&gt;, output: &amp;Output) -&gt; Result&lt;(), Error&gt; {
    let credentials: Credentials = config.credentials.to_owned().into();
    let connector = ProxyConnectorBuilder::try_from_env().map_err(Error::ProxyConnector)?;
    let client = Client::builder()
        .with_credentials(credentials)
        .build(connector);

    let user = myself::get(&amp;client).await.map_err(Error::Get)?;

    println!(
        "{}",
        output
            .format(&amp;user)
            .map_err(|err| Error::FormatOutput(Box::new(err)))?
    );

    Ok(())
}</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Un autre exemple du sdk qui interagit avec les add-ons :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
...
use clevercloud_sdk::{
    oauth10a::{
        proxy::{self, ProxyConnectorBuilder},
        Credentials,
    },
    v2::addon,
    Client,
};
...

// See the full code at:
// - https://github.com/CleverCloud/clevercloud-sdk-rust/blob/main/examples/cleverctl
// - https://github.com/CleverCloud/clevercloud-sdk-rust/blob/main/examples/cleverctl/src/cmd/addon/mod.rs 
pub async fn list(
    config: Arc<Configuration>,
    output: &Output,
    organisation_id: &str,
) -> Result<(), Error> {
    let credentials: Credentials = config.credentials.to_owned().into();
    let connector = ProxyConnectorBuilder::try_from_env().map_err(Error::ProxyConnector)?;
    let client = Client::builder()
        .with_credentials(credentials)
        .build(connector);

    let addons = addon::list(&client, organisation_id)
        .await
        .map_err(|err| Error::List(organisation_id.to_owned(), err))?;

    println!(
        "{}",
        output
            .format(&addons)
            .map_err(|err| Error::FormatOutput(Box::new(err)))?
    );
    Ok(())
}
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous pouvez trouver le code source complet de l'exemple d'interface de ligne de commande dans le dépot clevercloud-sdk dans le dépot d'exemples ou vous pouvez suivre <a href="https://github.com/CleverCloud/clevercloud-sdk-rust/blob/main/examples/cli" target="_blank" rel="noreferrer noopener">ce lien</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Quelles sont les prochaines étapes ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Jetons un coup d'œil aux fonctionnalités à venir qui seront intégrées dans ces crates.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Biscuit et token porteur oauth2</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Chez Clever Cloud, nous travaillons sur un nouveau token d'authentification et d'autorisation appelé Biscuit. Plus de détails à ce sujet dans le <a href="https://stagingv6.cleverapps.io/blog/engineering/2021/04/12/introduction-to-biscuit/">billet de blog d'introduction</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ce nouveau token d'authentification et d'autorisation fonctionnera avec la norme OAuth 2.0. L'une des tâches du SDK et du client est de faciliter la transition de OAuth 1.0a à OAuth 2.0 en utilisant Biscuit.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Nouvelles fonctionnalités !</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le kit de développement logiciel va se développer pour prendre en charge l'ensemble de l'API. La prochaine fonctionnalité est l'intégration du bus d'événements afin de s'abonner aux événements qui se produisent sur la plateforme de Clever Cloud. Vous serez par exemple en mesure de recevoir des notifications sur le déploiement d'une application, etc.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En outre, ces caisses sont utilisées pour construire un autre logiciel que vous avez découvert dans <a href="https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2022/03/16/clever-operator/">un autre article du blog</a>. Il présente un opérateur Kubernetes que vous pouvez utiliser sur <a href="https://www.redhat.com/en/technologies/cloud-computing/openshift" target="_blank" rel="noreferrer noopener">OpenShift</a>, qui expose les add-ons de Clever Cloud comme des <a href="https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/" target="_blank" rel="noreferrer noopener">custom ressources</a>.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-sdk-rust.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="sdk Rust" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-sdk-rust.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-sdk-rust-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-sdk-rust-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-sdk-rust-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-sdk-rust-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph {"dropCap":true} -->
<p class="has-drop-cap">Bonjour 🖖, amis humains et robots ! Notre équipe d'ingénieurs est fière d'annoncer un tout nouveau kit de développement logiciel (sdk) Rust, également connu sous le nom de "<a href="https://crates.io/crates/clevercloud-sdk" target="_blank" rel="noreferrer noopener">clevercloud-sdk</a>" sur <a href="https://crates.io/crates/clevercloud-sdk" target="_blank" rel="noreferrer noopener">crates.io</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Certains d'entre vous ont peut-être remarqué qu'il y a de nouveaux dépots sur notre organisation GitHub. Ces dépots sont nommés "<a href="https://github.com/CleverCloud/clevercloud-sdk-rust" target="_blank" rel="noreferrer noopener">clevercloud-sdk-rust</a>" et "<a href="https://github.com/CleverCloud/oauth10a-rust" target="_blank" rel="noreferrer noopener">oauth10a-rust</a>". Leur objectif est de fournir un moyen pratique d'interagir avec l'API de Clever Cloud avec des fonctionnalités intéressantes que nous allons vous faire découvrir dans ce blogpost!</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Conçu pour être asynchrone</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le kit de développement logiciel et le client oauth 1.0a sont principalement construits sur la base de deux crates bien connus de la communauté. Il s'agit de <a href="https://github.com/hyperium/hyper">hyper</a>, et du runtime asynchrone qui le propulse, nommé <a href="https://tokio.rs/" target="_blank" rel="noreferrer noopener">tokio</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>L'idée principale derrière l'utilisation de la crate hyper et par extension du runtime asynchrone tokio est de tirer parti de l'écosystème actuel qui gravite autour de ces crates et des efforts pour intégrer une nouvelle API du kernel appelée <a href="https://kernel.dk/io_uring.pdf" target="_blank" rel="noreferrer noopener">io_uring</a>. Une fois que cette nouvelle API kernel sera intégrée dans le runtime tokio, cela conduira à une amélioration significative de la performance, selon le <a href="https://tokio.rs/blog/2021-07-tokio-uring" target="_blank" rel="noreferrer noopener">billet de blog de l'annonce de tokio</a>. Nous attendons avec impatience cette amélioration qui nous permettra d'itérer plus rapidement ! 🚀</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">L'observabilité au cœur de l'outil</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Ces crates sont développées avec l'idée d'être entièrement observables. Cela a été réalisé par d'autres crates bien connus comme <a href="https://crates.io/crates/log" target="_blank" rel="noreferrer noopener">log</a> et <a href="https://crates.io/crates/tracing" target="_blank" rel="noreferrer noopener">tracing</a>, ou en utilisant des initiatives communautaires comme le crate <a href="https://crates.io/crates/prometheus" target="_blank" rel="noreferrer noopener">prometheus</a>. Les intégrations de ces crates font partie du <a href="https://doc.rust-lang.org/cargo/reference/features.html">système de flags de fonctionnalités de compilateur</a> fourni par le <a href="https://doc.rust-lang.org/book/ch01-03-hello-cargo.html" target="_blank" rel="noreferrer noopener">dépot cargo</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Façade de logs standard</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Tout d'abord, vous devez savoir que la façade de logs standard est activée par défaut. Elle fournira des informations utiles sur les comportements internes des crates ci-dessus, en utilisant le logger standard s'il est défini. Elle vous aidera à comprendre comment les appels à l'API de Clever Cloud sont réalisés avec quelques informations de débogage, si vous en avez besoin.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-toml">clevercloud-sdk = { version = "^0.10.0", default-features = false }</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Si vous voulez le désactiver, vous devez désactiver les ensembles par défaut de fonctionnalités activées. Cela peut être réalisé en utilisant la syntaxe suivante pour le <code>crate clevercloud-sdk</code> dans votre fichier <code>Cargo.toml</code>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Orienté métriques</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Nous pensons que les métriques sont importantes. Elles aident à comprendre les systèmes en mettant en corrélation des choses qui ne semblent pas être liées au départ.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>C'est pourquoi nous avons lancé <a href="https://stagingv6.cleverapps.io/blog/features/2018/01/16/realtime-metrics/" target="_blank" rel="noreferrer noopener">Clever Cloud Metrics</a> assez rapidement, il y a quelques années. Nous l'avons récemment enrichi de nouvelles fonctionnalités en offrant plus de moyens d'interroger Clever Cloud Metrics, grâce à <a href="https://github.com/ovh/erlenmeyer" target="_blank" rel="noreferrer noopener">Erlenmeyer</a> qui est un proxy de langage d'interrogation de séries temporelles. Vous trouverez plus de détails sur la façon dont vous pouvez l'utiliser dans <a href="https://stagingv6.cleverapps.io/blog/engineering/2021/10/12/enabling-promql-queries-with-erlenmeyer/" target="_blank" rel="noreferrer noopener">cet article de blog</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Enfin, nous avons annoncé le produit <a href="https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2021/11/23/annonce-dune-base-de-donnees-time-series-sur-clever-cloud-avec-tardis/">Tardis</a> qui vous permet de nous envoyer vos métriques et nous nous occupons du reste comme nous le faisons toujours et, plus récemment, nous avons intégré des tableaux de bord Grafana pré-construits pour vous aider à visualiser l'état de vos applications et add-ons, vous pouvez <a href="https://stagingv6.cleverapps.io/fr/blog/non-classifiee/2021/10/28/grafana-pour-des-metriques-d-applications/" target="_blank" rel="noreferrer noopener">en savoir plus ici</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Revenons à nos crates. Vous pouvez activer la collecte de métriques à l'aide du crate prometheus, en activant les flags de métriques au niveau du crate dans votre fichier <code>Cargo.toml</code>. Cela peut être réalisé en utilisant la syntaxe suivante.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
clevercloud-sdk = { version = "^0.10.0", features = ["metrics"] }
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois cette fonctionnalité activée, il n'y a plus grand-chose à faire. Vous devrez exposer les métriques via un serveur HTTP ou les envoyer en utilisant la passerelle push de prometheus. Cette partie est décrite dans la <a href="https://docs.rs/prometheus" target="_blank" rel="noreferrer noopener">documentation du crate prometheus</a> ou dans ces <a href="https://github.com/tikv/rust-prometheus/tree/master/examples" target="_blank" rel="noreferrer noopener">exemples</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Capacités de traces</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le dernier pilier de l'observabilité, mais non le moindre, sont les traces. Selon l'initiative et la documentation d'OpenTelemetry, les traces sont définies comme suit :</p>
<!-- /wp:paragraph -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p>Les traces suivent la progression d'une demande unique, appelée <strong>trace</strong>, telle qu'elle est traitée par les services qui composent une application. La demande peut être initiée par un utilisateur ou une application. Les traces distribués sont une forme de trace qui traverse les frontières du processus, du réseau et de la sécurité. Chaque unité de travail dans une trace est appelée un <strong>span</strong> ; une trace est un arbre de spans. Les spans sont des objets qui représentent le travail effectué par les services ou les composants individuels impliqués dans une requête au fur et à mesure qu'elle circule dans un système. Un span contient un contexte de span, qui est un ensemble d'identifiants uniques au monde représentant la demande unique dont chaque span fait partie. Un span fournit des mesures de Demande, Erreur et Durée (RED) qui peuvent être utilisées pour déboguer les problèmes de disponibilité et de performance…</p>
<!-- /wp:paragraph --><cite>Documentation sur OpenTelemetry</cite></blockquote>
<!-- /wp:quote -->

<!-- wp:paragraph -->
<p>Si vous souhaitez vous intéresser de plus près aux traces, même si elles ne sont pas en Rust, vous pouvez consulter l'organisation <a href="https://github.com/open-telemetry/" target="_blank" rel="noreferrer noopener">OpenTelemetry GitHub</a>. Il y a beaucoup de bibliothèques, de SDKs et de documentation pour vous aider à construire votre solution de traces ou à l'intégrer à une solution déjà existante. En outre, si vous utilisez le langage rust et peut-être le runtime tokio, vous pouvez consulter les articles de blog qui expliquent <a href="https://tokio.rs/blog/2019-08-tracing" target="_blank" rel="noreferrer noopener">comment les traces fonctionnent </a>dans le runtime asynchrone ci-dessus et comment les visualiser à l'aide de la <a href="https://tokio.rs/blog/2021-09-console-dev-diary-1" target="_blank" rel="noreferrer noopener">console</a> ou en utilisant le connecteur <a href="https://github.com/tokio-rs/tracing/tree/master/tracing-opentelemetry" target="_blank" rel="noreferrer noopener">OpenTelemetry</a> qui permet d'envoyer des traces à plus de puits, la liste est disponible sur le dépot rust GitHub d'OpenTelemetry.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Alors comment activer concrètement la fonctionnalité de traces à l'aide de clevercloud-sdk ? Comme mentionné ci-dessus, toutes les fonctionnalités sont pilotées par un flag de fonctionnalité, donc pour obtenir des capacités de traces, vous devez activer le flag de trace.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
clevercloud-sdk = { version = "^0.10.0", features = ["trace"] }
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Une fois que l'indicateur de fonctionnalité a été activé, vous devrez collecter et envoyer des traces en utilisant le connecteur et les sinks ci-dessus.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">À quoi ça ressemble ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Prenons un exemple concret pour illustrer ce à quoi ressemble le clevercloud-sdk. Mais avant de passer en revue l'utilisation de clevercloud-sdk, je vais vous présenter les dépendances et les exigences dont vous aurez besoin. La première chose à faire est de déclarer les crates dans le fichier <code>Cargo.toml</code>.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
[dependencies]
tokio = { version = "^1.17.0", features = ["full"] }
clevercloud-sdk = { version = "^0.10.0", features = ["metrics", "tokio", "trace", "jsonschemas"] }
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Nous sommes maintenant capables d'écrire un logiciel à l'aide de clevercloud-sdk. Voici un exemple de la façon d'utiliser le SDK : </p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-rust">...
use clevercloud_sdk::{
    oauth10a::{
        proxy::{self, ProxyConnectorBuilder},
        Credentials,
    },
    v2::myself,
    Client,
};
...

// See the full code at:
// - https://github.com/CleverCloud/clevercloud-sdk-rust/blob/main/examples/cleverctl
// - https://github.com/CleverCloud/clevercloud-sdk-rust/blob/main/examples/cleverctl/src/cmd/myself.rs
pub async fn get(config: Arc&lt;Configuration&gt;, output: &amp;Output) -&gt; Result&lt;(), Error&gt; {
    let credentials: Credentials = config.credentials.to_owned().into();
    let connector = ProxyConnectorBuilder::try_from_env().map_err(Error::ProxyConnector)?;
    let client = Client::builder()
        .with_credentials(credentials)
        .build(connector);

    let user = myself::get(&amp;client).await.map_err(Error::Get)?;

    println!(
        "{}",
        output
            .format(&amp;user)
            .map_err(|err| Error::FormatOutput(Box::new(err)))?
    );

    Ok(())
}</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Un autre exemple du sdk qui interagit avec les add-ons :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
...
use clevercloud_sdk::{
    oauth10a::{
        proxy::{self, ProxyConnectorBuilder},
        Credentials,
    },
    v2::addon,
    Client,
};
...

// See the full code at:
// - https://github.com/CleverCloud/clevercloud-sdk-rust/blob/main/examples/cleverctl
// - https://github.com/CleverCloud/clevercloud-sdk-rust/blob/main/examples/cleverctl/src/cmd/addon/mod.rs 
pub async fn list(
    config: Arc<Configuration>,
    output: &Output,
    organisation_id: &str,
) -> Result<(), Error> {
    let credentials: Credentials = config.credentials.to_owned().into();
    let connector = ProxyConnectorBuilder::try_from_env().map_err(Error::ProxyConnector)?;
    let client = Client::builder()
        .with_credentials(credentials)
        .build(connector);

    let addons = addon::list(&client, organisation_id)
        .await
        .map_err(|err| Error::List(organisation_id.to_owned(), err))?;

    println!(
        "{}",
        output
            .format(&addons)
            .map_err(|err| Error::FormatOutput(Box::new(err)))?
    );
    Ok(())
}
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Vous pouvez trouver le code source complet de l'exemple d'interface de ligne de commande dans le dépot clevercloud-sdk dans le dépot d'exemples ou vous pouvez suivre <a href="https://github.com/CleverCloud/clevercloud-sdk-rust/blob/main/examples/cli" target="_blank" rel="noreferrer noopener">ce lien</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Quelles sont les prochaines étapes ?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Jetons un coup d'œil aux fonctionnalités à venir qui seront intégrées dans ces crates.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Biscuit et token porteur oauth2</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Chez Clever Cloud, nous travaillons sur un nouveau token d'authentification et d'autorisation appelé Biscuit. Plus de détails à ce sujet dans le <a href="https://stagingv6.cleverapps.io/blog/engineering/2021/04/12/introduction-to-biscuit/">billet de blog d'introduction</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Ce nouveau token d'authentification et d'autorisation fonctionnera avec la norme OAuth 2.0. L'une des tâches du SDK et du client est de faciliter la transition de OAuth 1.0a à OAuth 2.0 en utilisant Biscuit.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Nouvelles fonctionnalités !</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Le kit de développement logiciel va se développer pour prendre en charge l'ensemble de l'API. La prochaine fonctionnalité est l'intégration du bus d'événements afin de s'abonner aux événements qui se produisent sur la plateforme de Clever Cloud. Vous serez par exemple en mesure de recevoir des notifications sur le déploiement d'une application, etc.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>En outre, ces caisses sont utilisées pour construire un autre logiciel que vous avez découvert dans <a href="https://stagingv6.cleverapps.io/fr/blog/fonctionnalites/2022/03/16/clever-operator/">un autre article du blog</a>. Il présente un opérateur Kubernetes que vous pouvez utiliser sur <a href="https://www.redhat.com/en/technologies/cloud-computing/openshift" target="_blank" rel="noreferrer noopener">OpenShift</a>, qui expose les add-ons de Clever Cloud comme des <a href="https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/" target="_blank" rel="noreferrer noopener">custom ressources</a>.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Heptapod : le GitLab amélioré d’Octobus, prêt à l&#8217;usage</title>
		<link>https://stagingv6.cleverapps.io/fr/blog/engineering-fr/2022/04/11/heptapod-decouvrez-le-gitlab-ameliore-doctobus-pret-a-etre-deploye/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Mon, 11 Apr 2022 08:29:21 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[fonctionnalité]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=6036</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/03/heptapod-by-octobus.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="heptapod_by_octobus" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/03/heptapod-by-octobus.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/03/heptapod-by-octobus-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/03/heptapod-by-octobus-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/03/heptapod-by-octobus-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/03/heptapod-by-octobus-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph -->
<p>En 2017, l’équipe du français <a href="https://octobus.net/" target="_blank" rel="noreferrer noopener">Octobus</a> part d’un constat : Git monte en puissance dans le domaine des outils de gestion de version (CVS), accompagné par des plateformes propriétaires telles que GitHub ou ouvertes comme GitLab. Cela décourage peu à peu d’autres acteurs qui délaissent des solutions concurrentes et leurs communautés.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>C’était notamment le cas de Mercurial dont les utilisateurs voulaient profiter des avantages tout en bénéficiant d'une solution moderne de gestion des projets. L’idée est alors d’adapter l’édition communautaire de GitLab à Mercurial.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><a href="https://heptapod.net/" target="_blank" rel="noreferrer noopener">Heptapod</a> était né. L’outil, open source, sera développé <a href="https://octobus.net/blog/2018-09-18-heptapod-announce.html" target="_blank" rel="noreferrer noopener">pendant deux ans</a> avant <a href="https://peertube.mastodon.host/videos/watch/eadd6b5e-2339-4193-b591-ca8aa55619eb" target="_blank" rel="noreferrer noopener">une première démonstration</a>, puis stabilisé. Il est entré dans sa phase de production en 2020. C’est à cette époque que la rencontre entre Georges Racinet, mainteneur du projet, et Clever Cloud a donné lieu à la création de notre premier service hébergé : <a href="https://about.heptapod.host/">heptapod.host</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Il nous était en effet régulièrement demandé de proposer des forges en complément de notre offre et de nos <a href="https://fr.wikipedia.org/wiki/CI/CD" target="_blank" rel="noreferrer noopener">solutions CI/CD</a>, permettant à nos clients un déploiement en France, avec la simplicité et l’efficacité de la plateforme Clever Cloud, sans être dépendant d’une solution tierce, propriétaire, dont les conditions peuvent changer du jour au lendemain.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Heptapod nous semblait être le candidat parfait pour répondre à ce besoin : il s’agit d’une offre GitLab pleine et entière, avec la possibilité d’utiliser Mercurial comme CVS pour ceux qui le souhaitent. Surtout, cela nous permet d’y proposer nos propres fonctionnalités avec un déploiement facilité, comme pour les runners récemment mis en place.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>L’hébergement <a href="https://foss.heptapod.net/">de projets open source</a> peut être proposé gratuitement. Vous pouvez également profiter d’un maximum de 1 Go et 100 utilisateurs publics sans frais. Au-delà ou pour des utilisateurs/dépôts privés, cela vous sera facturé à <a href="https://stagingv6.cleverapps.io/pricing/#software-factory">la tarification en vigueur</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Pour utiliser Heptapod dès maintenant, <a href="https://heptapod.host/users/sign_in" target="_blank" rel="noreferrer noopener">un compte Clever Cloud suffit</a>.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/03/heptapod-by-octobus.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="heptapod_by_octobus" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/03/heptapod-by-octobus.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/03/heptapod-by-octobus-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/03/heptapod-by-octobus-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/03/heptapod-by-octobus-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/03/heptapod-by-octobus-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph -->
<p>En 2017, l’équipe du français <a href="https://octobus.net/" target="_blank" rel="noreferrer noopener">Octobus</a> part d’un constat : Git monte en puissance dans le domaine des outils de gestion de version (CVS), accompagné par des plateformes propriétaires telles que GitHub ou ouvertes comme GitLab. Cela décourage peu à peu d’autres acteurs qui délaissent des solutions concurrentes et leurs communautés.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>C’était notamment le cas de Mercurial dont les utilisateurs voulaient profiter des avantages tout en bénéficiant d'une solution moderne de gestion des projets. L’idée est alors d’adapter l’édition communautaire de GitLab à Mercurial.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><a href="https://heptapod.net/" target="_blank" rel="noreferrer noopener">Heptapod</a> était né. L’outil, open source, sera développé <a href="https://octobus.net/blog/2018-09-18-heptapod-announce.html" target="_blank" rel="noreferrer noopener">pendant deux ans</a> avant <a href="https://peertube.mastodon.host/videos/watch/eadd6b5e-2339-4193-b591-ca8aa55619eb" target="_blank" rel="noreferrer noopener">une première démonstration</a>, puis stabilisé. Il est entré dans sa phase de production en 2020. C’est à cette époque que la rencontre entre Georges Racinet, mainteneur du projet, et Clever Cloud a donné lieu à la création de notre premier service hébergé : <a href="https://about.heptapod.host/">heptapod.host</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Il nous était en effet régulièrement demandé de proposer des forges en complément de notre offre et de nos <a href="https://fr.wikipedia.org/wiki/CI/CD" target="_blank" rel="noreferrer noopener">solutions CI/CD</a>, permettant à nos clients un déploiement en France, avec la simplicité et l’efficacité de la plateforme Clever Cloud, sans être dépendant d’une solution tierce, propriétaire, dont les conditions peuvent changer du jour au lendemain.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Heptapod nous semblait être le candidat parfait pour répondre à ce besoin : il s’agit d’une offre GitLab pleine et entière, avec la possibilité d’utiliser Mercurial comme CVS pour ceux qui le souhaitent. Surtout, cela nous permet d’y proposer nos propres fonctionnalités avec un déploiement facilité, comme pour les runners récemment mis en place.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>L’hébergement <a href="https://foss.heptapod.net/">de projets open source</a> peut être proposé gratuitement. Vous pouvez également profiter d’un maximum de 1 Go et 100 utilisateurs publics sans frais. Au-delà ou pour des utilisateurs/dépôts privés, cela vous sera facturé à <a href="https://stagingv6.cleverapps.io/pricing/#software-factory">la tarification en vigueur</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Pour utiliser Heptapod dès maintenant, <a href="https://heptapod.host/users/sign_in" target="_blank" rel="noreferrer noopener">un compte Clever Cloud suffit</a>.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
