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

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

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

					<description><![CDATA[<p><img width="1600" height="710" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-en.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="All you need to know about cloud computing" decoding="async" fetchpriority="high" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-en.png 1600w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-en-300x133.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-en-1024x454.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-en-768x341.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-en-1536x682.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-en-1368x607.png 1368w" sizes="(max-width: 1600px) 100vw, 1600px" /></p><!-- wp:paragraph -->
<p>Back to basics with this first article in a new series. Let's take a look at how cloud computing works, its different architectures (public, private, hybrid), its many benefits for businesses, and the differences between cloud computing, edge computing and on-premise to help you choose the solution best suited to your needs.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Cloud computing: definition and origins</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing has profoundly transformed the way businesses and individuals access IT resources. The idea is simple but innovative: rather than owning and managing their own servers and data centres, users can now access IT services on demand, via a network. These services include computing power, data storage and sometimes even database management, offering unprecedented flexibility and accessibility. It's not an idea that dates back to yesterday...</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">How cloud computing has evolved over time</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The concept of cloud computing, although widely popularised in the early 2000s, has its roots in the 1960s. At that time, computer pioneers were already considering the idea of making computing power accessible as a public utility. During the 1990s, network diagrams began to use the image of a ‘cloud’ to represent the Internet, symbolising the complexity and interconnectedness of the networks that today enable cloud computing to function as a global and flexible architecture.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The real strength of the cloud lies in its ability to provide remote and scalable computing resources, enabling businesses to simplify the management of their infrastructure, avoid wasting resources, and <a href="https://stagingv6.cleverapps.io/cloud-and-green-it/">improve energy efficiency</a> through three pillars:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><strong>Unified billing</strong>: The cloud offers a <a href="https://developers.clever-cloud.com/doc/billing/unified-invoices/">single billing system</a> that simplifies cost management for businesses. This transparency makes it possible to accurately track expenditure and optimise costs;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><strong>Centralised, secure access</strong>: The cloud offers a single interface that simplifies access to services, while centralising management. IAM (Identity and Access Management) systems provide enhanced security, with auditability tools for improved compliance;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><strong>A rich and diverse marketplace</strong>: The cloud provides a vast marketplace, giving businesses access to a <a href="https://stagingv6.cleverapps.io/product/">wide range of products</a> and services. This diversity promotes the flexibility and scalability of the solutions deployed.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">How do you simply define cloud computing?</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>In simple terms, cloud computing is defined as remote access to shared computing resources, without the complexity of managing the underlying physical infrastructure. This approach enables businesses to make a long-term investment in the long-term management and hosting of their data, while giving them the flexibility to rapidly adjust their capacity as required. Clever Cloud, for example, automates the scalability, optimising resources in real time to meet demand.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">How does cloud computing work?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Based on a network-based computing services model, the cloud enables businesses to access resources such as data storage, computing power and access to a catalogue of online applications, without the need to manage the hardware infrastructure directly. This approach offers greater flexibility, cost optimisation and operational efficiency, all of which encourage innovation.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">The key elements of cloud operation</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>There are several fundamental elements that ensure the efficiency and scalability of the cloud. Here's an overview of the key elements.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">The physical infrastructure</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>At the heart of the cloud is a <a href="https://stagingv6.cleverapps.io/infrastructure/">physical infrastructure</a> made up of servers, storage systems and interconnected networks. These infrastructures are located in data centres around the world, promising very high availability, <a href="https://stagingv6.cleverapps.io/security/">enhanced security</a> and optimum performance. Cloud providers like Clever Cloud invest heavily to maintain high quality standards, verified through various certifications.</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>This fundamental principle enables the creation of virtual versions of physical resources, such as servers or storage systems. Virtualisation improves efficiency by enabling several users or applications to use the same resources in an optimised way: the famous Virtual Machines (VMs). This technology also simplifies management and reduces operating costs by disconnecting the hardware infrastructure from the user experience.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Access interfaces and APIs</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud service interfaces are designed to be secure and high-performance, making it easier to manage resources and deploy applications. APIs offer system administrators, DevOps and developers the possibility of automating and integrating cloud services into their own systems, maximising customisation, efficiency and flexibility and extending the range of possible functionalities.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">The different cloud architectures: public, private and hybrid</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Each cloud architecture has its own advantages and addresses different needs. The key is to choose the one that best aligns with your organisation's strategic objectives and operational constraints.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Public Cloud: simplified accessibility and scalability for data hosting</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The public cloud is the most common architecture. Here, IT resources are hosted on servers belonging to cloud service providers, such as Clever Cloud. These services are accessible via the network, providing a scalable solution that can adapt quickly to changing business needs.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The public cloud offers different levels of service, from Infrastructure as a Service (IaaS) to Platform as a Service (PaaS), via Software as a Service (SaaS). This diversity means that businesses can choose the solution best suited to their needs, while benefiting from the fact that there is no initial investment in infrastructure.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Private cloud: controlled, secure data hosting</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>By definition, the private cloud is a solution dedicated to a single organisation. Unlike the public cloud, the customer's servers are dedicated to that organisation. This is often a hosting zone behind the customer's firewall, made available by a cloud provider. This architecture offers total control over data and enhanced security, which is ideal for sectors subject to strict regulations (financial, health, pharmaceutical, public, defence, legal, industrial, etc.). The private cloud allows greater customisation of the data hosting architecture, tailored to the specific needs of the business.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Hybrid cloud: don't put all your eggs in one basket</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The hybrid cloud offers greater resilience by combining the advantages of the public and private clouds. By diversifying environments, businesses avoid putting all their eggs in one basket. For example, they can store sensitive data in a private cloud while using a public cloud for backups or less critical workloads. This means they can switch from one environment to the other depending on their needs in terms of performance, cost or security. However, with the high egress fees charged by hyperscalers, this approach can become costly.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In reality, the hybrid cloud is already common practice, often without companies being fully aware of it. Since the democratisation of SaaS, the majority of applications are no longer solely on-premises, but are based on a mix of public cloud, private cloud and SaaS services.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">What are the different types of cloud computing?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing is divided into several main categories: Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS) and Function as a Service (FaaS). Each type offers different levels of control, flexibility and management, so you can choose the one that best suits your needs.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Infrastructure as a Service (IaaS) for maximum customisation</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Infrastructure as a Service (IaaS) is historically the most widespread model of cloud computing. With IaaS, businesses rent IT resources such as servers, virtual machines, storage and networks directly from a cloud service provider.&nbsp; Customers take care of maintaining their OS, databases, runtimes, etc. in operational conditions, using system administrators, either in-house or from an outsourcer. This allows companies to have a specific architecture that meets their needs.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Platform as a Service (PaaS) for rapid deployment and automatic updates</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><a href="https://stagingv6.cleverapps.io/">Platform as a Service (PaaS)</a> goes a step further than IaaS by providing an OS, middleware and a console for easy deployment of runtimes and even databases or third-party services, known as add-ons. The customer no longer has to worry about maintaining the system in operational condition (MCO), which is the responsibility of the cloud provider.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>PaaS solutions make it easy to deploy applications quickly, while automatically maintaining and updating the infrastructure. With integrated development tools and a modular architecture, Clever Cloud simplifies the work of developers and DevOps teams by offering them a ready-to-use environment to accelerate innovation: deploy code, we'll take care of the rest!&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Software as a Service (SaaS) for greater simplicity</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Software as a Service (SaaS) is the most common cloud computing model. SaaS applications are hosted and managed by service providers, enabling users to access them via the Internet, usually on a subscription basis. This model eliminates the need to install and maintain software locally, reducing costs and technical complexity.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>SaaS is particularly useful for businesses looking to standardise their software tools without investing in IT infrastructure. For example, collaboration tools, customer relationship management (CRM) systems and office suites are often deployed as SaaS services for maximum simplicity.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Functions as a Service (FaaS) for greater agility</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Functions as a Service (FaaS) is an evolution of the PaaS model that allows developers to create and deploy individual functions without worrying about server management. The cloud provider takes care of all the infrastructure, scaling and resource management, charging only for the time it takes to run the functions.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The functions are triggered by events defined in advance, enabling the function to launch its action (processing an image, converting a file, etc.) and therefore to switch on, be active for the duration of the action and then switch off. services for economic reasons. FaaS is often complementary to PaaS.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">What are the advantages of cloud computing?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Whether in terms of scalability or security, the cloud offers a number of benefits for organisations that decide to adopt it.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Cost optimisation: a strategic approach rather than just savings</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing can be part of a financial strategy, in particular by transforming capital expenditure (CAPEX) into operational expenditure (OPEX). This budgetary transition enables companies to outsource their initial IT infrastructure costs (purchase of servers, data centre maintenance, fibre management, recruitment of a dedicated team, etc.). Organisations can adopt a pay-as-you-go model, adjusting their spending according to their real needs. Some hyperscalers will still offer to pay for reserved instances, which will have to be paid for even if they are not used, but this is not the majority of usage.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Scalability: the cloud adapts to your needs</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Whether you need to increase processing capacity during peak periods or reduce resources during off-peak periods, the cloud is flexible and scalable on demand, thanks to probes and orchestrators. This responsiveness ensures optimum use of resources and gives businesses greater agility to respond to changes in the market and in demand. At Clever Cloud, scalability is automatic, which means it adapts in real time to your needs, so you only pay for what you actually use.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Security: a key pillar for businesses</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing greatly improves the security of your data. Cloud providers invest, keep a constant watch and have the role of warning their customers or updating exposed areas. Storage in the cloud and its backups provide great resilience. Backed-up data can easily be accessed or a disaster recovery plan (DRP) or business continuity plan (BCP) can be launched. At Clever Cloud, we go even further: our Materia databases are automatically replicated to our three Paris data centres, giving you peace of mind. Another key point is that many security certifications may be required when hosting critical or personal data. Cloud providers undertake to comply with them.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Accessibility: instantaneous response to new work trends</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing makes your data more accessible, enabling your teams to collaborate effectively, regardless of their location. Data and applications hosted in the cloud can be available 24/7. This facilitates teleworking, speeds up decision-making processes and improves team productivity, while guaranteeing real-time synchronisation of information.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Automatic updates and operational maintenance</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>With cloud computing, software updates and security patches are automatically managed by the supplier, without the intervention of the customer's IT team. This not only reduces the internal workload, but also ensures that the systems have no security holes.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Who uses cloud computing?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing is now an essential component for businesses of all sizes and in all sectors. Its massive adoption is driven by the outsourcing of management and MCO, the unification of costs and access to a marketplace.&nbsp; Whether it's for data storage and backup, Big Data analysis, mail server hosting or web application development and deployment, the cloud has become essential for meeting the growing demands of the market.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>For example, organisations in the financial sector are using cloud computing to detect and prevent fraud in real time, using machine learning algorithms and predictive analysis. Healthcare companies, meanwhile, are exploiting these technologies to offer more personalised treatments, thereby improving the quality of care for their patients. The entertainment sector and video game creators are relying on the cloud to deliver their content to millions of users around the world, guaranteeing a fluid and immersive experience.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>But this technology is not just for large companies: SMEs, start-ups, freelancers and private individuals are also adopting the cloud to benefit from a scalable infrastructure without having to bear the high costs associated with physical data centres. By opting for these solutions, they can concentrate on what they need.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">What are the uses of cloud computing?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing offers a multitude of uses for businesses and individuals, including the following.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Storing and backing up data</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The cloud enables businesses to protect their information while benefiting from a large storage capacity, all the while retaining control over billing. Data can be easily accessed from any connected device, making it easier to recover in the event of a technical problem.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Hosting applications and websites</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Hosting applications and websites is another key use of cloud computing, enabling applications to be created and deployed with a high degree of scalability. Developers benefit from a reliable solution that delivers a fluid, high-performance user experience.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Distributing software and content as a service</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing also facilitates the development of software and content as a service (SaaS). This model reduces the need for local installations and enables companies to offer regular updates without service interruption, accessible at any time and on any type of device. They can focus on the continuous improvement of their products while simplifying the management of software versions.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Data analysis and artificial intelligence (AI)</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Data analysis and the integration of artificial intelligence (AI) are made possible by the capabilities and performance of cloud computing. Companies can centralise their data in cloud systems, such as datalakes or data warehouses, and use and train machine learning services to extract the desired elements. These technologies help to develop predictive models, automate processes, generate text or images, etc.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Application testing and development</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The cloud is also a powerful tool for application testing and development. Thanks to the standardisation of test environments, it is now possible to obtain dedicated spaces in just a few clicks, saving time for teams of developers. Cloud infrastructures offer a high degree of flexibility for creating, testing and deploying applications, while facilitating continuous integration and continuous deployment (CI/CD). This approach accelerates the development cycle and enables companies to reduce their time to market.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Edge computing and cloud computing: the differences</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing and edge computing are two distinct architectures that meet different needs. Whereas cloud computing centralises resources and processing in large data centres, edge computing moves these operations closer to the data sources using small-scale infrastructures.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>This approach enables edge computing to reduce latency and improve processing speed, which is essential for applications such as the Internet of Things (IoT), autonomous vehicles and augmented reality. The choice between these two technologies often depends on the context and on performance, security and connectivity requirements. Edge computing also makes it possible to offer a hybrid architecture, which can take over in the event of availability problems.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Cloud computing is distinguished by its ability to offer scalable, pooled resources, accessible via the Internet, making it an ideal solution for applications requiring high computing and storage power. By contrast, edge computing favours local processing for real-time responses, reducing dependency on network connectivity.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">When should you choose edge computing rather than cloud computing?</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Choosing between edge computing and cloud computing depends on several key factors:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Reactivity and low latency: Edge computing is the best solution when instant response is crucial. For example, in industrial control systems or autonomous vehicles, every millisecond counts. Local processing of data by edge computing reduces delays and improves the reliability of operations;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Volume of data to be processed: When the volume of data generated is too large to be transferred quickly to a central data centre, edge computing becomes essential. It enables data to be filtered and processed at source, minimising network traffic and optimising bandwidth use;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Isolated environments or those with limited connectivity: In areas where the Internet connection is unstable or non-existent, edge computing ensures that data is processed without interruption. This makes it an ideal solution for remote sites, such as industrial facilities or critical infrastructures;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Data security and confidentiality: Edge computing provides an extra layer of security by processing data locally, limiting its exposure to potential cyber threats. This is particularly important for sensitive sectors such as healthcare or financial services.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>So, while cloud computing is suited to tasks requiring vast resources and global accessibility, edge computing is essential in contexts where speed, locality and data security are paramount.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">On-premise and cloud computing: the differences</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The evolution of IT infrastructures has led to two main approaches: on-premise and cloud computing. These two solutions differ fundamentally in terms of deployment, management, cost and scalability. <a href="https://stagingv6.cleverapps.io/fr/clever-cloud-on-premises/">On-premises</a> involves purchasing, installing and managing hardware and software directly on the company's servers by a trained team, offering total control over data, network and security. Cloud computing, on the other hand, is based on outsourcing these tasks so that the company can concentrate on its core business.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">When should you choose on-premise rather than cloud computing?</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Opting for an on-premise infrastructure can be a strategic choice, from a budgetary, technical and HR point of view. If the company wants to pay for and amortise its investments, control the entire value chain and be able to recruit and retain its talent, the on-premise option may be just what it needs. If it wants to concentrate on its core business, it will find it easier to turn to cloud computing to outsource this work to a service provider whose job it is.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">The future of cloud computing</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing continues to evolve at lightning speed, and its potential continues to grow. We are at the dawn of an era where cutting-edge technologies such as artificial intelligence (AI), quantum computing and edge computing will redefine current cloud paradigms. This future promises increased integration of low-code and no-code platforms, as well as massive adoption of the Internet of Things (IoT), enabling businesses and developers to design innovative solutions without necessarily benefiting from advanced technical expertise.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1600" height="710" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-en.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="All you need to know about cloud computing" decoding="async" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-en.png 1600w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-en-300x133.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-en-1024x454.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-en-768x341.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-en-1536x682.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/11/2024-11-04-clever-cloud-banniere-blog-cloud-computing-en-1368x607.png 1368w" sizes="(max-width: 1600px) 100vw, 1600px" /></p><!-- wp:paragraph -->
<p>Back to basics with this first article in a new series. Let's take a look at how cloud computing works, its different architectures (public, private, hybrid), its many benefits for businesses, and the differences between cloud computing, edge computing and on-premise to help you choose the solution best suited to your needs.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Cloud computing: definition and origins</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing has profoundly transformed the way businesses and individuals access IT resources. The idea is simple but innovative: rather than owning and managing their own servers and data centres, users can now access IT services on demand, via a network. These services include computing power, data storage and sometimes even database management, offering unprecedented flexibility and accessibility. It's not an idea that dates back to yesterday...</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">How cloud computing has evolved over time</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The concept of cloud computing, although widely popularised in the early 2000s, has its roots in the 1960s. At that time, computer pioneers were already considering the idea of making computing power accessible as a public utility. During the 1990s, network diagrams began to use the image of a ‘cloud’ to represent the Internet, symbolising the complexity and interconnectedness of the networks that today enable cloud computing to function as a global and flexible architecture.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The real strength of the cloud lies in its ability to provide remote and scalable computing resources, enabling businesses to simplify the management of their infrastructure, avoid wasting resources, and <a href="https://stagingv6.cleverapps.io/cloud-and-green-it/">improve energy efficiency</a> through three pillars:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><strong>Unified billing</strong>: The cloud offers a <a href="https://developers.clever-cloud.com/doc/billing/unified-invoices/">single billing system</a> that simplifies cost management for businesses. This transparency makes it possible to accurately track expenditure and optimise costs;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><strong>Centralised, secure access</strong>: The cloud offers a single interface that simplifies access to services, while centralising management. IAM (Identity and Access Management) systems provide enhanced security, with auditability tools for improved compliance;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><strong>A rich and diverse marketplace</strong>: The cloud provides a vast marketplace, giving businesses access to a <a href="https://stagingv6.cleverapps.io/product/">wide range of products</a> and services. This diversity promotes the flexibility and scalability of the solutions deployed.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">How do you simply define cloud computing?</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>In simple terms, cloud computing is defined as remote access to shared computing resources, without the complexity of managing the underlying physical infrastructure. This approach enables businesses to make a long-term investment in the long-term management and hosting of their data, while giving them the flexibility to rapidly adjust their capacity as required. Clever Cloud, for example, automates the scalability, optimising resources in real time to meet demand.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">How does cloud computing work?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Based on a network-based computing services model, the cloud enables businesses to access resources such as data storage, computing power and access to a catalogue of online applications, without the need to manage the hardware infrastructure directly. This approach offers greater flexibility, cost optimisation and operational efficiency, all of which encourage innovation.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">The key elements of cloud operation</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>There are several fundamental elements that ensure the efficiency and scalability of the cloud. Here's an overview of the key elements.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">The physical infrastructure</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>At the heart of the cloud is a <a href="https://stagingv6.cleverapps.io/infrastructure/">physical infrastructure</a> made up of servers, storage systems and interconnected networks. These infrastructures are located in data centres around the world, promising very high availability, <a href="https://stagingv6.cleverapps.io/security/">enhanced security</a> and optimum performance. Cloud providers like Clever Cloud invest heavily to maintain high quality standards, verified through various certifications.</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>This fundamental principle enables the creation of virtual versions of physical resources, such as servers or storage systems. Virtualisation improves efficiency by enabling several users or applications to use the same resources in an optimised way: the famous Virtual Machines (VMs). This technology also simplifies management and reduces operating costs by disconnecting the hardware infrastructure from the user experience.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Access interfaces and APIs</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud service interfaces are designed to be secure and high-performance, making it easier to manage resources and deploy applications. APIs offer system administrators, DevOps and developers the possibility of automating and integrating cloud services into their own systems, maximising customisation, efficiency and flexibility and extending the range of possible functionalities.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">The different cloud architectures: public, private and hybrid</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Each cloud architecture has its own advantages and addresses different needs. The key is to choose the one that best aligns with your organisation's strategic objectives and operational constraints.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Public Cloud: simplified accessibility and scalability for data hosting</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The public cloud is the most common architecture. Here, IT resources are hosted on servers belonging to cloud service providers, such as Clever Cloud. These services are accessible via the network, providing a scalable solution that can adapt quickly to changing business needs.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The public cloud offers different levels of service, from Infrastructure as a Service (IaaS) to Platform as a Service (PaaS), via Software as a Service (SaaS). This diversity means that businesses can choose the solution best suited to their needs, while benefiting from the fact that there is no initial investment in infrastructure.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Private cloud: controlled, secure data hosting</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>By definition, the private cloud is a solution dedicated to a single organisation. Unlike the public cloud, the customer's servers are dedicated to that organisation. This is often a hosting zone behind the customer's firewall, made available by a cloud provider. This architecture offers total control over data and enhanced security, which is ideal for sectors subject to strict regulations (financial, health, pharmaceutical, public, defence, legal, industrial, etc.). The private cloud allows greater customisation of the data hosting architecture, tailored to the specific needs of the business.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4 class="wp-block-heading">Hybrid cloud: don't put all your eggs in one basket</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The hybrid cloud offers greater resilience by combining the advantages of the public and private clouds. By diversifying environments, businesses avoid putting all their eggs in one basket. For example, they can store sensitive data in a private cloud while using a public cloud for backups or less critical workloads. This means they can switch from one environment to the other depending on their needs in terms of performance, cost or security. However, with the high egress fees charged by hyperscalers, this approach can become costly.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In reality, the hybrid cloud is already common practice, often without companies being fully aware of it. Since the democratisation of SaaS, the majority of applications are no longer solely on-premises, but are based on a mix of public cloud, private cloud and SaaS services.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">What are the different types of cloud computing?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing is divided into several main categories: Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS) and Function as a Service (FaaS). Each type offers different levels of control, flexibility and management, so you can choose the one that best suits your needs.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Infrastructure as a Service (IaaS) for maximum customisation</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Infrastructure as a Service (IaaS) is historically the most widespread model of cloud computing. With IaaS, businesses rent IT resources such as servers, virtual machines, storage and networks directly from a cloud service provider.&nbsp; Customers take care of maintaining their OS, databases, runtimes, etc. in operational conditions, using system administrators, either in-house or from an outsourcer. This allows companies to have a specific architecture that meets their needs.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Platform as a Service (PaaS) for rapid deployment and automatic updates</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><a href="https://stagingv6.cleverapps.io/">Platform as a Service (PaaS)</a> goes a step further than IaaS by providing an OS, middleware and a console for easy deployment of runtimes and even databases or third-party services, known as add-ons. The customer no longer has to worry about maintaining the system in operational condition (MCO), which is the responsibility of the cloud provider.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>PaaS solutions make it easy to deploy applications quickly, while automatically maintaining and updating the infrastructure. With integrated development tools and a modular architecture, Clever Cloud simplifies the work of developers and DevOps teams by offering them a ready-to-use environment to accelerate innovation: deploy code, we'll take care of the rest!&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Software as a Service (SaaS) for greater simplicity</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Software as a Service (SaaS) is the most common cloud computing model. SaaS applications are hosted and managed by service providers, enabling users to access them via the Internet, usually on a subscription basis. This model eliminates the need to install and maintain software locally, reducing costs and technical complexity.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>SaaS is particularly useful for businesses looking to standardise their software tools without investing in IT infrastructure. For example, collaboration tools, customer relationship management (CRM) systems and office suites are often deployed as SaaS services for maximum simplicity.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Functions as a Service (FaaS) for greater agility</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Functions as a Service (FaaS) is an evolution of the PaaS model that allows developers to create and deploy individual functions without worrying about server management. The cloud provider takes care of all the infrastructure, scaling and resource management, charging only for the time it takes to run the functions.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The functions are triggered by events defined in advance, enabling the function to launch its action (processing an image, converting a file, etc.) and therefore to switch on, be active for the duration of the action and then switch off. services for economic reasons. FaaS is often complementary to PaaS.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">What are the advantages of cloud computing?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Whether in terms of scalability or security, the cloud offers a number of benefits for organisations that decide to adopt it.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Cost optimisation: a strategic approach rather than just savings</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing can be part of a financial strategy, in particular by transforming capital expenditure (CAPEX) into operational expenditure (OPEX). This budgetary transition enables companies to outsource their initial IT infrastructure costs (purchase of servers, data centre maintenance, fibre management, recruitment of a dedicated team, etc.). Organisations can adopt a pay-as-you-go model, adjusting their spending according to their real needs. Some hyperscalers will still offer to pay for reserved instances, which will have to be paid for even if they are not used, but this is not the majority of usage.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Scalability: the cloud adapts to your needs</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Whether you need to increase processing capacity during peak periods or reduce resources during off-peak periods, the cloud is flexible and scalable on demand, thanks to probes and orchestrators. This responsiveness ensures optimum use of resources and gives businesses greater agility to respond to changes in the market and in demand. At Clever Cloud, scalability is automatic, which means it adapts in real time to your needs, so you only pay for what you actually use.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Security: a key pillar for businesses</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing greatly improves the security of your data. Cloud providers invest, keep a constant watch and have the role of warning their customers or updating exposed areas. Storage in the cloud and its backups provide great resilience. Backed-up data can easily be accessed or a disaster recovery plan (DRP) or business continuity plan (BCP) can be launched. At Clever Cloud, we go even further: our Materia databases are automatically replicated to our three Paris data centres, giving you peace of mind. Another key point is that many security certifications may be required when hosting critical or personal data. Cloud providers undertake to comply with them.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Accessibility: instantaneous response to new work trends</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing makes your data more accessible, enabling your teams to collaborate effectively, regardless of their location. Data and applications hosted in the cloud can be available 24/7. This facilitates teleworking, speeds up decision-making processes and improves team productivity, while guaranteeing real-time synchronisation of information.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Automatic updates and operational maintenance</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>With cloud computing, software updates and security patches are automatically managed by the supplier, without the intervention of the customer's IT team. This not only reduces the internal workload, but also ensures that the systems have no security holes.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Who uses cloud computing?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing is now an essential component for businesses of all sizes and in all sectors. Its massive adoption is driven by the outsourcing of management and MCO, the unification of costs and access to a marketplace.&nbsp; Whether it's for data storage and backup, Big Data analysis, mail server hosting or web application development and deployment, the cloud has become essential for meeting the growing demands of the market.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>For example, organisations in the financial sector are using cloud computing to detect and prevent fraud in real time, using machine learning algorithms and predictive analysis. Healthcare companies, meanwhile, are exploiting these technologies to offer more personalised treatments, thereby improving the quality of care for their patients. The entertainment sector and video game creators are relying on the cloud to deliver their content to millions of users around the world, guaranteeing a fluid and immersive experience.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>But this technology is not just for large companies: SMEs, start-ups, freelancers and private individuals are also adopting the cloud to benefit from a scalable infrastructure without having to bear the high costs associated with physical data centres. By opting for these solutions, they can concentrate on what they need.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">What are the uses of cloud computing?</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing offers a multitude of uses for businesses and individuals, including the following.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Storing and backing up data</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The cloud enables businesses to protect their information while benefiting from a large storage capacity, all the while retaining control over billing. Data can be easily accessed from any connected device, making it easier to recover in the event of a technical problem.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Hosting applications and websites</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Hosting applications and websites is another key use of cloud computing, enabling applications to be created and deployed with a high degree of scalability. Developers benefit from a reliable solution that delivers a fluid, high-performance user experience.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Distributing software and content as a service</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing also facilitates the development of software and content as a service (SaaS). This model reduces the need for local installations and enables companies to offer regular updates without service interruption, accessible at any time and on any type of device. They can focus on the continuous improvement of their products while simplifying the management of software versions.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Data analysis and artificial intelligence (AI)</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Data analysis and the integration of artificial intelligence (AI) are made possible by the capabilities and performance of cloud computing. Companies can centralise their data in cloud systems, such as datalakes or data warehouses, and use and train machine learning services to extract the desired elements. These technologies help to develop predictive models, automate processes, generate text or images, etc.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Application testing and development</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The cloud is also a powerful tool for application testing and development. Thanks to the standardisation of test environments, it is now possible to obtain dedicated spaces in just a few clicks, saving time for teams of developers. Cloud infrastructures offer a high degree of flexibility for creating, testing and deploying applications, while facilitating continuous integration and continuous deployment (CI/CD). This approach accelerates the development cycle and enables companies to reduce their time to market.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Edge computing and cloud computing: the differences</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing and edge computing are two distinct architectures that meet different needs. Whereas cloud computing centralises resources and processing in large data centres, edge computing moves these operations closer to the data sources using small-scale infrastructures.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>This approach enables edge computing to reduce latency and improve processing speed, which is essential for applications such as the Internet of Things (IoT), autonomous vehicles and augmented reality. The choice between these two technologies often depends on the context and on performance, security and connectivity requirements. Edge computing also makes it possible to offer a hybrid architecture, which can take over in the event of availability problems.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Cloud computing is distinguished by its ability to offer scalable, pooled resources, accessible via the Internet, making it an ideal solution for applications requiring high computing and storage power. By contrast, edge computing favours local processing for real-time responses, reducing dependency on network connectivity.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">When should you choose edge computing rather than cloud computing?</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Choosing between edge computing and cloud computing depends on several key factors:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Reactivity and low latency: Edge computing is the best solution when instant response is crucial. For example, in industrial control systems or autonomous vehicles, every millisecond counts. Local processing of data by edge computing reduces delays and improves the reliability of operations;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Volume of data to be processed: When the volume of data generated is too large to be transferred quickly to a central data centre, edge computing becomes essential. It enables data to be filtered and processed at source, minimising network traffic and optimising bandwidth use;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Isolated environments or those with limited connectivity: In areas where the Internet connection is unstable or non-existent, edge computing ensures that data is processed without interruption. This makes it an ideal solution for remote sites, such as industrial facilities or critical infrastructures;</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Data security and confidentiality: Edge computing provides an extra layer of security by processing data locally, limiting its exposure to potential cyber threats. This is particularly important for sensitive sectors such as healthcare or financial services.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>So, while cloud computing is suited to tasks requiring vast resources and global accessibility, edge computing is essential in contexts where speed, locality and data security are paramount.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">On-premise and cloud computing: the differences</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The evolution of IT infrastructures has led to two main approaches: on-premise and cloud computing. These two solutions differ fundamentally in terms of deployment, management, cost and scalability. <a href="https://stagingv6.cleverapps.io/fr/clever-cloud-on-premises/">On-premises</a> involves purchasing, installing and managing hardware and software directly on the company's servers by a trained team, offering total control over data, network and security. Cloud computing, on the other hand, is based on outsourcing these tasks so that the company can concentrate on its core business.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">When should you choose on-premise rather than cloud computing?</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Opting for an on-premise infrastructure can be a strategic choice, from a budgetary, technical and HR point of view. If the company wants to pay for and amortise its investments, control the entire value chain and be able to recruit and retain its talent, the on-premise option may be just what it needs. If it wants to concentrate on its core business, it will find it easier to turn to cloud computing to outsource this work to a service provider whose job it is.&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">The future of cloud computing</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Cloud computing continues to evolve at lightning speed, and its potential continues to grow. We are at the dawn of an era where cutting-edge technologies such as artificial intelligence (AI), quantum computing and edge computing will redefine current cloud paradigms. This future promises increased integration of low-code and no-code platforms, as well as massive adoption of the Internet of Things (IoT), enabling businesses and developers to design innovative solutions without necessarily benefiting from advanced technical expertise.</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://stagingv6.cleverapps.io/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://stagingv6.cleverapps.io/?p=12497</guid>

					<description><![CDATA[<p><img width="1600" height="800" src="https://staging-cc-assetsv6.cellar-c2.services.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: our easy-to-use serverless key-value database is available to all" decoding="async" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en.png 1600w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-300x150.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-1024x512.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-768x384.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-1536x768.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-1368x684.png 1368w" sizes="(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://stagingv6.cleverapps.io/product/mongodb/">MongoDB</a>, <a href="https://stagingv6.cleverapps.io/product/mysql/">MySQL</a>, <a href="https://stagingv6.cleverapps.io/product/postgresql/">PostgreSQL</a> or <a href="https://stagingv6.cleverapps.io/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://stagingv6.cleverapps.io/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 DynamoDB, 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 DynamoDB and 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://stagingv6.cleverapps.io/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://staging-cc-assetsv6.cellar-c2.services.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: our easy-to-use serverless key-value database is available to all" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en.png 1600w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-300x150.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-1024x512.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-768x384.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/06/materia-kv-alpha-publique-en-1536x768.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.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://stagingv6.cleverapps.io/product/mongodb/">MongoDB</a>, <a href="https://stagingv6.cleverapps.io/product/mysql/">MySQL</a>, <a href="https://stagingv6.cleverapps.io/product/postgresql/">PostgreSQL</a> or <a href="https://stagingv6.cleverapps.io/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://stagingv6.cleverapps.io/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 DynamoDB, 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 DynamoDB and 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://stagingv6.cleverapps.io/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://stagingv6.cleverapps.io/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://stagingv6.cleverapps.io/?p=12175</guid>

					<description><![CDATA[<p><img width="1800" height="710" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/materia-en.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="materia banner" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/materia-en.png 1800w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/materia-en-300x118.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/materia-en-1024x404.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/materia-en-768x303.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/materia-en-1536x606.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.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://stagingv6.cleverapps.io/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><!-- wp:list-item -->
<li><a href="https://stagingv6.cleverapps.io/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 DynamoDB, 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://stagingv6.cleverapps.io/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://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/materia-en.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="materia banner" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/materia-en.png 1800w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/materia-en-300x118.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/materia-en-1024x404.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/materia-en-768x303.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/materia-en-1536x606.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.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://stagingv6.cleverapps.io/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><!-- wp:list-item -->
<li><a href="https://stagingv6.cleverapps.io/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 DynamoDB, 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://stagingv6.cleverapps.io/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>Our new logs interface is available in public beta</title>
		<link>https://stagingv6.cleverapps.io/blog/company/2024/04/15/our-new-logs-interface/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Mon, 15 Apr 2024 11:37:00 +0000</pubDate>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[changelog]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[feature]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=12112</guid>

					<description><![CDATA[<p><img width="1600" height="710" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-4.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="banner logs interface" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-4.png 1600w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-4-300x133.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-4-1024x454.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-4-768x341.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-4-1536x682.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-4-1368x607.png 1368w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></p><!-- wp:paragraph -->
<p>When you deploy an application with Clever Cloud, it's not just delivered online and maintained in operational condition. It also comes with a range of services and dedicated features to help you operate it all along its lifecycle. One of these is <strong>our log stack</strong>. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We upgraded it last year to rely on Vector for emission, Apache Pulsar for ingestion and consumption, while ensuring isolation between each user (multi-tenant) and each application. The previous solution had shown its limitations and prevented us from delivering some enhancements. Our main objective was to improve our users' experience on many different levels.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">A new Logs experience at Clever Cloud</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>We've been using it successfully in our <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a> command line interface (CLI) for several months now. You can view your logs live, download those for a given time window, or even filter them, with the results available in a variety of formats. Documentation is available<a href="https://github.com/CleverCloud/clever-tools/blob/master/docs/applications-deployment-lifecycle.md#logs" target="_blank" rel="noreferrer noopener"> here</a>. Of course, this feature is based on our APIv4, which is also documented <a href="https://developers.clever-cloud.com/api/v4/#logs" target="_blank" rel="noreferrer noopener">there</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The next step was to <strong>integrate this new technical brick into the <a href="https://console.clever-cloud.com/" target="_blank" rel="noreferrer noopener">Console</a></strong>. This was an opportunity for us to rethink the section dedicated to logs so that it exploited <a href="https://stagingv6.cleverapps.io/doc/clever-components/?path=/docs/readme--docs" target="_blank" rel="noreferrer noopener">our Web Components</a> and met our criteria in terms of usability, functionality and accessibility. Our team spent several months rethinking it from top to bottom.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"wide","id":12108,"sizeSlug":"large","linkDestination":"media"} -->
<figure class="wp-block-image alignwide size-large"><a href="https://cdn.clever-cloud.com/uploads/2024/04/new-logs-1.webp" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2024/04/new-logs-1-1024x616.webp" alt="The Clever Cloud new Logs interface" class="wp-image-12108"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>After an internal testing phase, it is now available in beta to all our customers. They can choose it by clicking on a simple link in the interface, and return to the old one whenever they want. Our objective is to continuously improve this section, and then gradually extend it to all our services. To share your feedback, we've created a community space on GitHub for the purpose:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://console.clever-cloud.com/" target="_blank" rel="noreferrer noopener">Go to the Clever Cloud Console</a></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><a href="https://github.com/CleverCloud/Community/discussions/categories/new-logs-interface" target="_blank" rel="noreferrer noopener">Give your opinion on our new Logs interface</a></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:heading -->
<h2 class="wp-block-heading">A myriad of details…</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The previous interface allowed you to browse your latest deployments and their various instances one by one. The new interface goes one step further, listing by default all deployments and instances of an application over the last 7 days. The logs of the most recent deployment will be loaded, but you can also add or remove those of the instance of your choice. Each deployment is identified by the hash of the related code commit, with instances numbered (in the case of horizontal scalability).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>You can reduce the time window to a few days or a few hours, or even manually indicate start and end times, which is useful when you're looking for specific information, for example, when tracking down a bug. You also have a text filter above the main area. It will evolve with the introduction of an indexing mechanism that will open up new possibilities in this area.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Of course, you can also follow the publication of your logs live. This will be the section displayed by default when a deployment is in progress.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">... and of features</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The main area lets you<strong> select one or more lines with the keyboard and mouse</strong> via the gutter on the left, with the option of copying the result to the clipboard just as simply by pressing CTRL+C/Cmd+C. At the top right you'll find a button to set the area to full screen, another to return to the bottom of your logs and a settings area.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Although it's still new, it's already quite complete and uses our new API for user settings. It lets you <strong>choose between different light/dark themes, remove colors and ANSI codes, line wrap or not, define a format for date and time, choose whether to display in your time zone or in UTC, distinguish instances by name</strong>, etc. Of course, this is subject to change, so don't hesitate to make suggestions.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We'll keep you posted on future improvements in <a href="https://stagingv6.cleverapps.io/blog/" 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 on this <a href="https://stagingv6.cleverapps.io/blog/">blog</a> for the next big steps between now and general availability. Don't forget to 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> to keep up to date.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1600" height="710" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-4.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="banner logs interface" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-4.png 1600w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-4-300x133.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-4-1024x454.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-4-768x341.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-4-1536x682.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/2-4-1368x607.png 1368w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></p><!-- wp:paragraph -->
<p>When you deploy an application with Clever Cloud, it's not just delivered online and maintained in operational condition. It also comes with a range of services and dedicated features to help you operate it all along its lifecycle. One of these is <strong>our log stack</strong>. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We upgraded it last year to rely on Vector for emission, Apache Pulsar for ingestion and consumption, while ensuring isolation between each user (multi-tenant) and each application. The previous solution had shown its limitations and prevented us from delivering some enhancements. Our main objective was to improve our users' experience on many different levels.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">A new Logs experience at Clever Cloud</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>We've been using it successfully in our <a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a> command line interface (CLI) for several months now. You can view your logs live, download those for a given time window, or even filter them, with the results available in a variety of formats. Documentation is available<a href="https://github.com/CleverCloud/clever-tools/blob/master/docs/applications-deployment-lifecycle.md#logs" target="_blank" rel="noreferrer noopener"> here</a>. Of course, this feature is based on our APIv4, which is also documented <a href="https://developers.clever-cloud.com/api/v4/#logs" target="_blank" rel="noreferrer noopener">there</a>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The next step was to <strong>integrate this new technical brick into the <a href="https://console.clever-cloud.com/" target="_blank" rel="noreferrer noopener">Console</a></strong>. This was an opportunity for us to rethink the section dedicated to logs so that it exploited <a href="https://stagingv6.cleverapps.io/doc/clever-components/?path=/docs/readme--docs" target="_blank" rel="noreferrer noopener">our Web Components</a> and met our criteria in terms of usability, functionality and accessibility. Our team spent several months rethinking it from top to bottom.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"align":"wide","id":12108,"sizeSlug":"large","linkDestination":"media"} -->
<figure class="wp-block-image alignwide size-large"><a href="https://cdn.clever-cloud.com/uploads/2024/04/new-logs-1.webp" target="_blank" rel="noreferrer noopener"><img src="https://cdn.clever-cloud.com/uploads/2024/04/new-logs-1-1024x616.webp" alt="The Clever Cloud new Logs interface" class="wp-image-12108"/></a></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>After an internal testing phase, it is now available in beta to all our customers. They can choose it by clicking on a simple link in the interface, and return to the old one whenever they want. Our objective is to continuously improve this section, and then gradually extend it to all our services. To share your feedback, we've created a community space on GitHub for the purpose:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://console.clever-cloud.com/" target="_blank" rel="noreferrer noopener">Go to the Clever Cloud Console</a></li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><a href="https://github.com/CleverCloud/Community/discussions/categories/new-logs-interface" target="_blank" rel="noreferrer noopener">Give your opinion on our new Logs interface</a></li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:heading -->
<h2 class="wp-block-heading">A myriad of details…</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The previous interface allowed you to browse your latest deployments and their various instances one by one. The new interface goes one step further, listing by default all deployments and instances of an application over the last 7 days. The logs of the most recent deployment will be loaded, but you can also add or remove those of the instance of your choice. Each deployment is identified by the hash of the related code commit, with instances numbered (in the case of horizontal scalability).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>You can reduce the time window to a few days or a few hours, or even manually indicate start and end times, which is useful when you're looking for specific information, for example, when tracking down a bug. You also have a text filter above the main area. It will evolve with the introduction of an indexing mechanism that will open up new possibilities in this area.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Of course, you can also follow the publication of your logs live. This will be the section displayed by default when a deployment is in progress.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">... and of features</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>The main area lets you<strong> select one or more lines with the keyboard and mouse</strong> via the gutter on the left, with the option of copying the result to the clipboard just as simply by pressing CTRL+C/Cmd+C. At the top right you'll find a button to set the area to full screen, another to return to the bottom of your logs and a settings area.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Although it's still new, it's already quite complete and uses our new API for user settings. It lets you <strong>choose between different light/dark themes, remove colors and ANSI codes, line wrap or not, define a format for date and time, choose whether to display in your time zone or in UTC, distinguish instances by name</strong>, etc. Of course, this is subject to change, so don't hesitate to make suggestions.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We'll keep you posted on future improvements in <a href="https://stagingv6.cleverapps.io/blog/" 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 on this <a href="https://stagingv6.cleverapps.io/blog/">blog</a> for the next big steps between now and general availability. Don't forget to 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> to keep up to date.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Metrics: Offloading billions of datapoints each month</title>
		<link>https://stagingv6.cleverapps.io/blog/engineering/2024/04/04/metrics-offloading-billions-of-datapoints-each-month/</link>
		
		<dc:creator><![CDATA[Alexandre Burgoni]]></dc:creator>
		<pubDate>Thu, 04 Apr 2024 14:40:13 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=12046</guid>

					<description><![CDATA[<p><img width="1600" height="710" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/1-2.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/1-2.png 1600w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/1-2-300x133.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/1-2-1024x454.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/1-2-768x341.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/1-2-1536x682.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/1-2-1368x607.png 1368w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></p><!-- wp:paragraph -->
<p>To ensure a Clever Cloud application has enough resources allocated in our infrastructure, we use metrics to know when to scale up/down.Those metrics, along with those from our internal systems, are stored into a time series database which is growing at a pace of 2 TB per week. As we want to keep them for any further analysis, we had to set up a solution to automatically offload this data every month into our <a href="https://stagingv6.cleverapps.io/product/cellar-object-storage/">Cellar</a> object storage.</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>With thousands of customer applications, and hundreds of internal applications, we needed a time series database capable of ingesting hundreds of thousands data points per second.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>That’s why our customer-facing cluster,<strong>warp10-c2</strong>, in production since October 2023, is using <a href="https://warp10.io/">Warp10</a>. It effortlessly satisfies our performance requirements thanks to the underlying storage layer, <a href="https://www.foundationdb.org/">FoundationDB</a>. In its distributed version, it can handle ingestion spikes of over 500,000 data points per second while processing reads of over 5,000,000 data points per second.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Continuously growing cluster</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Even though we could handle metric data efficiently, the growing rate of our database (2 TB per week) has put us in a challenging situation.At first, we were handling stability issues. To focus on one of them without having to deal with storage problems, we added more SSD nodes to our FoundationDB cluster.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Once this situation was handled, we had to deal with computing resources needs, find a good balance and how to gain storage capabilities without losing data.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In the end, we found a good way to achieve this: offloading those metrics in our object storage (HDD) service (Cellar) and once done, delete them in the hot (NVMe SSD) storage.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Offloading data can be done through various ways</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>First and naive way would be to select data points and send them into buckets in our own format. Our query system can handle millions of reads per second, but we are talking about billions of data points here. Even with dedicated&nbsp; servers, it would have led to performance issues coming from our storage layer. In addition, we would have disk usage similar to&nbsp; data in the hot storage.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>A second way would have been to reduce the resolution of metrics, instead of having data points with seconds or minutes precision, we could re-process with their average value per hour or per day. This solution would leave us with more questions than solutions: “How to handle metrics extreme values ? An application running only a few seconds or minutes and not a day? What about our internal applications, do we re-process metrics on a case-by-case basis?” It would have been too much effort put in a flawed system.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The last and final way would have been to use Warp10 HFiles proprietary extension. It can be added on internal machines of our c2 cluster, and used to generate compact and data-efficient files, with encryption capabilities. This solution could lead us to a compression ratio that can take TB of data into a few GB, this is due to metrics that are mostly the same (e.g a CPU usage percentage has a finite number of values).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In February, we’ve chosen this approach. Still, we should implement this system, with automatic processing, so that our data team doesn't have to deal with this tedious task every month.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Building the automated process</h2>
<!-- /wp:heading -->

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

<!-- wp:paragraph -->
<p>Before diving into how we made this possible, a small introduction into HFiles is necessary to better understand why we did it this way. Then, we’ll dive into a workflow orchestrator we are using offload automatically. And finally, the figures from our first batch.</p>
<!-- /wp:paragraph -->

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

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

<!-- wp:paragraph -->
<p>HFile is part of the Warp10 HFiles extension. Its process is fairly simple. At first, it will fetch all `s matching a criteria, and for each of them, try to gather all the data points in a specified time range, while continuously compressing the data. This can take a lot of time, within our experiments, some generations could take days to be done (yes, really). But with proper optimisation, days could become hours. Those generations are synchronous, meaning we need to keep an open HTTP connection with the machine running the generation in order to succeed.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We mostly adjusted three parameters in order to optimize the processing time:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Data points time range: it allows to only fetch data points between two dates</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Concurrency: running a single HFile generation is time consuming, so running multiple generations in parallel can save a lot of time</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Number of series: for each series, it will try to fetch its data points (even if it’s zero in the specified time range). Thus, optimizing the number of series can save a lot of requests into our storage layer, and then save time</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p><strong>What do "series" mean?</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>A series, called <a href="https://warp10.io/content/03_Documentation/04_WarpScript#geo-time-series">GTS</a> (“Geo Time Series”) in Warp10, is composed of a metric name and one or multiple labels which gives context. For instance, a GTS to know the CPU usage of an application would be cpu.usage_guest{app_id='app_87e33fea-9dde-4a99-b347-674de382ff7b'}. In our c2 cluster , we got over 150 million of them.</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>Those generations required a tool that met the following constraints:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Scheduling capabilities: to prevent having to trigger the action manually each month</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Retries and fail over: in case of failure of a HFile generation, it should be able to retry, or if a scheduling node fails, to run it again on another node</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Alerting, when retries aren’t enough, we must be aware of the failure</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Handle long tasks: as our generations can take several hours</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>We went through several workflow orchestration solutions, but our final bet went to <a href="https://github.com/kestra-io/kestra">Kestra</a>. It’s an open source tool that answers the above constraints. Deployed as a Clever Cloud application, it helped us to create workflows that minimise generation time by using our optimised parameters for HFile generation. </p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":11977,"sizeSlug":"full","linkDestination":"none","style":{"color":{"duotone":"unset"}}} -->
<figure class="wp-block-image size-full"><img src="https://cdn.clever-cloud.com/uploads/2024/03/image-1.png" alt="" class="wp-image-11977" /></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>At the end of February, we finished our HFile generation workflow (see above), and ran it for the first time on November metrics, without deletion. This test-run, once successful, gave us enough confidence in <a href="https://github.com/kestra-io/kestra">Kestra</a>. We ran the deletion manually afterwards.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>However, starting in March, the whole HFile generation and data deletion from hot storage has been automated. Although our need for this scheduler is limited to this use case, we intend to apply it for different scenarios in the future.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">November's metrics offload</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>As said earlier, we ran our first month of offloading successfully, based on November data (we want to continuously have at least 3 months of metrics available from hot storage). This first month was special, as c2 entered into production at the end of October, and all Clever Cloud customers applications had to be re-deployed using it. It means that this month has a higher number of series and data points than any other.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Thus, last November, we offloaded over 22 billions data points from 33 millions series. These needed approximately 20 TB of data from hot storage. Once compressed, it fits in only…20 GB. An important thing to note here is that the data in the hot storage is encrypted, meaning the size is several times the actual data point or series size.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In conclusion, managing metric data efficiently, especially at a growth rate of 2 TB per week, presented challenges that required careful planning. By leveraging Warp10 HFiles' data compression capabilities and building an automated offloading system to Cellar object storage, we successfully optimised our storage resources.</p>
<!-- /wp:paragraph -->

<!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"}} -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://stagingv6.cleverapps.io/contact/">Contact us</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->]]></description>
										<content:encoded><![CDATA[<p><img width="1600" height="710" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/1-2.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/1-2.png 1600w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/1-2-300x133.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/1-2-1024x454.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/1-2-768x341.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/1-2-1536x682.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/04/1-2-1368x607.png 1368w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></p><!-- wp:paragraph -->
<p>To ensure a Clever Cloud application has enough resources allocated in our infrastructure, we use metrics to know when to scale up/down.Those metrics, along with those from our internal systems, are stored into a time series database which is growing at a pace of 2 TB per week. As we want to keep them for any further analysis, we had to set up a solution to automatically offload this data every month into our <a href="https://stagingv6.cleverapps.io/product/cellar-object-storage/">Cellar</a> object storage.</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>With thousands of customer applications, and hundreds of internal applications, we needed a time series database capable of ingesting hundreds of thousands data points per second.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>That’s why our customer-facing cluster,<strong>warp10-c2</strong>, in production since October 2023, is using <a href="https://warp10.io/">Warp10</a>. It effortlessly satisfies our performance requirements thanks to the underlying storage layer, <a href="https://www.foundationdb.org/">FoundationDB</a>. In its distributed version, it can handle ingestion spikes of over 500,000 data points per second while processing reads of over 5,000,000 data points per second.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Continuously growing cluster</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Even though we could handle metric data efficiently, the growing rate of our database (2 TB per week) has put us in a challenging situation.At first, we were handling stability issues. To focus on one of them without having to deal with storage problems, we added more SSD nodes to our FoundationDB cluster.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Once this situation was handled, we had to deal with computing resources needs, find a good balance and how to gain storage capabilities without losing data.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In the end, we found a good way to achieve this: offloading those metrics in our object storage (HDD) service (Cellar) and once done, delete them in the hot (NVMe SSD) storage.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">Offloading data can be done through various ways</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>First and naive way would be to select data points and send them into buckets in our own format. Our query system can handle millions of reads per second, but we are talking about billions of data points here. Even with dedicated&nbsp; servers, it would have led to performance issues coming from our storage layer. In addition, we would have disk usage similar to&nbsp; data in the hot storage.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>A second way would have been to reduce the resolution of metrics, instead of having data points with seconds or minutes precision, we could re-process with their average value per hour or per day. This solution would leave us with more questions than solutions: “How to handle metrics extreme values ? An application running only a few seconds or minutes and not a day? What about our internal applications, do we re-process metrics on a case-by-case basis?” It would have been too much effort put in a flawed system.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>The last and final way would have been to use Warp10 HFiles proprietary extension. It can be added on internal machines of our c2 cluster, and used to generate compact and data-efficient files, with encryption capabilities. This solution could lead us to a compression ratio that can take TB of data into a few GB, this is due to metrics that are mostly the same (e.g a CPU usage percentage has a finite number of values).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In February, we’ve chosen this approach. Still, we should implement this system, with automatic processing, so that our data team doesn't have to deal with this tedious task every month.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Building the automated process</h2>
<!-- /wp:heading -->

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

<!-- wp:paragraph -->
<p>Before diving into how we made this possible, a small introduction into HFiles is necessary to better understand why we did it this way. Then, we’ll dive into a workflow orchestrator we are using offload automatically. And finally, the figures from our first batch.</p>
<!-- /wp:paragraph -->

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

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

<!-- wp:paragraph -->
<p>HFile is part of the Warp10 HFiles extension. Its process is fairly simple. At first, it will fetch all `s matching a criteria, and for each of them, try to gather all the data points in a specified time range, while continuously compressing the data. This can take a lot of time, within our experiments, some generations could take days to be done (yes, really). But with proper optimisation, days could become hours. Those generations are synchronous, meaning we need to keep an open HTTP connection with the machine running the generation in order to succeed.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We mostly adjusted three parameters in order to optimize the processing time:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Data points time range: it allows to only fetch data points between two dates</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Concurrency: running a single HFile generation is time consuming, so running multiple generations in parallel can save a lot of time</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Number of series: for each series, it will try to fetch its data points (even if it’s zero in the specified time range). Thus, optimizing the number of series can save a lot of requests into our storage layer, and then save time</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p><strong>What do "series" mean?</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>A series, called <a href="https://warp10.io/content/03_Documentation/04_WarpScript#geo-time-series">GTS</a> (“Geo Time Series”) in Warp10, is composed of a metric name and one or multiple labels which gives context. For instance, a GTS to know the CPU usage of an application would be cpu.usage_guest{app_id='app_87e33fea-9dde-4a99-b347-674de382ff7b'}. In our c2 cluster , we got over 150 million of them.</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>Those generations required a tool that met the following constraints:</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li>Scheduling capabilities: to prevent having to trigger the action manually each month</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Retries and fail over: in case of failure of a HFile generation, it should be able to retry, or if a scheduling node fails, to run it again on another node</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Alerting, when retries aren’t enough, we must be aware of the failure</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>Handle long tasks: as our generations can take several hours</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>We went through several workflow orchestration solutions, but our final bet went to <a href="https://github.com/kestra-io/kestra">Kestra</a>. It’s an open source tool that answers the above constraints. Deployed as a Clever Cloud application, it helped us to create workflows that minimise generation time by using our optimised parameters for HFile generation. </p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":11977,"sizeSlug":"full","linkDestination":"none","style":{"color":{"duotone":"unset"}}} -->
<figure class="wp-block-image size-full"><img src="https://cdn.clever-cloud.com/uploads/2024/03/image-1.png" alt="" class="wp-image-11977" /></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>At the end of February, we finished our HFile generation workflow (see above), and ran it for the first time on November metrics, without deletion. This test-run, once successful, gave us enough confidence in <a href="https://github.com/kestra-io/kestra">Kestra</a>. We ran the deletion manually afterwards.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>However, starting in March, the whole HFile generation and data deletion from hot storage has been automated. Although our need for this scheduler is limited to this use case, we intend to apply it for different scenarios in the future.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">November's metrics offload</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>As said earlier, we ran our first month of offloading successfully, based on November data (we want to continuously have at least 3 months of metrics available from hot storage). This first month was special, as c2 entered into production at the end of October, and all Clever Cloud customers applications had to be re-deployed using it. It means that this month has a higher number of series and data points than any other.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Thus, last November, we offloaded over 22 billions data points from 33 millions series. These needed approximately 20 TB of data from hot storage. Once compressed, it fits in only…20 GB. An important thing to note here is that the data in the hot storage is encrypted, meaning the size is several times the actual data point or series size.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In conclusion, managing metric data efficiently, especially at a growth rate of 2 TB per week, presented challenges that required careful planning. By leveraging Warp10 HFiles' data compression capabilities and building an automated offloading system to Cellar object storage, we successfully optimised our storage resources.</p>
<!-- /wp:paragraph -->

<!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"}} -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://stagingv6.cleverapps.io/contact/">Contact us</a></div>
<!-- /wp:button --></div>
<!-- /wp:buttons -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Clever Cloud opens a new Gravelines HDS region</title>
		<link>https://stagingv6.cleverapps.io/blog/company/2024/02/14/clever-cloud-opens-a-new-gravelines-hds-region/</link>
		
		<dc:creator><![CDATA[Carine Guillemet]]></dc:creator>
		<pubDate>Wed, 14 Feb 2024 14:34:16 +0000</pubDate>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[Engineering]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=11803</guid>

					<description><![CDATA[<p><img width="1600" height="710" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/02/gravelinehealthen.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="hds gravelines bannier" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/02/gravelinehealthen.png 1600w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/02/gravelinehealthen-300x133.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/02/gravelinehealthen-1024x454.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/02/gravelinehealthen-768x341.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/02/gravelinehealthen-1536x682.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/02/gravelinehealthen-1368x607.png 1368w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></p><!-- wp:paragraph -->
<p>As you know, you can deploy your applications and add-ons via Clever Cloud, on Health Data Hosting (HDS) certified servers, on tiers 1 and 2 of the standard, provided by <a href="https://stagingv6.cleverapps.io/infrastructure/">OVHcloud</a> in Roubaix. We also provide an object storage service (Cellar) from a cluster of such servers in Roubaix and Gravelines (separated by ~100 km), available as a <code>fr-north-hds</code>region.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>However, we had a growing demand for an HDS zone in Gravelines. independently for applications and add-ons. So our teams worked to enable you to deploy on HDS-certified servers in this zone, from&nbsp;<a href="https://github.com/CleverCloud/clever-tools"><code>clever-tools</code></a>&nbsp;or&nbsp;<a href="https://console.clever-cloud.com/">the Console</a>&nbsp;as&nbsp;<code>grahds</code>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Perfect for providing redundancy for your healthcare data applications!</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We'd like to take this opportunity to remind you that Clever Cloud's services and infrastructure were awarded ISO 9001 certification last year. We are also awaiting final approval for ISO 27001. Finally, HDS certification and SecNumCloud qualification will be our next projects.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1600" height="710" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/02/gravelinehealthen.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="hds gravelines bannier" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/02/gravelinehealthen.png 1600w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/02/gravelinehealthen-300x133.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/02/gravelinehealthen-1024x454.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/02/gravelinehealthen-768x341.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/02/gravelinehealthen-1536x682.png 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2024/02/gravelinehealthen-1368x607.png 1368w" sizes="auto, (max-width: 1600px) 100vw, 1600px" /></p><!-- wp:paragraph -->
<p>As you know, you can deploy your applications and add-ons via Clever Cloud, on Health Data Hosting (HDS) certified servers, on tiers 1 and 2 of the standard, provided by <a href="https://stagingv6.cleverapps.io/infrastructure/">OVHcloud</a> in Roubaix. We also provide an object storage service (Cellar) from a cluster of such servers in Roubaix and Gravelines (separated by ~100 km), available as a <code>fr-north-hds</code>region.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>However, we had a growing demand for an HDS zone in Gravelines. independently for applications and add-ons. So our teams worked to enable you to deploy on HDS-certified servers in this zone, from&nbsp;<a href="https://github.com/CleverCloud/clever-tools"><code>clever-tools</code></a>&nbsp;or&nbsp;<a href="https://console.clever-cloud.com/">the Console</a>&nbsp;as&nbsp;<code>grahds</code>.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Perfect for providing redundancy for your healthcare data applications!</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We'd like to take this opportunity to remind you that Clever Cloud's services and infrastructure were awarded ISO 9001 certification last year. We are also awaiting final approval for ISO 27001. Finally, HDS certification and SecNumCloud qualification will be our next projects.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Deploy llama, mistral, openchat or your own model on Clever Cloud</title>
		<link>https://stagingv6.cleverapps.io/blog/engineering/2023/11/27/deploy-llama-mistral-openchat-or-your-own-model-on-clever-cloud/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Mon, 27 Nov 2023 09:16:24 +0000</pubDate>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[AI]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=11185</guid>

					<description><![CDATA[<p><img width="900" height="355" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/11/deployiaonccpng.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="bannier which illustrate how to deploy AI on Clever Cloud" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/11/deployiaonccpng.png 900w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/11/deployiaonccpng-300x118.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/11/deployiaonccpng-768x303.png 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></p><!-- wp:paragraph -->
<p><strong>If AI has been in the news recently, it's mainly through large language models (LLMs), which require substantial computing power for training or inference. Thus, it's common to see developers using them via turnkey APIs, as we did in <a href="https://stagingv6.cleverapps.io/blog/features/2023/10/11/deploy-a-custom-chatgpt-based-on-php/">a previous article</a>. But this is changing thanks to more open and efficient models and tools, which you can easily deploy on Clever Cloud.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Indeed, while our platform was designed for a variety of uses, we always paid particular attention to its flexibility and the freedom it gave our customers. This means they can easily exploit it to address new markets, with minimum effort spent on adaptation.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>To confirm this, we recently tried to deploy open source AI models such as those derived from LLaMA and Mistral. Their particularity is that they exist in lightweight versions, which don't necessarily require a GPU to run. As a result, they can be hosted as simple Clever Cloud applications, as long as they have been allocated enough memory.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Let's ollama (with a web UI) !</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>To do it, we've chosen to use <a href="https://github.com/jmorganca/ollama" target="_blank" rel="noreferrer noopener">ollama</a>, an MIT-licensed project that lets you download models from <a href="https://ollama.ai/library" target="_blank" rel="noreferrer noopener">a registry</a>, or even <a href="https://github.com/jmorganca/ollama/blob/main/docs/modelfile.md" target="_blank" rel="noreferrer noopener">your own</a>. It works as a server that communicates via an API, and is very easy to host on our infrastructures.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://api.clever-cloud.com/v2/session/signup">Create a Clever Cloud account</a>&nbsp;(and get 20 euros in credits)</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>To get started, you’ll need a Clever Cloud account. You can create the application and follow the next steps using our web interface,&nbsp;<a href="https://console.clever-cloud.com/">the Console</a>, but also through our open source CLI:&nbsp;<a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a>. That’s what we’ll describe below.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We’ll assume that your machine is running&nbsp;<a href="https://git-scm.com/book/en/v2/Getting-Started-Installing-Git" target="_blank" rel="noreferrer noopener">git</a>&nbsp;and a recent version of&nbsp;<a href="https://nodejs.org/en/learn/getting-started/how-to-install-nodejs" target="_blank" rel="noreferrer noopener">Node.js</a>. If you haven’t yet installed Clever Tools on your system, type (with system administrator rights, or&nbsp;<code>sudo</code>&nbsp;if necessary):</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>Once logged in, you can check that everything has gone smoothly with the following command:</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>Next, we create a Clever Cloud application using Node.js. It will install ollama to download and run our models, adding a web interface (<a href="https://github.com/ivanfioravanti/chatbot-ollama" target="_blank" rel="noreferrer noopener">chatbot-ollama</a>, also under MIT license) that will allow us to query the server from any browser, run from a computer or a simple smartphone.</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>This solution also offers local storage of chats in the browser. It therefore requires no database, but offers an import/export function. You can also choose between different models, set some of their parameters, configure system instructions, various prompts, and so on.</p>
<!-- /wp:paragraph -->

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

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

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

<!-- wp:paragraph -->
<p>The code above creates the application. We add a file containing the list of models we wish to fetch during startup. We've chosen an L instance, the minimum size for loading such models into memory. We also declare several environment variables for running scripts to install ollama, start the server and disable telemetry for the Next.js framework used to build the web interface after the dependencies have been installed.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Now add some scripts</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Our application is almost ready. We still have to create two executable files:</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p><code>ollama_setup.sh</code> download the ollama binary and the models from our list. Open it with your favorite editor and insert the following content:</p>
<!-- /wp:paragraph -->

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

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

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

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

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

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

    done < ${MODELS_FILE}
}

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

count=0
MAX_TIME=10

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

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

<!-- wp:paragraph -->
<p>This code may seem a little long, but that's mainly because we've made it modular, logging only successful steps and any errors.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><code>ollama_start.sh</code> detects whether the ollama server is already present before starting the web interface. If it isn't, we launch it in the background (we'll see why below).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Open it with your favorite editor and insert the following content:</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>Once these two files have been created, we can deploy the application:</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>You'll then see the domain to access it (which you can customize).</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Cache and quick (re)start</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Using Clever Cloud not only means deploying such an application easily, with logs and monitoring, and being able to instantly change its horizontal and/or vertical scaling. It also means being able to turn it into an image ready for a fast redeployment.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In fact, every application we host is stored as an archive just before dependencies are installed. This means it can be stopped and restarted in this form, so we don't have to re-download the models every time. To do this, simply specify the folders to be added to the archive:</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>The application will restart, but this time it will take the built web interface, ollama and models from its cache, as the <code>CC_PRE_BUILD_HOOK</code> and <code>CC_PRE_BUILD_HOOK</code> steps are not executed. This is one of the reasons why we need to make sure that we start the ollama server with <code>CC_PRE_RUN_HOOK</code>, but check that this hasn't already been done in a deployment where it is used to download models before running them.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Once this step is complete, you can stop the application and restart it whenever you like - it'll be much faster from now on. And you'll only be charged for the time you use it, by the second. If you wish to modify the list of models to use, do so in the dedicated file. A git push will be enough to rebuild the new cache.</p>
<!-- /wp:paragraph -->

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

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

<!-- wp:paragraph -->
<p>You'll find the files you need for this project in this <a href="https://github.com/CleverCloud/ollama-chat-deploy" target="_blank" rel="noreferrer noopener">GitHub repository</a>, with the environment variables ready to import (<code>clever env import &lt; .env</code>). </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>And if you want to push things further, deploy other models and tools for your applications that require more power and/or GPUs, <a href="https://stagingv6.cleverapps.io/fr/contact/">let us know!</a></p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="900" height="355" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/11/deployiaonccpng.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="bannier which illustrate how to deploy AI on Clever Cloud" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/11/deployiaonccpng.png 900w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/11/deployiaonccpng-300x118.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2023/11/deployiaonccpng-768x303.png 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></p><!-- wp:paragraph -->
<p><strong>If AI has been in the news recently, it's mainly through large language models (LLMs), which require substantial computing power for training or inference. Thus, it's common to see developers using them via turnkey APIs, as we did in <a href="https://stagingv6.cleverapps.io/blog/features/2023/10/11/deploy-a-custom-chatgpt-based-on-php/">a previous article</a>. But this is changing thanks to more open and efficient models and tools, which you can easily deploy on Clever Cloud.</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Indeed, while our platform was designed for a variety of uses, we always paid particular attention to its flexibility and the freedom it gave our customers. This means they can easily exploit it to address new markets, with minimum effort spent on adaptation.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>To confirm this, we recently tried to deploy open source AI models such as those derived from LLaMA and Mistral. Their particularity is that they exist in lightweight versions, which don't necessarily require a GPU to run. As a result, they can be hosted as simple Clever Cloud applications, as long as they have been allocated enough memory.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Let's ollama (with a web UI) !</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>To do it, we've chosen to use <a href="https://github.com/jmorganca/ollama" target="_blank" rel="noreferrer noopener">ollama</a>, an MIT-licensed project that lets you download models from <a href="https://ollama.ai/library" target="_blank" rel="noreferrer noopener">a registry</a>, or even <a href="https://github.com/jmorganca/ollama/blob/main/docs/modelfile.md" target="_blank" rel="noreferrer noopener">your own</a>. It works as a server that communicates via an API, and is very easy to host on our infrastructures.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><!-- wp:list-item -->
<li><a href="https://api.clever-cloud.com/v2/session/signup">Create a Clever Cloud account</a>&nbsp;(and get 20 euros in credits)</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>To get started, you’ll need a Clever Cloud account. You can create the application and follow the next steps using our web interface,&nbsp;<a href="https://console.clever-cloud.com/">the Console</a>, but also through our open source CLI:&nbsp;<a href="https://github.com/CleverCloud/clever-tools" target="_blank" rel="noreferrer noopener">Clever Tools</a>. That’s what we’ll describe below.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We’ll assume that your machine is running&nbsp;<a href="https://git-scm.com/book/en/v2/Getting-Started-Installing-Git" target="_blank" rel="noreferrer noopener">git</a>&nbsp;and a recent version of&nbsp;<a href="https://nodejs.org/en/learn/getting-started/how-to-install-nodejs" target="_blank" rel="noreferrer noopener">Node.js</a>. If you haven’t yet installed Clever Tools on your system, type (with system administrator rights, or&nbsp;<code>sudo</code>&nbsp;if necessary):</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>Once logged in, you can check that everything has gone smoothly with the following command:</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>Next, we create a Clever Cloud application using Node.js. It will install ollama to download and run our models, adding a web interface (<a href="https://github.com/ivanfioravanti/chatbot-ollama" target="_blank" rel="noreferrer noopener">chatbot-ollama</a>, also under MIT license) that will allow us to query the server from any browser, run from a computer or a simple smartphone.</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>This solution also offers local storage of chats in the browser. It therefore requires no database, but offers an import/export function. You can also choose between different models, set some of their parameters, configure system instructions, various prompts, and so on.</p>
<!-- /wp:paragraph -->

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

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

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

<!-- wp:paragraph -->
<p>The code above creates the application. We add a file containing the list of models we wish to fetch during startup. We've chosen an L instance, the minimum size for loading such models into memory. We also declare several environment variables for running scripts to install ollama, start the server and disable telemetry for the Next.js framework used to build the web interface after the dependencies have been installed.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Now add some scripts</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Our application is almost ready. We still have to create two executable files:</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p><code>ollama_setup.sh</code> download the ollama binary and the models from our list. Open it with your favorite editor and insert the following content:</p>
<!-- /wp:paragraph -->

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

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

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

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

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

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

    done < ${MODELS_FILE}
}

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

count=0
MAX_TIME=10

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

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

<!-- wp:paragraph -->
<p>This code may seem a little long, but that's mainly because we've made it modular, logging only successful steps and any errors.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><code>ollama_start.sh</code> detects whether the ollama server is already present before starting the web interface. If it isn't, we launch it in the background (we'll see why below).</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Open it with your favorite editor and insert the following content:</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>Once these two files have been created, we can deploy the application:</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>You'll then see the domain to access it (which you can customize).</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Cache and quick (re)start</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Using Clever Cloud not only means deploying such an application easily, with logs and monitoring, and being able to instantly change its horizontal and/or vertical scaling. It also means being able to turn it into an image ready for a fast redeployment.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In fact, every application we host is stored as an archive just before dependencies are installed. This means it can be stopped and restarted in this form, so we don't have to re-download the models every time. To do this, simply specify the folders to be added to the archive:</p>
<!-- /wp:paragraph -->

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

<!-- wp:paragraph -->
<p>The application will restart, but this time it will take the built web interface, ollama and models from its cache, as the <code>CC_PRE_BUILD_HOOK</code> and <code>CC_PRE_BUILD_HOOK</code> steps are not executed. This is one of the reasons why we need to make sure that we start the ollama server with <code>CC_PRE_RUN_HOOK</code>, but check that this hasn't already been done in a deployment where it is used to download models before running them.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Once this step is complete, you can stop the application and restart it whenever you like - it'll be much faster from now on. And you'll only be charged for the time you use it, by the second. If you wish to modify the list of models to use, do so in the dedicated file. A git push will be enough to rebuild the new cache.</p>
<!-- /wp:paragraph -->

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

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

<!-- wp:paragraph -->
<p>You'll find the files you need for this project in this <a href="https://github.com/CleverCloud/ollama-chat-deploy" target="_blank" rel="noreferrer noopener">GitHub repository</a>, with the environment variables ready to import (<code>clever env import &lt; .env</code>). </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>And if you want to push things further, deploy other models and tools for your applications that require more power and/or GPUs, <a href="https://stagingv6.cleverapps.io/fr/contact/">let us know!</a></p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What&#8217;s Clever in our cloud ?</title>
		<link>https://stagingv6.cleverapps.io/blog/company/2022/09/06/whats-clever-in-our-cloud/</link>
		
		<dc:creator><![CDATA[David Legrand]]></dc:creator>
		<pubDate>Tue, 06 Sep 2022 10:24:05 +0000</pubDate>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[Engineering]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?p=7478</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/09/smart-cloud-1.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="ou banner of the post &quot;What&#039;s clever in our cloud?&quot;" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/09/smart-cloud-1.jpg 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/09/smart-cloud-1-300x116.jpg 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/09/smart-cloud-1-1024x395.jpg 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/09/smart-cloud-1-768x296.jpg 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/09/smart-cloud-1-1368x528.jpg 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph -->
<p>At the beginning of the Internet as we know it, about thirty years ago, the primary choice of a developer when he wanted to put a website online was to choose between a dedicated server where he was the only one in charge, and a hosting shared between several customers, more or less numerous depending on the offers.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>If the weak isolation provided at the time in the shared hosting model pushed the most careful to use dedicated servers, economic factors also made the choice: not everyone could afford his own machine. Nevertheless, with time, low-cost offers came to shake up the market, then it was the turn of the "Cloud" and "as-a-service" instances that are no longer rented monthly but per hour or per second. This has changed practices in depth.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Reduce resource waste (and headaches)</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>This is the origin of Clever Cloud, founded on a conviction: we had to take advantage of these new opportunities to reinvent shared hosting practices, which were still based on old transfer protocols, by adding real isolation and ease of use through automated deployments and load adaptation. Create tools to improve the life of developers and ops (professions <a href="https://en.wikipedia.org/wiki/DevOps" target="_blank" rel="noreferrer noopener">sometimes combined</a> from now on), take benefit of the ongoing revolutions caused by the emergence of Git and platforms such as GitHub or GitLab, of continuous development and integration (CI/CD).</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><li><a href="https://stagingv6.cleverapps.io/blog/company/2022/07/07/what-is-clever-cloud/">What is Clever Cloud ?</a></li></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Both then and now, it is common to see companies continuing to rent "old-fashioned" dedicated servers to deploy their applications using more or less automated tools, but this often leads to a waste of resources. The reason for this is that these machines are dimensioned to meet any peaks that may occur, and therefore are rarely used to their full potential.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>An oversizing which is not really encouraging energy efficiency. In March, <a href="https://www.theregister.com/2022/03/11/us_government_datacenter_use/" target="_blank" rel="noreferrer noopener">The Register reported</a> that according to the US Government Accountability Office (GAO), only 5% of the server resources available to the US government were used. A situation that shouldn't happen, in the US or in Europe.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Part of the hosting industry is now built around this lack of efficiency. The datacenter players are decreasingly technical and increasingly on a model borrowing from the real estate market: you have to use the available space and first of all fill square meters (no matter if it means reserving large spaces for crypto-currency miners). But whether the servers are used or not makes no difference: it's rented. By the way, if they are running at a low level, it relieves the electrical infrastructure, the lessor is all the more winning.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>One solution could be to use instances (IaaS), which can be turned on or off, customized as needed, with better resource management by the cloud service provider (CSP) since they are shared between different customers. But this requires developers and ops to constantly fit the infrastructure to the load, take care of updates and security, be the ones on whom everything relies.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>But in practice, this essential work is not always done. This is a problem that we tried to solve, to pool efforts and avoid scares and headaches for our customers' teams.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Applications up and running…</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Clever Cloud's pledge is that "you develop, we deploy". So we are more than a Platform-as-a-Service (PaaS) solution as some hear it, rather a kind of "Software Defined Hosting", "Serveless" style, in the way you never have to worry about the infrastructure. Only your code and where you want to deploy it.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In fact, our job is to maintain your applications in operating conditions. This means that we make the deployment process as simple as possible, making it fully automated and part of your team processes. We keep your applications up and running, whether you need to upgrade or experience peak loads, we also manage backups, disaster recovery, and more.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>All of this with the flexibility to scale horizontally (more instances available) or vertically (higher performance instances). A choice that can be made in a fully automated way (auto-scaling) or manually through our web interface and our tools (CLI, SDK, etc.): you remain in full control of your choices.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We also update the system and the software bricks that we operate, restricting them as strictly as possible to what is necessary to achieve maximum efficiency, performance and security for our customers. Thus, we do not neglect software isolation and all applications run in their own virtual machines.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<div style="text-align: center;"><iframe width="1000" height="563" src="https://www.youtube-nocookie.com/embed/NjCbJbzRmhI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe></div>
<!-- /wp:html -->

<!-- wp:heading -->
<h2>… in a flexible and secure environment</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>It is important to understand that the security attacks and vulnerabilities are mostly a financial issue. For those who exploit them, it is a market. If there will always be methods to attack a company and a service, our challenge is to reduce as much as possible the attack surfaces and to break the potential profitability of attacking Clever Cloud.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>This is why we compile the Linux kernel and all our binaries from source, using the <a href="https://exherbo.org/" target="_blank" rel="noreferrer noopener">Exherbo</a> distribution. This allows us to reduce them to a bare minimum, as well as the attack surface, and to have constantly updated software without having to wait for the maintainers to take care of it.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>This offers another advantage, as our CEO Quentin Adam regularly says: "any compiled binary released is a binary waiting to be exploited". Indeed, they are used by a large number of users and are a target of choice, which can be easily detected. Compiling our own binaries allows us to protect ourselves from such risks "by design".</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>What if a datacenter has a problem? Simply deploy elsewhere. This resilience is the basis of our technical decisions over the last few years, with a strong multi-cloud approach, whether in the development of our own infrastructure or by allowing you to take advantage of those of our partners. And if you want to have your own Clever Cloud "on-premise" or in a SecNumCloud qualified infrastructure? That's possible. That's what openness is all about.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Highly utilized servers, designed to last</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>This freedom of choice will enable us to offer deployments that can be driven by geographical considerations, commitment to diversification or eco-design. We are now switching to servers based on the work of the Open Compute Project (OCP). With a centralized power supply within the rack, they are designed for greater energy efficiency.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Consume less for the same level of service is an obsession of our teams, a strategy we apply both in the short and long run, through optimization of software and hardware, better use of existing resources, and the introduction of better components when they are added or renewed. This strategy is at the heart of our business model, but also part of our efforts to reduce our environmental footprint, and therefore the one of our customers. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We recently chose to use <a href="https://stagingv6.cleverapps.io/fr/blog/entreprise/2022/06/16/amd-epyc-7003-open-compute-datacenters-et-autres-projets-que-prepare-clever-cloud/">Capri servers based on AMD EPYC 7003 processors</a> with 64 latest generation cores, offering a very good level of performance and density. They are now installed in our third point of presence in Paris, Green Data Nanterre. The Flashbox will provide us with remote storage within the network, in CPU-less servers, using <a href="https://stagingv6.cleverapps.io/blog/press/2022/07/05/clever-cloud-selects-french-kalray-for-its-high-performance-storage-solutions-to-optimize-its-new-data-center/">chips from the French company Kalray</a>, very energy-efficient.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<div style="text-align: center;"><iframe width="1000" height="563" src="https://www.youtube-nocookie.com/embed/ncNLXIr6nR8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe></div>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>These innovations and this density level allow us to strengthen the Clever Cloud commitment: keep as many applications up and running as possible, with a good level of resilience but the least infrastructure required. Because the best way to avoid wasting resources is to consume as little as possible "by design", which we allow our customers to do on a daily basis without having to worry about anything. To better inform them, we are also working on delivering metrics such as PUE, but also the consumption and impact of our servers, their applications, etc.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Our servers are designed to operate in our infrastructure for many years, to meet needs that may change over time, and will be replaced only when necessary. By relying on standards such as OCP, which are used by a growing number of players in the market, we can ensure that they will be easily reusable for a second life cycle by third parties.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>For our future deployments, we will explore alternative ways to further improve the efficiency of our servers and their components, including cooling, which is a key issue in data centers, with the rise of direct liquid cooling and immersion, two technologies that can be implemented through Green Data. We are also in discussions with various partners about the reuse of waste heat produced by servers.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Coming next? Network Groups, Tasks, GPU, FaaS, IaaS</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Clever Cloud matches its company logo: multi-faceted. While we've long been focused on building our platform, over the last few years our customers have asked us to go further. We listened: the team has doubled in the recent months to increase our core strength: innovation through software, using the hardware at its best.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Thus, in addition to the continuous improvements of our <a href="https://console.clever-cloud.com/">Console</a>, we are currently finalizing a project that has been one of our biggest achievements: the Network Groups, allowing you to link your applications, but also your machines through a private network (VPN). For this, we rely on the open source solution Wireguard. The feature is finalized and is currently being tested internally, it will be released in public beta in a few weeks.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We will soon offer our VM Tasks, with the ability to run tasks on demand, which can be activated in different ways. We've also started to rework our GPU computing offering, so don't hesitate <a href="https://stagingv6.cleverapps.io/contact/">to ask us</a> if you have any needs in this area, as preliminary tests can be conducted. Later this year, we'll offer access to our Function-as-a-Service (FaaS) solutions for large-scale, on-demand function processing and IaaS, so you can deploy the operating system and tools of your choice via Clever Cloud, without relying on solutions such as Docker.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>And for Kubernetes enthusiasts, in addition to the recent launch of <a href="https://stagingv6.cleverapps.io/blog/features/2022/03/16/clever-operator/">our operator</a>, a managed service will also be available… as well as other surprises that we'll talk about in the near future. Don't hesitate to submit your requests and suggestions, which can help us refine our priorities and developments. Our team <a href="https://stagingv6.cleverapps.io/contact/">is listening to you</a>.</p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/09/smart-cloud-1.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="ou banner of the post &quot;What&#039;s clever in our cloud?&quot;" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/09/smart-cloud-1.jpg 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/09/smart-cloud-1-300x116.jpg 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/09/smart-cloud-1-1024x395.jpg 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/09/smart-cloud-1-768x296.jpg 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/09/smart-cloud-1-1368x528.jpg 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- wp:paragraph -->
<p>At the beginning of the Internet as we know it, about thirty years ago, the primary choice of a developer when he wanted to put a website online was to choose between a dedicated server where he was the only one in charge, and a hosting shared between several customers, more or less numerous depending on the offers.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>If the weak isolation provided at the time in the shared hosting model pushed the most careful to use dedicated servers, economic factors also made the choice: not everyone could afford his own machine. Nevertheless, with time, low-cost offers came to shake up the market, then it was the turn of the "Cloud" and "as-a-service" instances that are no longer rented monthly but per hour or per second. This has changed practices in depth.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Reduce resource waste (and headaches)</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>This is the origin of Clever Cloud, founded on a conviction: we had to take advantage of these new opportunities to reinvent shared hosting practices, which were still based on old transfer protocols, by adding real isolation and ease of use through automated deployments and load adaptation. Create tools to improve the life of developers and ops (professions <a href="https://en.wikipedia.org/wiki/DevOps" target="_blank" rel="noreferrer noopener">sometimes combined</a> from now on), take benefit of the ongoing revolutions caused by the emergence of Git and platforms such as GitHub or GitLab, of continuous development and integration (CI/CD).</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul><li><a href="https://stagingv6.cleverapps.io/blog/company/2022/07/07/what-is-clever-cloud/">What is Clever Cloud ?</a></li></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>Both then and now, it is common to see companies continuing to rent "old-fashioned" dedicated servers to deploy their applications using more or less automated tools, but this often leads to a waste of resources. The reason for this is that these machines are dimensioned to meet any peaks that may occur, and therefore are rarely used to their full potential.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>An oversizing which is not really encouraging energy efficiency. In March, <a href="https://www.theregister.com/2022/03/11/us_government_datacenter_use/" target="_blank" rel="noreferrer noopener">The Register reported</a> that according to the US Government Accountability Office (GAO), only 5% of the server resources available to the US government were used. A situation that shouldn't happen, in the US or in Europe.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Part of the hosting industry is now built around this lack of efficiency. The datacenter players are decreasingly technical and increasingly on a model borrowing from the real estate market: you have to use the available space and first of all fill square meters (no matter if it means reserving large spaces for crypto-currency miners). But whether the servers are used or not makes no difference: it's rented. By the way, if they are running at a low level, it relieves the electrical infrastructure, the lessor is all the more winning.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>One solution could be to use instances (IaaS), which can be turned on or off, customized as needed, with better resource management by the cloud service provider (CSP) since they are shared between different customers. But this requires developers and ops to constantly fit the infrastructure to the load, take care of updates and security, be the ones on whom everything relies.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>But in practice, this essential work is not always done. This is a problem that we tried to solve, to pool efforts and avoid scares and headaches for our customers' teams.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Applications up and running…</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Clever Cloud's pledge is that "you develop, we deploy". So we are more than a Platform-as-a-Service (PaaS) solution as some hear it, rather a kind of "Software Defined Hosting", "Serveless" style, in the way you never have to worry about the infrastructure. Only your code and where you want to deploy it.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>In fact, our job is to maintain your applications in operating conditions. This means that we make the deployment process as simple as possible, making it fully automated and part of your team processes. We keep your applications up and running, whether you need to upgrade or experience peak loads, we also manage backups, disaster recovery, and more.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>All of this with the flexibility to scale horizontally (more instances available) or vertically (higher performance instances). A choice that can be made in a fully automated way (auto-scaling) or manually through our web interface and our tools (CLI, SDK, etc.): you remain in full control of your choices.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We also update the system and the software bricks that we operate, restricting them as strictly as possible to what is necessary to achieve maximum efficiency, performance and security for our customers. Thus, we do not neglect software isolation and all applications run in their own virtual machines.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<div style="text-align: center;"><iframe width="1000" height="563" src="https://www.youtube-nocookie.com/embed/NjCbJbzRmhI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe></div>
<!-- /wp:html -->

<!-- wp:heading -->
<h2>… in a flexible and secure environment</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>It is important to understand that the security attacks and vulnerabilities are mostly a financial issue. For those who exploit them, it is a market. If there will always be methods to attack a company and a service, our challenge is to reduce as much as possible the attack surfaces and to break the potential profitability of attacking Clever Cloud.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>This is why we compile the Linux kernel and all our binaries from source, using the <a href="https://exherbo.org/" target="_blank" rel="noreferrer noopener">Exherbo</a> distribution. This allows us to reduce them to a bare minimum, as well as the attack surface, and to have constantly updated software without having to wait for the maintainers to take care of it.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>This offers another advantage, as our CEO Quentin Adam regularly says: "any compiled binary released is a binary waiting to be exploited". Indeed, they are used by a large number of users and are a target of choice, which can be easily detected. Compiling our own binaries allows us to protect ourselves from such risks "by design".</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>What if a datacenter has a problem? Simply deploy elsewhere. This resilience is the basis of our technical decisions over the last few years, with a strong multi-cloud approach, whether in the development of our own infrastructure or by allowing you to take advantage of those of our partners. And if you want to have your own Clever Cloud "on-premise" or in a SecNumCloud qualified infrastructure? That's possible. That's what openness is all about.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Highly utilized servers, designed to last</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>This freedom of choice will enable us to offer deployments that can be driven by geographical considerations, commitment to diversification or eco-design. We are now switching to servers based on the work of the Open Compute Project (OCP). With a centralized power supply within the rack, they are designed for greater energy efficiency.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Consume less for the same level of service is an obsession of our teams, a strategy we apply both in the short and long run, through optimization of software and hardware, better use of existing resources, and the introduction of better components when they are added or renewed. This strategy is at the heart of our business model, but also part of our efforts to reduce our environmental footprint, and therefore the one of our customers. </p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We recently chose to use <a href="https://stagingv6.cleverapps.io/fr/blog/entreprise/2022/06/16/amd-epyc-7003-open-compute-datacenters-et-autres-projets-que-prepare-clever-cloud/">Capri servers based on AMD EPYC 7003 processors</a> with 64 latest generation cores, offering a very good level of performance and density. They are now installed in our third point of presence in Paris, Green Data Nanterre. The Flashbox will provide us with remote storage within the network, in CPU-less servers, using <a href="https://stagingv6.cleverapps.io/blog/press/2022/07/05/clever-cloud-selects-french-kalray-for-its-high-performance-storage-solutions-to-optimize-its-new-data-center/">chips from the French company Kalray</a>, very energy-efficient.</p>
<!-- /wp:paragraph -->

<!-- wp:html -->
<div style="text-align: center;"><iframe width="1000" height="563" src="https://www.youtube-nocookie.com/embed/ncNLXIr6nR8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe></div>
<!-- /wp:html -->

<!-- wp:paragraph -->
<p>These innovations and this density level allow us to strengthen the Clever Cloud commitment: keep as many applications up and running as possible, with a good level of resilience but the least infrastructure required. Because the best way to avoid wasting resources is to consume as little as possible "by design", which we allow our customers to do on a daily basis without having to worry about anything. To better inform them, we are also working on delivering metrics such as PUE, but also the consumption and impact of our servers, their applications, etc.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Our servers are designed to operate in our infrastructure for many years, to meet needs that may change over time, and will be replaced only when necessary. By relying on standards such as OCP, which are used by a growing number of players in the market, we can ensure that they will be easily reusable for a second life cycle by third parties.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>For our future deployments, we will explore alternative ways to further improve the efficiency of our servers and their components, including cooling, which is a key issue in data centers, with the rise of direct liquid cooling and immersion, two technologies that can be implemented through Green Data. We are also in discussions with various partners about the reuse of waste heat produced by servers.</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Coming next? Network Groups, Tasks, GPU, FaaS, IaaS</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Clever Cloud matches its company logo: multi-faceted. While we've long been focused on building our platform, over the last few years our customers have asked us to go further. We listened: the team has doubled in the recent months to increase our core strength: innovation through software, using the hardware at its best.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Thus, in addition to the continuous improvements of our <a href="https://console.clever-cloud.com/">Console</a>, we are currently finalizing a project that has been one of our biggest achievements: the Network Groups, allowing you to link your applications, but also your machines through a private network (VPN). For this, we rely on the open source solution Wireguard. The feature is finalized and is currently being tested internally, it will be released in public beta in a few weeks.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>We will soon offer our VM Tasks, with the ability to run tasks on demand, which can be activated in different ways. We've also started to rework our GPU computing offering, so don't hesitate <a href="https://stagingv6.cleverapps.io/contact/">to ask us</a> if you have any needs in this area, as preliminary tests can be conducted. Later this year, we'll offer access to our Function-as-a-Service (FaaS) solutions for large-scale, on-demand function processing and IaaS, so you can deploy the operating system and tools of your choice via Clever Cloud, without relying on solutions such as Docker.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>And for Kubernetes enthusiasts, in addition to the recent launch of <a href="https://stagingv6.cleverapps.io/blog/features/2022/03/16/clever-operator/">our operator</a>, a managed service will also be available… as well as other surprises that we'll talk about in the near future. Don't hesitate to submit your requests and suggestions, which can help us refine our priorities and developments. Our team <a href="https://stagingv6.cleverapps.io/contact/">is listening to you</a>.</p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>#72 &#8211; La bienveillance des nombres typés est impossible</title>
		<link>https://stagingv6.cleverapps.io/podcast/72-la-bienveillance-des-nombres-types-est-impossible/</link>
		
		<dc:creator><![CDATA[Hubert Sablonnière]]></dc:creator>
		<pubDate>Fri, 24 Jun 2022 16:03:39 +0000</pubDate>
				<category><![CDATA[circuits]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[rust]]></category>
		<guid isPermaLink="false">https://stagingv6.cleverapps.io/?post_type=podcast&#038;p=6872</guid>

					<description><![CDATA[<p><img width="1920" height="1080" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/72-1.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/72-1.jpg 1920w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/72-1-300x169.jpg 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/72-1-1024x576.jpg 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/72-1-768x432.jpg 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/72-1-1536x864.jpg 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/72-1-1368x770.jpg 1368w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p><!-- 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","className":"is-style-default"} -->
<figure class="wp-block-image size-large is-style-default"><img src="https://cdn.clever-cloud.com/uploads/2021/03/hubert-sablonniere-447x447.jpg" alt="hubert_sablonnière" class="wp-image-712"/><figcaption class="wp-element-caption">Hubert Sablonnière</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":6875,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/06/yannickguern-447x447.jpg" alt="une photo de Yannick Guern" class="wp-image-6875"/><figcaption class="wp-element-caption">Yannick Guern</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":3045,"sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image size-full"><img src="https://cdn.clever-cloud.com/uploads/2021/08/30kgNpLQ_400x400.jpg" alt="pierre_zemb" class="wp-image-3045"/><figcaption class="wp-element-caption">Pierre Zemb</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":6876,"sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image size-full"><img src="https://cdn.clever-cloud.com/uploads/2022/06/François_Teychene.jpg" alt="" class="wp-image-6876"/><figcaption class="wp-element-caption">François Teychené</figcaption></figure>
<!-- /wp:image --></figure>
<!-- /wp:gallery -->

<!-- wp:paragraph -->
<p>Dans cet épisode il on chasse les trolls avec 1xEngineer avant de rendre possible l'impossible, puis de typer avec Rust. Nous parlons également de CockroachDB, de battements de coeur,  de casseurs de circuits, de transformation de paquets et de Pixelation pour finir comme des voyous en musique.</p>
<!-- /wp:paragraph -->

<!-- wp:buttons -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://youtu.be/TGe1KguG8x0" 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 <a href="https://twitter.com/clever_cloudFR" target="_blank" rel="noreferrer noopener">@clever_cloudFR</a> 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&nbsp;<a href="https://stagingv6.cleverapps.io/fr/podcast/">c’est par ici</a>&nbsp;!</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Timecode &amp; Liens</h2>
<!-- /wp:heading -->

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

<!-- wp:paragraph -->
<p>00:03:15 1xEngineer<br><a href="https://1x.engineer/" target="_blank" rel="noreferrer noopener">https://1x.engineer/<br></a>De la bonne bienveillance</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:09:00 "Making Impossible States Impossible" by Richard Feldman (Hubert)<br><a href="https://www.youtube.com/watch?v=IcgmSRJHu_8" target="_blank" rel="noreferrer noopener">https://www.youtube.com/watch?v=IcgmSRJHu_8</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:22:35 Le typage en Rust (Yannick)<br><a href="https://fasterthanli.me/articles/the-curse-of-strong-typing" target="_blank" rel="noreferrer noopener">https://fasterthanli.me/articles/the-curse-of-strong-typing</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:34:50 Enabling the Next Generation of Multi-Region Applications with CockroachDB (PZ)<br><a href="https://www.cockroachlabs.com/blog/sigmod-2022-cockroachdb-multi-region-paper/" target="_blank" rel="noreferrer noopener">https://www.cockroachlabs.com/blog/sigmod-2022-cockroachdb-multi-region-paper/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:42:50 Phi φ Accrual Failure Detection (François)<br><a href="https://medium.com/@arpitbhayani/phi-%CF%86-accrual-failure-detection-79c21ce53a7a" target="_blank" rel="noreferrer noopener">https://medium.com/@arpitbhayani/phi-%CF%86-accrual-failure-detection-79c21ce53a7a<br></a><a href="https://www.researchgate.net/profile/Xavier-Defago/publication/29682135_The_ph_accrual_failure_detector/links/0a85e53ce412e3b069000000/The-ph-accrual-failure-detector.pdf" target="_blank" rel="noreferrer noopener">https://www.researchgate.net/profile/Xavier-Defago/publication/29682135_The_ph_accrual_failure_detector/links/0a85e53ce412e3b069000000/The-ph-accrual-failure-detector.pdf</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:47:20 Will circuit breakers solve my problems? (François)<br><a href="https://brooker.co.za/blog/2022/02/16/circuit-breakers.html" target="_blank" rel="noreferrer noopener">https://brooker.co.za/blog/2022/02/16/circuit-breakers.html<br></a><a href="https://radlab.cs.berkeley.edu/people/fox/static/pubs/pdf/c18.pdf" target="_blank" rel="noreferrer noopener">https://radlab.cs.berkeley.edu/people/fox/static/pubs/pdf/c18.pdf</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:50:47 Comment transformer un paquet de bytes en un double (Yannick)<br><a href="https://blog.m-ou.se/floats/" target="_blank" rel="noreferrer noopener">https://blog.m-ou.se/floats/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>01:00:00 Never, Ever, Ever Use Pixelation for Redacting Text (Hubert)<br><a href="https://bishopfox.com/blog/unredacter-tool-never-pixelation" target="_blank" rel="noreferrer noopener">https://bishopfox.com/blog/unredacter-tool-never-pixelation</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>01:05:44 Musique de fin<br>Rogue Legacy 2 OST - Axis Mundi 1<br><a href="https://www.youtube.com/watch?v=f_QIN57e48A" target="_blank" rel="noreferrer noopener">https://www.youtube.com/watch?v=f_QIN57e48A</a></p>
<!-- /wp:paragraph -->]]></description>
										<content:encoded><![CDATA[<p><img width="1920" height="1080" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/72-1.jpg" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/72-1.jpg 1920w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/72-1-300x169.jpg 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/72-1-1024x576.jpg 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/72-1-768x432.jpg 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/72-1-1536x864.jpg 1536w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/06/72-1-1368x770.jpg 1368w" sizes="auto, (max-width: 1920px) 100vw, 1920px" /></p><!-- 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","className":"is-style-default"} -->
<figure class="wp-block-image size-large is-style-default"><img src="https://cdn.clever-cloud.com/uploads/2021/03/hubert-sablonniere-447x447.jpg" alt="hubert_sablonnière" class="wp-image-712"/><figcaption class="wp-element-caption">Hubert Sablonnière</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":6875,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="https://cdn.clever-cloud.com/uploads/2022/06/yannickguern-447x447.jpg" alt="une photo de Yannick Guern" class="wp-image-6875"/><figcaption class="wp-element-caption">Yannick Guern</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":3045,"sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image size-full"><img src="https://cdn.clever-cloud.com/uploads/2021/08/30kgNpLQ_400x400.jpg" alt="pierre_zemb" class="wp-image-3045"/><figcaption class="wp-element-caption">Pierre Zemb</figcaption></figure>
<!-- /wp:image -->

<!-- wp:image {"id":6876,"sizeSlug":"full","linkDestination":"none"} -->
<figure class="wp-block-image size-full"><img src="https://cdn.clever-cloud.com/uploads/2022/06/François_Teychene.jpg" alt="" class="wp-image-6876"/><figcaption class="wp-element-caption">François Teychené</figcaption></figure>
<!-- /wp:image --></figure>
<!-- /wp:gallery -->

<!-- wp:paragraph -->
<p>Dans cet épisode il on chasse les trolls avec 1xEngineer avant de rendre possible l'impossible, puis de typer avec Rust. Nous parlons également de CockroachDB, de battements de coeur,  de casseurs de circuits, de transformation de paquets et de Pixelation pour finir comme des voyous en musique.</p>
<!-- /wp:paragraph -->

<!-- wp:buttons -->
<div class="wp-block-buttons"><!-- wp:button -->
<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="https://youtu.be/TGe1KguG8x0" 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 <a href="https://twitter.com/clever_cloudFR" target="_blank" rel="noreferrer noopener">@clever_cloudFR</a> 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&nbsp;<a href="https://stagingv6.cleverapps.io/fr/podcast/">c’est par ici</a>&nbsp;!</p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading">Timecode &amp; Liens</h2>
<!-- /wp:heading -->

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

<!-- wp:paragraph -->
<p>00:03:15 1xEngineer<br><a href="https://1x.engineer/" target="_blank" rel="noreferrer noopener">https://1x.engineer/<br></a>De la bonne bienveillance</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:09:00 "Making Impossible States Impossible" by Richard Feldman (Hubert)<br><a href="https://www.youtube.com/watch?v=IcgmSRJHu_8" target="_blank" rel="noreferrer noopener">https://www.youtube.com/watch?v=IcgmSRJHu_8</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:22:35 Le typage en Rust (Yannick)<br><a href="https://fasterthanli.me/articles/the-curse-of-strong-typing" target="_blank" rel="noreferrer noopener">https://fasterthanli.me/articles/the-curse-of-strong-typing</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:34:50 Enabling the Next Generation of Multi-Region Applications with CockroachDB (PZ)<br><a href="https://www.cockroachlabs.com/blog/sigmod-2022-cockroachdb-multi-region-paper/" target="_blank" rel="noreferrer noopener">https://www.cockroachlabs.com/blog/sigmod-2022-cockroachdb-multi-region-paper/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:42:50 Phi φ Accrual Failure Detection (François)<br><a href="https://medium.com/@arpitbhayani/phi-%CF%86-accrual-failure-detection-79c21ce53a7a" target="_blank" rel="noreferrer noopener">https://medium.com/@arpitbhayani/phi-%CF%86-accrual-failure-detection-79c21ce53a7a<br></a><a href="https://www.researchgate.net/profile/Xavier-Defago/publication/29682135_The_ph_accrual_failure_detector/links/0a85e53ce412e3b069000000/The-ph-accrual-failure-detector.pdf" target="_blank" rel="noreferrer noopener">https://www.researchgate.net/profile/Xavier-Defago/publication/29682135_The_ph_accrual_failure_detector/links/0a85e53ce412e3b069000000/The-ph-accrual-failure-detector.pdf</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:47:20 Will circuit breakers solve my problems? (François)<br><a href="https://brooker.co.za/blog/2022/02/16/circuit-breakers.html" target="_blank" rel="noreferrer noopener">https://brooker.co.za/blog/2022/02/16/circuit-breakers.html<br></a><a href="https://radlab.cs.berkeley.edu/people/fox/static/pubs/pdf/c18.pdf" target="_blank" rel="noreferrer noopener">https://radlab.cs.berkeley.edu/people/fox/static/pubs/pdf/c18.pdf</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>00:50:47 Comment transformer un paquet de bytes en un double (Yannick)<br><a href="https://blog.m-ou.se/floats/" target="_blank" rel="noreferrer noopener">https://blog.m-ou.se/floats/</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>01:00:00 Never, Ever, Ever Use Pixelation for Redacting Text (Hubert)<br><a href="https://bishopfox.com/blog/unredacter-tool-never-pixelation" target="_blank" rel="noreferrer noopener">https://bishopfox.com/blog/unredacter-tool-never-pixelation</a></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>01:05:44 Musique de fin<br>Rogue Legacy 2 OST - Axis Mundi 1<br><a href="https://www.youtube.com/watch?v=f_QIN57e48A" target="_blank" rel="noreferrer noopener">https://www.youtube.com/watch?v=f_QIN57e48A</a></p>
<!-- /wp:paragraph -->]]></content:encoded>
					
		
		<enclosure url="http://assets.clever-cloud.com/podcast/fr/Message_a_caractere_informatique_72.mp3" length="97752666" type="audio/mpeg" />

			</item>
		<item>
		<title>How to deploy Keycloak on Clever Cloud</title>
		<link>https://stagingv6.cleverapps.io/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://stagingv6.cleverapps.io/?p=6138</guid>

					<description><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.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://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- 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 is 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>How to deploy Keycloak</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3>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://stagingv6.cleverapps.io/doc/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://stagingv6.cleverapps.io/doc/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>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"><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></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"><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://stagingv6.cleverapps.io/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></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>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>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>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>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>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://stagingv6.cleverapps.io/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"><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></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>Configure Keycloak for OAuth 2</h3>
<!-- /wp:heading -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><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></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>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"><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></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><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><li><a href="https://www.keycloak.org/getting-started/getting-started-zip">https://www.keycloak.org/getting-started/getting-started-zip</a></li></ul>
<!-- /wp:list -->]]></description>
										<content:encoded><![CDATA[<p><img width="1400" height="540" src="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak.png" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="banniere_keycloak" decoding="async" loading="lazy" srcset="https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak.png 1400w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak-300x116.png 300w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak-1024x395.png 1024w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak-768x296.png 768w, https://staging-cc-assetsv6.cellar-c2.services.clever-cloud.com/uploads/2022/04/banniere-keycloak-1368x528.png 1368w" sizes="auto, (max-width: 1400px) 100vw, 1400px" /></p><!-- 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 is 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>How to deploy Keycloak</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3>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://stagingv6.cleverapps.io/doc/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://stagingv6.cleverapps.io/doc/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>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"><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></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"><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://stagingv6.cleverapps.io/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></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>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>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>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>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>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://stagingv6.cleverapps.io/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"><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></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>Configure Keycloak for OAuth 2</h3>
<!-- /wp:heading -->

<!-- wp:quote -->
<blockquote class="wp-block-quote"><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></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>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"><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></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><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><li><a href="https://www.keycloak.org/getting-started/getting-started-zip">https://www.keycloak.org/getting-started/getting-started-zip</a></li></ul>
<!-- /wp:list -->]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
