<?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>Features Archives | Clever Cloud</title>
	<atom:link href="https://www.clever.cloud/blog/tag/features-fr/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.clever.cloud/blog/tag/features-fr/</link>
	<description>From Code to Product</description>
	<lastBuildDate>Wed, 01 Apr 2026 09:06:05 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://cdn.clever-cloud.com/uploads/2023/03/cropped-cropped-favicon-32x32.png</url>
	<title>Features Archives | Clever Cloud</title>
	<link>https://www.clever.cloud/blog/tag/features-fr/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>OpenTofu: the open-source Terraform fork — natively supported on Clever Cloud</title>
		<link>https://www.clever.cloud/blog/engineering/2026/03/25/opentofu-the-open-source-terraform-fork/</link>
		
		<dc:creator><![CDATA[Carine Guillemet]]></dc:creator>
		<pubDate>Wed, 25 Mar 2026 09:44:14 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[opentofu]]></category>
		<category><![CDATA[terraform]]></category>
		<guid isPermaLink="false">https://www.clever.cloud/?p=23944</guid>

					<description><![CDATA[<p><img width="800" height="355" src="https://cdn.clever-cloud.com/uploads/2026/03/2026-03-18-clever-cloud-banniere-blog-paas-secteur-public-eng-2-2.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="2026 03 18 clever cloud banniere blog paas secteur public eng 2 2" decoding="async" fetchpriority="high" srcset="https://cdn.clever-cloud.com/uploads/2026/03/2026-03-18-clever-cloud-banniere-blog-paas-secteur-public-eng-2-2.png 800w, https://cdn.clever-cloud.com/uploads/2026/03/2026-03-18-clever-cloud-banniere-blog-paas-secteur-public-eng-2-2-300x133.png 300w, https://cdn.clever-cloud.com/uploads/2026/03/2026-03-18-clever-cloud-banniere-blog-paas-secteur-public-eng-2-2-768x341.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></p><!-- wp:paragraph -->
<p>BSL is not an open-source license as defined by the Open Source Initiative: it restricts commercial use deemed competitive with HashiCorp's offerings. Overnight, thousands of organizations that had built their infrastructure around Terraform found themselves in uncomfortable legal uncertainty.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The response was swift. Less than a month after the announcement, a manifesto calling for a return to an open-source license had gathered 33,000 GitHub stars and the support of nearly 140 companies. HashiCorp did not budge. The fork was published in September 2023, brought into the Linux Foundation, and renamed OpenTofu. Since January 2024, it has been in stable production. Since April 2025, it has been part of the Cloud Native Computing Foundation (CNCF).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Our <a href="https://www.clever.cloud/product/terraform/" type="link" id="https://www.clever.cloud/product/terraform/">Terraform</a> provider is fully compatible with OpenTofu. No changes to your configurations are needed to use it.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">What is OpenTofu?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>OpenTofu is an open-source infrastructure as code (IaC) tool, forked from the last MPL 2.0-licensed version of Terraform (1.5.x), distributed under that same Mozilla Public License 2.0. It lets you describe, provision, and manage cloud infrastructure through declarative configuration files written in HashiCorp Configuration Language.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>It is developed under the governance of the Linux Foundation, with a Technical Steering Committee made up of representatives from multiple organizations — Gruntwork, Spacelift, Harness, Env0, Scalr — so that no single company can control its direction. That governance model is precisely what convinced many teams to make the switch: a guarantee that the tool will remain truly open source, regardless of how its contributors evolve commercially.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In practice, OpenTofu works with the same&nbsp;<code>.tf</code>&nbsp;files, the same providers, the same modules, and the same CLI workflow as Terraform —&nbsp;<code>init</code>,&nbsp;<code>plan</code>,&nbsp;<code>apply</code>,&nbsp;<code>destroy</code>. For the vast majority of teams, migrating comes down to replacing the binary.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">What's the actual difference with Terraform?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The main difference is the license, and everything it implies in the long run.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Terraform is now distributed under the BSL, which restricts commercial uses that could be considered competitive with HashiCorp — a deliberately vague notion that HashiCorp (now a subsidiary of IBM) may interpret differently in the future. OpenTofu is distributed under MPL 2.0, a true open-source license with no commercial restrictions.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Beyond the license, the two projects have started to diverge technically since the fork. The most notable differences to date:&lt;ul> &lt;li>&lt;strong>State encryption:&lt;/strong> OpenTofu natively supports client-side encryption of state files — a feature long requested by the community that Terraform has still not implemented.</p>
<!-- /wp:paragraph -->

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

<!-- wp:html -->
<ul></li> <li><strong>Governance:</strong> OpenTofu is steered by a multi-organization technical committee within the Linux Foundation. Terraform is controlled by IBM via HashiCorp, with a roadmap driven by commercial priorities.</li> <li><strong>Compatibility:</strong> OpenTofu maintains syntactic and functional compatibility with Terraform. Existing providers, modules, and configurations work without modification for the vast majority of use cases.</li> <li><strong>The <code>.tofu</code> extension:</strong> OpenTofu supports this extension alongside <code>.tf</code>, allowing module authors to provide OpenTofu-specific variants while remaining compatible with Terraform.</li> <li><strong>Terraform Actions:</strong> HashiCorp introduced "actions" in Terraform 1.9+, a feature that lets you trigger custom behaviors during resource lifecycle events. OpenTofu does not yet support them — this is the inherent trade-off of any fork: new proprietary Terraform features are not automatically available, and their implementation in OpenTofu depends on the technical committee's priorities.</li> </ul>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Why teams are migrating to OpenTofu</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Three reasons come up consistently.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Legal risk.</strong>&nbsp;The BSL prohibits using Terraform in products that could compete with HashiCorp's commercial offerings. For teams building internal platforms, cloud products, or managed services, this uncertainty is a real operational risk — especially since the definition of "competitive" belongs to HashiCorp and can evolve. On top of that, there is a less visible but equally significant reality: in the Terraform registry, open-source providers get no special visibility. Getting an "official" badge requires negotiating directly with HashiCorp — and paying for it. In the OpenTofu registry, all providers are on equal footing, regardless of the size or resources of their maintainers.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Strategic autonomy over tooling.</strong>&nbsp;Your infrastructure as code is the foundation of everything else. Depending on a tool controlled by a US company subject to the Cloud Act means introducing an additional dependency that many organizations would rather avoid. OpenTofu, under Linux Foundation / CNCF governance, offers continuity independent of any commercial actor.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Features Terraform doesn't ship.</strong>&nbsp;Native state file encryption is the most frequently cited example: requested by the community for years, implemented within months by OpenTofu. It is also a signal about how quickly community-driven governance can respond to real needs, compared to a roadmap driven by commercial interests.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Migrating from Terraform to OpenTofu</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>For the vast majority of teams, migration takes a matter of minutes. All you need to do is make sure the state is clean, install OpenTofu, and replace&nbsp;<code>terraform</code>&nbsp;with&nbsp;<code>tofu</code>&nbsp;in your commands.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p># Make sure your state is clean before migrating terraform plan </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p># → "No changes. Your infrastructure matches the configuration."</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p> # Install OpenTofu on macOS brew install opentofu </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p># Install OpenTofu on Linux </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>curl --proto '=https' --tlsv1.2 -fsSL https://get.opentofu.org/install-opentofu.sh | sh </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p># Resume your normal workflow </p>
<!-- /wp:paragraph -->

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

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

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

<!-- wp:paragraph -->
<p>Existing <code>.tf</code> files do not need to be modified. The OpenTofu registry mirrors all providers available on the Terraform Registry — including the Clever Cloud provider.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">OpenTofu on Clever Cloud: nothing to change</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Our official provider (<code>CleverCloud/clevercloud</code>, currently version 1.10) works identically with both Terraform and OpenTofu. The provider source, HCL syntax, and all available resources are exactly the same. A minimal example to deploy a Node.js application with a PostgreSQL database:</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;required_providers {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;&nbsp;&nbsp;clevercloud = {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;source&nbsp; = "CleverCloud/clevercloud"</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version = "~&gt; 1.10"</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;}</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>provider "clevercloud" {organisation}</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>resource "clevercloud_node" "app" {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;name &nbsp; &nbsp; &nbsp; = "mon-app-node"</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;region &nbsp; &nbsp; = "par"</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;min_flavor = "XS"</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;max_flavor = "M"</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>resource "clevercloud_postgresql" "db" {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;name &nbsp; = "ma-base-postgres"</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;region = "par"</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;plan &nbsp; = "dev"</p>
<!-- /wp:paragraph -->

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

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

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

<!-- wp:paragraph -->
<p><code>tofu apply</code></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The OpenTofu + Clever Cloud combination is a fully sovereign IaC stack: open-source tooling under Linux Foundation / CNCF governance, infrastructure hosted in our own data centers in France, outside the reach of the US Cloud Act. It is the choice increasingly made by teams who want full control over their entire toolchain — not just their data.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><em><em>The Clever Cloud provider is available on the <a href="https://registry.terraform.io/providers/CleverCloud/clevercloud/latest">Terraform Registry</a> and fully open source on <a href="https://github.com/CleverCloud/terraform-provider-clevercloud">GitHub</a>. </em><br></em></p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Q&amp;A</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><em><br></em><strong>Is OpenTofu compatible with my existing Terraform configurations?</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>For the vast majority of use cases, yes. OpenTofu maintains syntactic and functional compatibility with Terraform. Existing <code>.tf</code> files, providers, and modules work without modification. Testing in a non-production environment before switching critical workloads is recommended.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><em><br></em><strong>Is OpenTofu production-ready?</strong> </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Yes. The first stable version was released in January 2024. The project has since surpassed 10 million downloads and is used in production by organizations of all sizes, including Fortune 500 companies. Its integration into the CNCF in April 2025 reinforced its credibility for enterprise environments.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><em><br></em><strong>What is the open-source alternative to Terraform?</strong> </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>OpenTofu is the primary open-source alternative to Terraform. Distributed under MPL 2.0, maintained by the Linux Foundation, and a CNCF member, it is the direct continuation of Terraform in its original open-source state.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><em><br></em><strong>Is the Clever Cloud Terraform provider compatible with OpenTofu?</strong> </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Yes, with no configuration changes required. Our official provider (<code>CleverCloud/clevercloud</code>) works identically with both Terraform and OpenTofu.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><em><br></em><strong>How does OpenTofu work?</strong> </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In the same way as Terraform: you describe the target state of your infrastructure in HCL, OpenTofu computes the necessary changes (<code>tofu plan</code>) and applies them (<code>tofu apply</code>). It manages dependencies between resources, the state, and the full lifecycle of each resource. This is also where IBM's acquisition of HashiCorp introduces additional uncertainty: projects built around Terraform, such as CDK for Terraform, could be deprioritized or discontinued based on IBM's commercial decisions. With OpenTofu, the roadmap is public, discussed through open RFCs, and does not depend on decisions made behind closed doors by a single actor.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="800" height="355" src="https://cdn.clever-cloud.com/uploads/2026/03/2026-03-18-clever-cloud-banniere-blog-paas-secteur-public-eng-2-2.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="2026 03 18 clever cloud banniere blog paas secteur public eng 2 2" decoding="async" srcset="https://cdn.clever-cloud.com/uploads/2026/03/2026-03-18-clever-cloud-banniere-blog-paas-secteur-public-eng-2-2.png 800w, https://cdn.clever-cloud.com/uploads/2026/03/2026-03-18-clever-cloud-banniere-blog-paas-secteur-public-eng-2-2-300x133.png 300w, https://cdn.clever-cloud.com/uploads/2026/03/2026-03-18-clever-cloud-banniere-blog-paas-secteur-public-eng-2-2-768x341.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></p><!-- wp:paragraph -->
<p>BSL is not an open-source license as defined by the Open Source Initiative: it restricts commercial use deemed competitive with HashiCorp's offerings. Overnight, thousands of organizations that had built their infrastructure around Terraform found themselves in uncomfortable legal uncertainty.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The response was swift. Less than a month after the announcement, a manifesto calling for a return to an open-source license had gathered 33,000 GitHub stars and the support of nearly 140 companies. HashiCorp did not budge. The fork was published in September 2023, brought into the Linux Foundation, and renamed OpenTofu. Since January 2024, it has been in stable production. Since April 2025, it has been part of the Cloud Native Computing Foundation (CNCF).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Our <a href="https://www.clever.cloud/product/terraform/" type="link" id="https://www.clever.cloud/product/terraform/">Terraform</a> provider is fully compatible with OpenTofu. No changes to your configurations are needed to use it.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">What is OpenTofu?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>OpenTofu is an open-source infrastructure as code (IaC) tool, forked from the last MPL 2.0-licensed version of Terraform (1.5.x), distributed under that same Mozilla Public License 2.0. It lets you describe, provision, and manage cloud infrastructure through declarative configuration files written in HashiCorp Configuration Language.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>It is developed under the governance of the Linux Foundation, with a Technical Steering Committee made up of representatives from multiple organizations — Gruntwork, Spacelift, Harness, Env0, Scalr — so that no single company can control its direction. That governance model is precisely what convinced many teams to make the switch: a guarantee that the tool will remain truly open source, regardless of how its contributors evolve commercially.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In practice, OpenTofu works with the same&nbsp;<code>.tf</code>&nbsp;files, the same providers, the same modules, and the same CLI workflow as Terraform —&nbsp;<code>init</code>,&nbsp;<code>plan</code>,&nbsp;<code>apply</code>,&nbsp;<code>destroy</code>. For the vast majority of teams, migrating comes down to replacing the binary.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">What's the actual difference with Terraform?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The main difference is the license, and everything it implies in the long run.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Terraform is now distributed under the BSL, which restricts commercial uses that could be considered competitive with HashiCorp — a deliberately vague notion that HashiCorp (now a subsidiary of IBM) may interpret differently in the future. OpenTofu is distributed under MPL 2.0, a true open-source license with no commercial restrictions.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Beyond the license, the two projects have started to diverge technically since the fork. The most notable differences to date:&lt;ul> &lt;li>&lt;strong>State encryption:&lt;/strong> OpenTofu natively supports client-side encryption of state files — a feature long requested by the community that Terraform has still not implemented.</p>
<!-- /wp:paragraph -->

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

<!-- wp:html -->
<ul></li> <li><strong>Governance:</strong> OpenTofu is steered by a multi-organization technical committee within the Linux Foundation. Terraform is controlled by IBM via HashiCorp, with a roadmap driven by commercial priorities.</li> <li><strong>Compatibility:</strong> OpenTofu maintains syntactic and functional compatibility with Terraform. Existing providers, modules, and configurations work without modification for the vast majority of use cases.</li> <li><strong>The <code>.tofu</code> extension:</strong> OpenTofu supports this extension alongside <code>.tf</code>, allowing module authors to provide OpenTofu-specific variants while remaining compatible with Terraform.</li> <li><strong>Terraform Actions:</strong> HashiCorp introduced "actions" in Terraform 1.9+, a feature that lets you trigger custom behaviors during resource lifecycle events. OpenTofu does not yet support them — this is the inherent trade-off of any fork: new proprietary Terraform features are not automatically available, and their implementation in OpenTofu depends on the technical committee's priorities.</li> </ul>
<!-- /wp:html -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Why teams are migrating to OpenTofu</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Three reasons come up consistently.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Legal risk.</strong>&nbsp;The BSL prohibits using Terraform in products that could compete with HashiCorp's commercial offerings. For teams building internal platforms, cloud products, or managed services, this uncertainty is a real operational risk — especially since the definition of "competitive" belongs to HashiCorp and can evolve. On top of that, there is a less visible but equally significant reality: in the Terraform registry, open-source providers get no special visibility. Getting an "official" badge requires negotiating directly with HashiCorp — and paying for it. In the OpenTofu registry, all providers are on equal footing, regardless of the size or resources of their maintainers.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Strategic autonomy over tooling.</strong>&nbsp;Your infrastructure as code is the foundation of everything else. Depending on a tool controlled by a US company subject to the Cloud Act means introducing an additional dependency that many organizations would rather avoid. OpenTofu, under Linux Foundation / CNCF governance, offers continuity independent of any commercial actor.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Features Terraform doesn't ship.</strong>&nbsp;Native state file encryption is the most frequently cited example: requested by the community for years, implemented within months by OpenTofu. It is also a signal about how quickly community-driven governance can respond to real needs, compared to a roadmap driven by commercial interests.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Migrating from Terraform to OpenTofu</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>For the vast majority of teams, migration takes a matter of minutes. All you need to do is make sure the state is clean, install OpenTofu, and replace&nbsp;<code>terraform</code>&nbsp;with&nbsp;<code>tofu</code>&nbsp;in your commands.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p># Make sure your state is clean before migrating terraform plan </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p># → "No changes. Your infrastructure matches the configuration."</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p> # Install OpenTofu on macOS brew install opentofu </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p># Install OpenTofu on Linux </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>curl --proto '=https' --tlsv1.2 -fsSL https://get.opentofu.org/install-opentofu.sh | sh </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p># Resume your normal workflow </p>
<!-- /wp:paragraph -->

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

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

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

<!-- wp:paragraph -->
<p>Existing <code>.tf</code> files do not need to be modified. The OpenTofu registry mirrors all providers available on the Terraform Registry — including the Clever Cloud provider.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">OpenTofu on Clever Cloud: nothing to change</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Our official provider (<code>CleverCloud/clevercloud</code>, currently version 1.10) works identically with both Terraform and OpenTofu. The provider source, HCL syntax, and all available resources are exactly the same. A minimal example to deploy a Node.js application with a PostgreSQL database:</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;required_providers {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;&nbsp;&nbsp;clevercloud = {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;source&nbsp; = "CleverCloud/clevercloud"</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version = "~&gt; 1.10"</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;}</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>provider "clevercloud" {organisation}</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>resource "clevercloud_node" "app" {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;name &nbsp; &nbsp; &nbsp; = "mon-app-node"</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;region &nbsp; &nbsp; = "par"</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;min_flavor = "XS"</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;max_flavor = "M"</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>resource "clevercloud_postgresql" "db" {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;name &nbsp; = "ma-base-postgres"</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;region = "par"</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp;&nbsp;plan &nbsp; = "dev"</p>
<!-- /wp:paragraph -->

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

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

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

<!-- wp:paragraph -->
<p><code>tofu apply</code></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The OpenTofu + Clever Cloud combination is a fully sovereign IaC stack: open-source tooling under Linux Foundation / CNCF governance, infrastructure hosted in our own data centers in France, outside the reach of the US Cloud Act. It is the choice increasingly made by teams who want full control over their entire toolchain — not just their data.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><em><em>The Clever Cloud provider is available on the <a href="https://registry.terraform.io/providers/CleverCloud/clevercloud/latest">Terraform Registry</a> and fully open source on <a href="https://github.com/CleverCloud/terraform-provider-clevercloud">GitHub</a>. </em><br></em></p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Q&amp;A</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><em><br></em><strong>Is OpenTofu compatible with my existing Terraform configurations?</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>For the vast majority of use cases, yes. OpenTofu maintains syntactic and functional compatibility with Terraform. Existing <code>.tf</code> files, providers, and modules work without modification. Testing in a non-production environment before switching critical workloads is recommended.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><em><br></em><strong>Is OpenTofu production-ready?</strong> </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Yes. The first stable version was released in January 2024. The project has since surpassed 10 million downloads and is used in production by organizations of all sizes, including Fortune 500 companies. Its integration into the CNCF in April 2025 reinforced its credibility for enterprise environments.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><em><br></em><strong>What is the open-source alternative to Terraform?</strong> </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>OpenTofu is the primary open-source alternative to Terraform. Distributed under MPL 2.0, maintained by the Linux Foundation, and a CNCF member, it is the direct continuation of Terraform in its original open-source state.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><em><br></em><strong>Is the Clever Cloud Terraform provider compatible with OpenTofu?</strong> </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Yes, with no configuration changes required. Our official provider (<code>CleverCloud/clevercloud</code>) works identically with both Terraform and OpenTofu.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><em><br></em><strong>How does OpenTofu work?</strong> </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In the same way as Terraform: you describe the target state of your infrastructure in HCL, OpenTofu computes the necessary changes (<code>tofu plan</code>) and applies them (<code>tofu apply</code>). It manages dependencies between resources, the state, and the full lifecycle of each resource. This is also where IBM's acquisition of HashiCorp introduces additional uncertainty: projects built around Terraform, such as CDK for Terraform, could be deprioritized or discontinued based on IBM's commercial decisions. With OpenTofu, the roadmap is public, discussed through open RFCs, and does not depend on decisions made behind closed doors by a single actor.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How We Deployed a Vinext Application in Minutes on Clever Cloud with AI</title>
		<link>https://www.clever.cloud/blog/engineering/2026/02/25/how-we-deployed-a-vinext-application/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Wed, 25 Feb 2026 08:39:37 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[next.js]]></category>
		<category><![CDATA[Vinext]]></category>
		<guid isPermaLink="false">https://www.clever.cloud/?p=23616</guid>

					<description><![CDATA[<p><img width="2500" height="1109" src="https://cdn.clever-cloud.com/uploads/2026/02/2026-02-25-clever-cloud-banniere-blog-vinext-en.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="2026 02 25 clever cloud banniere blog vinext en" decoding="async" srcset="https://cdn.clever-cloud.com/uploads/2026/02/2026-02-25-clever-cloud-banniere-blog-vinext-en.png 2500w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-25-clever-cloud-banniere-blog-vinext-en-300x133.png 300w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-25-clever-cloud-banniere-blog-vinext-en-1024x454.png 1024w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-25-clever-cloud-banniere-blog-vinext-en-768x341.png 768w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-25-clever-cloud-banniere-blog-vinext-en-1536x681.png 1536w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-25-clever-cloud-banniere-blog-vinext-en-2048x908.png 2048w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-25-clever-cloud-banniere-blog-vinext-en-1368x607.png 1368w" sizes="(max-width: 2500px) 100vw, 2500px" /></p><!-- wp:paragraph -->
<p>Cloudflare has just announced Vinext, a drop-in replacement for Next.js built on Vite. The project is vibecoded, experimental, but the promise is compelling: builds up to 4x faster, bundles 57% lighter, and 94% coverage of the Next.js API. We wanted to see how easy it would be to deploy it on Clever Cloud.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>If you develop with Next.js, you know its strengths, but also its frustrations: sometimes slow builds, heavy bundles, and an ecosystem that can feel locked in. <a href="https://github.com/cloudflare/vinext" type="link" id="https://github.com/cloudflare/vinext">Vinext</a> takes the approach of (<a href="https://github.com/cloudflare/vinext?tab=readme-ov-file#api-coverage">almost</a>) reimplementing everything — routing, server rendering, React Server Components, server actions, middleware — as a Vite plugin.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In practical terms, your existing Next.js code should work as-is. Your app/ and pages/ folders, your next.config.js: everything should be compatible. You just replace next with vinext in your scripts. While Cloudflare naturally highlights deployment on Workers, Vinext is not tied to their infrastructure. 95% of the code is pure Vite. The vinext start command launches a standard Node.js server, deployable anywhere. Including on our platform.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Deploying Vinext on Clever Cloud: as easy as it gets</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>There is no specific adaptation required. You simply need an application in a local Git repository, or a GitHub account linked to your Clever Cloud account, and push your code into a <a href="https://www.clever.cloud/product/node-js-applications/">Node.js</a>/Bun application. In our example, we used Bun, which is automatically detected and used.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>So, if you have the Clever Tools and Git installed on your machine, all you need to do is:</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash"># Clone the example repository 
git clone https://github.com/CleverCloud/vinext-example 
cd vinext-example

# Create the application, deploy it, open it in your browser
clever create -t node 
clever deploy 
clever open</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>That’s it. You get an application with a fully configured and up-to-date instance, a domain, and its SSL certificate already set up. Of course, you can easily change it and, with just a few settings, commands, or clicks in our Console, deploy this application in other countries through the infrastructures of our partners such as Ionos or OVHcloud, adjust the number or size of instances, and more.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">An application created and deployed with AI</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>One of the goals of this project was also to see how far we could go by having a tool like Claude Code build and deploy this application by simply providing it with a few elements: <a href="https://blog.cloudflare.com/vinext/">the Vinext announcement blog post</a> and the Node.js/Bun <a href="https://www.clever.cloud/developers/doc/applications/nodejs/">deployment documentation for Clever Cloud</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"lightbox":{"enabled":true},"id":23592,"sizeSlug":"large","linkDestination":"none","align":"wide"} -->
<figure class="wp-block-image alignwide size-large"><img src="https://cdn.clever-cloud.com/uploads/2026/02/capture-decran-2026-02-25-a-06-30-33-1024x476.png" alt="" class="wp-image-23592"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Overall, it went quite well. Between the initial prompt and the first production deployment of the application, only a few minutes passed.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Of course, not everything was perfect. Since Claude did not know Vinext, it initially added Next.js as a dependency to the project, and we had to ask it to remove it. We also suggested an optimization for running the build command, which it had triggered using the pre-run hook instead of post-build (right after downloading dependencies). We eventually defined it as a post-install script in the package.json. This change allows us to keep the full application in the build cache and therefore start a complete application, isolated in a virtual machine, in 15–20 seconds (30–40 seconds with the build).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>For the rest, Claude Code read and analyzed the provided documentation, created the project, identified the correct Clever Tools options to create the application, and iterated on the demo page design based on our recommendations.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>All of this happened in an interactive conversation where each choice could be discussed and adjusted. The AI proposes, the developer decides — it’s teamwork, made easier by the broad compatibility and speed of the Clever Cloud platform. Even part of this blog post was written that way. Can you guess which part?</p>
<!-- /wp:paragraph -->

<!-- wp:image {"lightbox":{"enabled":true},"id":23593,"sizeSlug":"large","linkDestination":"none","align":"wide"} -->
<figure class="wp-block-image alignwide size-large"><img src="https://cdn.clever-cloud.com/uploads/2026/02/capture-decran-2026-02-25-a-06-32-44-1024x476.png" alt="" class="wp-image-23593"/></figure>
<!-- /wp:image -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Want to give it a try?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><strong>Even in version 0.0.5, the Vinext project looks promising</strong>. The build is fast, deployment works — now it’s time to challenge its Next.js compatibility to verify that it truly delivers, beyond the case of a simple application. The project is experimental, but it deserves close attention.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Deployment on Clever Cloud is immediate</strong>. One environment variable for the build, automatic Bun detection, and you’re in production. No Dockerfile, no CI/CD pipeline to configure. If your application listens on port 8080, it runs. You can even add Varnish cache, authentication, or other features <a href="https://www.clever.cloud/developers/doc/develop/request-flow/">via the Request Flow</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>AI accelerates exploration</strong>. When facing a brand-new technology, having an assistant capable of reading documentation, writing code, and managing deployment in real time helps create proofs of concept (PoCs) and early iterations. We have put many initiatives in place to facilitate this, from our documentation automatically <a href="https://www.clever.cloud/developers/changelog/2025/12-17-images-update/#static-web-server-for-llmstxt">served in Markdown</a>, with an <a href="https://www.clever.cloud/developers/llms.txt">LLMs.txt</a>, <a href="https://github.com/CleverCloud/clever-tools/tree/master/skills/clever-tools">a Skill, and a reference doc for the Clever Tools</a>. Feel free to explore these possibilities and <a href="https://github.com/CleverCloud/Community/discussions">share your feedback with us</a> — it will help us continue improving Clever Cloud and making developers’ lives easier, according to their needs.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The source code of the demonstration used in this project is available on <a href="https://github.com/CleverCloud/vinext-example">GitHub</a>. If you have <a href="https://console.clever-cloud.com/ticket-center-choice">any questions</a>, our team is available to support you.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="2500" height="1109" src="https://cdn.clever-cloud.com/uploads/2026/02/2026-02-25-clever-cloud-banniere-blog-vinext-en.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="2026 02 25 clever cloud banniere blog vinext en" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2026/02/2026-02-25-clever-cloud-banniere-blog-vinext-en.png 2500w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-25-clever-cloud-banniere-blog-vinext-en-300x133.png 300w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-25-clever-cloud-banniere-blog-vinext-en-1024x454.png 1024w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-25-clever-cloud-banniere-blog-vinext-en-768x341.png 768w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-25-clever-cloud-banniere-blog-vinext-en-1536x681.png 1536w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-25-clever-cloud-banniere-blog-vinext-en-2048x908.png 2048w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-25-clever-cloud-banniere-blog-vinext-en-1368x607.png 1368w" sizes="auto, (max-width: 2500px) 100vw, 2500px" /></p><!-- wp:paragraph -->
<p>Cloudflare has just announced Vinext, a drop-in replacement for Next.js built on Vite. The project is vibecoded, experimental, but the promise is compelling: builds up to 4x faster, bundles 57% lighter, and 94% coverage of the Next.js API. We wanted to see how easy it would be to deploy it on Clever Cloud.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>If you develop with Next.js, you know its strengths, but also its frustrations: sometimes slow builds, heavy bundles, and an ecosystem that can feel locked in. <a href="https://github.com/cloudflare/vinext" type="link" id="https://github.com/cloudflare/vinext">Vinext</a> takes the approach of (<a href="https://github.com/cloudflare/vinext?tab=readme-ov-file#api-coverage">almost</a>) reimplementing everything — routing, server rendering, React Server Components, server actions, middleware — as a Vite plugin.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In practical terms, your existing Next.js code should work as-is. Your app/ and pages/ folders, your next.config.js: everything should be compatible. You just replace next with vinext in your scripts. While Cloudflare naturally highlights deployment on Workers, Vinext is not tied to their infrastructure. 95% of the code is pure Vite. The vinext start command launches a standard Node.js server, deployable anywhere. Including on our platform.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Deploying Vinext on Clever Cloud: as easy as it gets</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>There is no specific adaptation required. You simply need an application in a local Git repository, or a GitHub account linked to your Clever Cloud account, and push your code into a <a href="https://www.clever.cloud/product/node-js-applications/">Node.js</a>/Bun application. In our example, we used Bun, which is automatically detected and used.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>So, if you have the Clever Tools and Git installed on your machine, all you need to do is:</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash"># Clone the example repository 
git clone https://github.com/CleverCloud/vinext-example 
cd vinext-example

# Create the application, deploy it, open it in your browser
clever create -t node 
clever deploy 
clever open</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>That’s it. You get an application with a fully configured and up-to-date instance, a domain, and its SSL certificate already set up. Of course, you can easily change it and, with just a few settings, commands, or clicks in our Console, deploy this application in other countries through the infrastructures of our partners such as Ionos or OVHcloud, adjust the number or size of instances, and more.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">An application created and deployed with AI</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>One of the goals of this project was also to see how far we could go by having a tool like Claude Code build and deploy this application by simply providing it with a few elements: <a href="https://blog.cloudflare.com/vinext/">the Vinext announcement blog post</a> and the Node.js/Bun <a href="https://www.clever.cloud/developers/doc/applications/nodejs/">deployment documentation for Clever Cloud</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"lightbox":{"enabled":true},"id":23592,"sizeSlug":"large","linkDestination":"none","align":"wide"} -->
<figure class="wp-block-image alignwide size-large"><img src="https://cdn.clever-cloud.com/uploads/2026/02/capture-decran-2026-02-25-a-06-30-33-1024x476.png" alt="" class="wp-image-23592"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Overall, it went quite well. Between the initial prompt and the first production deployment of the application, only a few minutes passed.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Of course, not everything was perfect. Since Claude did not know Vinext, it initially added Next.js as a dependency to the project, and we had to ask it to remove it. We also suggested an optimization for running the build command, which it had triggered using the pre-run hook instead of post-build (right after downloading dependencies). We eventually defined it as a post-install script in the package.json. This change allows us to keep the full application in the build cache and therefore start a complete application, isolated in a virtual machine, in 15–20 seconds (30–40 seconds with the build).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>For the rest, Claude Code read and analyzed the provided documentation, created the project, identified the correct Clever Tools options to create the application, and iterated on the demo page design based on our recommendations.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>All of this happened in an interactive conversation where each choice could be discussed and adjusted. The AI proposes, the developer decides — it’s teamwork, made easier by the broad compatibility and speed of the Clever Cloud platform. Even part of this blog post was written that way. Can you guess which part?</p>
<!-- /wp:paragraph -->

<!-- wp:image {"lightbox":{"enabled":true},"id":23593,"sizeSlug":"large","linkDestination":"none","align":"wide"} -->
<figure class="wp-block-image alignwide size-large"><img src="https://cdn.clever-cloud.com/uploads/2026/02/capture-decran-2026-02-25-a-06-32-44-1024x476.png" alt="" class="wp-image-23593"/></figure>
<!-- /wp:image -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Want to give it a try?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><strong>Even in version 0.0.5, the Vinext project looks promising</strong>. The build is fast, deployment works — now it’s time to challenge its Next.js compatibility to verify that it truly delivers, beyond the case of a simple application. The project is experimental, but it deserves close attention.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>Deployment on Clever Cloud is immediate</strong>. One environment variable for the build, automatic Bun detection, and you’re in production. No Dockerfile, no CI/CD pipeline to configure. If your application listens on port 8080, it runs. You can even add Varnish cache, authentication, or other features <a href="https://www.clever.cloud/developers/doc/develop/request-flow/">via the Request Flow</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><strong>AI accelerates exploration</strong>. When facing a brand-new technology, having an assistant capable of reading documentation, writing code, and managing deployment in real time helps create proofs of concept (PoCs) and early iterations. We have put many initiatives in place to facilitate this, from our documentation automatically <a href="https://www.clever.cloud/developers/changelog/2025/12-17-images-update/#static-web-server-for-llmstxt">served in Markdown</a>, with an <a href="https://www.clever.cloud/developers/llms.txt">LLMs.txt</a>, <a href="https://github.com/CleverCloud/clever-tools/tree/master/skills/clever-tools">a Skill, and a reference doc for the Clever Tools</a>. Feel free to explore these possibilities and <a href="https://github.com/CleverCloud/Community/discussions">share your feedback with us</a> — it will help us continue improving Clever Cloud and making developers’ lives easier, according to their needs.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The source code of the demonstration used in this project is available on <a href="https://github.com/CleverCloud/vinext-example">GitHub</a>. If you have <a href="https://console.clever-cloud.com/ticket-center-choice">any questions</a>, our team is available to support you.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>New IAM feature: what our Managed Keycloak offers today</title>
		<link>https://www.clever.cloud/blog/engineering/2026/02/20/new-features-iam-managed-keycloak/</link>
		
		<dc:creator><![CDATA[Carine Guillemet]]></dc:creator>
		<pubDate>Fri, 20 Feb 2026 09:53:10 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[fonctionnalité]]></category>
		<guid isPermaLink="false">https://www.clever.cloud/?p=23458</guid>

					<description><![CDATA[<p><img width="1600" height="710" src="https://cdn.clever-cloud.com/uploads/2026/02/2026-02-16-clever-cloud-banniere-blog-keycloak-manage-fr-2.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="2026 02 16 clever cloud banniere blog keycloak manage fr 2" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2026/02/2026-02-16-clever-cloud-banniere-blog-keycloak-manage-fr-2.png 1600w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-16-clever-cloud-banniere-blog-keycloak-manage-fr-2-300x133.png 300w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-16-clever-cloud-banniere-blog-keycloak-manage-fr-2-1024x454.png 1024w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-16-clever-cloud-banniere-blog-keycloak-manage-fr-2-768x341.png 768w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-16-clever-cloud-banniere-blog-keycloak-manage-fr-2-1536x682.png 1536w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-16-clever-cloud-banniere-blog-keycloak-manage-fr-2-1368x607.png 1368w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></p><!-- wp:paragraph -->
<p>Identity and Access Management (IAM) has become a central component of any modern architecture. Authentication, user management, access control, regulatory compliance: these building blocks are critical, yet their implementation and long-term operation often remain complex.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>To address these challenges, Clever Cloud launched IAM <a href="https://www.clever.cloud/product/managed-keycloak-as-a-service/" type="link" id="https://www.clever.cloud/product/managed-keycloak-as-a-service/">Keycloak as a Service </a>in spring 2025, in <strong>partnership with <a href="https://please-open.it" type="link" id="https://please-open.it">Please Open It</a></strong>, a company specialized in Keycloak integration and expertise. This collaboration made it possible to design a managed service aligned both with open source best practices and with the real-world constraints of production environments.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Since its launch, Keycloak as a Service has evolved significantly to meet the concrete needs of businesses and the requirements of operating IAM at scale.</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://console.clever-cloud.com">Try Keycloak</a></div>
<!-- /wp:button -->

<!-- wp:button {"className":"is-style-outline"} -->
<div class="wp-block-button is-style-outline"><a class="wp-block-button__link wp-element-button" href="https://www.clever.cloud/contact/">Contact sales</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">A Managed Keycloak, Built for Production</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Keycloak as a Service is based on a simple approach: delivering the full functional richness of Keycloak without requiring teams to handle infrastructure, maintenance, or monitoring.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The service is natively integrated into the Clever Cloud Console. It therefore becomes a fully-fledged component of the platform, managed from a single control point, just like our other managed services.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading"><strong>Secured Multi Instances: High Availability and Scalability</strong></h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>One of the major evolutions is Secured Multi Instances. It enables Keycloak to be deployed in a clustered setup with multiple nodes, ensuring load distribution and high availability for a critical component such as IAM.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>This architecture strengthens service continuity and the ability to handle increased traffic, while meeting the standards expected in production environments. Configuration and management of this architecture are directly accessible from the Clever Cloud Console.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading"><strong>A Dedicated Dashboard in the Console</strong></h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>A <strong>Keycloak dashboard</strong> is now available in the Clever Cloud Console. It centralizes the service’s essential information along with common administrative actions, making day-to-day management simpler and avoiding the need to juggle multiple tools.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":23459,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2026/02/keycloak-dashboard-1024x630.webp" alt="" class="wp-image-23459"/></figure>
<!-- /wp:image -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading"><strong>Built-in Monitoring, Included</strong></h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><strong>Monitoring is natively integrated</strong> into the service. Operational visibility is immediately available, with no additional configuration or external tools required.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>This integrated approach simplifies operations while maintaining a high level of control over how your IAM runs.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading"><strong>Continuous Maintenance and Updates</strong></h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Managed Keycloak is <strong>kept up to date</strong>. Recent Keycloak versions are made available as the product evolves, with no operational burden on the customer side.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>This ensures access to security patches and functional improvements without heavy or risky upgrade projects.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading"><strong>Simplified addition to your applications</strong></h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>A more structural development concerns <a href="https://www.clever.cloud/developers/doc/develop/request-flow/" type="link" id="https://www.clever.cloud/developers/doc/develop/request-flow/"><strong>Request Flow</strong>,</a> a technical foundation that makes it easier to use tools to secure access to your applications, including <strong>OAuth2-Proxy</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The latter is compatible with&nbsp;<strong>Keycloak</strong>, and its configuration is simplified on&nbsp;<strong>Clever Cloud</strong>. This allows you to implement authentication upstream of the application without modifying the application code. It is particularly well-suited for securing existing applications, back-offices, internal tools, or exposed services.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">To Go Further</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>To present these evolutions in detail, share the technical choices behind them, and answer questions, a <strong>live session on <a href="https://www.twitch.tv/clevercloud?lang=fr">Twitch</a> and <a href="https://youtube.com/live/Jo-Njxsxq-8">YouTube</a> is scheduled for February 26 at 1:00 PM</strong>. It will be hosted by <strong>Horacio Gonzalez </strong>(Clever Cloud), joined by <strong>Mathieu Passenaud</strong> (Please Open It).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>It will be an opportunity to take a concrete look at how our managed Keycloak works and to discuss real-world IAM use cases in production environments.</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1600" height="710" src="https://cdn.clever-cloud.com/uploads/2026/02/2026-02-16-clever-cloud-banniere-blog-keycloak-manage-fr-2.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="2026 02 16 clever cloud banniere blog keycloak manage fr 2" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2026/02/2026-02-16-clever-cloud-banniere-blog-keycloak-manage-fr-2.png 1600w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-16-clever-cloud-banniere-blog-keycloak-manage-fr-2-300x133.png 300w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-16-clever-cloud-banniere-blog-keycloak-manage-fr-2-1024x454.png 1024w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-16-clever-cloud-banniere-blog-keycloak-manage-fr-2-768x341.png 768w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-16-clever-cloud-banniere-blog-keycloak-manage-fr-2-1536x682.png 1536w, https://cdn.clever-cloud.com/uploads/2026/02/2026-02-16-clever-cloud-banniere-blog-keycloak-manage-fr-2-1368x607.png 1368w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></p><!-- wp:paragraph -->
<p>Identity and Access Management (IAM) has become a central component of any modern architecture. Authentication, user management, access control, regulatory compliance: these building blocks are critical, yet their implementation and long-term operation often remain complex.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>To address these challenges, Clever Cloud launched IAM <a href="https://www.clever.cloud/product/managed-keycloak-as-a-service/" type="link" id="https://www.clever.cloud/product/managed-keycloak-as-a-service/">Keycloak as a Service </a>in spring 2025, in <strong>partnership with <a href="https://please-open.it" type="link" id="https://please-open.it">Please Open It</a></strong>, a company specialized in Keycloak integration and expertise. This collaboration made it possible to design a managed service aligned both with open source best practices and with the real-world constraints of production environments.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Since its launch, Keycloak as a Service has evolved significantly to meet the concrete needs of businesses and the requirements of operating IAM at scale.</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://console.clever-cloud.com">Try Keycloak</a></div>
<!-- /wp:button -->

<!-- wp:button {"className":"is-style-outline"} -->
<div class="wp-block-button is-style-outline"><a class="wp-block-button__link wp-element-button" href="https://www.clever.cloud/contact/">Contact sales</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">A Managed Keycloak, Built for Production</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Keycloak as a Service is based on a simple approach: delivering the full functional richness of Keycloak without requiring teams to handle infrastructure, maintenance, or monitoring.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The service is natively integrated into the Clever Cloud Console. It therefore becomes a fully-fledged component of the platform, managed from a single control point, just like our other managed services.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading"><strong>Secured Multi Instances: High Availability and Scalability</strong></h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>One of the major evolutions is Secured Multi Instances. It enables Keycloak to be deployed in a clustered setup with multiple nodes, ensuring load distribution and high availability for a critical component such as IAM.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>This architecture strengthens service continuity and the ability to handle increased traffic, while meeting the standards expected in production environments. Configuration and management of this architecture are directly accessible from the Clever Cloud Console.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading"><strong>A Dedicated Dashboard in the Console</strong></h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>A <strong>Keycloak dashboard</strong> is now available in the Clever Cloud Console. It centralizes the service’s essential information along with common administrative actions, making day-to-day management simpler and avoiding the need to juggle multiple tools.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":23459,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2026/02/keycloak-dashboard-1024x630.webp" alt="" class="wp-image-23459"/></figure>
<!-- /wp:image -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading"><strong>Built-in Monitoring, Included</strong></h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><strong>Monitoring is natively integrated</strong> into the service. Operational visibility is immediately available, with no additional configuration or external tools required.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>This integrated approach simplifies operations while maintaining a high level of control over how your IAM runs.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading"><strong>Continuous Maintenance and Updates</strong></h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Managed Keycloak is <strong>kept up to date</strong>. Recent Keycloak versions are made available as the product evolves, with no operational burden on the customer side.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>This ensures access to security patches and functional improvements without heavy or risky upgrade projects.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading"><strong>Simplified addition to your applications</strong></h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>A more structural development concerns <a href="https://www.clever.cloud/developers/doc/develop/request-flow/" type="link" id="https://www.clever.cloud/developers/doc/develop/request-flow/"><strong>Request Flow</strong>,</a> a technical foundation that makes it easier to use tools to secure access to your applications, including <strong>OAuth2-Proxy</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The latter is compatible with&nbsp;<strong>Keycloak</strong>, and its configuration is simplified on&nbsp;<strong>Clever Cloud</strong>. This allows you to implement authentication upstream of the application without modifying the application code. It is particularly well-suited for securing existing applications, back-offices, internal tools, or exposed services.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">To Go Further</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>To present these evolutions in detail, share the technical choices behind them, and answer questions, a <strong>live session on <a href="https://www.twitch.tv/clevercloud?lang=fr">Twitch</a> and <a href="https://youtube.com/live/Jo-Njxsxq-8">YouTube</a> is scheduled for February 26 at 1:00 PM</strong>. It will be hosted by <strong>Horacio Gonzalez </strong>(Clever Cloud), joined by <strong>Mathieu Passenaud</strong> (Please Open It).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>It will be an opportunity to take a concrete look at how our managed Keycloak works and to discuss real-world IAM use cases in production environments.</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Materia KV: our easy-to-use serverless key-value database is available to all</title>
		<link>https://www.clever.cloud/blog/features/2024/06/11/materia-kv-our-easy-to-use-serverless-key-value-database-is-available-to-all/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Tue, 11 Jun 2024 11:37:46 +0000</pubDate>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[release]]></category>
		<guid isPermaLink="false">https://www.clever-cloud.com/?p=12497</guid>

					<description><![CDATA[<p><img width="1600" height="800" src="https://cdn.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="materia kv alpha publique en" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en.png 1600w, https://cdn.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-300x150.png 300w, https://cdn.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-1024x512.png 1024w, https://cdn.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-768x384.png 768w, https://cdn.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-1536x768.png 1536w, https://cdn.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-1368x684.png 1368w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></p><!-- wp:paragraph -->
<p>They “push” their code, and we deploy it, while ensuring that the environment in which they operate is kept up to date and secure, with one clear objective: maintaining it in operational condition. Whatever the situation, their service responds.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Designing simple, robust and innovative services</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>We do this whilst minimizing the footprint on our servers, offering on-demand or automatic horizontal/vertical scaling. This means we can multiply instances or scale them up / down according to the load of your sites. This commitment to simplicity extends beyond applications, as we also offer a wide range of “as-a-service” database (DB) services, enabling you to deploy <a href="https://www.clever.cloud/product/mongodb/">MongoDB</a>, <a href="https://www.clever.cloud/product/mysql/">MySQL</a>, <a href="https://www.clever.cloud/product/postgresql/">PostgreSQL</a> or <a href="https://www.clever.cloud/product/redis/">Redis</a> environments in a matter of seconds, with the same tools and guarantees.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>However, over the past few years, we faced a number of recurring requests: not only did some of our customers wish to access other services, but they also regularly asked to take benefit of our infrastructure, spread over three datacenters, to obtain high-availability services. But when it comes to DB, this isn't always easy to implement while ensuring a high level of automation and data consistency. So we decided to develop our own range of products to achieve this.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The “<a href="https://www.clever.cloud/materia/">Materia</a>” project was born, based on the <a href="https://www.foundationdb.org/" target="_blank" rel="noreferrer noopener">FoundationDB</a> open-source transactional engine used, for example, by <a href="https://www.apple.com/" target="_blank" rel="noreferrer noopener">Apple</a> for its iCloud services and by <a href="https://www.snowflake.com/en/" target="_blank" rel="noreferrer noopener">Snowflake</a>. We're contributing to it and adapting it to our needs, while taking advantage of its distributed and resilient aspect, notably due to its significant <a href="https://apple.github.io/foundationdb/testing.html" target="_blank" rel="noreferrer noopener">simulation</a> capacity. It allows us to imagine a whole universe of serverless services, very simple to use, invoiced on a pay-per-use basis, with compatibility layers we're developing to enable our customers to “talk” to it using existing protocols such as GraphQL or PostgreSQL, for example.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Materia KV available to all</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>We started with the Redis protocol to introduce Materia KV, <strong>currently in Alpha testing phase</strong>. It's a key-value database synchronously replicated across our three Paris datacenters. When our servers respond, your data has been written three times. Above all, it's very easy to use: go to our <a href="https://console.clever-cloud.com">Console</a>, create a Materia KV add-on, and you'll instantly obtain a token that can be used with any Redis client or by sending commands to our servers directly through the TCP protocol.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Thus, you can now benefit from a high-availability, key-value data storage solution, without having to configure a single instance, and with no minimum monthly fee: you simply pay for what you use. Above all, we provide this service with compatibility to existing protocols. Today Redis, tomorrow GraphQL. The list of supported commands is available <a href="https://developers.clever-cloud.com/doc/addons/materia-kv/#supported-types-and-commands">here</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Launched at <a href="https://www.clever.cloud/blog/company/2024/04/16/materiadb-kv-materia-functions/">Devoxx France mid-April</a>, Materia KV made a big splash on site and during our demonstrations since then. We've therefore decided to make it available to all, to enable our customers and the interested public to give us feedback on how it works for them, and what their needs are. While billing will be on a per-use basis starting with the Beta phase, right now it's free! So give it a try and <a href="https://github.com/CleverCloud/Community/discussions/categories/materia" target="_blank" rel="noreferrer noopener">let us know what you think</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"}} -->
<div class="wp-block-buttons"><!-- wp:button {"className":"is-style-outline"} -->
<div class="wp-block-button is-style-outline"><a class="wp-block-button__link wp-element-button" href="https://console.clever-cloud.com/users/me/addons/new" target="_blank" rel="noreferrer noopener">Create a Materia KV add-on</a></div>
<!-- /wp:button -->

<!-- wp:button {"className":"is-style-outline"} -->
<div class="wp-block-button is-style-outline"><a class="wp-block-button__link wp-element-button" href="https://developers.clever-cloud.com/doc/addons/materia-kv/" target="_blank" rel="noreferrer noopener">Materia KV documentation</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Already built-in our tools and interfaces</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Materia KV is of course available as an addon-provider in <a href="https://developers.clever-cloud.com/api/">our API</a>, <a href="https://registry.terraform.io/providers/CleverCloud/clevercloud/latest/docs" target="_blank" rel="noreferrer noopener">Terraform</a> (or OpenTofu, for example), but also in our CLI, <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a>. To create an access token, simply run the following command:</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever addon create kv NAME</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>This add-on can be linked directly to a Clever Cloud application, injecting its environment variables. But you can also use it from any third-party service, command-line client (CLI) or with graphical user interface (GUI).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>While Materia KV and its various interfaces will be developed over time, we've started to think about integrating it into Clever Tools. A test branch, available <a href="https://github.com/CleverCloud/clever-tools/pull/725" target="_blank" rel="noreferrer noopener">as a binary</a> and <a href="https://github.com/CleverCloud/clever-tools/blob/davlgd-embedded-kv-client/docs/kv.md" target="_blank" rel="noreferrer noopener">documented</a>, offers a clever <code>kv command</code>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>With it, you can directly send requests to Materia KV by having the environment variable configured locally, or by specifying an ID in your commands:</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash"># With Bash and Zsh
source <(clever addon env ADDON_ID --export)
# With Fish
clever addon env ADDON_ID --export | source

clever kv PING # PONG
clever kv set yourKey theValue
clever kv get yourKey</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>As this demo version doesn't handle all the commands managed by Materia KV, you can send a “raw” command and it will return the answer :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever kv redis_raw 'hset key field1 value1 field2 value2' # 2
clever kv redis_raw 'hget key field2'                      # value2
clever kv redis_raw 'hgetall key'                          # the full hash</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>To demonstrate the possibilities of such integration, you also have the option of directly querying a JSON object stored in a key :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever kv set simpleJson '{"key": "value"}' # the set data
clever kv getJson simpleJson key            # value
clever kv set jsonKey '[{"key": "value"}, {"bigKey": {"subKey1": "subValue1","subKey2": "subValue2"}}]'
clever kv getjson jsonKey bigKey.subKey2    # subValue1
clever kv getjson jsonKey ''                # the full JSON</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>To show just how simple such implementations can be, we've written a Materia KV client <a href="https://github.com/CleverCloud/mkv-go-cli" target="_blank" rel="noreferrer noopener">in Go</a> using Go-Redis. If you'd rather understand how you can send commands and receive responses from Materia KV directly in TCP, you'll find examples in both <a href="https://github.com/CleverCloud/mkv-raw-tcp-v" target="_blank" rel="noreferrer noopener">V</a> or <a href="https://github.com/CleverCloud/mkv-raw-tcp-ruby" target="_blank" rel="noreferrer noopener">Ruby</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Feel free to create your own and let us know ;)</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">A demonstration of Materia KV on Twitch, a community space</h2>
<!-- /wp:heading -->

<!-- wp:image {"id":12691,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2024/06/2024-06-05--clever-cloud--twitch--thumbnail--materia-kv--en-1024x576.png" alt="" class="wp-image-12691"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Want to find out more? Horacio González, our head of DevRel, will be giving a demonstration <a href="https://www.twitch.tv/clevercloud" target="_blank" rel="noreferrer noopener">on Twitch</a> on Tuesday June 18 at 13h15 (Paris Time). Pierre Zemb, creator of Materia at Clever Cloud, will also be discussing with our CTO Steven Le Roux in a video published at the end of June on <a href="https://www.youtube.com/c/Clevercloud-platform" target="_blank" rel="noreferrer noopener">Clever Cloud's YouTube channel</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>And to share your views, questions and requirements, go to the Materia-dedicated section of our <a href="https://github.com/CleverCloud/Community/discussions/categories/materia" target="_blank" rel="noreferrer noopener">GitHub community space</a>.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1600" height="800" src="https://cdn.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="materia kv alpha publique en" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en.png 1600w, https://cdn.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-300x150.png 300w, https://cdn.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-1024x512.png 1024w, https://cdn.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-768x384.png 768w, https://cdn.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-1536x768.png 1536w, https://cdn.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-1368x684.png 1368w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></p><!-- wp:paragraph -->
<p>They “push” their code, and we deploy it, while ensuring that the environment in which they operate is kept up to date and secure, with one clear objective: maintaining it in operational condition. Whatever the situation, their service responds.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Designing simple, robust and innovative services</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>We do this whilst minimizing the footprint on our servers, offering on-demand or automatic horizontal/vertical scaling. This means we can multiply instances or scale them up / down according to the load of your sites. This commitment to simplicity extends beyond applications, as we also offer a wide range of “as-a-service” database (DB) services, enabling you to deploy <a href="https://www.clever.cloud/product/mongodb/">MongoDB</a>, <a href="https://www.clever.cloud/product/mysql/">MySQL</a>, <a href="https://www.clever.cloud/product/postgresql/">PostgreSQL</a> or <a href="https://www.clever.cloud/product/redis/">Redis</a> environments in a matter of seconds, with the same tools and guarantees.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>However, over the past few years, we faced a number of recurring requests: not only did some of our customers wish to access other services, but they also regularly asked to take benefit of our infrastructure, spread over three datacenters, to obtain high-availability services. But when it comes to DB, this isn't always easy to implement while ensuring a high level of automation and data consistency. So we decided to develop our own range of products to achieve this.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The “<a href="https://www.clever.cloud/materia/">Materia</a>” project was born, based on the <a href="https://www.foundationdb.org/" target="_blank" rel="noreferrer noopener">FoundationDB</a> open-source transactional engine used, for example, by <a href="https://www.apple.com/" target="_blank" rel="noreferrer noopener">Apple</a> for its iCloud services and by <a href="https://www.snowflake.com/en/" target="_blank" rel="noreferrer noopener">Snowflake</a>. We're contributing to it and adapting it to our needs, while taking advantage of its distributed and resilient aspect, notably due to its significant <a href="https://apple.github.io/foundationdb/testing.html" target="_blank" rel="noreferrer noopener">simulation</a> capacity. It allows us to imagine a whole universe of serverless services, very simple to use, invoiced on a pay-per-use basis, with compatibility layers we're developing to enable our customers to “talk” to it using existing protocols such as GraphQL or PostgreSQL, for example.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Materia KV available to all</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>We started with the Redis protocol to introduce Materia KV, <strong>currently in Alpha testing phase</strong>. It's a key-value database synchronously replicated across our three Paris datacenters. When our servers respond, your data has been written three times. Above all, it's very easy to use: go to our <a href="https://console.clever-cloud.com">Console</a>, create a Materia KV add-on, and you'll instantly obtain a token that can be used with any Redis client or by sending commands to our servers directly through the TCP protocol.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Thus, you can now benefit from a high-availability, key-value data storage solution, without having to configure a single instance, and with no minimum monthly fee: you simply pay for what you use. Above all, we provide this service with compatibility to existing protocols. Today Redis, tomorrow GraphQL. The list of supported commands is available <a href="https://developers.clever-cloud.com/doc/addons/materia-kv/#supported-types-and-commands">here</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Launched at <a href="https://www.clever.cloud/blog/company/2024/04/16/materiadb-kv-materia-functions/">Devoxx France mid-April</a>, Materia KV made a big splash on site and during our demonstrations since then. We've therefore decided to make it available to all, to enable our customers and the interested public to give us feedback on how it works for them, and what their needs are. While billing will be on a per-use basis starting with the Beta phase, right now it's free! So give it a try and <a href="https://github.com/CleverCloud/Community/discussions/categories/materia" target="_blank" rel="noreferrer noopener">let us know what you think</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"}} -->
<div class="wp-block-buttons"><!-- wp:button {"className":"is-style-outline"} -->
<div class="wp-block-button is-style-outline"><a class="wp-block-button__link wp-element-button" href="https://console.clever-cloud.com/users/me/addons/new" target="_blank" rel="noreferrer noopener">Create a Materia KV add-on</a></div>
<!-- /wp:button -->

<!-- wp:button {"className":"is-style-outline"} -->
<div class="wp-block-button is-style-outline"><a class="wp-block-button__link wp-element-button" href="https://developers.clever-cloud.com/doc/addons/materia-kv/" target="_blank" rel="noreferrer noopener">Materia KV documentation</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Already built-in our tools and interfaces</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Materia KV is of course available as an addon-provider in <a href="https://developers.clever-cloud.com/api/">our API</a>, <a href="https://registry.terraform.io/providers/CleverCloud/clevercloud/latest/docs" target="_blank" rel="noreferrer noopener">Terraform</a> (or OpenTofu, for example), but also in our CLI, <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a>. To create an access token, simply run the following command:</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever addon create kv NAME</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>This add-on can be linked directly to a Clever Cloud application, injecting its environment variables. But you can also use it from any third-party service, command-line client (CLI) or with graphical user interface (GUI).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>While Materia KV and its various interfaces will be developed over time, we've started to think about integrating it into Clever Tools. A test branch, available <a href="https://github.com/CleverCloud/clever-tools/pull/725" target="_blank" rel="noreferrer noopener">as a binary</a> and <a href="https://github.com/CleverCloud/clever-tools/blob/davlgd-embedded-kv-client/docs/kv.md" target="_blank" rel="noreferrer noopener">documented</a>, offers a clever <code>kv command</code>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>With it, you can directly send requests to Materia KV by having the environment variable configured locally, or by specifying an ID in your commands:</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash"># With Bash and Zsh
source <(clever addon env ADDON_ID --export)
# With Fish
clever addon env ADDON_ID --export | source

clever kv PING # PONG
clever kv set yourKey theValue
clever kv get yourKey</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>As this demo version doesn't handle all the commands managed by Materia KV, you can send a “raw” command and it will return the answer :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever kv redis_raw 'hset key field1 value1 field2 value2' # 2
clever kv redis_raw 'hget key field2'                      # value2
clever kv redis_raw 'hgetall key'                          # the full hash</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>To demonstrate the possibilities of such integration, you also have the option of directly querying a JSON object stored in a key :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="language-bash">clever kv set simpleJson '{"key": "value"}' # the set data
clever kv getJson simpleJson key            # value
clever kv set jsonKey '[{"key": "value"}, {"bigKey": {"subKey1": "subValue1","subKey2": "subValue2"}}]'
clever kv getjson jsonKey bigKey.subKey2    # subValue1
clever kv getjson jsonKey ''                # the full JSON</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>To show just how simple such implementations can be, we've written a Materia KV client <a href="https://github.com/CleverCloud/mkv-go-cli" target="_blank" rel="noreferrer noopener">in Go</a> using Go-Redis. If you'd rather understand how you can send commands and receive responses from Materia KV directly in TCP, you'll find examples in both <a href="https://github.com/CleverCloud/mkv-raw-tcp-v" target="_blank" rel="noreferrer noopener">V</a> or <a href="https://github.com/CleverCloud/mkv-raw-tcp-ruby" target="_blank" rel="noreferrer noopener">Ruby</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Feel free to create your own and let us know ;)</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">A demonstration of Materia KV on Twitch, a community space</h2>
<!-- /wp:heading -->

<!-- wp:image {"id":12691,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2024/06/2024-06-05--clever-cloud--twitch--thumbnail--materia-kv--en-1024x576.png" alt="" class="wp-image-12691"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Want to find out more? Horacio González, our head of DevRel, will be giving a demonstration <a href="https://www.twitch.tv/clevercloud" target="_blank" rel="noreferrer noopener">on Twitch</a> on Tuesday June 18 at 13h15 (Paris Time). Pierre Zemb, creator of Materia at Clever Cloud, will also be discussing with our CTO Steven Le Roux in a video published at the end of June on <a href="https://www.youtube.com/c/Clevercloud-platform" target="_blank" rel="noreferrer noopener">Clever Cloud's YouTube channel</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>And to share your views, questions and requirements, go to the Materia-dedicated section of our <a href="https://github.com/CleverCloud/Community/discussions/categories/materia" target="_blank" rel="noreferrer noopener">GitHub community space</a>.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Materia KV, Functions: discover the future of Clever Cloud at Devoxx Paris 2024</title>
		<link>https://www.clever.cloud/blog/company/2024/04/16/materiadb-kv-materia-functions/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Tue, 16 Apr 2024 11:37:00 +0000</pubDate>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Features]]></category>
		<guid isPermaLink="false">https://www.clever-cloud.com/?p=12175</guid>

					<description><![CDATA[<p><img width="1800" height="710" src="https://cdn.clever-cloud.com/uploads/2024/04/materia-en.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="materia en" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2024/04/materia-en.png 1800w, https://cdn.clever-cloud.com/uploads/2024/04/materia-en-300x118.png 300w, https://cdn.clever-cloud.com/uploads/2024/04/materia-en-1024x404.png 1024w, https://cdn.clever-cloud.com/uploads/2024/04/materia-en-768x303.png 768w, https://cdn.clever-cloud.com/uploads/2024/04/materia-en-1536x606.png 1536w, https://cdn.clever-cloud.com/uploads/2024/04/materia-en-1368x540.png 1368w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p><!-- wp:paragraph -->
<p>Clever Cloud was founded nearly fifteen years ago, out of a desire to innovate in the field of web hosting and deployment, by offering a reliable range of services in a simple, straightforward way. As a result, we became Europe's leading provider of PaaS services, attracting developers and key accounts alike.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>More importantly, we are unique in offering these solutions on our own infrastructure, as well as on-premise or through various partners around the world. We now do this with <a href="https://www.clever.cloud/fr/blog/entreprise/2024/03/22/clever-cloud-iso-27001/" target="_blank" rel="noreferrer noopener">ISO 9001 and 27001:2022 certification</a>, with HDS and SecNumCloud as our next targets.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Over the years, our company and its product range evolved and expanded. But we've never compromised with our original vocation: innovation. That's why, alongside the continuous improvement of our services, interfaces and integrations, we are massively investing in the development of our future, in solutions that will meet our customers' needs ever more effectively, and over which we have full control.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>This is where the independence and sovereignty of our offering comes in. That's why we've decided to build our own infrastructures, to choose a GNU/Linux system to which we actively contribute, and to use it on both our servers and our network equipment. It's also why we've spent the last few years developing<strong> a range of serverless, easy-to-use, pay-as-you-go products</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li><a href="https://www.clever.cloud/blog/company/2022/09/06/whats-clever-in-our-cloud/">What’s Clever in our cloud ?</a></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Clever Functions: WASM stands for compatibility and efficiency</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>To achieve this, we didn't hesitate to <strong>create our own</strong> low-level <strong>virtualization and function execution layer</strong>. We wanted to maintain our strong isolation criteria by setting up virtual machines that we activate as close as possible to the CPU. We also wanted to be able to achieve good performance while opening up to a wide range of languages, rather than simply relying on v8 at the risk of focusing almost exclusively on JavaScript.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>So we opted instead for a solution that leverages the capabilities of the <a href="https://webassembly.org/" target="_blank" rel="noreferrer noopener">WebAssembly</a> standard (WASM/WASI), which can be used with a wide range of languages, from Go to Zig as well as C, Rust or AssemblyScript... and of course JavaScript.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>After a successful first demo of our Tech Preview in Barcelona at the WASM.io conference last month, we<strong>'ll be demonstrating again at Devoxx Paris</strong>, which takes place at the Palais des Congrès from April 17 to 19. Feel free to come and talk to us about it, and let us know if you're interested in taking part in the next stages of development of this product, which will be progressively opened up over the course of the year.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Materia KV: our distributed, multi-protocol, serverless revolution</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Another major innovation from our team is the new Materia offering. To achieve this, <strong>we have designed our own serverless</strong> databases, built on the <a href="https://www.foundationdb.org/">F</a><a href="https://www.foundationdb.org/" target="_blank" rel="noreferrer noopener">o</a><a href="https://www.foundationdb.org/">undationDB</a> open source transactional engine, used, for example, by Apple for its iCloud services. We are also an active member of its community, participating in the development of its ecosystem.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Distributed and robust, notably thanks to its high <a href="https://apple.github.io/foundationdb/testing.html" target="_blank" rel="noreferrer noopener">simulation</a> capacity, it has enabled us to design and build a whole range of services to meet the different needs expressed by our customers in recent years. Our approach is always open and resilient, with deployment across multiple availability zones, compatibility with existing protocols and clients, and pay-as-you-go billing.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The first to be publicly announced is <strong>Materia KV, which, as its name suggests, is a key-value</strong> database. To create one within your Clever Cloud account, you have no instance size to choose, no storage capacity to worry about. We simply provide you with a host address, a port and a token (based on the <a href="https://www.biscuitsec.org/">Biscuit</a> technology to which we actively contribute), and you're ready to go!</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>You can then send us your keys and their contents. They will be synchronously replicated in our three Paris datacenters. So you don't have to set up any complex configurations to ensure high availability, or even activate any options. <strong>Materia KV is resilient by design</strong>! And it adapts to individual needs, as it's billed on a pay-as-you-go basis. It's the perfect solution for hobbyists, seasoned developers and key accounts alike.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Redis API compatibility… to start with</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>We didn't want this innovation to come at the cost of complex configuration, requiring the use of special clients and ORMs. That's why we'<strong>ve developed Materia KV's own compatibility layers</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>To "talk" to it, you don't need a special API or tools specific to Clever Cloud. <strong>You can use it with existing solutions for GraphQL or Redis</strong>. The latter is the first of the compatibility layers available in our test phase. It enables customers using a Redis instance for their application to migrate to Materia KV with just a few clicks in their interface or via <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>This solution will be <strong>publicly demonstrated for the first time at Devoxx Paris</strong>, which takes place at the Palais des Congrès from April 17 to 19. It will then be rapidly made available to all our customers in alpha. Feel free to come and talk to us about it, and the other serverless services we'll be offering later this year.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We'll also be demonstrating other upcoming new features, such as our <strong>Keycloak-as-a-Service</strong> solution in partnership with <a href="https://please-open.it/" target="_blank" rel="noreferrer noopener">Please Open It</a>, and celebrating the release of <strong><a href="https://github.com/sozu-proxy/sozu/releases/tag/1.0.0">version 1.0</a> of our in-house, open source load balancer, developed in Rust: SŌZU!</strong> </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>To keep up to date with our regular developments, be sure to follow <a href="https://developers.clever-cloud.com/changelog" target="_blank" rel="noreferrer noopener">our Changelog</a> (via <a href="https://developers.clever-cloud.com/changelog/index.xml" target="_blank" rel="noreferrer noopener">its RSS feed</a>), or this <a href="https://www.clever.cloud/blog/" rel="noreferrer noopener">blog</a>. But also follow us on <a href="https://www.linkedin.com/company/clever-cloud/mycompany/" target="_blank" rel="noreferrer noopener">LinkedIn</a> or <a href="https://twitter.com/clever_cloud" target="_blank" rel="noreferrer noopener">X/Twitter</a>.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1800" height="710" src="https://cdn.clever-cloud.com/uploads/2024/04/materia-en.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="materia en" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2024/04/materia-en.png 1800w, https://cdn.clever-cloud.com/uploads/2024/04/materia-en-300x118.png 300w, https://cdn.clever-cloud.com/uploads/2024/04/materia-en-1024x404.png 1024w, https://cdn.clever-cloud.com/uploads/2024/04/materia-en-768x303.png 768w, https://cdn.clever-cloud.com/uploads/2024/04/materia-en-1536x606.png 1536w, https://cdn.clever-cloud.com/uploads/2024/04/materia-en-1368x540.png 1368w" sizes="auto, (max-width: 1800px) 100vw, 1800px" /></p><!-- wp:paragraph -->
<p>Clever Cloud was founded nearly fifteen years ago, out of a desire to innovate in the field of web hosting and deployment, by offering a reliable range of services in a simple, straightforward way. As a result, we became Europe's leading provider of PaaS services, attracting developers and key accounts alike.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>More importantly, we are unique in offering these solutions on our own infrastructure, as well as on-premise or through various partners around the world. We now do this with <a href="https://www.clever.cloud/fr/blog/entreprise/2024/03/22/clever-cloud-iso-27001/" target="_blank" rel="noreferrer noopener">ISO 9001 and 27001:2022 certification</a>, with HDS and SecNumCloud as our next targets.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Over the years, our company and its product range evolved and expanded. But we've never compromised with our original vocation: innovation. That's why, alongside the continuous improvement of our services, interfaces and integrations, we are massively investing in the development of our future, in solutions that will meet our customers' needs ever more effectively, and over which we have full control.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>This is where the independence and sovereignty of our offering comes in. That's why we've decided to build our own infrastructures, to choose a GNU/Linux system to which we actively contribute, and to use it on both our servers and our network equipment. It's also why we've spent the last few years developing<strong> a range of serverless, easy-to-use, pay-as-you-go products</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li><a href="https://www.clever.cloud/blog/company/2022/09/06/whats-clever-in-our-cloud/">What’s Clever in our cloud ?</a></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Clever Functions: WASM stands for compatibility and efficiency</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>To achieve this, we didn't hesitate to <strong>create our own</strong> low-level <strong>virtualization and function execution layer</strong>. We wanted to maintain our strong isolation criteria by setting up virtual machines that we activate as close as possible to the CPU. We also wanted to be able to achieve good performance while opening up to a wide range of languages, rather than simply relying on v8 at the risk of focusing almost exclusively on JavaScript.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>So we opted instead for a solution that leverages the capabilities of the <a href="https://webassembly.org/" target="_blank" rel="noreferrer noopener">WebAssembly</a> standard (WASM/WASI), which can be used with a wide range of languages, from Go to Zig as well as C, Rust or AssemblyScript... and of course JavaScript.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>After a successful first demo of our Tech Preview in Barcelona at the WASM.io conference last month, we<strong>'ll be demonstrating again at Devoxx Paris</strong>, which takes place at the Palais des Congrès from April 17 to 19. Feel free to come and talk to us about it, and let us know if you're interested in taking part in the next stages of development of this product, which will be progressively opened up over the course of the year.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Materia KV: our distributed, multi-protocol, serverless revolution</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Another major innovation from our team is the new Materia offering. To achieve this, <strong>we have designed our own serverless</strong> databases, built on the <a href="https://www.foundationdb.org/">F</a><a href="https://www.foundationdb.org/" target="_blank" rel="noreferrer noopener">o</a><a href="https://www.foundationdb.org/">undationDB</a> open source transactional engine, used, for example, by Apple for its iCloud services. We are also an active member of its community, participating in the development of its ecosystem.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Distributed and robust, notably thanks to its high <a href="https://apple.github.io/foundationdb/testing.html" target="_blank" rel="noreferrer noopener">simulation</a> capacity, it has enabled us to design and build a whole range of services to meet the different needs expressed by our customers in recent years. Our approach is always open and resilient, with deployment across multiple availability zones, compatibility with existing protocols and clients, and pay-as-you-go billing.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The first to be publicly announced is <strong>Materia KV, which, as its name suggests, is a key-value</strong> database. To create one within your Clever Cloud account, you have no instance size to choose, no storage capacity to worry about. We simply provide you with a host address, a port and a token (based on the <a href="https://www.biscuitsec.org/">Biscuit</a> technology to which we actively contribute), and you're ready to go!</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>You can then send us your keys and their contents. They will be synchronously replicated in our three Paris datacenters. So you don't have to set up any complex configurations to ensure high availability, or even activate any options. <strong>Materia KV is resilient by design</strong>! And it adapts to individual needs, as it's billed on a pay-as-you-go basis. It's the perfect solution for hobbyists, seasoned developers and key accounts alike.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Redis API compatibility… to start with</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>We didn't want this innovation to come at the cost of complex configuration, requiring the use of special clients and ORMs. That's why we'<strong>ve developed Materia KV's own compatibility layers</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>To "talk" to it, you don't need a special API or tools specific to Clever Cloud. <strong>You can use it with existing solutions for GraphQL or Redis</strong>. The latter is the first of the compatibility layers available in our test phase. It enables customers using a Redis instance for their application to migrate to Materia KV with just a few clicks in their interface or via <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>This solution will be <strong>publicly demonstrated for the first time at Devoxx Paris</strong>, which takes place at the Palais des Congrès from April 17 to 19. It will then be rapidly made available to all our customers in alpha. Feel free to come and talk to us about it, and the other serverless services we'll be offering later this year.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We'll also be demonstrating other upcoming new features, such as our <strong>Keycloak-as-a-Service</strong> solution in partnership with <a href="https://please-open.it/" target="_blank" rel="noreferrer noopener">Please Open It</a>, and celebrating the release of <strong><a href="https://github.com/sozu-proxy/sozu/releases/tag/1.0.0">version 1.0</a> of our in-house, open source load balancer, developed in Rust: SŌZU!</strong> </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>To keep up to date with our regular developments, be sure to follow <a href="https://developers.clever-cloud.com/changelog" target="_blank" rel="noreferrer noopener">our Changelog</a> (via <a href="https://developers.clever-cloud.com/changelog/index.xml" target="_blank" rel="noreferrer noopener">its RSS feed</a>), or this <a href="https://www.clever.cloud/blog/" rel="noreferrer noopener">blog</a>. But also follow us on <a href="https://www.linkedin.com/company/clever-cloud/mycompany/" target="_blank" rel="noreferrer noopener">LinkedIn</a> or <a href="https://twitter.com/clever_cloud" target="_blank" rel="noreferrer noopener">X/Twitter</a>.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Announcing our new Ticket Center</title>
		<link>https://www.clever.cloud/blog/features/2022/05/19/announcing-our-new-ticket-center/</link>
		
		<dc:creator><![CDATA[Julie Nolot]]></dc:creator>
		<pubDate>Thu, 19 May 2022 06:34:43 +0000</pubDate>
				<category><![CDATA[Features]]></category>
		<guid isPermaLink="false">https://www.clever-cloud.com/?p=6444</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2022/05/ticket-center.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="ticket center" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2022/05/ticket-center.png 1400w, https://cdn.clever-cloud.com/uploads/2022/05/ticket-center-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2022/05/ticket-center-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2022/05/ticket-center-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2022/05/ticket-center-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph -->
<p>We are delighted to announce the arrival of our new support system: the Ticket Center. In order to continue to provide one of the best support services on the market, we remain attentive to our customers' feedback on our quality of service. In this context, we have received numerous requests to implement a system that better distinguishes each conversation.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We therefore considered how best to continue to provide a fast and quality service and the introduction of a ticketing system seemed to be the most appropriate solution to meet the needs and expectations of our users.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">What's new</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Ticket-oriented use</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Now, the platform usage is more "ticket" than "chat" oriented. This allows for a unique authentication of each request to ensure better follow-up.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Adding participants to the conversation</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>You can now choose to automatically add members of the relevant organisation when opening a ticket. This improves your Crisp experience by ensuring that the response from our support team is accessible to all your organisation team.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>When you open a ticket :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>If you are an admin, the other admins in the organisation will be added</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>If your role is different of admin, members of the organisation with the same role as you will be added</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:heading -->
<h2 class="wp-block-heading">How does the Ticket Center work?</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Accessing the Ticket Center from an organisation</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>We have integrated a new button "Contact support team" in the console, at the top of an organisation. It will allow you to open the Ticket Center directly in the context of the organisation you are in. This allows support to know at a glance which organisation you are opening a ticket for.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6543,"width":413,"height":287,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large is-resized"><img src="https://cdn.clever-cloud.com/uploads/2022/05/capture-decran-2022-05-05-a-14-51-07.png" alt="contact_support_team " class="wp-image-6543" style="width:413px;height:287px" width="413" height="287"/><figcaption class="wp-element-caption">"Contact support team" to access the Ticket Center</figcaption></figure>
<!-- /wp:image -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Accessing the Ticket Center from the console's main menu</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The button used until now, which was called "talk to a human" still exists, under the name "contact support". You can find it as before, at the bottom left of the main console menu. A "Select your organisation" page will then open to allow you to specify the organisation for which you wish to create a ticket.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6547,"width":327,"height":261,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large is-resized"><img src="https://cdn.clever-cloud.com/uploads/2022/05/capture-decran-2022-05-05-a-14-51-21.png" alt="contacter_un_humain_legacy" class="wp-image-6547" style="width:327px;height:261px" width="327" height="261"/><figcaption class="wp-element-caption">The "Contact support team" button,<br>formerly known as "talk to a human"</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"align":"center","id":6548,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/05/capture-decran-2022-05-05-a-14-58-56.png" alt="contexte_organisation" class="wp-image-6548"/><figcaption class="wp-element-caption">Select the organisation for wish you're opening your ticket</figcaption></figure>
<!-- /wp:image -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Create a ticket</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>When you open the Ticket Center, you will find the history of your previous tickets. Please note that all your previous chat conversations with support have been converted into a single ticket, so you will be able to access all your former discussions if required.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6551,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/05/historique-et-creation-de-ticket.png" alt="historique-et-creation-de-ticket" class="wp-image-6551"/><figcaption class="wp-element-caption">Ticket history</figcaption></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Here you can also: get information on the status of your request, view the associated conversation and open a new ticket.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6554,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/05/screenshot-2022-05-18-at-16-44-52.png" alt="créer_un_nouveau_ticket" class="wp-image-6554"/><figcaption class="wp-element-caption">Open a new ticket</figcaption></figure>
<!-- /wp:image -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Giving your feedback</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Once the ticket is closed, you will receive an email as usual to give your feedback, this is the time to give us your opinion on the service that was provided to you by the support.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6556,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/05/donner-son-avis-crisp.png" alt="donner_son_avis_crisp" class="wp-image-6556"/><figcaption class="wp-element-caption">Give your feedback</figcaption></figure>
<!-- /wp:image -->

<!-- wp:heading -->
<h2 class="wp-block-heading">What it allows</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>With the old way of working, conversations between support and a user often contained several different topics. Today, each request counts, in a unique way, which brings :&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Better follow-up of requests.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>A more collaborative tool, by allowing you to add participants to the conversation</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>A more efficient response thanks to the unique identification of each ticket.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>We are confident this new Ticket Center will allow us to continue to provide a fast and quality service. Feel free to contact us and give us your feedback and ideas regarding this new system.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2022/05/ticket-center.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="ticket center" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2022/05/ticket-center.png 1400w, https://cdn.clever-cloud.com/uploads/2022/05/ticket-center-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2022/05/ticket-center-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2022/05/ticket-center-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2022/05/ticket-center-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph -->
<p>We are delighted to announce the arrival of our new support system: the Ticket Center. In order to continue to provide one of the best support services on the market, we remain attentive to our customers' feedback on our quality of service. In this context, we have received numerous requests to implement a system that better distinguishes each conversation.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We therefore considered how best to continue to provide a fast and quality service and the introduction of a ticketing system seemed to be the most appropriate solution to meet the needs and expectations of our users.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">What's new</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Ticket-oriented use</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Now, the platform usage is more "ticket" than "chat" oriented. This allows for a unique authentication of each request to ensure better follow-up.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Adding participants to the conversation</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>You can now choose to automatically add members of the relevant organisation when opening a ticket. This improves your Crisp experience by ensuring that the response from our support team is accessible to all your organisation team.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>When you open a ticket :</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>If you are an admin, the other admins in the organisation will be added</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>If your role is different of admin, members of the organisation with the same role as you will be added</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:heading -->
<h2 class="wp-block-heading">How does the Ticket Center work?</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Accessing the Ticket Center from an organisation</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>We have integrated a new button "Contact support team" in the console, at the top of an organisation. It will allow you to open the Ticket Center directly in the context of the organisation you are in. This allows support to know at a glance which organisation you are opening a ticket for.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6543,"width":413,"height":287,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large is-resized"><img src="https://cdn.clever-cloud.com/uploads/2022/05/capture-decran-2022-05-05-a-14-51-07.png" alt="contact_support_team " class="wp-image-6543" style="width:413px;height:287px" width="413" height="287"/><figcaption class="wp-element-caption">"Contact support team" to access the Ticket Center</figcaption></figure>
<!-- /wp:image -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Accessing the Ticket Center from the console's main menu</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The button used until now, which was called "talk to a human" still exists, under the name "contact support". You can find it as before, at the bottom left of the main console menu. A "Select your organisation" page will then open to allow you to specify the organisation for which you wish to create a ticket.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6547,"width":327,"height":261,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large is-resized"><img src="https://cdn.clever-cloud.com/uploads/2022/05/capture-decran-2022-05-05-a-14-51-21.png" alt="contacter_un_humain_legacy" class="wp-image-6547" style="width:327px;height:261px" width="327" height="261"/><figcaption class="wp-element-caption">The "Contact support team" button,<br>formerly known as "talk to a human"</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"align":"center","id":6548,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/05/capture-decran-2022-05-05-a-14-58-56.png" alt="contexte_organisation" class="wp-image-6548"/><figcaption class="wp-element-caption">Select the organisation for wish you're opening your ticket</figcaption></figure>
<!-- /wp:image -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Create a ticket</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>When you open the Ticket Center, you will find the history of your previous tickets. Please note that all your previous chat conversations with support have been converted into a single ticket, so you will be able to access all your former discussions if required.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6551,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/05/historique-et-creation-de-ticket.png" alt="historique-et-creation-de-ticket" class="wp-image-6551"/><figcaption class="wp-element-caption">Ticket history</figcaption></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Here you can also: get information on the status of your request, view the associated conversation and open a new ticket.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6554,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/05/screenshot-2022-05-18-at-16-44-52.png" alt="créer_un_nouveau_ticket" class="wp-image-6554"/><figcaption class="wp-element-caption">Open a new ticket</figcaption></figure>
<!-- /wp:image -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Giving your feedback</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Once the ticket is closed, you will receive an email as usual to give your feedback, this is the time to give us your opinion on the service that was provided to you by the support.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":6556,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/05/donner-son-avis-crisp.png" alt="donner_son_avis_crisp" class="wp-image-6556"/><figcaption class="wp-element-caption">Give your feedback</figcaption></figure>
<!-- /wp:image -->

<!-- wp:heading -->
<h2 class="wp-block-heading">What it allows</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>With the old way of working, conversations between support and a user often contained several different topics. Today, each request counts, in a unique way, which brings :&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Better follow-up of requests.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>A more collaborative tool, by allowing you to add participants to the conversation</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>A more efficient response thanks to the unique identification of each ticket.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>We are confident this new Ticket Center will allow us to continue to provide a fast and quality service. Feel free to contact us and give us your feedback and ideas regarding this new system.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to deploy Keycloak on Clever Cloud</title>
		<link>https://www.clever.cloud/blog/features/2022/05/11/how-to-deploy-keycloak-on-clever-cloud/</link>
		
		<dc:creator><![CDATA[Antoine BLONDEAU]]></dc:creator>
		<pubDate>Wed, 11 May 2022 06:43:26 +0000</pubDate>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[Engineering]]></category>
		<guid isPermaLink="false">https://www.clever-cloud.com/?p=6138</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2022/04/banniere-keycloak.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="banniere keycloak" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2022/04/banniere-keycloak.png 1400w, https://cdn.clever-cloud.com/uploads/2022/04/banniere-keycloak-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2022/04/banniere-keycloak-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2022/04/banniere-keycloak-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2022/04/banniere-keycloak-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:html -->
<div style="background: #ffffff; padding: 1.5rem; border: 1px solid #deddee; border-radius: 4px; margin: auto auto 2rem auto; max-width: var(--wp--style--global--content-size, 710px);">
<div style="display: flex; align-items: center; gap: 1rem; margin-bottom: 1rem;"><span style="font-size: 2rem;">⚡</span>
<h4 style="margin: 0; color: #333; font-weight: bold;">Update Available</h4>
</div>
<p><strong>The process has been simplified!</strong> Check out our new Keycload add-on, easy deployment and additional features.</p>
<div class="push-documentation__content"><a class="button --white-border" href="https://www.clever.cloud/developers/doc/addons/keycloak/">🚀 Discover Keycloak add-on</a></div>
</div>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Keycloak is a modern and efficient way to deal with identity and access management. It allows for single sign-on, user federation across multiple user directories. It's also compliant with standard authentication protocols like OpenID Connect, OAuth2 or SAML. All details are available on its <a href="https://www.keycloak.org/">website</a>. This blogpost will go through steps to deploy Keycloack and Grafana on Clever Cloud.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">How to deploy Keycloak</h2>
<!-- /wp:heading -->

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

<!-- wp:paragraph -->
<p>Keycloak is written in Java, and gives a JAR file in their release, which means we will use a <a href="https://www.clever.cloud/developers/deploy/application/java/java-jar/">a JAVA runtime with a JAR deployment</a>. It also requires a <a href="https://www.postgresql.org/">PostgreSQL Database</a>, which means we will deploy a <a href="https://www.clever.cloud/developers/deploy/addon/postgresql/postgresql/">PostgreSQL addon</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Get lastest Keycloak release
wget https://github.com/keycloak/keycloak/releases/download/17.0.1/keycloak-17.0.1.zip

# Extract the archive
unzip keycloak-17.0.1.zip

# Go to the folder
cd keycloak-17.0.1

# Create the jar application
clever create --type jar keycloak-server
export KEYCLOAK_DOMAIN=$(clever domain | xargs)

# Create the PG addon
clever addon create postgresql-addon --plan s_sml --addon-version 10 keycloak-postgres

# Link the addon
clever service link-addon keycloak-postgres</code></pre>
<!-- /wp:html -->

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

<!-- wp:paragraph -->
<p>For now we will configure Keycloak through environment variables. Note that you can also do configure Keycloak through its CLI or through a file, as stated in its <a href="https://www.keycloak.org/server/configuration">documentation</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note:</strong> For the configuration through environment variables; the pattern to use is <code>KC_</code> and the uppercase name of any configuration key, separated by underscores.</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Export env for templating purpose
export $(clever env | sed '/^#/d;s/\"//g')

clever env set CC_JAR_PATH lib/quarkus-run.jar
clever env set CC_JAVA_VERSION 11
clever env set CC_RUN_COMMAND "bin/kc.sh start --auto-build"

clever env set KC_DB postgres
clever env set KC_DB_USERNAME $POSTGRESQL_ADDON_USER
clever env set KC_DB_PASSWORD $POSTGRESQL_ADDON_PASSWORD
clever env set KC_DB_URL "jdbc:postgresql://$POSTGRESQL_ADDON_HOST:$POSTGRESQL_ADDON_PORT/$POSTGRESQL_ADDON_DB"
clever env set KC_HOSTNAME $KEYCLOAK_DOMAIN
clever env set KC_HTTP_ENABLED true
clever env set KC_PROXY passthrough
clever env set KC_PROXY_ADDRESS_FORWARDING true
</code></pre>
<!-- /wp:html -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note: </strong>Consider setting KC_DB_POOL_MAX_SIZE at a lower value (default is 100) regarding the database size you ordered earlier. You can find the connection limit <a href="https://www.clever.cloud/pricing/#databases">here</a>. If you used the S_SML size that is in the command earlier, you can ignore this message. You can also fine tune the database connection pool using KC_DB_POOL_INITIAL_SIZE and KC_DB_POOL_MIN_SIZE</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:paragraph -->
<p>Now, you need to define KEYCLOAK_ADMIN and KEYCLOAK_ADMIN_PASSWORD :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever env set KEYCLOAK_ADMIN &lt;choose an admin username&gt;
clever env set KEYCLOAK_ADMIN_PASSWORD &lt;choose an admin password&gt;</code></pre>
<!-- /wp:html -->

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

<!-- wp:paragraph -->
<p>Deploy Keycloak on Clever Cloud:</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Init a git repository
git init

# Add your files
git add .

# Create the first commit
git commit -m "clever init"

# Deploy the application
clever deploy

# Open Keycloak in your browser
clever open</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Validate the configuration</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>You can follow the Keycloak documentation starting <a href="https://www.keycloak.org/getting-started/getting-started-zip#_create_a_realm">here</a> to ensure Keycloak works as expected. It will take you through a realm (tenant) creation, user creation and client creation/test.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Create an Initial Keycloak configuration</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>In the keycloak UI, ensure you create a Realm called "myrealm" (hover "Master" on the top left corner). Ensure the realm "<code>myrealm</code>" is selected.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p> Then, go to <em><strong>Users &gt; Add a User</strong></em>. Fill the Username, Email, First Name and Last Name fields, then hit <strong>save</strong>. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In the credentials tab of the user, add the password of your choice and <strong>deselect  "Temporary", the set password.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>You're all set.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">A real world scenario</h2>
<!-- /wp:heading -->

<!-- wp:image {"id":6184,"sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image size-full"><img src="https://cdn.clever-cloud.com/uploads/2022/04/giphy-1-1.webp" alt="" class="wp-image-6184"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Let's see how we can use Keycloak in the real world: as an SSO Proxy for Grafana, using Oauth 2.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Setup Grafana on Clever Cloud</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>If you need a in-depth guide on how to use or deploy Grafana please read this <a href="https://www.clever.cloud/blog/features/2021/10/28/a-grafana-to-plot-applications-metrics/">article</a>, the following is a helper to illustrate the usages of Keycloak.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Let's use the <a href="https://github.com/CleverCloud/grafana-example">grafana-example</a> on Clever Cloud's Github repository.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Clone the repository
git clone https://github.com/CleverCloud/grafana-example.git

# Enter the directory
cd grafana-example

# Create a NodeJS Application
clever create --type node grafana
export GRAFANA_DOMAIN=$(clever domain | xargs)

# Configure Grafana
clever env set GRAFANA_VERSION 8.5.2
clever env set GRAFANA_PLUGINS "grafana-worldmap-panel"
clever env set GF_PLUGIN_DIR ./data/plugins

clever env set GF_SERVER_HTTP_PORT 8080
clever env set GF_SERVER_ROOT_URL "https://$GRAFANA_DOMAIN"</code></pre>
<!-- /wp:html -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note: </strong>In this section you need to set the GRAFANA_SHA_256 variable yourself. You can find the SHA256SUM required <a href="https://grafana.com/grafana/download/8.5.2?pg=get&amp;plcmt=selfmanaged-box1-cta1&amp;edition=oss">here</a>, next to "Standalone Linux Binaries"</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever env set GRAFANA_SHA_256 &lt;SHA256SUM&gt;</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configure Keycloak for OAuth 2</h3>
<!-- /wp:heading -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note: </strong> In this section, you need to replace <code><code>$GRAFANA_DOMAIN</code></code> with the value you exported in the last section. You can find this value by running the following command: <code><code>clever domain</code></code></p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:paragraph -->
<p>In the Keyloak UI, Go to <strong><em>Configure &gt; Clients &gt; Create</em></strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Create a new client with these configurations:</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">Client ID: $GRAFANA_DOMAIN
Client Protocol: openid-connect
Root URL: https://$GRAFANA_DOMAIN</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Further make these configurations:</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">Access Type: confidentials // The OAuth client must use a client id and secret.
Root URL: ${authBaseUrl}
Valid Redirect URIs: https://$GRAFANA_DOMAIN/login/generic_oauth
Base URL: /login/generic_oauth</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Clear <strong>Admin URL</strong> and <strong>Web Origins</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Click save and open the <strong>Credentials</strong> tab. Copy the Secret into a separate note, we will need it in the second and third part of this tutorial.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Open the tab <strong>Roles</strong> and click <strong>Add Role</strong>. Create a new role with name <code>admin</code>. This role defines the access level for Grafana.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Head over to <strong>Scope</strong> tab and set <strong>Full Scope Allowed </strong>to <code>OFF</code>. We do not want to share any other details about the realm in the client token.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Then, we are going to configure a client mapper for the roles property. We must ensure that Grafana can extract the access role from the JWT token. Open the <strong>Mappers</strong> tab and click on <strong>Create</strong>. Create an entry with these options:</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">Name: Roles
Mapper Type: User Client Role
Client ID: $GRAFANA_DOMAIN
Token Claim Name: roles
Claim JSON type: string</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Finally, assign the client role to your Keycloak user: Go to<strong> </strong><em><strong>Users &gt; View All Users</strong></em> and click on the I<strong>D of your user</strong>. Click on the <strong>Role</strong> <strong>Mapping</strong> tab, then in the <strong>Client Roles</strong> selector, select <strong>$GRAFANA_DOMAIN</strong>. In the Available Roles section, select <code>admin</code> and click <strong>Add selected</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configure Grafana for OAuth 2</h3>
<!-- /wp:heading -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Configure appropriate env vars
clever env set GF_SERVER_DOMAIN $GRAFANA_DOMAIN
clever env set GF_SERVER_ROOT_URL "https://$GRAFANA_DOMAIN"
clever env set GF_AUTH_GENERIC_OAUTH_ENABLED true
clever env set GF_AUTH_GENERIC_OAUTH_NAME Keycloak
clever env set GF_AUTH_GENERIC_OAUTH_ALLOW_SIGN_UP true
clever env set GF_AUTH_GENERIC_OAUTH_CLIENT_ID $GRAFANA_DOMAIN

clever env set GF_AUTH_GENERIC_OAUTH_SCOPES profile
clever env set GF_AUTH_GENERIC_OAUTH_AUTH_URL "https://$KEYCLOAK_DOMAIN/realms/myrealm/protocol/openid-connect/auth"
clever env set GF_AUTH_GENERIC_OAUTH_TOKEN_URL "https://$KEYCLOAK_DOMAIN/realms/myrealm/protocol/openid-connect/token"
clever env set GF_AUTH_GENERIC_OAUTH_API_URL "https://$KEYCLOAK_DOMAIN/realms/myrealm/protocol/openid-connect/userinfo"
clever env set GF_AUTH_GENERIC_OAUTH_ROLE_ATTRIBUTE_PATH "contains(roles[*], 'admin') &amp;&amp; 'Admin' || contains(roles[*], 'editor') &amp;&amp; 'Editor' || 'Viewer'"</code></pre>
<!-- /wp:html -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note:</strong> In this section, you need to define GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET yourself, using the value in Keycloak UI, under Client &gt; $GRAFANA_URL &gt; Credentials</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever env set GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET &lt;KEYCLOAK_CLIENT_SECRET&gt;</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>You can now deploy Grafana:</p>
<!-- /wp:paragraph -->

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

# Open grafana and try the Login with Keycloak button !
clever open</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Now hit login with Keycloak, and use the username and password you defined for the user you created Earlier in Keycloak.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Using the same procedure describe earlier to create the first user, you can now create more users and roles. Create the roles "editor" and/or "viewer" and assign them to your new users within Keycloak. Try to connect with those on Grafana and you will see the roles are propagated to Grafana.</p>
<!-- /wp:paragraph -->

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

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li><a href="https://janikvonrotz.ch/2020/08/27/grafana-oauth-with-keycloak-and-how-to-validate-a-jwt-token/">https://janikvonrotz.ch/2020/08/27/grafana-oauth-with-keycloak-and-how-to-validate-a-jwt-token/</a></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><a href="https://www.keycloak.org/getting-started/getting-started-zip">https://www.keycloak.org/getting-started/getting-started-zip</a></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2022/04/banniere-keycloak.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="banniere keycloak" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2022/04/banniere-keycloak.png 1400w, https://cdn.clever-cloud.com/uploads/2022/04/banniere-keycloak-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2022/04/banniere-keycloak-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2022/04/banniere-keycloak-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2022/04/banniere-keycloak-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:html -->
<div style="background: #ffffff; padding: 1.5rem; border: 1px solid #deddee; border-radius: 4px; margin: auto auto 2rem auto; max-width: var(--wp--style--global--content-size, 710px);">
<div style="display: flex; align-items: center; gap: 1rem; margin-bottom: 1rem;"><span style="font-size: 2rem;">⚡</span>
<h4 style="margin: 0; color: #333; font-weight: bold;">Update Available</h4>
</div>
<p><strong>The process has been simplified!</strong> Check out our new Keycload add-on, easy deployment and additional features.</p>
<div class="push-documentation__content"><a class="button --white-border" href="https://www.clever.cloud/developers/doc/addons/keycloak/">🚀 Discover Keycloak add-on</a></div>
</div>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Keycloak is a modern and efficient way to deal with identity and access management. It allows for single sign-on, user federation across multiple user directories. It's also compliant with standard authentication protocols like OpenID Connect, OAuth2 or SAML. All details are available on its <a href="https://www.keycloak.org/">website</a>. This blogpost will go through steps to deploy Keycloack and Grafana on Clever Cloud.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">How to deploy Keycloak</h2>
<!-- /wp:heading -->

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

<!-- wp:paragraph -->
<p>Keycloak is written in Java, and gives a JAR file in their release, which means we will use a <a href="https://www.clever.cloud/developers/deploy/application/java/java-jar/">a JAVA runtime with a JAR deployment</a>. It also requires a <a href="https://www.postgresql.org/">PostgreSQL Database</a>, which means we will deploy a <a href="https://www.clever.cloud/developers/deploy/addon/postgresql/postgresql/">PostgreSQL addon</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Get lastest Keycloak release
wget https://github.com/keycloak/keycloak/releases/download/17.0.1/keycloak-17.0.1.zip

# Extract the archive
unzip keycloak-17.0.1.zip

# Go to the folder
cd keycloak-17.0.1

# Create the jar application
clever create --type jar keycloak-server
export KEYCLOAK_DOMAIN=$(clever domain | xargs)

# Create the PG addon
clever addon create postgresql-addon --plan s_sml --addon-version 10 keycloak-postgres

# Link the addon
clever service link-addon keycloak-postgres</code></pre>
<!-- /wp:html -->

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

<!-- wp:paragraph -->
<p>For now we will configure Keycloak through environment variables. Note that you can also do configure Keycloak through its CLI or through a file, as stated in its <a href="https://www.keycloak.org/server/configuration">documentation</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note:</strong> For the configuration through environment variables; the pattern to use is <code>KC_</code> and the uppercase name of any configuration key, separated by underscores.</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Export env for templating purpose
export $(clever env | sed '/^#/d;s/\"//g')

clever env set CC_JAR_PATH lib/quarkus-run.jar
clever env set CC_JAVA_VERSION 11
clever env set CC_RUN_COMMAND "bin/kc.sh start --auto-build"

clever env set KC_DB postgres
clever env set KC_DB_USERNAME $POSTGRESQL_ADDON_USER
clever env set KC_DB_PASSWORD $POSTGRESQL_ADDON_PASSWORD
clever env set KC_DB_URL "jdbc:postgresql://$POSTGRESQL_ADDON_HOST:$POSTGRESQL_ADDON_PORT/$POSTGRESQL_ADDON_DB"
clever env set KC_HOSTNAME $KEYCLOAK_DOMAIN
clever env set KC_HTTP_ENABLED true
clever env set KC_PROXY passthrough
clever env set KC_PROXY_ADDRESS_FORWARDING true
</code></pre>
<!-- /wp:html -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note: </strong>Consider setting KC_DB_POOL_MAX_SIZE at a lower value (default is 100) regarding the database size you ordered earlier. You can find the connection limit <a href="https://www.clever.cloud/pricing/#databases">here</a>. If you used the S_SML size that is in the command earlier, you can ignore this message. You can also fine tune the database connection pool using KC_DB_POOL_INITIAL_SIZE and KC_DB_POOL_MIN_SIZE</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:paragraph -->
<p>Now, you need to define KEYCLOAK_ADMIN and KEYCLOAK_ADMIN_PASSWORD :</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever env set KEYCLOAK_ADMIN &lt;choose an admin username&gt;
clever env set KEYCLOAK_ADMIN_PASSWORD &lt;choose an admin password&gt;</code></pre>
<!-- /wp:html -->

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

<!-- wp:paragraph -->
<p>Deploy Keycloak on Clever Cloud:</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Init a git repository
git init

# Add your files
git add .

# Create the first commit
git commit -m "clever init"

# Deploy the application
clever deploy

# Open Keycloak in your browser
clever open</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Validate the configuration</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>You can follow the Keycloak documentation starting <a href="https://www.keycloak.org/getting-started/getting-started-zip#_create_a_realm">here</a> to ensure Keycloak works as expected. It will take you through a realm (tenant) creation, user creation and client creation/test.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Create an Initial Keycloak configuration</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>In the keycloak UI, ensure you create a Realm called "myrealm" (hover "Master" on the top left corner). Ensure the realm "<code>myrealm</code>" is selected.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p> Then, go to <em><strong>Users &gt; Add a User</strong></em>. Fill the Username, Email, First Name and Last Name fields, then hit <strong>save</strong>. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In the credentials tab of the user, add the password of your choice and <strong>deselect  "Temporary", the set password.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>You're all set.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">A real world scenario</h2>
<!-- /wp:heading -->

<!-- wp:image {"id":6184,"sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image size-full"><img src="https://cdn.clever-cloud.com/uploads/2022/04/giphy-1-1.webp" alt="" class="wp-image-6184"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Let's see how we can use Keycloak in the real world: as an SSO Proxy for Grafana, using Oauth 2.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Setup Grafana on Clever Cloud</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>If you need a in-depth guide on how to use or deploy Grafana please read this <a href="https://www.clever.cloud/blog/features/2021/10/28/a-grafana-to-plot-applications-metrics/">article</a>, the following is a helper to illustrate the usages of Keycloak.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Let's use the <a href="https://github.com/CleverCloud/grafana-example">grafana-example</a> on Clever Cloud's Github repository.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Clone the repository
git clone https://github.com/CleverCloud/grafana-example.git

# Enter the directory
cd grafana-example

# Create a NodeJS Application
clever create --type node grafana
export GRAFANA_DOMAIN=$(clever domain | xargs)

# Configure Grafana
clever env set GRAFANA_VERSION 8.5.2
clever env set GRAFANA_PLUGINS "grafana-worldmap-panel"
clever env set GF_PLUGIN_DIR ./data/plugins

clever env set GF_SERVER_HTTP_PORT 8080
clever env set GF_SERVER_ROOT_URL "https://$GRAFANA_DOMAIN"</code></pre>
<!-- /wp:html -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note: </strong>In this section you need to set the GRAFANA_SHA_256 variable yourself. You can find the SHA256SUM required <a href="https://grafana.com/grafana/download/8.5.2?pg=get&amp;plcmt=selfmanaged-box1-cta1&amp;edition=oss">here</a>, next to "Standalone Linux Binaries"</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever env set GRAFANA_SHA_256 &lt;SHA256SUM&gt;</code></pre>
<!-- /wp:html -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configure Keycloak for OAuth 2</h3>
<!-- /wp:heading -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note: </strong> In this section, you need to replace <code><code>$GRAFANA_DOMAIN</code></code> with the value you exported in the last section. You can find this value by running the following command: <code><code>clever domain</code></code></p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:paragraph -->
<p>In the Keyloak UI, Go to <strong><em>Configure &gt; Clients &gt; Create</em></strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Create a new client with these configurations:</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">Client ID: $GRAFANA_DOMAIN
Client Protocol: openid-connect
Root URL: https://$GRAFANA_DOMAIN</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Further make these configurations:</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">Access Type: confidentials // The OAuth client must use a client id and secret.
Root URL: ${authBaseUrl}
Valid Redirect URIs: https://$GRAFANA_DOMAIN/login/generic_oauth
Base URL: /login/generic_oauth</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Clear <strong>Admin URL</strong> and <strong>Web Origins</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Click save and open the <strong>Credentials</strong> tab. Copy the Secret into a separate note, we will need it in the second and third part of this tutorial.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Open the tab <strong>Roles</strong> and click <strong>Add Role</strong>. Create a new role with name <code>admin</code>. This role defines the access level for Grafana.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Head over to <strong>Scope</strong> tab and set <strong>Full Scope Allowed </strong>to <code>OFF</code>. We do not want to share any other details about the realm in the client token.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Then, we are going to configure a client mapper for the roles property. We must ensure that Grafana can extract the access role from the JWT token. Open the <strong>Mappers</strong> tab and click on <strong>Create</strong>. Create an entry with these options:</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">Name: Roles
Mapper Type: User Client Role
Client ID: $GRAFANA_DOMAIN
Token Claim Name: roles
Claim JSON type: string</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Finally, assign the client role to your Keycloak user: Go to<strong> </strong><em><strong>Users &gt; View All Users</strong></em> and click on the I<strong>D of your user</strong>. Click on the <strong>Role</strong> <strong>Mapping</strong> tab, then in the <strong>Client Roles</strong> selector, select <strong>$GRAFANA_DOMAIN</strong>. In the Available Roles section, select <code>admin</code> and click <strong>Add selected</strong>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Configure Grafana for OAuth 2</h3>
<!-- /wp:heading -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash"># Configure appropriate env vars
clever env set GF_SERVER_DOMAIN $GRAFANA_DOMAIN
clever env set GF_SERVER_ROOT_URL "https://$GRAFANA_DOMAIN"
clever env set GF_AUTH_GENERIC_OAUTH_ENABLED true
clever env set GF_AUTH_GENERIC_OAUTH_NAME Keycloak
clever env set GF_AUTH_GENERIC_OAUTH_ALLOW_SIGN_UP true
clever env set GF_AUTH_GENERIC_OAUTH_CLIENT_ID $GRAFANA_DOMAIN

clever env set GF_AUTH_GENERIC_OAUTH_SCOPES profile
clever env set GF_AUTH_GENERIC_OAUTH_AUTH_URL "https://$KEYCLOAK_DOMAIN/realms/myrealm/protocol/openid-connect/auth"
clever env set GF_AUTH_GENERIC_OAUTH_TOKEN_URL "https://$KEYCLOAK_DOMAIN/realms/myrealm/protocol/openid-connect/token"
clever env set GF_AUTH_GENERIC_OAUTH_API_URL "https://$KEYCLOAK_DOMAIN/realms/myrealm/protocol/openid-connect/userinfo"
clever env set GF_AUTH_GENERIC_OAUTH_ROLE_ATTRIBUTE_PATH "contains(roles[*], 'admin') &amp;&amp; 'Admin' || contains(roles[*], 'editor') &amp;&amp; 'Editor' || 'Viewer'"</code></pre>
<!-- /wp:html -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
<p><strong>Note:</strong> In this section, you need to define GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET yourself, using the value in Keycloak UI, under Client &gt; $GRAFANA_URL &gt; Credentials</p>
<!-- /wp:paragraph --></blockquote>
<!-- /wp:quote -->

<!-- wp:html -->
<pre class="wp-block-code"><code class="lang-bash">clever env set GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET &lt;KEYCLOAK_CLIENT_SECRET&gt;</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>You can now deploy Grafana:</p>
<!-- /wp:paragraph -->

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

# Open grafana and try the Login with Keycloak button !
clever open</code></pre>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>Now hit login with Keycloak, and use the username and password you defined for the user you created Earlier in Keycloak.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Using the same procedure describe earlier to create the first user, you can now create more users and roles. Create the roles "editor" and/or "viewer" and assign them to your new users within Keycloak. Try to connect with those on Grafana and you will see the roles are propagated to Grafana.</p>
<!-- /wp:paragraph -->

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

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li><a href="https://janikvonrotz.ch/2020/08/27/grafana-oauth-with-keycloak-and-how-to-validate-a-jwt-token/">https://janikvonrotz.ch/2020/08/27/grafana-oauth-with-keycloak-and-how-to-validate-a-jwt-token/</a></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><a href="https://www.keycloak.org/getting-started/getting-started-zip">https://www.keycloak.org/getting-started/getting-started-zip</a></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Improving our environment variables editor</title>
		<link>https://www.clever.cloud/blog/engineering/2022/03/22/improving-our-environment-variables-editor/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Tue, 22 Mar 2022 08:39:11 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Features]]></category>
		<guid isPermaLink="false">https://www.clever-cloud.com/?p=6011</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2022/03/env-var.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="env var" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2022/03/env-var.png 1400w, https://cdn.clever-cloud.com/uploads/2022/03/env-var-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2022/03/env-var-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2022/03/env-var-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2022/03/env-var-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph -->
<p>Over the last few months, we have started a major but gradual redesign of our web interface, <a href="https://console.clever-cloud.com/">the Console</a>. Under the leadership of Hubert Sablonnière, whose team is welcoming new developers, the modules are refined and managed in an increasing way through Web Components (see <a href="https://www.youtube.com/watch?v=iTAPPcNQ2Oo">this talk</a>).</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2><strong>An editor accepting JSON format</strong></h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The last change released is related to the environment variables management. Until now it was proposed with a Simple or Expert mode. We have added a third, using JSON format. You can read/write in it, and so export or paste a complete configuration:</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph {"align":"center"} -->
<p class="has-text-align-center"><a href="https://cdn.clever-cloud.com/uploads/2022/03/ust.webp" target="_blank" rel="noopener"><img class="wp-image-5968" style="width: 500px;" src="https://cdn.clever-cloud.com/uploads/2022/03/ust.webp" alt="Clever Cloud Console Environment Variables Simple US"></a><a href="https://cdn.clever-cloud.com/uploads/2022/03/usj.webp" target="_blank" rel="noopener"><img class="wp-image-5969" style="width: 500px;" src="https://cdn.clever-cloud.com/uploads/2022/03/usj.webp" alt="Clever Cloud Console Environment Variables JSON US"></a><br>The Simple editor (left) and the new JSON one (right)</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The first one displays environment variables as name/value fields, you can add or remove them depending on your needs. The other two uses editable fields, but with a text or JSON format, accordingly. When the content is modified, checks are run to inform you if there are any formatting or variable management errors.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>These checks are now more strict, with one exception: in some applications, such as those in the Java ecosystem, variables name may contain a dot. In this case, they will be injected as properties and not as environment variables. The rules are detailed <a href="https://www.clever.cloud/developers/develop/env-variables/#environment-variables-rules-and-formats">here</a>. The reference of our environment variables is documented <a href="https://www.clever.cloud/developers/develop/env-variables/">there</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2><strong>The Config Provider is now using a Web Component</strong></h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Please note that the new editor has been designed as a <a href="https://developer.mozilla.org/fr/docs/Web/Web_Components">Web Component</a>. It is thus reused to display the environment variables of add-ons and has just replaced the one used for the <a href="https://www.clever.cloud/developers/deploy/addon/config-provider/">Config Provider</a> which was a simple multi-lines text editing field.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>As a reminder, this add-on allows you to create a list of environment variables that can be shared by different applications. To use it, you just need to integrate the Config Provider as a service dependency in their settings.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph {"align":"center"} -->
<p class="has-text-align-center"><a href="https://cdn.clever-cloud.com/uploads/2022/03/addon-scaled.webp" target="_blank" rel="noreferrer noopener"><img class="wp-image-5970" style="width: 500px;" src="https://cdn.clever-cloud.com/uploads/2022/03/addon-scaled.webp" alt="Clever Cloud Console Config Provider US"></a><a href="https://cdn.clever-cloud.com/uploads/2022/03/addonold-scaled.webp" target="_blank" rel="noreferrer noopener"><img class="wp-image-5971" style="width: 500px;" src="https://cdn.clever-cloud.com/uploads/2022/03/addonold-scaled.webp" alt="Clever Cloud Console Old Config Provider US"></a><br>The Config Provider with the Web Component editor (left) vs the previous basic editor (right)</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://cdn.clever-cloud.com/uploads/2022/03/env-var.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="env var" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2022/03/env-var.png 1400w, https://cdn.clever-cloud.com/uploads/2022/03/env-var-300x116.png 300w, https://cdn.clever-cloud.com/uploads/2022/03/env-var-1024x395.png 1024w, https://cdn.clever-cloud.com/uploads/2022/03/env-var-768x296.png 768w, https://cdn.clever-cloud.com/uploads/2022/03/env-var-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph -->
<p>Over the last few months, we have started a major but gradual redesign of our web interface, <a href="https://console.clever-cloud.com/">the Console</a>. Under the leadership of Hubert Sablonnière, whose team is welcoming new developers, the modules are refined and managed in an increasing way through Web Components (see <a href="https://www.youtube.com/watch?v=iTAPPcNQ2Oo">this talk</a>).</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2><strong>An editor accepting JSON format</strong></h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The last change released is related to the environment variables management. Until now it was proposed with a Simple or Expert mode. We have added a third, using JSON format. You can read/write in it, and so export or paste a complete configuration:</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph {"align":"center"} -->
<p class="has-text-align-center"><a href="https://cdn.clever-cloud.com/uploads/2022/03/ust.webp" target="_blank" rel="noopener"><img class="wp-image-5968" style="width: 500px;" src="https://cdn.clever-cloud.com/uploads/2022/03/ust.webp" alt="Clever Cloud Console Environment Variables Simple US"></a><a href="https://cdn.clever-cloud.com/uploads/2022/03/usj.webp" target="_blank" rel="noopener"><img class="wp-image-5969" style="width: 500px;" src="https://cdn.clever-cloud.com/uploads/2022/03/usj.webp" alt="Clever Cloud Console Environment Variables JSON US"></a><br>The Simple editor (left) and the new JSON one (right)</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The first one displays environment variables as name/value fields, you can add or remove them depending on your needs. The other two uses editable fields, but with a text or JSON format, accordingly. When the content is modified, checks are run to inform you if there are any formatting or variable management errors.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>These checks are now more strict, with one exception: in some applications, such as those in the Java ecosystem, variables name may contain a dot. In this case, they will be injected as properties and not as environment variables. The rules are detailed <a href="https://www.clever.cloud/developers/develop/env-variables/#environment-variables-rules-and-formats">here</a>. The reference of our environment variables is documented <a href="https://www.clever.cloud/developers/develop/env-variables/">there</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2><strong>The Config Provider is now using a Web Component</strong></h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Please note that the new editor has been designed as a <a href="https://developer.mozilla.org/fr/docs/Web/Web_Components">Web Component</a>. It is thus reused to display the environment variables of add-ons and has just replaced the one used for the <a href="https://www.clever.cloud/developers/deploy/addon/config-provider/">Config Provider</a> which was a simple multi-lines text editing field.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>As a reminder, this add-on allows you to create a list of environment variables that can be shared by different applications. To use it, you just need to integrate the Config Provider as a service dependency in their settings.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph {"align":"center"} -->
<p class="has-text-align-center"><a href="https://cdn.clever-cloud.com/uploads/2022/03/addon-scaled.webp" target="_blank" rel="noreferrer noopener"><img class="wp-image-5970" style="width: 500px;" src="https://cdn.clever-cloud.com/uploads/2022/03/addon-scaled.webp" alt="Clever Cloud Console Config Provider US"></a><a href="https://cdn.clever-cloud.com/uploads/2022/03/addonold-scaled.webp" target="_blank" rel="noreferrer noopener"><img class="wp-image-5971" style="width: 500px;" src="https://cdn.clever-cloud.com/uploads/2022/03/addonold-scaled.webp" alt="Clever Cloud Console Old Config Provider US"></a><br>The Config Provider with the Web Component editor (left) vs the previous basic editor (right)</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>#65 &#8211; PG compresse la react-tion du framaverse</title>
		<link>https://www.clever.cloud/podcast/65-pg-compresse-la-react-tion-du-framaverse/</link>
		
		<dc:creator><![CDATA[Hubert Sablonnière]]></dc:creator>
		<pubDate>Thu, 10 Mar 2022 08:40:51 +0000</pubDate>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[Java]]></category>
		<guid isPermaLink="false">https://www.clever-cloud.com/?post_type=podcast&#038;p=5831</guid>

					<description><![CDATA[<p><img width="1920" height="1080" src="https://cdn.clever-cloud.com/uploads/2022/03/65-1.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="65 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2022/03/65-1.jpg 1920w, https://cdn.clever-cloud.com/uploads/2022/03/65-1-300x169.jpg 300w, https://cdn.clever-cloud.com/uploads/2022/03/65-1-1024x576.jpg 1024w, https://cdn.clever-cloud.com/uploads/2022/03/65-1-768x432.jpg 768w, https://cdn.clever-cloud.com/uploads/2022/03/65-1-1536x864.jpg 1536w, https://cdn.clever-cloud.com/uploads/2022/03/65-1-1368x770.jpg 1368w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p><!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:gallery {"columns":4,"linkTo":"none"} -->
<figure class="wp-block-gallery has-nested-images columns-4 is-cropped"><!-- wp:image {"id":712,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2021/03/hubert-sablonniere.jpg" alt="hubert_sablonnière" class="wp-image-712"/><figcaption>Hubert Sablonnière</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":704,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
<figure class="wp-block-image size-large is-style-default"><img src="https://cdn.clever-cloud.com/uploads/2021/03/alexandre-duval-447x447.jpg" alt="alexandre_duval" class="wp-image-704"/><figcaption>Alexandre Duval</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":5002,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/01/T02QK4NGF-U02SG9465B4-449db2b4187d-512-413x447.jpeg" alt="" class="wp-image-5002"/><figcaption>Rémi Colignon</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":5836,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/03/image-1-447x447.png" alt="" class="wp-image-5836"/><figcaption>Frédéric Camblor</figcaption></figure>
<!-- /wp:image --></figure>
<!-- /wp:gallery -->

<!-- wp:paragraph -->
<p>Dans cet incroyable épisode, il est question de l'accord entre Elastic et Amazon, du nouveau site de MDN, de Mozilla et du WEB3, de JS, de compression Zstd avec PostgreSQL, de Java et de React 18, de la série à regarder JS idiomatique… Pour enfin finir en grande musique avec Pierre et le Loup, pour s'ukrainiser civilement le neurone symphonique.</p>
<!-- /wp:paragraph -->

<!-- wp:buttons -->
<div class="wp-block-buttons"><!-- wp:button {"className":"is-style-fill"} -->
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link" href="https://youtu.be/1EolJsbDVuM" target="_blank" rel="noreferrer noopener">Regarder sur Youtube</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

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

<!-- wp:paragraph -->
<p>👋  Venez discuter avec nous sur <strong>@clever_cloudFR</strong> pour nous dire ce que vous avez pensé de ce nouvel épisode.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>➡️  Pour découvrir ou réécouter d'anciens épisodes <a href="https://www.clever.cloud/fr/podcast/">c'est par ici</a> !</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 id="timecodes-liens">Timecodes &amp; liens :</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>00:00:00 : Introduction et présentation de l’invité<br><a href="https://twitter.com/fcamblor&#10;">https://twitter.com/fcamblor<br></a><a href="https://www.bdxio.fr/" target="_blank" rel="noreferrer noopener">https://www.bdxio.fr/<br></a><a href="http://bordeauxjug.org/&#10;">http://bordeauxjug.org/<br></a><a href="https://vitemadose.covidtracker.fr/" target="_blank" rel="noreferrer noopener">https://vitemadose.covidtracker.fr/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:07:00 Elastic and Amazon Reach Agreement on Trademark Infringement Lawsuit<br><a href="https://www.elastic.co/blog/elastic-and-amazon-reach-agreement-on-trademark-infringement-lawsuit">https://www.elastic.co/blog/elastic-and-amazon-reach-agreement-on-trademark-infringement-lawsuit</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:09:44 : A new year, a new MDN<br><a href="https://hacks.mozilla.org/2022/03/a-new-year-a-new-mdn/&#10;">https://hacks.mozilla.org/2022/03/a-new-year-a-new-mdn/<br></a><a href="https://en.wikipedia.org/wiki/OpenSearch" target="_blank" rel="noreferrer noopener">https://en.wikipedia.org/wiki/OpenSearch</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:19:26 : Mozilla s’attaque au web3?<br><a href="https://hubs.mozilla.com/" target="_blank" rel="noreferrer noopener">https://hubs.mozilla.com/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:23:03 : Les résultats du State of JS 2021 (et début 2022 :)) sont sortis<br><a href="https://2021.stateofjs.com/en-US/" target="_blank" rel="noreferrer noopener">https://2021.stateofjs.com/en-US/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:34:17 : PostgreSQL Begins Working On Zstd Compression Support<br><a href="https://www.phoronix.com/scan.php?page=news_item&amp;px=PostgreSQL-ZStd-Start" target="_blank" rel="noreferrer noopener">https://www.phoronix.com/scan.php?page=news_item&amp;px=PostgreSQL-ZStd-Start</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:38:35 : Java 18 Final RC (GA prévue le 22/03)<br><a href="https://openjdk.java.net/projects/jdk/18/" target="_blank" rel="noreferrer noopener">https://openjdk.java.net/projects/jdk/18/<br></a><a href="https://www.loicmathieu.fr/wordpress/informatique/java-18-quoi-de-neuf/" target="_blank" rel="noreferrer noopener">https://www.loicmathieu.fr/wordpress/informatique/java-18-quoi-de-neuf/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:47:53<br>React 18 va-t-il apporter (enfin!) un support des custom elements ?<br><a href="https://twitter.com/dan_abramov/status/1483892375223414785" target="_blank" rel="noreferrer noopener">https://twitter.com/dan_abramov/status/1483892375223414785<br></a><a href="https://custom-elements-everywhere.com/" target="_blank" rel="noreferrer noopener">https://custom-elements-everywhere.com/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:54:44 : React Query v4 alpha, connection mode<br><a href="https://react-query.tanstack.com/" target="_blank" rel="noreferrer noopener">https://react-query.tanstack.com/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>01:03:50 : La série JS Idiomatique de Delicious Insights (Christophe Porteneuve) qui reprend les bases d’un certain nombre de features EcmaScript<br><a href="https://www.youtube.com/playlist?list=PLPoAfTkDs_Jad8tGdMkixD1r7lMjpRstB" target="_blank" rel="noreferrer noopener">https://www.youtube.com/playlist?list=PLPoAfTkDs_Jad8tGdMkixD1r7lMjpRstB</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>01:07:20 : Le Choix musical de Frédéric Camblor : Pierre &amp; le Loup (Sergueï Prokofiev)<br><a href="https://youtu.be/eN4Iyb8HKjM?t=596" target="_blank" rel="noreferrer noopener">https://youtu.be/eN4Iyb8HKjM?t=596</a></p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1920" height="1080" src="https://cdn.clever-cloud.com/uploads/2022/03/65-1.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="65 1" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2022/03/65-1.jpg 1920w, https://cdn.clever-cloud.com/uploads/2022/03/65-1-300x169.jpg 300w, https://cdn.clever-cloud.com/uploads/2022/03/65-1-1024x576.jpg 1024w, https://cdn.clever-cloud.com/uploads/2022/03/65-1-768x432.jpg 768w, https://cdn.clever-cloud.com/uploads/2022/03/65-1-1536x864.jpg 1536w, https://cdn.clever-cloud.com/uploads/2022/03/65-1-1368x770.jpg 1368w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p><!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:gallery {"columns":4,"linkTo":"none"} -->
<figure class="wp-block-gallery has-nested-images columns-4 is-cropped"><!-- wp:image {"id":712,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2021/03/hubert-sablonniere.jpg" alt="hubert_sablonnière" class="wp-image-712"/><figcaption>Hubert Sablonnière</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":704,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
<figure class="wp-block-image size-large is-style-default"><img src="https://cdn.clever-cloud.com/uploads/2021/03/alexandre-duval-447x447.jpg" alt="alexandre_duval" class="wp-image-704"/><figcaption>Alexandre Duval</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":5002,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/01/T02QK4NGF-U02SG9465B4-449db2b4187d-512-413x447.jpeg" alt="" class="wp-image-5002"/><figcaption>Rémi Colignon</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":5836,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/03/image-1-447x447.png" alt="" class="wp-image-5836"/><figcaption>Frédéric Camblor</figcaption></figure>
<!-- /wp:image --></figure>
<!-- /wp:gallery -->

<!-- wp:paragraph -->
<p>Dans cet incroyable épisode, il est question de l'accord entre Elastic et Amazon, du nouveau site de MDN, de Mozilla et du WEB3, de JS, de compression Zstd avec PostgreSQL, de Java et de React 18, de la série à regarder JS idiomatique… Pour enfin finir en grande musique avec Pierre et le Loup, pour s'ukrainiser civilement le neurone symphonique.</p>
<!-- /wp:paragraph -->

<!-- wp:buttons -->
<div class="wp-block-buttons"><!-- wp:button {"className":"is-style-fill"} -->
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link" href="https://youtu.be/1EolJsbDVuM" target="_blank" rel="noreferrer noopener">Regarder sur Youtube</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->

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

<!-- wp:paragraph -->
<p>👋  Venez discuter avec nous sur <strong>@clever_cloudFR</strong> pour nous dire ce que vous avez pensé de ce nouvel épisode.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>➡️  Pour découvrir ou réécouter d'anciens épisodes <a href="https://www.clever.cloud/fr/podcast/">c'est par ici</a> !</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 id="timecodes-liens">Timecodes &amp; liens :</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>00:00:00 : Introduction et présentation de l’invité<br><a href="https://twitter.com/fcamblor&#10;">https://twitter.com/fcamblor<br></a><a href="https://www.bdxio.fr/" target="_blank" rel="noreferrer noopener">https://www.bdxio.fr/<br></a><a href="http://bordeauxjug.org/&#10;">http://bordeauxjug.org/<br></a><a href="https://vitemadose.covidtracker.fr/" target="_blank" rel="noreferrer noopener">https://vitemadose.covidtracker.fr/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:07:00 Elastic and Amazon Reach Agreement on Trademark Infringement Lawsuit<br><a href="https://www.elastic.co/blog/elastic-and-amazon-reach-agreement-on-trademark-infringement-lawsuit">https://www.elastic.co/blog/elastic-and-amazon-reach-agreement-on-trademark-infringement-lawsuit</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:09:44 : A new year, a new MDN<br><a href="https://hacks.mozilla.org/2022/03/a-new-year-a-new-mdn/&#10;">https://hacks.mozilla.org/2022/03/a-new-year-a-new-mdn/<br></a><a href="https://en.wikipedia.org/wiki/OpenSearch" target="_blank" rel="noreferrer noopener">https://en.wikipedia.org/wiki/OpenSearch</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:19:26 : Mozilla s’attaque au web3?<br><a href="https://hubs.mozilla.com/" target="_blank" rel="noreferrer noopener">https://hubs.mozilla.com/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:23:03 : Les résultats du State of JS 2021 (et début 2022 :)) sont sortis<br><a href="https://2021.stateofjs.com/en-US/" target="_blank" rel="noreferrer noopener">https://2021.stateofjs.com/en-US/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:34:17 : PostgreSQL Begins Working On Zstd Compression Support<br><a href="https://www.phoronix.com/scan.php?page=news_item&amp;px=PostgreSQL-ZStd-Start" target="_blank" rel="noreferrer noopener">https://www.phoronix.com/scan.php?page=news_item&amp;px=PostgreSQL-ZStd-Start</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:38:35 : Java 18 Final RC (GA prévue le 22/03)<br><a href="https://openjdk.java.net/projects/jdk/18/" target="_blank" rel="noreferrer noopener">https://openjdk.java.net/projects/jdk/18/<br></a><a href="https://www.loicmathieu.fr/wordpress/informatique/java-18-quoi-de-neuf/" target="_blank" rel="noreferrer noopener">https://www.loicmathieu.fr/wordpress/informatique/java-18-quoi-de-neuf/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:47:53<br>React 18 va-t-il apporter (enfin!) un support des custom elements ?<br><a href="https://twitter.com/dan_abramov/status/1483892375223414785" target="_blank" rel="noreferrer noopener">https://twitter.com/dan_abramov/status/1483892375223414785<br></a><a href="https://custom-elements-everywhere.com/" target="_blank" rel="noreferrer noopener">https://custom-elements-everywhere.com/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:54:44 : React Query v4 alpha, connection mode<br><a href="https://react-query.tanstack.com/" target="_blank" rel="noreferrer noopener">https://react-query.tanstack.com/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>01:03:50 : La série JS Idiomatique de Delicious Insights (Christophe Porteneuve) qui reprend les bases d’un certain nombre de features EcmaScript<br><a href="https://www.youtube.com/playlist?list=PLPoAfTkDs_Jad8tGdMkixD1r7lMjpRstB" target="_blank" rel="noreferrer noopener">https://www.youtube.com/playlist?list=PLPoAfTkDs_Jad8tGdMkixD1r7lMjpRstB</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>01:07:20 : Le Choix musical de Frédéric Camblor : Pierre &amp; le Loup (Sergueï Prokofiev)<br><a href="https://youtu.be/eN4Iyb8HKjM?t=596" target="_blank" rel="noreferrer noopener">https://youtu.be/eN4Iyb8HKjM?t=596</a></p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Managing site traffic for a TV show, but in 24 hours</title>
		<link>https://www.clever.cloud/blog/company/2022/01/20/managing-site-traffic-for-a-tv-show-but-in-24-hours/</link>
		
		<dc:creator><![CDATA[Clément Nivolle]]></dc:creator>
		<pubDate>Thu, 20 Jan 2022 11:14:30 +0000</pubDate>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[customer testimonial]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Features]]></category>
		<guid isPermaLink="false">https://www.clever-cloud.com/?p=5162</guid>

					<description><![CDATA[<p><img width="1920" height="796" src="https://cdn.clever-cloud.com/uploads/2022/01/lotr3moviescreencaps-com24573.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="lotr3moviescreencaps com24573" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2022/01/lotr3moviescreencaps-com24573.jpg 1920w, https://cdn.clever-cloud.com/uploads/2022/01/lotr3moviescreencaps-com24573-300x124.jpg 300w, https://cdn.clever-cloud.com/uploads/2022/01/lotr3moviescreencaps-com24573-1024x425.jpg 1024w, https://cdn.clever-cloud.com/uploads/2022/01/lotr3moviescreencaps-com24573-768x318.jpg 768w, https://cdn.clever-cloud.com/uploads/2022/01/lotr3moviescreencaps-com24573-1536x637.jpg 1536w, https://cdn.clever-cloud.com/uploads/2022/01/lotr3moviescreencaps-com24573-1368x567.jpg 1368w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p><!-- wp:paragraph -->
<p>Surprise as it often happens: the report that was made on your company two months ago is going to be programmed tomorrow evening. Or, in the middle of a hot topic, your product is going to be the subject of an item during the 8 o'clock news.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The TV appearance is always a bad match for the web: because when you size your IT infrastructure, it's more to manage your growth over 3 years. On a nice upward curve, usually linear. And when the traffic peaks by 800%, your architecture will be on its knees.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Except with Clever Cloud. Configuring your applications to absorb a traffic spike can be done with a few clicks in the interface:<br></p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":5164,"sizeSlug":"large","linkDestination":"none"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/01/Screenshot-2022-01-20-at-10.55.06-627x447.png" alt="" class="wp-image-5164" title="managing scaling"/><figcaption>Managing site traffic</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Only, managing site traffic is easy when you are already hosted by Clever Cloud. But if this is not the case, there is no fatality.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Yesterday, M6 broadcast the show "Who wants to be my partner? And the young company <a href="https://www.biodemain.fr/" target="_blank" rel="noreferrer noopener">BioDemain</a>, which helps agricultural producers during the three years of their organic transition, took part. Hosted on a traditional architecture, the risk of the service falling down is great. So we helped <a href="https://www.biodemain.fr/" target="_blank" rel="noreferrer noopener">BioDemain</a> migrate their site to Clever Cloud in less than 24 hours!</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 id="how-clever-cloud-handles-these-traffic-spikes">How Clever Cloud handles these traffic spikes</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>First of all, managing site traffic will be done on the Clever Cloud side by load-balancers before reaching your application. These load-balancers (formerly HAProxy instances, and now instances of Sōzu, an in-house software) are going to distribute the traffic among themselves. Just like if you had Amazon ELBs (<em>Elastic Load Balancer</em>), except that here it's included by default, and already configured.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Your application will then receive the traffic. Depending on your <em>scaling</em> configuration, your application will be able to trigger alerts to our monitoring system if CPU and RAM increase. And therefore multiply the number of instances. Load-balancers and multiple instances in a few seconds: and you are ready to handle the traffic.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":5168,"sizeSlug":"large","linkDestination":"none"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/01/les-VM-667x372.png" alt="" class="wp-image-5168"/><figcaption>The author of this article had a hard time to put up this architecture in picture</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:heading -->
<h2 id="the-migration-itself">The migration itself</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>To move to Clever Cloud so quickly, we were put in touch with the BioDemain team. And it was the formidable support organisation that was at their side to migrate their site (here a Wordpress) from a shared solution to Clever Cloud. Despite a rather… tight schedule.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":5166,"sizeSlug":"medium","linkDestination":"none"} -->
<div class="wp-block-image"><figure class="aligncenter size-medium"><img src="https://cdn.clever-cloud.com/uploads/2022/01/team-realising-318x155.png" alt="" class="wp-image-5166"/><figcaption>Our team noticing they're on a tigh schedule</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>The recipe for success was a very quick migration. Indeed, there are two ways to deploy your Wordpress on Clever Cloud:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><li>Quickly, with a simple FTP transfer.</li><li>More elegantly, using git for the code, Cellar for the media and Composer for the plug-ins.</li></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Obviously we went for the first solution.<br>After contacting the developer of <a href="https://www.biodemain.fr/" target="_blank" rel="noreferrer noopener">BioDemain</a>, the first step was to transfer the files between the old host and Clever.<br>Several tens of thousands of files, so in FTP it takes time.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>While waiting for the end of the file transfer, our team and BioDemain were able to deploy two other instances: MySQL and Redis. Then came the configuration of the PHP application itself (still during the transfer).<br>Here we had to:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><li>Activate ProxySQL <a href="https://www.clever.cloud/developers/deploy/addon/mysql/proxysql/" target="_blank" rel="noreferrer noopener">to mutualize the application connections</a></li><li>Configure proxySQL via simple environment variables:<ul><li><code>CC_ENABLE_MYSQL_PROXYSQL=true</code> for activation</li><li><code>CC_MYSQL_PROXYSQL_MAX_CONNECTIONS =15</code> to set the maximum number of connections to be managed</li><li><code>CC_MYSQL_PROXYSQL_USE_TLS=true</code> if needed</li></ul></li><li>Make a dump of the original MySQL database and import this dump into the new one</li><li>Enable the <a href="https://www.clever.cloud/developers/getting-started/by-language/php/#use-redis-to-store-php-sessions" target="_blank" rel="noreferrer noopener">Redis session in PHP via environment variable</a>].</li></ul>
<!-- /wp:list -->

<!-- wp:heading -->
<h2 id="extra-tech-tips">Extra tech tips</h2>
<!-- /wp:heading -->

<!-- wp:list -->
<ul><li>You can also <a href="https://www.clever.cloud/developers/administrate/cache/" target="_blank" rel="noreferrer noopener">enable the Varnish built into Clever Cloud</a> if you feel like it:</li><li>Put in a CDN: if you don't have time to optimize your SQL queries, caching strategies, <em>minifications</em> etc., CDNs are there to offload some of the traffic to them.</li><li>Before anything else, lower the TTL of your CNAME and A records of your domain name. At the time of migration, if you are short of time and the changes to the domain name are propagated over 24 hours, you will find it a shame.</li><li>And if you ever have a down, redirect your home page to an application that displays a contact form: users can then leave an email to be contacted again.</li></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Finally, evaluate the performance. The fateful moment of the TV pass does not suffer from a single oversight. To do this: JMeter locally (beware, it requires resources), or great online services like <a href="https://gatling.io." target="_blank" rel="noreferrer noopener">gatling.io</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>You have all the cards in hand for the next step :) Good luck!</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1920" height="796" src="https://cdn.clever-cloud.com/uploads/2022/01/lotr3moviescreencaps-com24573.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="lotr3moviescreencaps com24573" decoding="async" loading="lazy" srcset="https://cdn.clever-cloud.com/uploads/2022/01/lotr3moviescreencaps-com24573.jpg 1920w, https://cdn.clever-cloud.com/uploads/2022/01/lotr3moviescreencaps-com24573-300x124.jpg 300w, https://cdn.clever-cloud.com/uploads/2022/01/lotr3moviescreencaps-com24573-1024x425.jpg 1024w, https://cdn.clever-cloud.com/uploads/2022/01/lotr3moviescreencaps-com24573-768x318.jpg 768w, https://cdn.clever-cloud.com/uploads/2022/01/lotr3moviescreencaps-com24573-1536x637.jpg 1536w, https://cdn.clever-cloud.com/uploads/2022/01/lotr3moviescreencaps-com24573-1368x567.jpg 1368w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p><!-- wp:paragraph -->
<p>Surprise as it often happens: the report that was made on your company two months ago is going to be programmed tomorrow evening. Or, in the middle of a hot topic, your product is going to be the subject of an item during the 8 o'clock news.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The TV appearance is always a bad match for the web: because when you size your IT infrastructure, it's more to manage your growth over 3 years. On a nice upward curve, usually linear. And when the traffic peaks by 800%, your architecture will be on its knees.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Except with Clever Cloud. Configuring your applications to absorb a traffic spike can be done with a few clicks in the interface:<br></p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":5164,"sizeSlug":"large","linkDestination":"none"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/01/Screenshot-2022-01-20-at-10.55.06-627x447.png" alt="" class="wp-image-5164" title="managing scaling"/><figcaption>Managing site traffic</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>Only, managing site traffic is easy when you are already hosted by Clever Cloud. But if this is not the case, there is no fatality.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Yesterday, M6 broadcast the show "Who wants to be my partner? And the young company <a href="https://www.biodemain.fr/" target="_blank" rel="noreferrer noopener">BioDemain</a>, which helps agricultural producers during the three years of their organic transition, took part. Hosted on a traditional architecture, the risk of the service falling down is great. So we helped <a href="https://www.biodemain.fr/" target="_blank" rel="noreferrer noopener">BioDemain</a> migrate their site to Clever Cloud in less than 24 hours!</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 id="how-clever-cloud-handles-these-traffic-spikes">How Clever Cloud handles these traffic spikes</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>First of all, managing site traffic will be done on the Clever Cloud side by load-balancers before reaching your application. These load-balancers (formerly HAProxy instances, and now instances of Sōzu, an in-house software) are going to distribute the traffic among themselves. Just like if you had Amazon ELBs (<em>Elastic Load Balancer</em>), except that here it's included by default, and already configured.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Your application will then receive the traffic. Depending on your <em>scaling</em> configuration, your application will be able to trigger alerts to our monitoring system if CPU and RAM increase. And therefore multiply the number of instances. Load-balancers and multiple instances in a few seconds: and you are ready to handle the traffic.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":5168,"sizeSlug":"large","linkDestination":"none"} -->
<div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/01/les-VM-667x372.png" alt="" class="wp-image-5168"/><figcaption>The author of this article had a hard time to put up this architecture in picture</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:heading -->
<h2 id="the-migration-itself">The migration itself</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>To move to Clever Cloud so quickly, we were put in touch with the BioDemain team. And it was the formidable support organisation that was at their side to migrate their site (here a Wordpress) from a shared solution to Clever Cloud. Despite a rather… tight schedule.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"center","id":5166,"sizeSlug":"medium","linkDestination":"none"} -->
<div class="wp-block-image"><figure class="aligncenter size-medium"><img src="https://cdn.clever-cloud.com/uploads/2022/01/team-realising-318x155.png" alt="" class="wp-image-5166"/><figcaption>Our team noticing they're on a tigh schedule</figcaption></figure></div>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>The recipe for success was a very quick migration. Indeed, there are two ways to deploy your Wordpress on Clever Cloud:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><li>Quickly, with a simple FTP transfer.</li><li>More elegantly, using git for the code, Cellar for the media and Composer for the plug-ins.</li></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Obviously we went for the first solution.<br>After contacting the developer of <a href="https://www.biodemain.fr/" target="_blank" rel="noreferrer noopener">BioDemain</a>, the first step was to transfer the files between the old host and Clever.<br>Several tens of thousands of files, so in FTP it takes time.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>While waiting for the end of the file transfer, our team and BioDemain were able to deploy two other instances: MySQL and Redis. Then came the configuration of the PHP application itself (still during the transfer).<br>Here we had to:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><li>Activate ProxySQL <a href="https://www.clever.cloud/developers/deploy/addon/mysql/proxysql/" target="_blank" rel="noreferrer noopener">to mutualize the application connections</a></li><li>Configure proxySQL via simple environment variables:<ul><li><code>CC_ENABLE_MYSQL_PROXYSQL=true</code> for activation</li><li><code>CC_MYSQL_PROXYSQL_MAX_CONNECTIONS =15</code> to set the maximum number of connections to be managed</li><li><code>CC_MYSQL_PROXYSQL_USE_TLS=true</code> if needed</li></ul></li><li>Make a dump of the original MySQL database and import this dump into the new one</li><li>Enable the <a href="https://www.clever.cloud/developers/getting-started/by-language/php/#use-redis-to-store-php-sessions" target="_blank" rel="noreferrer noopener">Redis session in PHP via environment variable</a>].</li></ul>
<!-- /wp:list -->

<!-- wp:heading -->
<h2 id="extra-tech-tips">Extra tech tips</h2>
<!-- /wp:heading -->

<!-- wp:list -->
<ul><li>You can also <a href="https://www.clever.cloud/developers/administrate/cache/" target="_blank" rel="noreferrer noopener">enable the Varnish built into Clever Cloud</a> if you feel like it:</li><li>Put in a CDN: if you don't have time to optimize your SQL queries, caching strategies, <em>minifications</em> etc., CDNs are there to offload some of the traffic to them.</li><li>Before anything else, lower the TTL of your CNAME and A records of your domain name. At the time of migration, if you are short of time and the changes to the domain name are propagated over 24 hours, you will find it a shame.</li><li>And if you ever have a down, redirect your home page to an application that displays a contact form: users can then leave an email to be contacted again.</li></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Finally, evaluate the performance. The fateful moment of the TV pass does not suffer from a single oversight. To do this: JMeter locally (beware, it requires resources), or great online services like <a href="https://gatling.io." target="_blank" rel="noreferrer noopener">gatling.io</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>You have all the cards in hand for the next step :) Good luck!</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
