<?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>Migration Archives - OVHcloud Blog</title>
	<atom:link href="https://blog.ovhcloud.com/tag/migration/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ovhcloud.com/tag/migration/</link>
	<description>Innovation for Freedom</description>
	<lastBuildDate>Tue, 21 Oct 2025 21:26:37 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.ovhcloud.com/wp-content/uploads/2019/07/cropped-cropped-nouveau-logo-ovh-rebranding-32x32.gif</url>
	<title>Migration Archives - OVHcloud Blog</title>
	<link>https://blog.ovhcloud.com/tag/migration/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>10 Reasons Scaling Startups Are Migrating to OVHcloud</title>
		<link>https://blog.ovhcloud.com/10-reasons-scaling-startups-are-migrating-to-ovhcloud/</link>
		
		<dc:creator><![CDATA[Alexander Grau]]></dc:creator>
		<pubDate>Tue, 21 Oct 2025 21:26:37 +0000</pubDate>
				<category><![CDATA[OVHcloud Startup Program]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Data Sovereignty]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[OVHcloud]]></category>
		<category><![CDATA[Public Cloud]]></category>
		<category><![CDATA[Startup Program]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=28941</guid>

					<description><![CDATA[Cloud infrastructure plays a critical role in how startups scale—affecting everything from product delivery and user experience to budget and compliance. While many startups begin their journey with public cloud giants, the challenges of unpredictable costs, data control, and technical constraints become more apparent as they grow. For startups ready to scale smarter, OVHcloud offers [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2F10-reasons-scaling-startups-are-migrating-to-ovhcloud%2F&amp;action_name=10%20Reasons%20Scaling%20Startups%20Are%20Migrating%20to%20OVHcloud&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p>Cloud infrastructure plays a critical role in how startups scale—affecting everything from product delivery and user experience to budget and compliance. While many startups begin their journey with public cloud giants, the challenges of unpredictable costs, data control, and technical constraints become more apparent as they grow.</p>



<p>For startups ready to scale smarter, <strong>OVHcloud</strong> offers a compelling alternative: high-performance, cost-effective, and sovereignty-first infrastructure. Here’s why more and more growing startups are making the switch.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h5 class="wp-block-heading"><strong>1. Predictable, Transparent Pricing</strong></h5>



<p>OVHcloud’s <a href="https://www.ovhcloud.com/en-gb/lp/prices-give-you-edge/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">flat-rate pricing model</a> eliminates hidden fees and unpredictable billing. Bandwidth is included. Egress costs? Zero. This gives startups the ability to budget confidently—even as infrastructure scales rapidly.</p>



<h5 class="wp-block-heading"><strong>2. Cost-Efficient Scaling</strong></h5>



<p>Startups that migrate to OVHcloud often report <strong>up to 60% cost savings</strong> compared to hyperscalers. Whether you&#8217;re scaling your backend, AI workloads, or customer-facing applications, OVHcloud lets you do more with less.</p>



<h5 class="wp-block-heading"><strong>3. Performance Without Compromise</strong></h5>



<p>From <a href="https://www.ovhcloud.com/en/bare-metal/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Bare Metal</a> servers and <a href="https://www.ovhcloud.com/en/public-cloud/virtual-instances/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">high-memory VMs</a> to <a href="https://www.ovhcloud.com/en/public-cloud/gpu/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">GPU</a> and <a href="https://www.ovhcloud.com/en/public-cloud/storage/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">storage-optimized instances</a>, OVHcloud infrastructure is engineered for performance. Ideal for AI, SaaS, analytics, and other compute-intensive use cases.</p>



<h5 class="wp-block-heading"><strong>4. Full Data Sovereignty in the EU</strong></h5>



<p>OVHcloud is headquartered in Europe and operates under <strong>the strictest data protection laws (like GDPR in the EU or Law 25 in Quebec, Canada)</strong>. Unlike other providers, <a href="https://www.ovhcloud.com/en-gb/lp/data-stays-your-data/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">your data stays</a> within jurisdictions that respect privacy and sovereignty—no exposure to foreign surveillance laws.</p>



<h5 class="wp-block-heading"><strong>5. Open Standards and No Vendor Lock-In</strong></h5>



<p>Freedom matters—especially when you’re building for scale. OVHcloud supports open technologies like <a href="https://www.ovhcloud.com/en/public-cloud/kubernetes/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Kubernetes</a>, Terraform, and OpenStack, giving your team full flexibility and avoiding lock-in to proprietary tools or services.</p>



<h5 class="wp-block-heading"><strong>6. Infrastructure That Grows With You</strong></h5>



<p>Whether you&#8217;re launching in new markets or onboarding thousands of new users, OVHcloud enables seamless horizontal and vertical scaling. With availability across multiple regions, your growth won’t hit a wall.</p>



<h5 class="wp-block-heading"><strong>7. Faster Time-to-Market Through Cloud Migration Support</strong></h5>



<p>OVHcloud offers <strong>cloud migration guidance and tools</strong>, including compatibility with major platforms and migration kits. This helps your team move faster, avoid downtime, and focus on innovation—not infrastructure headaches.</p>



<h5 class="wp-block-heading"><strong>8. Dev-Friendly Ecosystem</strong></h5>



<p>With support for containerization, automation, and CI/CD pipelines, OVHcloud makes life easier for DevOps teams. You can provision infrastructure programmatically and scale efficiently—just like you would with AWS or GCP.</p>



<h5 class="wp-block-heading"><strong>9. Sustainability Built In</strong></h5>



<p>Efficiency is built into OVHcloud’s DNA. By designing and operating its own energy-efficient data centers, OVHcloud helps startups meet their <a href="https://www.ovhcloud.com/en-gb/lp/sustainable-ground/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">sustainability goals</a> without compromising on performance or cost.</p>



<h5 class="wp-block-heading"><strong>10. A Cloud Partner—Not Just a Provider</strong></h5>



<p>Startups need more than compute power—they need guidance, flexibility, and a partner that understands their journey. OVHcloud offers <a href="https://www.ovhcloud.com/en/professional-services/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">tailored support</a>, <a href="https://help.ovhcloud.com/csm/world-documentation?id=kb_home" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">technical documentation</a>, and real human engagement to help you succeed at every stage of growth.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h5 class="wp-block-heading"><strong><em>OVHcloud: Built to Scale With Startups</em></strong></h5>



<p>If your startup is growing fast and needs infrastructure that can keep up—without breaking the budget or sacrificing control—OVHcloud offers a cloud built around your values: <strong>scalability, transparency, freedom, and performance</strong>.</p>



<p><strong>Migrate with confidence. Scale with control. Grow with OVHcloud.</strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<figure class="wp-block-image size-full"><a href="https://startup.ovhcloud.com/en/globalreport2025/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"><img fetchpriority="high" decoding="async" width="970" height="250" src="https://blog.ovhcloud.com/wp-content/uploads/2025/08/Email-Signature-–-1.jpg" alt="" class="wp-image-29527" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/08/Email-Signature-–-1.jpg 970w, https://blog.ovhcloud.com/wp-content/uploads/2025/08/Email-Signature-–-1-300x77.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/08/Email-Signature-–-1-768x198.jpg 768w" sizes="(max-width: 970px) 100vw, 970px" /></a></figure>



<p>If you’re a startup looking to transform your business, we encourage you to join the <strong><a href="https://startup.ovhcloud.com/en/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">OVHcloud Startup Program</a></strong> or contact OVHcloud to discover how our solutions can support your journey!</p>
<img decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2F10-reasons-scaling-startups-are-migrating-to-ovhcloud%2F&amp;action_name=10%20Reasons%20Scaling%20Startups%20Are%20Migrating%20to%20OVHcloud&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Is Multi-Cloud the real future of Cloud Computing Industry?</title>
		<link>https://blog.ovhcloud.com/is-multi-cloud-the-real-future-of-cloud-computing-industry/</link>
		
		<dc:creator><![CDATA[Dionigi Faccenda]]></dc:creator>
		<pubDate>Tue, 16 May 2023 09:59:59 +0000</pubDate>
				<category><![CDATA[OVHcloud Partner Program]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Multicloud]]></category>
		<category><![CDATA[Partner Program]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=25346</guid>

					<description><![CDATA[Cloud Computing revolutionized the way the industries operate by moving from an IT and HW fabric centric approach to a seamless Infrastructures by abstracting HW and SW to Cloud Service Providers (CSPs). After almost 11 years of Cloud and IT revolution, we asked to our partners (System Integrators and Managed Services Providers) where they see [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fis-multi-cloud-the-real-future-of-cloud-computing-industry%2F&amp;action_name=Is%20Multi-Cloud%20the%20real%20future%20of%20Cloud%20Computing%20Industry%3F&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p>Cloud Computing revolutionized the way the industries operate by moving from an IT and HW fabric centric approach to a seamless Infrastructures by abstracting HW and SW to Cloud Service Providers (CSPs). After almost 11 years of Cloud and IT revolution, we asked to our partners (System Integrators and Managed Services Providers) where they see the next business evolution in terms of Cloud Computing.</p>



<p>Based on the current industry business model there are two types of predominant words when we speak with CIO: Multi-Cloud and/or Hybrid Cloud approach.</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img decoding="async" src="https://blog.ovhcloud.com/wp-content/uploads/2023/05/IMG_1529-1024x538.jpg" alt="Is Multi-Cloud the real future of Cloud Computing Industry?" class="wp-image-25350" width="512" height="269" srcset="https://blog.ovhcloud.com/wp-content/uploads/2023/05/IMG_1529-1024x538.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2023/05/IMG_1529-300x158.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2023/05/IMG_1529-768x404.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2023/05/IMG_1529.jpg 1199w" sizes="(max-width: 512px) 100vw, 512px" /></figure>



<h3 class="wp-block-heading">What we really intend with Multi-Cloud approach?</h3>



<ul class="wp-block-list">
<li>A multi-cloud approach is a strategy that involves the company using multiple CSPs to meet the IT and HW needs of the company.</li>



<li>This approach is a valid approach for companies that would like to differentiate CSPs services using some specific services by different Cloud Providers; considering the variety of services available in the market, the approach, to move from internal IT/HW to external Cloud Providers can be very effective with an increased flexibility to meet the needs of the company and customization of some services;</li>



<li>Another advantage is about Cost Optimization as the Multi-Cloud approach can help the organizations to differentiate the services by optimizing the costs based on the choice of the most cost-effective services provided by the Cloud Providers.</li>



<li>furthermore, the choice of Multi-Cloud could help to reduce risk of outages by differentiating the services over multiple service providers.</li>
</ul>



<p>Based on the above statements it looks clearly that Multi-Cloud approach represents the future evolution of the traditional Cloud Computing. </p>



<h3 class="wp-block-heading">The challenges of Multi-Cloud</h3>



<p>There are challenges that the company should evaluate deeply before moving in a multi-cloud approach such as:</p>



<ul class="wp-block-list">
<li>Ensure the Interoperability between the CSPS, this is a key element to have a clear views of who is doing what, to avoid bad surprises the company should have a control about the IT services running over different CSPs and this requires to have skilled person able to operate above the HW layer and understand how orchestrate at best the various IT services.</li>



<li>Security and compliance is another delicate aspect of this approach as the company should state which data can operate in compliance with the regulation, as per example Health Data must be secured under GDPR and hosted in DC with specific certifications to secure their data.</li>
</ul>



<p>It is evident that in a Multi-Cloud approach the (System Integrators) SI and Managed Services Providers (MSP) play a key role in supporting and guiding the organizations to choose and manage multiple cloud environments.</p>



<p>Nowadays the shortage of the skills are forcing companies to delay the cloud adoption, however choosing the right SI/MSP it’s a must move for: designing, deploying and in certain case operating the platform on behalf of the customers.</p>



<h3 class="wp-block-heading">The Ecosystem of Partners </h3>



<figure class="wp-block-image alignright size-full is-resized"><img loading="lazy" decoding="async" src="https://blog.ovhcloud.com/wp-content/uploads/2023/01/IMG_1270.png" alt="Move to PaaS" class="wp-image-24328" width="233" height="175" srcset="https://blog.ovhcloud.com/wp-content/uploads/2023/01/IMG_1270.png 466w, https://blog.ovhcloud.com/wp-content/uploads/2023/01/IMG_1270-300x225.png 300w" sizes="auto, (max-width: 233px) 100vw, 233px" /></figure>



<p>The <a href="https://partner.ovhcloud.com/en/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Ecosystem of OVHcloud</a> have a huge variety of SI and MSPs that can help and support the organizations to move faster in direction of the new Cloud approach with the right skills to avoid delay in Cloud adoption and move the IT faster in a new era of fast Business needs.</p>



<p>We again hugely invite the companies that are looking for the right cloud approach to go in the <a href="https://partner.ovhcloud.com/en/directory/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Partner Directory of OVHcloud</a> and find the right partner for their exigences.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="335" height="208" src="https://blog.ovhcloud.com/wp-content/uploads/2021/11/IMG_0701.png" alt="OVHcloud Partner Blog" class="wp-image-21423" srcset="https://blog.ovhcloud.com/wp-content/uploads/2021/11/IMG_0701.png 335w, https://blog.ovhcloud.com/wp-content/uploads/2021/11/IMG_0701-300x186.png 300w" sizes="auto, (max-width: 335px) 100vw, 335px" /></figure>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fis-multi-cloud-the-real-future-of-cloud-computing-industry%2F&amp;action_name=Is%20Multi-Cloud%20the%20real%20future%20of%20Cloud%20Computing%20Industry%3F&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Cloud Transformation: how to bring clarity and speed to your cloud migration project</title>
		<link>https://blog.ovhcloud.com/cloud-transformation-how-to-bring-clarity-and-speed-to-your-cloud-migration-project/</link>
		
		<dc:creator><![CDATA[Juergen Wiese&nbsp;and&nbsp;Benjamin Van-Hyfte]]></dc:creator>
		<pubDate>Thu, 04 May 2023 12:52:11 +0000</pubDate>
				<category><![CDATA[OVHcloud Partner Program]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Partner Program]]></category>
		<category><![CDATA[Public Cloud]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=25240</guid>

					<description><![CDATA[A tale of migration to the cloud The benefits for clients to shift their applications and IT landscapes to the cloud are already well understood. It usually revolves around&#160;expected performance gains,&#160;scalability advantages of cloud-native products,&#160;boosted productivity, security and greatly&#160;reduced maintenance efforts&#160;for all assets leveraging cloud platform services. In summary the ultimate goal is shifting from [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fcloud-transformation-how-to-bring-clarity-and-speed-to-your-cloud-migration-project%2F&amp;action_name=Cloud%20Transformation%3A%20how%20to%20bring%20clarity%20and%20speed%20to%20your%20cloud%20migration%20project&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">A tale of migration to the cloud</h3>



<p>The benefits for clients to shift their applications and IT landscapes to the cloud are already well understood. It usually revolves around&nbsp;expected performance gains,&nbsp;scalability advantages of cloud-native products,&nbsp;boosted productivity, security and greatly&nbsp;reduced maintenance efforts&nbsp;for all assets leveraging cloud platform services. In summary the ultimate goal is shifting from a CAPEX model to OPEX for more IT infrastructure and technology agility and lowered system level maintenance.</p>



<p>But on the other hand cloud transformation projects require large investments, have extensive runtimes, and heavily bind both client internal teams and resources as well as advisors and migration teams coming from external consulting.</p>



<figure class="wp-block-image aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://blog.ovhcloud.com/wp-content/uploads/2023/05/IMG_1512-1024x538.jpg" alt="Cloud Transformation: how to bring clarity and speed to your cloud migration project" class="wp-image-25249" width="512" height="269" srcset="https://blog.ovhcloud.com/wp-content/uploads/2023/05/IMG_1512-1024x538.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2023/05/IMG_1512-300x158.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2023/05/IMG_1512-768x404.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2023/05/IMG_1512.jpg 1199w" sizes="auto, (max-width: 512px) 100vw, 512px" /></figure>



<p>Because of the complexity, size and impact of a typical cloud transformation project, decision makers either in industry and or public sector are very careful about deciding for a cost effective cloud platform that meet their needs.</p>



<p>In order to build up that confidence, decision makers need to have a clear vision and insight on the market and approach migrating its estate over to their cloud platform of choice.</p>



<h3 class="wp-block-heading">To succeed, cloud transformation projects need a clear vision</h3>



<figure class="wp-block-image alignright size-full is-resized"><img loading="lazy" decoding="async" src="https://blog.ovhcloud.com/wp-content/uploads/2023/01/IMG_1269.png" alt="Move to PaaS" class="wp-image-24326" width="175" height="213" srcset="https://blog.ovhcloud.com/wp-content/uploads/2023/01/IMG_1269.png 350w, https://blog.ovhcloud.com/wp-content/uploads/2023/01/IMG_1269-246x300.png 246w" sizes="auto, (max-width: 175px) 100vw, 175px" /></figure>



<p>When an organization initiates a migration of their on-premise infrastructure to the cloud, the need to modernize their applications (or at least a subset of the applications) is generally clear. However, most organizations have a hard time picturing the future state of their IT infrastructure, once migrated to the cloud.&nbsp;</p>



<p>And yet, migrating an application is much smoother when you already have a precise idea of what the final infrastructure will look like (for instance: which cloud services will be included, what will be the overall costs, etc.).&nbsp;</p>



<p>Having this depth of knowledge is essential <strong>from a project management perspective. </strong>In order to accelerate the migration process, and to minimize risk, organizations need to share a clear vision of the end result.&nbsp;</p>



<p>Moving to the cloud is also a time of uncertainty, especially for organizations that used to run all their applications and workloads on-premises. Thus, <strong>the success of your project will largely depend on the ability of managers to pave the way</strong>. “This is where we are at the moment”. “This is our destination”. “And here are different ways to get there”. Providing visibility on what the future infrastructure will look like is key to reduce fear and empower the teams to achieve the transformation process.&nbsp;</p>



<p>A clear vision also comes with precise goals. What is the business case behind this application? There are many reasons to move to the cloud. Some organizations want to modernize their infrastructure from the ground up and are ready to spend several years on it. Others aim to stop running their hardware environment in the short term. Finally, for others, cost savings will be the decisive criterion. The optimal cloud architecture will largely depend on the organization’s goals and priorities.&nbsp;</p>



<h3 class="wp-block-heading">The hard time of comparing cloud offerings</h3>



<p>Ideally, when planning the migration of an application, an organization should proceed as follows:&nbsp;</p>



<ul class="wp-block-list">
<li>Define the goals of the migration</li>



<li>Compare different migration alternatives</li>



<li>Model the exact cloud architecture that is needed for this application</li>
</ul>



<p>In practice, however, this can quickly become a labor intensive task, and one reason for that is <strong>the difficulty to compare the options available on the market</strong>. It’s no understatement that there is a wide range of cloud offerings, and that companies are spoilt for choice. But the main difficulty comes from the fact that<strong> each supplier has its own way of presenting its services and its pricing model.&nbsp;</strong></p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="408" height="201" src="https://blog.ovhcloud.com/wp-content/uploads/2022/05/advantages.png" alt="Comparing cloud offerings" class="wp-image-22956" srcset="https://blog.ovhcloud.com/wp-content/uploads/2022/05/advantages.png 408w, https://blog.ovhcloud.com/wp-content/uploads/2022/05/advantages-300x148.png 300w" sizes="auto, (max-width: 408px) 100vw, 408px" /></figure>



<p>In the end, organizations miss a clear comparison table to efficiently investigate the pros and cons of each option, and make their migration decisions with speed and confidence.&nbsp;</p>



<h3 class="wp-block-heading">Cloud Insider: a knowledge base for multi-cloud market insights</h3>



<p>To empower organizations on their transformation journey, Txture developed <strong>Cloud Insider</strong>, a solution that provides an unparalleled overview of the fast changing cloud market, and <strong>simplifies cloud services comparison and price forecasting.&nbsp;</strong></p>



<p>Cloud Insider knowledge base includes products from the vast majority of cloud vendors, and maintains up-to-date information about hundreds of products, and hundreds of thousands of available product variants.&nbsp;</p>



<p>The goal of Cloud Insider is <strong>to provide cloud professionals with a comprehensive and provider-neutral overview of the cloud marke</strong>t. Leveraging Cloud Insider, you can quickly compare similar products based on several criteria (features, certifications, location, pricing model, etc.) and make your migration decisions much faster.&nbsp;</p>



<h3 class="wp-block-heading">How Cloud Insider works</h3>



<p>In the following section, we’ll see how Cloud Insider can be used to quickly model cloud architecture alternatives. In this example, we’ll assume that <strong>your organization wants to migrate one of its workloads to OVHCloud</strong>. Your workload consists of a server, a database and a storage solution.&nbsp;</p>



<h4 class="wp-block-heading">1 – Modelling a cloud architecture</h4>



<p>Browsing the knowledge base, you will be able to quickly find a server solution that fits your requirements. To narrow down your research, you can filter for specific results. For instance, you want the server to be located in the UK, and you also want the solution to be GDPR compliant.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="906" height="556" src="https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-4.png" alt="Cloud Insider - Modelling a cloud architecture" class="wp-image-25241" srcset="https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-4.png 906w, https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-4-300x184.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-4-768x471.png 768w" sizes="auto, (max-width: 906px) 100vw, 906px" /></figure>



<p><br>You are presented with two different products of the OVHcloud catalog that fit the requirements. When you click on one product, you will see a list of product variants. You can again narrow down the list with additional filters, such as number of CPUs, operating system, instance type, storage type, etc.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="980" height="426" src="https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-5.png" alt="Cloud Insider - Modelling a cloud architecture" class="wp-image-25242" srcset="https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-5.png 980w, https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-5-300x130.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-5-768x334.png 768w" sizes="auto, (max-width: 980px) 100vw, 980px" /><figcaption class="wp-element-caption">When looking for a specific product, you can add filters to find the product variant that best fits your needs</figcaption></figure>



<p>You can proceed similarly to find a managed database and a storage solution. Once you have selected all the components you need, <strong>Cloud Insider generates an overview of the cloud architecture you just created.</strong> The platform also provides you with a bill of materials, so you get a clear idea of the overall costs of the architecture.&nbsp;</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="936" height="464" src="https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-6.png" alt="Cloud Insider - When you select cloud products, Cloud Insider generates an overview of the cloud architecture you created, including detailed bills of materials" class="wp-image-25243" srcset="https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-6.png 936w, https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-6-300x149.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-6-768x381.png 768w" sizes="auto, (max-width: 936px) 100vw, 936px" /><figcaption class="wp-element-caption">When you select cloud products, Cloud Insider generates an overview of the cloud architecture you created, including detailed bills of materials</figcaption></figure>



<p>For more and more organizations, sustainability has become a key criteria when choosing a cloud infrastructure. In the overview provided by Cloud Insider, you can also find insights into the carbon footprint of your current scenario. The platform automatically calculates the monthly energy consumption and CO2 emissions of your target architecture, as you can see below:&nbsp;</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="936" height="410" src="https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-7.png" alt="Cloud Insider - The platform automatically calculates the monthly energy consumption and CO2 emissions of your target architecture" class="wp-image-25245" srcset="https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-7.png 936w, https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-7-300x131.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-7-768x336.png 768w" sizes="auto, (max-width: 936px) 100vw, 936px" /></figure>



<h4 class="wp-block-heading">2 – Comparing migration scenarios</h4>



<p>Before making your migration decision, you probably want to consider a few alternatives. This is where the Cloud Insider platform can accelerate the comparison of different cloud architecture options. Once you created a first cloud architecture, you can build alternatives and test different product variants, locations, storage types, etc.&nbsp;</p>



<p>Then, the platform will offer you a side-by side comparison. You will be able to quickly compare different cloud architectures based on pricing model, features, but also certifications and carbon footprint. <strong>In the end, you save time, and you can make your migration decisions based on up-to-date information.&nbsp;</strong></p>



<p>In this example, we compare different cloud architectures on OVHcloud, but <strong>you can also use it to compare architectures of different cloud vendors.&nbsp;</strong></p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="936" height="420" src="https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-8.png" alt="Cloud Insider - You can build cloud architecture alternatives and the platform provides you with a side-by-side comparison for easier decision-making" class="wp-image-25247" srcset="https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-8.png 936w, https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-8-300x135.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2023/05/image-8-768x345.png 768w" sizes="auto, (max-width: 936px) 100vw, 936px" /><figcaption class="wp-element-caption">You can build cloud architecture alternatives and the platform provides you with a side-by-side comparison for easier decision-making</figcaption></figure>



<h3 class="wp-block-heading">The Bottom Line</h3>



<p>We all know oftentimes it is hard to keep track of cloud services offered today and those added every month. How to compare services across providers, in which data center locations are services available, and what price tags do they have attached? Still as a cloud professional it is key to be confident with your decisions in order to pick the right solution from a pool of different options out there.</p>



<p>With Cloud Insider, browse cloud services by provider, location, certifications, and underlying technology. Rely on detailed analysis and up-to-date data of cloud products from various vendors to select the right services based on your requirements.</p>



<p>View cloud service product instances, certification details and compare to similar products of other providers. Easily filter instances by location, CPU, RAM, OS and compare on-demand vs. reserved instance prices.</p>



<p>With Cloud Insider cloud professionals finally can take out the uncertainty exploring the cloud market and can make educated decisions.</p>



<p>To learn more go to: <a href="https://cloudinsider.com" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://cloudinsider.com</a></p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="335" height="208" src="https://blog.ovhcloud.com/wp-content/uploads/2021/11/IMG_0701.png" alt="OVHcloud Partner Blog" class="wp-image-21423" srcset="https://blog.ovhcloud.com/wp-content/uploads/2021/11/IMG_0701.png 335w, https://blog.ovhcloud.com/wp-content/uploads/2021/11/IMG_0701-300x186.png 300w" sizes="auto, (max-width: 335px) 100vw, 335px" /></figure>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fcloud-transformation-how-to-bring-clarity-and-speed-to-your-cloud-migration-project%2F&amp;action_name=Cloud%20Transformation%3A%20how%20to%20bring%20clarity%20and%20speed%20to%20your%20cloud%20migration%20project&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Let’s talk about Cloud Migration</title>
		<link>https://blog.ovhcloud.com/lets-talk-about-cloud-migration/</link>
		
		<dc:creator><![CDATA[Filip Zapaśnik&nbsp;and&nbsp;Łukasz Wrona]]></dc:creator>
		<pubDate>Thu, 21 Apr 2022 11:08:57 +0000</pubDate>
				<category><![CDATA[OVHcloud Partner Program]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Partner Program]]></category>
		<category><![CDATA[Public Cloud]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=22902</guid>

					<description><![CDATA[Let’s talk about data security and protection: a tale of how a Customer was able to leverage the OVHcloud architecture to become a market leader. Migration to the cloud offers countless advantages and seems to be an inevitable step in the development of any modern enterprise. Those advantages become clearly visible in most sectors, especially [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Flets-talk-about-cloud-migration%2F&amp;action_name=Let%E2%80%99s%20talk%20about%20Cloud%20Migration&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p>Let’s talk about data security and protection: a tale of how a Customer was able to leverage the OVHcloud architecture to become a market leader.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://blog.ovhcloud.com/wp-content/uploads/2022/04/IMG_0948-1024x537.jpg" alt="Let’s talk about Cloud Migration" class="wp-image-22910" width="512" height="269" srcset="https://blog.ovhcloud.com/wp-content/uploads/2022/04/IMG_0948-1024x537.jpg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2022/04/IMG_0948-300x157.jpg 300w, https://blog.ovhcloud.com/wp-content/uploads/2022/04/IMG_0948-768x403.jpg 768w, https://blog.ovhcloud.com/wp-content/uploads/2022/04/IMG_0948.jpg 1200w" sizes="auto, (max-width: 512px) 100vw, 512px" /></figure></div>



<p>Migration to the cloud offers countless advantages and seems to be an inevitable step in the development of any modern enterprise. Those advantages become clearly visible in most sectors, especially finance and insurance, where applied solutions must both protect the customer data and offer cost-effective ways of handling big chunks of information.</p>



<p>Many customers are anxious to know where their data is going. How can they be sure the data is safe? What happens if the data disappears? Or gets stolen?</p>



<p>Sensitive data needs secure infrastructure, but time-effective solutions are also key to ensure success in any competition-dense industry.</p>



<p>Cloud migration requires some specific skills and experience that aren’t always available in-house. That’s what OVHcloud Partners can help you with.</p>



<p>Let’s have a look how two OVHcloud partners, <a href="https://crowtech.pl/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">Crowtech</a> and <a href="https://www.zapasnik.pl/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">Zapaśnik IT</a> joined forces to create an innovative and secure solution for an insurance company by leveraging OVHCloud BareMetal Cloud. They created a distributed virtualization solution across PL/DE data centers with their own managed Kubernetes.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="750" height="82" src="https://blog.ovhcloud.com/wp-content/uploads/2022/04/IMG_0947and9.png" alt="Zapaśnik IT &amp; Crowtech" class="wp-image-22913" srcset="https://blog.ovhcloud.com/wp-content/uploads/2022/04/IMG_0947and9.png 750w, https://blog.ovhcloud.com/wp-content/uploads/2022/04/IMG_0947and9-300x33.png 300w" sizes="auto, (max-width: 750px) 100vw, 750px" /></figure>



<p>By implementing this solution, the customer gewas able to become a leader of innovation on the market and take over larger contracts, that until now where unreachable.</p>



<h3 class="wp-block-heading">A customer looking to migrate to the Cloud</h3>



<div class="wp-block-image"><figure class="alignright size-full is-resized"><img loading="lazy" decoding="async" src="https://blog.ovhcloud.com/wp-content/uploads/2022/04/IMG_0950.png" alt="Promesa Plus" class="wp-image-22914" width="298" height="107" srcset="https://blog.ovhcloud.com/wp-content/uploads/2022/04/IMG_0950.png 397w, https://blog.ovhcloud.com/wp-content/uploads/2022/04/IMG_0950-300x108.png 300w" sizes="auto, (max-width: 298px) 100vw, 298px" /></figure></div>



<p>The Customer, <a href="http://www.promesaplus.com/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">Promesa Plus</a>, is a broker offering the vehicles insurance policies from all top players on the market. The company’s target market are car dealers, as well as corporate customers.</p>



<p>Since having introduced their first solution in 2004, Promesa Plus has been the most innovative company on the market, moving ahead of its competitors. However after several years, the system they built needed an upgrade.</p>



<p>The broker was looking for a solution to address numerous challenges, such as fast-evolving insurance rates, complexity and variety of products, as well as numerous algorithms to calculate the final rates.</p>



<p>Managing an insurance enterprise is not an easy job, given that data management and security are essential. The initial on-premise infrastructure was not sufficient and they were not able to implement the industry regulations, security best practices and system development needs.</p>



<p>Because of these limitations, the business was underperforming – updating the database, adding a new customer/partner or using the e-commerce system were taking too much time, leading customers to leave their baskets abandoned.</p>



<p>Unfortunately, any modernization of the system was also restricted, as the development cycle was not automated. For example, it could only populate new extensions to system in a “traditional” way. Any new code required a reboot of the system. This was extremely time-consuming and ended up leaving room in the marketplace for the competition.</p>



<p>Consequently, Promesa Plus could not easily process both growing number of transactions and integration of new customers. As a result, both employees and customers had a negative experience and this in turn has put the growth of the company in jeopardy.</p>



<p>A strategic decision was made to direct the upcoming transformation towards efficiency, scalability, security and availability of the system. To support the company in this challenging task, Promesa Plus invited two partners Crowtech &amp; Zapaśnik IT to join them on this journey. Having researched many potential solutions thoroughly, Promesa Plus chose to pursue the Cloud’s advantages.</p>



<p>They decided to migrate the whole environment, including the development, quality and production with CI/CD pipeline, built new e-commerce and put in place a disaster-recovery plan.</p>



<h3 class="wp-block-heading">The solution</h3>



<p>The solution they came up with was a microservices-oriented architecture built on the OVHcloud BareMetal Cloud using Kubernetes orchestration turned out to be the best solution for the challenges and specificity of the agency and its frequently-evolving data. Data collocation between two Data Centres in Warsaw and Frankfurt offer high availability and improve the efficiency of the platform.</p>



<p>The usage of the microservices architecture allows for a relatively easy extension of computing power and appropriate management of replications, as well as helps to achieve the expected efficiency, depending on the complexity of the calculation of the product. Depending on the business needs and complexity of the insurance products, the expected performance is achieved by managing the number of replicas in the Kubernetes cluster.</p>



<p>The distributed architecture required a new monitoring tool – Observability. The solution providers (Crowtech &amp; Zapasnik IT) decided to implement the tool based on ElasticStack (Elasticsearch, APM, Filebeat, Metricbeat). It offered an almost real-time access to log, trace logs and metrics that were ensured by fast hard discs and large bandwidth. The CI/DF pipeline has been introduced, developers from Crowtech published the changes and since then the system has been taking care of the distribution in the Kubernetes cluster.</p>



<p>Below is a high level Architecture</p>



<div class="wp-block-image"><figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" src="https://blog.ovhcloud.com/wp-content/uploads/2022/04/cloud-migration-architecture.png" alt="High level architecture" class="wp-image-22919" width="468" height="459" srcset="https://blog.ovhcloud.com/wp-content/uploads/2022/04/cloud-migration-architecture.png 936w, https://blog.ovhcloud.com/wp-content/uploads/2022/04/cloud-migration-architecture-300x294.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2022/04/cloud-migration-architecture-768x753.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2022/04/cloud-migration-architecture-70x70.png 70w" sizes="auto, (max-width: 468px) 100vw, 468px" /></figure></div>



<h3 class="wp-block-heading">The benefits for the customer</h3>



<p>The immediate benefit was a scalable andinnovative platform called PromesaOnline. The solution leveraged OVHcloud infrastructure and combined with Kubernetes orchestration, ensured both horizontal and vertical scalability.</p>



<p>The new process now fully-automated allows access to data for both the employees and Partners securely but efficiently . This system is available online for all branches and all Partners and allows for generation of customized reports.</p>



<p>The integration with Partners ERPs is now available, speeding the processes up immensely and generating considerable cost savings. Finally, automation allows for elimination of potential human errors.</p>



<p>It also generates new opportunities and integrates new larger customers – for instance, two large companies with urgent needs to renew insurance policies for their 20 000 vehicles. Integration of a new customer was reduced from 1 hour of manual data entry to zero. To give you an idea: with the old system in order to integrate 2 new customers, Promesa Plus would have had to employ 12 additional people for a year! Now it takes just the time to link both CRMs together.</p>



<p>The new solution also improved the employees engagement, liberating time for more creative tasks and leaving place for innovation.</p>



<p>Based on the experience of the solution providers (Crowtech &amp; Zapasnik IT), they planned and implemented an enhanced disaster-recovery plan.</p>



<p>All data are cross-site replicated and stored in datacenters located in Europe.</p>



<p>With this new system, the company is now expanding its automated offering to other segments, moving back to the position of the innovation leader in the insurance market sector in Poland.</p>



<h3 class="wp-block-heading">Why we chose OVHCloud?</h3>



<p>1. Data Sovereignty and Security : OVHcloud ensures that the customer’s data is protected against possible interference, ISO 27001 certified DCs and compliant with European regulations thereby guaranteeing data sovereignty.</p>



<p>2. Predictable pricing : OVHcloud provides cloud services with simple billing and no hidden costs. No Ingress-egress Fees for customers wanting to move data around.</p>



<p>3. Best Price / Performance : Ovhcloud provides the best price/ performance ratio on the market and provide the platform to accelerate deployment of resource intensive applications and customer satisfaction.</p>



<hr class="wp-block-separator"/>



<h4 class="wp-block-heading"><a href="https://www.zapasnik.pl/" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external">Zapaśnik IT</a> – Managed IT Services &amp; IT Consulting, OVHCloud Advanced Partner</h4>



<div class="wp-block-image"><figure class="alignright size-full is-resized"><a href="https://www.zapasnik.pl/" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external"><img loading="lazy" decoding="async" src="https://blog.ovhcloud.com/wp-content/uploads/2022/04/IMG_0949.png" alt="Zapaśnik IT" class="wp-image-22909" width="168" height="41" srcset="https://blog.ovhcloud.com/wp-content/uploads/2022/04/IMG_0949.png 335w, https://blog.ovhcloud.com/wp-content/uploads/2022/04/IMG_0949-300x73.png 300w" sizes="auto, (max-width: 168px) 100vw, 168px" /></a></figure></div>



<p>The Zapaśnik IT provides services to clients using Windows &amp; Linux systems. In need of security assessment, security review, migration or new server setup? Call us, tell us what you need and we will surely find a suitable solution for you!</p>



<h4 class="wp-block-heading"><a href="https://crowtech.pl/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Crowtech</a> – Software development and Cloud services</h4>



<div class="wp-block-image"><figure class="alignright size-full is-resized"><a href="https://crowtech.pl/" target="_blank" rel="noopener nofollow external noreferrer" data-wpel-link="external"><img loading="lazy" decoding="async" src="https://blog.ovhcloud.com/wp-content/uploads/2022/04/IMG_0947.png" alt="Crowtech" class="wp-image-22911" width="139" height="37"/></a></figure></div>



<p>Crowtech is formed of goal-oriented professionals, who, thanks to their collective experience and skills, providing high-quality solutions and IT services for financial market.</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Flets-talk-about-cloud-migration%2F&amp;action_name=Let%E2%80%99s%20talk%20about%20Cloud%20Migration&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Systran: a migration from AWS S3 to OVHcloud Object Storage</title>
		<link>https://blog.ovhcloud.com/systran-a-migration-from-aws-s3-to-ovhcloud-object-storage/</link>
		
		<dc:creator><![CDATA[Andry Ramiandrasoa]]></dc:creator>
		<pubDate>Fri, 12 Feb 2021 16:12:03 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Customer Testimonial]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Object Storage]]></category>
		<category><![CDATA[Systran]]></category>
		<category><![CDATA[Use Case]]></category>
		<guid isPermaLink="false">https://www.ovh.com/blog/?p=20639</guid>

					<description><![CDATA[Object Storage has been designed to store massive amount of unstructured data. It is typically a great fit for storing static files such as medias (pictures, movies, music …) and documents, and access them through API. Deployed in the cloud, it brings great benefits as organizations can store their growing amount of data without worrying [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fsystran-a-migration-from-aws-s3-to-ovhcloud-object-storage%2F&amp;action_name=Systran%3A%20a%20migration%20from%20AWS%20S3%20to%20OVHcloud%20Object%20Storage&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p>Object Storage has been designed to store massive amount of unstructured data. It is typically a great fit for storing static files such as medias (pictures, movies, music …) and documents, and access them through API. Deployed in the cloud, it brings great benefits as organizations can store their growing amount of data without worrying about scale.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://www.ovh.com/blog/wp-content/uploads/2021/02/IMG_0491-1024x537.png" alt="Systran: a migration from AWS S3 to OVHcloud Object Storage" class="wp-image-20646" width="768" height="403" srcset="https://blog.ovhcloud.com/wp-content/uploads/2021/02/IMG_0491-1024x537.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2021/02/IMG_0491-300x157.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2021/02/IMG_0491-768x403.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2021/02/IMG_0491.png 1200w" sizes="auto, (max-width: 768px) 100vw, 768px" /></figure></div>



<p>At OVHcloud, we are proposing Object Storage in our Public Cloud universe and we have released, last year, compatibility with the S3 API, the market standard. Simply put, organizations and developers in particular, can reuse the tools (SDK, libraries or plug-in…) they are already familiar with, to migrate their data from any S3 bucket to OVHcloud Object Storage, and benefits from the cost-effectiveness, reversibility and privacy by design of our service.</p>



<p>This blog post details how Systran, a pioneer and global leader in translation solutions, has migrated from AWS S3 to OVHcloud Object Storage, and will cover the drivers behind that migration and the benefits. Huge thanks to Jean-Sellenart (CEO) and John-Paul Barraza (CIO), at Systran for helping us putting together this post.</p>


<div class="lazyblock-youtube-gdpr-compliant-2pDxKj wp-block-lazyblock-youtube-gdpr-compliant"><script type="module">
  import 'https://blog.ovhcloud.com/wp-content/assets/ovhcloud-gdrp-compliant-embedding-widgets/src/ovhcloud-gdrp-compliant-spreaker.js';
</script>
      
      <ovhcloud-gdrp-compliant-spreaker
          spreaker=""
          debug></ovhcloud-gdrp-compliant-spreaker> 

</div>


<h3 class="wp-block-heading" id="BlogPostSystran(ENeditedversion)-SystrantechnologyhostedatOVHcloud">Systran technology hosted at OVHcloud</h3>



<h4 class="wp-block-heading">Why does storage play a key role in Systran’s business? What are the reasons for migrating to OVHcloud Object Storage?</h4>



<p>For Systran, storage is considered to be very important, as it hosts business-critical data such as translation models and models-related data. This is vital for the business in terms of Intellectual Property, as well as affecting the data transparency and privacy promise Systran makes to its trainers. As a result, trainers expect robust protection for the models they will list on Systran’s marketplace, as well as sole ownership over their data and reversibility; their biggest concern is that the models could be used for a different purpose than what they were designed for, which would lead to loss of earnings for them.</p>



<p>As a software solutions provider, Systran monitors its production costs closely, as they affect its margin. Systran was initially using AWS S3 as its service for storing models and related data, but they realised that the billing was unpredictable, too complex to understand and, most of all, expensive. As Systran’s marketplace gained more traction in the market, their storage volume needs were increasing. At the same time, it wanted to have more control over costs, while increasing its protection of its business-critical assets. As Systran was already an OVHcloud customer, it naturally chose to migrate its data to OVHcloud Object Storage to address those issues.</p>



<h4 class="wp-block-heading">What advantages does Systran gain from migrating to OVHcloud Object Storage ?</h4>



<p>The first resulting benefits are cost reduction and predictability. In fact, payback was achieved only two months after the migration. The total cost of ownership (TCO) with AWS S3 would have been around $13k for three months, while with OVHcloud Object Storage the TCO, including migration cost, was $11k for the equivalent time period. The benefits of migrating to OVHcloud from a financial perspective is becoming even more apparent by the month, as the bill with AWS S3 was around $4k per month, which is more than 250% higher than what Systran is paying for the same volume of data with OVHcloud Object Storage. Furthermore, as its storage volume is increasing by an average of 10TB every month, the pricing model of OVHcloud Object Storage is simple, predictable and transparent, which is critical for Systran in terms of better controlling its costs.</p>



<p>From a more functional standpoint, Systran was able to streamline its storage needs, as the migration was an opportunity to delete redundant translation models, as well as provide more protection and resilience to the data stored in Object Storage. While utilising the triple replication provided by OVHcloud Object Storage, Systran also decided to archive its translations in the OVHcloud Cloud Archive to increase its business resilience. Therefore, with OVHcloud, Systran can deliver on its promise of data privacy (thanks to OVHcloud’s GDPR compliance), reversibility and resilience for its ecosystem of partners, while protecting Intellectual Property.</p>



<p>Finally, Systran’s migration to OVHcloud Object Storage was facilitated by the provision of standard APIs. OVHcloud Object storage offers both S3 and Openstack Swift APIs which are widely adopted standards for development, meaning that developers can use tools that they are already familiar with. Another technical advantage of OVHcloud Object Storage is the network performance, which Systran has noted to be faster than AWS S3. This means that training translation models are faster for Systran trainers, resulting in further cost reductions.</p>



<div class="colored-container">
<h4> Who is Systran?</h4>

<img decoding="async" class="right" width="300" src="https://www.ovh.com/blog/wp-content/uploads/2021/02/logo_systran.png" alt="Logo Systran" ?="">

<p>Systran is a pioneer and leader in translation solutions, serving global organisations with its Machine Learning technology. With a key mission to provide tailored translation solutions to vertical industries, Systran has launched its marketplace: a community-based platform providing specialised translation models in various fields (such as IT, legal, and manufacturing), with full data transparency and privacy. This platform lets developers of specialised translation models (called “trainers” in Systran’s terminology) list their own model(s) on Systran’s marketplace, and end customers can buy those models for use on their own business applications or website. Systran collects the payment from the end customers, then pays trainers for the purchased models.</p>

<p>Towards the end of 2016, Systran was once again breaking new ground, launching the first professional neural translation engine. This program makes use of the latest advancements in deep learning technology to improve the quality of instant translation. If you want to know more about them, <a href="https://www.ovhcloud.com/en-gb/case-studies/systran/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">see this use case</a>.</p> 

</div>



<p></p>



<p></p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fsystran-a-migration-from-aws-s3-to-ovhcloud-object-storage%2F&amp;action_name=Systran%3A%20a%20migration%20from%20AWS%20S3%20to%20OVHcloud%20Object%20Storage&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Another day in ProxySQL life: sharing is caring</title>
		<link>https://blog.ovhcloud.com/another-day-in-proxysql-life-sharing-is-caring/</link>
		
		<dc:creator><![CDATA[Fabien Bagard]]></dc:creator>
		<pubDate>Tue, 31 Mar 2020 13:31:33 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Web Hosting]]></category>
		<guid isPermaLink="false">https://www.ovh.com/blog/?p=17216</guid>

					<description><![CDATA[This post is another part of our list of short posts pinpointing specific cases OVHcloud has dealt with, both preparing for and during the migration. Here, we tell a story of how sometimes, a little unexpected behaviour can lead to a bug fix in a software program used by millions of people around the world. [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fanother-day-in-proxysql-life-sharing-is-caring%2F&amp;action_name=Another%20day%20in%20ProxySQL%20life%3A%20sharing%20is%20caring&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p>This post is another part of our list of short posts pinpointing specific cases OVHcloud has dealt with, both preparing for and during the migration. Here, we tell a story of how sometimes, a little unexpected behaviour can lead to a bug fix in a software program used by millions of people around the world.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="537" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/7C047A4D-C9B8-4CFC-8A6A-809E8FFC3D2D-1024x537.jpeg" alt="" class="wp-image-17752" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/03/7C047A4D-C9B8-4CFC-8A6A-809E8FFC3D2D-1024x537.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/7C047A4D-C9B8-4CFC-8A6A-809E8FFC3D2D-300x157.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/7C047A4D-C9B8-4CFC-8A6A-809E8FFC3D2D-768x403.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/7C047A4D-C9B8-4CFC-8A6A-809E8FFC3D2D.jpeg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>In <a href="https://www.ovh.com/blog/migrate-datacentre-quiet-how-do-we-seamlessly-migrate-a-datacentre/" data-wpel-link="exclude">this post</a>, I explained how we had to push proxySQL past its limits.</p>



<p>Julien explained <a href="https://www.ovh.com/blog/a-day-in-the-life-of-a-proxysql-at-ovhcloud/" data-wpel-link="exclude">here</a> how difficult it can be to hijack pieces of a software program, and make it work for a very specific use case. One so specific that we just could not push it upstream, as we were breaking some assumptions on the base code (something like, &#8220;look, we don&#8217;t use this, maybe we can divert it, to make it match our use&#8221;).</p>



<p>But sometimes, as we dig deeper and deeper through lines of code, pushing the limits of open-source software programs further and further, we reach bugs.</p>



<p>Here are two real-life case where we had an unexpected behaviour from ProxySQL, resulting in a patch for MariaDB/MySQL.</p>



<h1 class="wp-block-heading" id="id-5thPost-Sharingiscaring-1.Theimportanceofquoting">1. The importance of quoting</h1>



<h2 class="wp-block-heading" id="id-5thPost-Sharingiscaring-Anunexpectedbehaviour">An unexpected behaviour</h2>



<p>When we first started using ProxySQL, we had an unexpected behaviour. ProxySQL used to hang. No warning, no precursor. A hang means that ProxySQL cannot process your requests, causing your websites to be unavailable as a result.</p>



<h2 class="wp-block-heading" id="id-5thPost-Sharingiscaring-Digging">Digging</h2>



<p>Sysadmins know that when in doubt, check the logs. That&#8217;s what we did, and we noticed this:</p>



<pre class="wp-block-preformatted">[ERROR] Detected a broken connection during SET NAMES on 192.168.59.272 , 3306 : 2019, Can't initialize character set (null) (path: compiled_in)</pre>



<p>So we took a closer look at the logs, tried to replicate the behaviour, and finally came across this:</p>



<pre class="wp-block-preformatted">ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'binary' at line 1</pre>



<p>This  is clearly an error returned from the MySQL server. As this log line was generated on the ProxySQL, it means the error was between our  ProxySQL and the MySQL server.</p>



<h2 class="wp-block-heading" id="id-5thPost-Sharingiscaring-Findinggold">Finding gold</h2>



<p>Julien worked hard — he read tonnes of logs, traced many PIDs, and tracked the problem down to <span style="text-decoration: underline">THE</span> triggering case — issuing this command:</p>



<pre class="wp-block-preformatted">set names binary COLLATE binary;</pre>



<p>A collation is a kind of rule-set for comparing strings. It can define, for example when sorting alphabetically, if <code>A</code> comes before <code>a</code>, if <code>é</code> should be treated as <code>e</code> or not, or where <code>œ</code> should be in the alphabet.</p>



<p>You can read more about it on <a href="https://mariadb.com/kb/en/character-set-and-collation-overview/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">MariaDB&#8217;s Knowledge Base</a>.<br></p>



<h2 class="wp-block-heading" id="id-5thPost-Sharingiscaring-TheFix">The fix</h2>



<p>After submitting an issue on ProxySQL&#8217;s bug-tracker with what we discovered, and proposing a patch, the author of ProxySQL had a look and confirmed the bug.</p>



<p>While writing ProxySQL, <a href="https://www.proxysql.com/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">René Cannaò</a> did what all developers do — he followed MariaDB&#8217;s connector documentation. And the bug was from here:</p>



<pre class="wp-block-preformatted">According to the documentation on SET NAMES syntax (<a href="https://dev.mysql.com/doc/refman/5.7/en/set-names.html" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://dev.mysql.com/doc/refman/5.7/en/set-names.html</a>) :

charset_name and collation_name may be quoted or unquoted

This doesn't seem true for "SET NAMES binary COLLATE binary" , that requires the collation name to be quoted.</pre>



<p>(<a href="https://bugs.mysql.com/bug.php?id=93692" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://bugs.mysql.com/bug.php?172id=93692</a>)</p>



<h2 class="wp-block-heading" id="id-5thPost-Sharingiscaring-Thebutterflyeffect">The butterfly effect</h2>



<p>So, from a hang on our infrastructure, we reported a bug to the project&#8217;s creator, who then traced it to a bug in a MariaDB connector, followed it up to its parent MySQL, and fixed it upstream. The bug was closed in early 2020.</p>



<p>In the meantime, we worked with Mr Cannaò to provide a workaround (basically forcing the collation name to be quoted in ProxySQL&#8217;s code).</p>



<p></p>



<h1 class="wp-block-heading" id="id-5thPost-Sharingiscaring-2.Whenfingersgetsentangled">2. When wires get crossed</h1>



<p>While writing this article, I remembered another <em>funny</em> bug. I decided to check this bug status, and noticed we never reported it. My mistake is now fixed.</p>



<h2 class="wp-block-heading" id="id-5thPost-Sharingiscaring-Anunexpectedbehaviour.1">An unexpected behaviour</h2>



<p>When using some real but exotic charsets on ProxySQL (we also love tricky scenarios, so we try to test them as much as possible), we had a  ProxySQL error, stating we were using an incorrect charset.</p>



<pre class="wp-block-preformatted">MySQL_Session.cpp:2964:handler(): [WARNING] Error during query on (42,192.168.59.272,3306): 1267, Illegal mix of collations (utf8_general_ci,IMPLICIT) and (dec8_swedish_ci,COERCIBLE) for operation '='</pre>



<h2 class="wp-block-heading" id="id-5thPost-Sharingiscaring-Digging.1">Digging</h2>



<p>Of course, first of all we checked that we were using a real and legit charset and associated collation. We double- and triple-checked that we  should be allowed to use `dec8_swedish_ci`.</p>



<p>We decided to have a look at the connector&#8217;s source code.</p>



<h2 class="wp-block-heading" id="id-5thPost-Sharingiscaring-Findinggold.1">Finding gold</h2>



<p>If you are curious about it, you can have a look at older versions of the `libmariadb/my_charset.c` code, starting from line 541. You will notice that `dec8_swedish_ci` is nowhere to be found. But if you look closely, you will notice  dec8_swedisch_ci. Dear friends from Sweden, you were not the only ones with a typo.</p>



<h2 class="wp-block-heading" id="id-5thPost-Sharingiscaring-TheFix.1">The fix</h2>



<p>When fixing our issue with exotic charsets, we applied a custom patch on our custom build of ProxySQL. In the heat of the moment, we delayed the bug reporting.</p>



<p>We forked the <a href="https://github.com/mariadb-corporation" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">mariadb-corporation</a> /<strong> <a href="https://github.com/mariadb-corporation/mariadb-connector-c" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">mariadb-connector-c</a> </strong>GitHub repository, fixed some typos, and proposed a pull request — which was then merged mid-February.</p>



<h2 class="wp-block-heading" id="id-5thPost-Sharingiscaring-Thebutterflyeffect.1">The butterfly effect</h2>



<p>Everyone is prone to typos, and making mistakes. We encountered some, they were fixed and ported for everyone.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="551" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/C42AC630-51F1-4153-AC5E-6AC417DFA420-1024x551.jpeg" alt="" class="wp-image-17753" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/03/C42AC630-51F1-4153-AC5E-6AC417DFA420-1024x551.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/C42AC630-51F1-4153-AC5E-6AC417DFA420-300x161.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/C42AC630-51F1-4153-AC5E-6AC417DFA420-768x413.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/C42AC630-51F1-4153-AC5E-6AC417DFA420.jpeg 1270w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<h1 class="wp-block-heading" id="id-5thPost-Sharingiscaring-Conclusion">Conclusion</h1>



<p>As a leading web hosting provider in Europe, we face the Law of truly large numbers (<a href="https://en.wikipedia.org/wiki/Law_of_truly_large_numbers" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">https://en.wikipedia.org/wiki/Law_of_truly_large_numbers</a>). TL;DR: Each and every event with a non null occurring probability will happen.</p>



<p>We host more than 1.3 million websites. Let&#8217;s assume that 0.0001% of our customers can trigger one single specific bug — we have at least 1  customer who will trigger it. The question is not <em>if,</em> but <em>when</em> we will have to deal with it, and <em>how</em> to do so.</p>



<p>Wondering how we noticed that we had hit the Law of truly large numbers? Stay tuned, because we will write about this soon.</p>



<h1 class="wp-block-heading" id="id-5thPost-Sharingiscaring-Sharingiscaring">Sharing is caring</h1>



<p>OVHCloud loves open-source, and loves sharing. This is not the first time we contributed to the open-source world, and definitely not the last.</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fanother-day-in-proxysql-life-sharing-is-caring%2F&amp;action_name=Another%20day%20in%20ProxySQL%20life%3A%20sharing%20is%20caring&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>A day in the life of a ProxySQL at OVHcloud</title>
		<link>https://blog.ovhcloud.com/a-day-in-the-life-of-a-proxysql-at-ovhcloud/</link>
		
		<dc:creator><![CDATA[Julien Delayen]]></dc:creator>
		<pubDate>Tue, 03 Mar 2020 14:46:57 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Web Hosting]]></category>
		<guid isPermaLink="false">https://www.ovh.com/blog/?p=17245</guid>

					<description><![CDATA[As explained thoroughly in an earlier post, the P19 migration meant we needed to add a new element to&#160;our infrastructure&#8230; namely the ProxySQL. Life was not easy for it at first, but it soon learned how to handle the diverse range of configurations your&#160;websites have, particularly when it comes to making sure the path connecting [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fa-day-in-the-life-of-a-proxysql-at-ovhcloud%2F&amp;action_name=A%20day%20in%20the%20life%20of%20a%20ProxySQL%20at%20OVHcloud&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p>As explained thoroughly in an earlier post, the P19 migration meant we needed to add a new element to&nbsp;our infrastructure&#8230; namely the ProxySQL.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="537" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/27F68908-57D0-4A11-997B-D53C8D11E68C-1024x537.jpeg" alt="" class="wp-image-17272" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/03/27F68908-57D0-4A11-997B-D53C8D11E68C-1024x537.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/27F68908-57D0-4A11-997B-D53C8D11E68C-300x157.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/27F68908-57D0-4A11-997B-D53C8D11E68C-768x403.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/27F68908-57D0-4A11-997B-D53C8D11E68C.jpeg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>Life was not easy for it at first, but it soon learned how to handle the diverse range of configurations your&nbsp;websites have, particularly when it comes to making sure the path connecting to your data is always up.</p>



<h3 class="wp-block-heading" id="AdayinthelifeofaProxySQLatOVHcloud-Databasesconnection101">Databases connection 101</h3>



<p>Let&#8217;s go back to how a user connects to its MySQL/MariaDB database without a ProxySQL&#8230;</p>



<p>The user uses the MySQL client, and provides a host/IP, a username and a password.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="865" height="271" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/B9AAA44D-C2DF-44EF-B5C2-D2113E3DC757.jpeg" alt="" class="wp-image-17254" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/03/B9AAA44D-C2DF-44EF-B5C2-D2113E3DC757.jpeg 865w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/B9AAA44D-C2DF-44EF-B5C2-D2113E3DC757-300x94.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/B9AAA44D-C2DF-44EF-B5C2-D2113E3DC757-768x241.jpeg 768w" sizes="auto, (max-width: 865px) 100vw, 865px" /></figure></div>



<p>From this point of view, everything seems pretty simple. But in real life, things aren&#8217;t so easy&#8230;</p>



<p>First of all, MySQL has evolved through the years to fix various security issues, such as removing their old authentication algorithm. Our infrastructure tries to keep up with all these changes, but there is always latency when migrating from the old versions to the newest version, especially as some of these changes can impact your website.</p>



<p>We are in luck though, as MySQL clients and servers have a good level of backward compatibility.&nbsp;</p>



<p>So what do we have then?</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="870" height="556" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/776F9617-2AA7-4096-8DCF-189C149E597E.jpeg" alt="" class="wp-image-17256" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/03/776F9617-2AA7-4096-8DCF-189C149E597E.jpeg 870w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/776F9617-2AA7-4096-8DCF-189C149E597E-300x192.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/776F9617-2AA7-4096-8DCF-189C149E597E-768x491.jpeg 768w" sizes="auto, (max-width: 870px) 100vw, 870px" /></figure></div>



<p>Now we are closer to reality.</p>



<p>Now let&#8217;s add our little friend, ProxySQL, to this picture!</p>



<h3 class="wp-block-heading" id="AdayinthelifeofaProxySQLatOVHcloud-FirsthoursofthelifeofaProxySQLatOVHcloud">First hours of the life of a ProxySQL at OVHcloud</h3>



<p>The ProxySQL is a very nice and useful piece of software. Its main job is to establish a connection to your database on your behalf. So a connection arrives, the ProxySQL&nbsp;looks up the database in its configuration, checks the credentials the user provided and, if they are indeed legit, act as a MySQL client to connect to the actual MySQL server.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="244" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/6E27FDBA-05CA-4CED-9BF9-AEB868130EF4-1024x244.jpeg" alt="" class="wp-image-17258" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/03/6E27FDBA-05CA-4CED-9BF9-AEB868130EF4-1024x244.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/6E27FDBA-05CA-4CED-9BF9-AEB868130EF4-300x72.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/6E27FDBA-05CA-4CED-9BF9-AEB868130EF4-768x183.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/6E27FDBA-05CA-4CED-9BF9-AEB868130EF4.jpeg 1466w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>From this point of view, everything seems pretty simple. But in real life, things aren&#8217;t so easy&#8230; Wait, did I already say that?</p>



<p>Let&#8217;s add our full diversity to this picture, just for fun! Remember our MySQL versions? Two specific versions were mentioned&#8230;</p>



<h4 class="wp-block-heading" id="AdayinthelifeofaProxySQLatOVHcloud-MySQL5.6:">MySQL5.6</h4>



<p>This is the latest version at OVHcloud. What is interesting with this specific version is that the authentication mechanism is the&nbsp;latest and greatest from MySQL. It generates a 41-byte hash, a change that was introduced in MySQL 4.1.</p>



<p>The actual version we had in P19 was MySQL5.5, but those two versions are pretty similar from a practical point of view.</p>



<h4 class="wp-block-heading"><strong>MySQL5.1</strong></h4>



<p>Pretty old stuff, but we still have some instances using it. </p>



<p>Some customers using this version were migrated from MySQL4.0 and kept the passwords generated by that version. To keep this simple, we will refer to those as &#8216;<em>MySQL5.1 with old passwords</em>&#8216;. This version uses a 16-byte hash, which is weak and prone to interceptions.</p>



<p>So what do we have then?</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="367" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/0F334BBD-8AB7-4337-9786-368B27A158C6-1024x367.jpeg" alt="" class="wp-image-17274" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/03/0F334BBD-8AB7-4337-9786-368B27A158C6-1024x367.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/0F334BBD-8AB7-4337-9786-368B27A158C6-300x108.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/0F334BBD-8AB7-4337-9786-368B27A158C6-768x275.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/0F334BBD-8AB7-4337-9786-368B27A158C6.jpeg 1475w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>There we are! The journey of our ProxySQL does not go so smoothly, as it cannot authenticate against&nbsp;MySQL 4.0. This makes sense, as it was written long after support for MySQL 4.0 had been dropped.</p>



<p>Nonetheless, we needed to find a solution that took into account the legacy authentication and would prevent outages for the websites using those connections.</p>



<h3 class="wp-block-heading" id="AdayinthelifeofaProxySQLatOVHcloud-Underthehood:aMySQLconnectionstory">Under the hood: a MySQL connection story</h3>



<p>As we highlighted earlier, to connect to a MySQL server, three parameters need to be provided:</p>



<ul class="wp-block-list"><li>A host (say, <code>mysqlXXX.sqlXXX</code>)</li><li>A user</li><li>A password</li></ul>



<p>The interesting part here is the password, as this is what changed between the two versions. </p>



<p>Obviously, MySQL does not store your password in plain text, but a hash instead. To enable ProxySQL to connect, the hash is inserted in its internal database, after which the connection is possible.</p>



<p>Three type of passwords exist:</p>



<ul class="wp-block-list"><li>Plain text</li><li><code>mysql_native_password</code> (the 41-byte hash)</li><li><code>old_password</code> (the 16-byte hash)</li></ul>



<p>ProxySQL only supports the first two&#8230; and therefore cannot connect to your&nbsp;awesome but obsolete&nbsp;database.</p>



<h3 class="wp-block-heading" id="AdayinthelifeofaProxySQLatOVHcloud-Whatareourresolutionpaths?">What are our resolution paths?</h3>



<p>The simplest solution would be, as you can imagine, to update the passwords to use the new algorithm.</p>



<p>However,&nbsp;we do not store your passwords!</p>



<p>In some cases, we were able to compute this, but given&nbsp;the significant number of customers facing this issue&nbsp;(more than 50,000&#8230;&nbsp;remember the 1% of more than one million?), this was not doable.</p>



<p>The first step was to teach&nbsp;to our ProxySQL how to handle the connection from the client. Several patches later, our ProxySQL was proud of its new feature, and able to perform that task.</p>



<p>Let&#8217;s put it into a picture:&nbsp;</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="367" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/D82B58FA-8E50-4F54-9583-34C0E50B9B4D-1024x367.jpeg" alt="" class="wp-image-17299" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/03/D82B58FA-8E50-4F54-9583-34C0E50B9B4D-1024x367.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/D82B58FA-8E50-4F54-9583-34C0E50B9B4D-300x108.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/D82B58FA-8E50-4F54-9583-34C0E50B9B4D-768x275.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/D82B58FA-8E50-4F54-9583-34C0E50B9B4D.jpeg 1475w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>But we definitely didn&#8217;t want to keep those old passwords forever&#8230; so we had to be nasty. </p>



<p>Remember, the only information we had was the legacy hashed password, which was the only source of information we can give to the ProxySQL. To simplify things, here is the situation we are in:</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="211" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/0E9743B5-9361-45FD-AB95-432BD296B2B7-1024x211.jpeg" alt="" class="wp-image-17277" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/03/0E9743B5-9361-45FD-AB95-432BD296B2B7-1024x211.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/0E9743B5-9361-45FD-AB95-432BD296B2B7-300x62.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/0E9743B5-9361-45FD-AB95-432BD296B2B7-768x158.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/0E9743B5-9361-45FD-AB95-432BD296B2B7.jpeg 1516w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>We needed to give our ProxySQL client a password, but could not add the old password (and didn&#8217;t want to!).</p>



<p>In the end, the solution was to take the old password hash and make a new password out of it. This way, we would have a new password, in the correct format!</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="214" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/F3D75D3C-7000-4D2F-8095-692B38BC0191-1024x214.jpeg" alt="" class="wp-image-17278" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/03/F3D75D3C-7000-4D2F-8095-692B38BC0191-1024x214.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/F3D75D3C-7000-4D2F-8095-692B38BC0191-300x63.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/F3D75D3C-7000-4D2F-8095-692B38BC0191-768x161.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/F3D75D3C-7000-4D2F-8095-692B38BC0191.jpeg 1516w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>As the ProxySQL client and MySQL server are hidden from the user, this was all fine, but we couldn&#8217;t do that in the ProxySQL server (you want to keep the same password, right?). </p>



<p>Lucky for us, we had the plain-text password field, which remained unused, so we could use it to store your OLD_HASH and complete the authentication chain.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="215" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/3D035EFE-314C-4F17-9C60-030D13859619-1024x215.jpeg" alt="" class="wp-image-17279" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/03/3D035EFE-314C-4F17-9C60-030D13859619-1024x215.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/3D035EFE-314C-4F17-9C60-030D13859619-300x63.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/3D035EFE-314C-4F17-9C60-030D13859619-768x162.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/3D035EFE-314C-4F17-9C60-030D13859619.jpeg 1516w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>We did it! You can finally access your database!</p>



<p>Let&#8217;s be clear here though&#8230; This is all very temporary, and as stated in the previous article, we do not want to maintain a forked version of ProxySQL where we can&#8217;t update the upstream code, as all this is very legacy-based and specific.</p>



<h3 class="wp-block-heading" id="AdayinthelifeofaProxySQLatOVHcloud-Conclusion">Conclusion</h3>



<p>Maintaining a diverse range of software with incompatible versions is tough!</p>



<p>To make sure the migration had as little impact as possible we had to fix many small details. In the specific case detailed in this article, we had issues with old MySQL passwords and, given the timeline, could not ask MySQL5.1 users to change their passwords. But with a bit of hacking, we were able to start the migration&#8230; even for legacy authentication!</p>



<p>Again, this was only one of the issues we faced while setting up the ProxySQL and adapting it to our very specific requirements. Remember, tackling legacy software is a difficult and demanding task, but there is no avoiding it! This is what we did with the P19 migration, and what we will keep doing to always improve the service we offer you.</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fa-day-in-the-life-of-a-proxysql-at-ovhcloud%2F&amp;action_name=A%20day%20in%20the%20life%20of%20a%20ProxySQL%20at%20OVHcloud&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>migrate-datacentre &#8211;quiet: How do we seamlessly migrate a datacentre?</title>
		<link>https://blog.ovhcloud.com/migrate-datacentre-quiet-how-do-we-seamlessly-migrate-a-datacentre/</link>
		
		<dc:creator><![CDATA[Fabien Bagard]]></dc:creator>
		<pubDate>Tue, 28 Jan 2020 14:01:31 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Web Hosting]]></category>
		<guid isPermaLink="false">https://www.ovh.com/blog/?p=16048</guid>

					<description><![CDATA[In our previous articles, we explained why we had to move 800,000 databases from one datacentre to another, 300 kilometres away. So here we are&#8230; We did it!Now we will focus on a very important goal of any migration. From your point of view, as a customer, you must see… Nothing! I understand this completely, [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fmigrate-datacentre-quiet-how-do-we-seamlessly-migrate-a-datacentre%2F&amp;action_name=migrate-datacentre%20%26%238211%3Bquiet%3A%20How%20do%20we%20seamlessly%20migrate%20a%20datacentre%3F&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p>In <a href="https://www.ovh.com/blog/tag/migration/" data-wpel-link="exclude">our previous articles</a>, we explained why we had to move 800,000 databases from one datacentre to another, 300 kilometres away. So here we are&#8230; We did it!<br>Now we will focus on a very important goal of any migration. From your point of view, as a customer, you must see… Nothing! I understand this completely, as I am also an OVH customer. And as a customer paying for a service, I want it to work, regardless of what the people behind the scenes do.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="538" src="https://www.ovh.com/blog/wp-content/uploads/2020/01/9E266967-87D0-4FB8-9ED2-233BB110B977-1024x538.jpeg" alt="migrate-datacentre --quiet: How do we seamlessly migrate a datacentre?" class="wp-image-16848" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/01/9E266967-87D0-4FB8-9ED2-233BB110B977-1024x538.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/9E266967-87D0-4FB8-9ED2-233BB110B977-300x158.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/9E266967-87D0-4FB8-9ED2-233BB110B977-768x404.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/9E266967-87D0-4FB8-9ED2-233BB110B977.jpeg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>In this post, we will see how we managed to move all of them (almost) seamlessly&#8230;</p>



<h3 class="wp-block-heading">The basics</h3>



<p>How does a website connect to a database that&#8217;s hosted on a different server?<br>Short answer: by using the network.<br>As a diagram is always better than a long answer, here is a simplified view of how it works&#8230;</p>



<p>The webserver checks the website&#8217;s configuration to determine where the database is located:</p>



<pre class="wp-block-code"><code class="">$database_server = 'mydatabase.mysql.db';
$database_name = 'mydatabase';
$database_user = 'mydatabase';
$database_password = 'correct horse battery staple';
# ref: https://www.xkcd.com/936/</code></pre>



<p>Then it starts its dialogue with the Domain Name Server (DNS), to obtain the IP behind mydatabase.mysql.db. Once the IP is known, the webserver can talk with the database server.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://www.ovh.com/blog/wp-content/uploads/2020/01/9BE2CDFD-E465-4829-A842-7C01DEEE16F7-1024x884.jpeg" alt="The webserver checks the website's configuration to know where the database is located. Then it starts its dialogue with the Domain Name Server, to have the IP behind mydatabase.mysql.db. Once the IP is known, the webserver can talk with the database server." class="wp-image-16814" width="512" height="442" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/01/9BE2CDFD-E465-4829-A842-7C01DEEE16F7-1024x884.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/9BE2CDFD-E465-4829-A842-7C01DEEE16F7-300x259.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/9BE2CDFD-E465-4829-A842-7C01DEEE16F7-768x663.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/9BE2CDFD-E465-4829-A842-7C01DEEE16F7.jpeg 1157w" sizes="auto, (max-width: 512px) 100vw, 512px" /></figure></div>



<p>But having one network name for every database is something relatively new in OVH history. It was first introduced five years ago, with the Gravelines&#8217; architecture described here.</p>



<h3 class="wp-block-heading">A 20-year legacy</h3>



<p>In the beginning, we used to give our customers the IP address of the database server.</p>



<p>On the positive side, you avoided querying the DNS server, you saved time, you avoided a possible bottleneck, and you may have even avoided a potential point of failure.<br>On the negative side, if we had to change the server and its IP couldn&#8217;t be moved – let&#8217;s say, when a migration occurred – every customer had to manually change their website&#8217;s configuration.</p>



<pre class="wp-block-code"><code class="">$database_server = '10.0.59.42';
$database_name = 'mydatabase';
$database_user = 'mydatabase';
$database_password = 'correct horse battery staple';
# ref: https://www.xkcd.com/936/</code></pre>



<p>As we have loyal customers (including many of you, in this case!), it was not a bad idea, but not really scalable.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://www.ovh.com/blog/wp-content/uploads/2020/01/C8A9FC56-EA53-475F-9F77-3AC3FC4686E8-1024x526.jpeg" alt="Giving directly the DB server IP to the webserber" class="wp-image-16816" width="512" height="263" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/01/C8A9FC56-EA53-475F-9F77-3AC3FC4686E8-1024x526.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/C8A9FC56-EA53-475F-9F77-3AC3FC4686E8-300x154.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/C8A9FC56-EA53-475F-9F77-3AC3FC4686E8-768x394.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/C8A9FC56-EA53-475F-9F77-3AC3FC4686E8.jpeg 1163w" sizes="auto, (max-width: 512px) 100vw, 512px" /></figure></div>



<p>So, to ease server management, hardware end of life etc., OVHcloud switched to providing our customers with the server&#8217;s name instead of the server&#8217;s IP.</p>



<pre class="wp-block-code"><code class="">$database_server = 'mysql55-59.pro';
$database_name = 'mydatabase';
$database_user = 'mydatabase';
$database_password = 'Brussels Sprouts Mandela Effect';
# ref: https://www.xkcd.com/2241/</code></pre>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://www.ovh.com/blog/wp-content/uploads/2020/01/CCE8A62E-8ECF-4867-9C6C-400CB464B76B-1024x873.jpeg" alt="Giving the DB server name to the webserver" class="wp-image-16818" width="512" height="437" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/01/CCE8A62E-8ECF-4867-9C6C-400CB464B76B-1024x873.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/CCE8A62E-8ECF-4867-9C6C-400CB464B76B-300x256.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/CCE8A62E-8ECF-4867-9C6C-400CB464B76B-768x655.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/CCE8A62E-8ECF-4867-9C6C-400CB464B76B.jpeg 1156w" sizes="auto, (max-width: 512px) 100vw, 512px" /></figure></div>



<p>To sum-up, we have three ways to connect to a database in P19:</p>



<ul class="wp-block-list"><li>Using the server&#8217;s IP</li><li>Using the server&#8217;s name</li><li>Using the database&#8217;s name</li></ul>



<h3 class="wp-block-heading">The blocker</h3>



<p>Following the rules described <a href="https://www.ovh.com/blog/how-to-win-at-the-massive-database-migration-game/" data-wpel-link="exclude">here</a>, as we moved your databases individually and not a whole server at a time, and databases were shuffled across all our new instances rather than staying with their neighbour, we could not reuse the server&#8217;s IP address. Also, we could not reuse the server&#8217;s name.</p>



<p>We seriously thought about automatically changing all our customers&#8217; configurations.</p>



<p>Be this meant we would have had to:</p>



<ul class="wp-block-list"><li>Parse hundreds of terabytes. Doable, but time-consuming.</li><li>Understand your website&#8217;s organisation. This can be automated for up to 99% of all different uses cases, but 1% of 1.5million websites is still 15.000 potentially broken websites following the replacement.</li><li>Replace the IP or servername with the database name. Possible, but not 100% reliable.</li></ul>



<p>What if the customer:</p>



<ul class="wp-block-list"><li>Uses its database in a binary file, like a compiled CGI written in C? Not parsable.</li><li>Uses a different database than the one we have the link? How would we know what should be used?</li><li>Does not use its database? How would we know it was actually the correct result if we found nothing?</li></ul>



<p>As this was clearly not an option, we had to find a way to support every use case.</p>



<p>If the configuration was:</p>



<ul class="wp-block-list"><li>mydatabase.mysql.db: No problem. The DNS was up-to date.</li><li>servername: The query would reach the server and need to be forwarded.</li><li>server IP: The query would reach the server and need to be forwarded.</li></ul>



<h3 class="wp-block-heading">The solution</h3>



<p>Maybe some of you have already started to figure out the solution&#8230;</p>



<p>We needed a piece of software to masquerade as the server, but actually redirecting incoming connections to the real server behind it. In other words, a proxy!</p>



<p>We decided to use <a href="https://www.proxysql.com/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">René Cannaò&#8217;s proxySQL</a>.</p>



<p>ProxySQL is more or less designed for a small number of users, against a small number of databases, mainly for splitting read-only and read-write access on different backends, which can greatly help a database with few writes and a lot of reads support the load. It can also help parsing and securing queries. But using it for our purposes was pushing it to its limits. We must say, this product rocks!</p>



<h4 class="wp-block-heading">Paris side</h4>



<p>First of all, we had to deploy it on hundreds of servers in P19.</p>



<p>Our architecture allowed us to install one ProxySQL on each database host. This was done between the 27th November and the 6th December 2019 (<a href="http://travaux.ovh.net/?do=details&amp;id=35499" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">http://travaux.ovh.net/?do=details&amp;id=35499</a>).</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://www.ovh.com/blog/wp-content/uploads/2020/01/4845EBC7-CC5B-4A68-99A2-7B167F75BCB2-1021x1024.jpeg" alt="Using ProxySQL" class="wp-image-16824" width="511" height="512" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/01/4845EBC7-CC5B-4A68-99A2-7B167F75BCB2-1021x1024.jpeg 1021w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/4845EBC7-CC5B-4A68-99A2-7B167F75BCB2-300x300.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/4845EBC7-CC5B-4A68-99A2-7B167F75BCB2-150x150.jpeg 150w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/4845EBC7-CC5B-4A68-99A2-7B167F75BCB2-768x770.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/4845EBC7-CC5B-4A68-99A2-7B167F75BCB2.jpeg 1078w" sizes="auto, (max-width: 511px) 100vw, 511px" /></figure></div>



<p>Once all of them were up and running, we could start the migration. For every database, the ProxySQL was updated, so it would track where the database really was, in Paris or in Gravelines.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://www.ovh.com/blog/wp-content/uploads/2020/01/78E750B2-B870-4E3E-9C57-B98CA1119E81-1024x964.jpeg" alt="Some DB in Paris, some in Gravelines" class="wp-image-16837" width="512" height="482" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/01/78E750B2-B870-4E3E-9C57-B98CA1119E81-1024x964.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/78E750B2-B870-4E3E-9C57-B98CA1119E81-300x283.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/78E750B2-B870-4E3E-9C57-B98CA1119E81-768x723.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/78E750B2-B870-4E3E-9C57-B98CA1119E81.jpeg 1531w" sizes="auto, (max-width: 512px) 100vw, 512px" /></figure></div>



<p>Easy-peezy, isn&#8217;t it? As the ProxySQL runs on the same host, we didn&#8217;t need to fake anything and it worked like a charm. But what would happen if a webserver in Gravelines called a database that was still in Paris?</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://www.ovh.com/blog/wp-content/uploads/2020/01/14E519E0-9685-49BC-8FBE-67CF6782D438.jpeg" alt="DNS errors on calls from Gravelines to Paris" class="wp-image-16836" width="380" height="302" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/01/14E519E0-9685-49BC-8FBE-67CF6782D438.jpeg 759w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/14E519E0-9685-49BC-8FBE-67CF6782D438-300x239.jpeg 300w" sizes="auto, (max-width: 380px) 100vw, 380px" /></figure></div>



<h4 class="wp-block-heading">Gravelines side</h4>



<p>This time, we did not have the choice but fake the server name in Gravelines. What could we use? A ProxySQL of course! But on our new architecture we just could not install them on every hosts, because as seen previously, we have 10 times less customers per instance in Gravelines than in Paris.</p>



<p>So we had to set up a ProxySQL farm and a lying DNS which resolves to a member of the farm for queries about servers in Paris. And using the same mechanism for updating ProxySQL configuration during migration, we finally had this kind of infrastructure:</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="659" src="https://www.ovh.com/blog/wp-content/uploads/2020/01/AB1B1819-89C6-46FD-8761-C04C8913414C-1024x659.png" alt="Working architecture with bi-directional network tunnel and ProxySQLs in both sides" class="wp-image-16845" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/01/AB1B1819-89C6-46FD-8761-C04C8913414C-1024x659.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/AB1B1819-89C6-46FD-8761-C04C8913414C-300x193.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/AB1B1819-89C6-46FD-8761-C04C8913414C-768x494.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/AB1B1819-89C6-46FD-8761-C04C8913414C-1536x989.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/AB1B1819-89C6-46FD-8761-C04C8913414C-2048x1318.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>But what about configurations with IP addresses in them? As we had ProxySQL loaded with users for a group of P19 servers, we could – thanks to a routing trick – make the webservers think that P19 IPs were set up on a ProxySQL!</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://www.ovh.com/blog/wp-content/uploads/2020/01/53C19039-56A4-4A19-8DCC-4D98021DE61B-1024x436.jpeg" alt="Dealing with DB defined by IP" class="wp-image-16839" width="512" height="218" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/01/53C19039-56A4-4A19-8DCC-4D98021DE61B-1024x436.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/53C19039-56A4-4A19-8DCC-4D98021DE61B-300x128.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/53C19039-56A4-4A19-8DCC-4D98021DE61B-768x327.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/01/53C19039-56A4-4A19-8DCC-4D98021DE61B.jpeg 1333w" sizes="auto, (max-width: 512px) 100vw, 512px" /></figure></div>



<h3 class="wp-block-heading">The downside</h3>



<p>You just learned that to allow the migration to happen in the required timeframe, we had to introduce ProxySQL. Even if it is a great piece of software, and was almost a life-saver for us, as sysadmins, we prefer to avoid maintaining more and more different solutions on a daily basis. This is why we have decided to drop support for ways to connect to your database other than .mysql.db in the months to come. More details will come soon.</p>



<p>If you want to retain our state-of-the-art way of doing things (and also give us a hand with keeping the changes smooth!), you can check that your website already uses .mysql.db in your config files.</p>



<h3 class="wp-block-heading">Conclusion</h3>



<p>Having to support multiple ways of connecting to a database gave us loads of headaches. Finding a great piece of software was our aspirin, and allowed us to enable the &#8211;quiet flag in our migration process, so customers did not have to change their configurations for their websites to stay online.</p>



<p>However, you may have noticed it did not go quite as smoothly as we wanted. We encountered many small, sometimes unexpected, problems that we had to fix ASAP&#8230;</p>



<p>You may remember the abnormal amount of &#8220;max_user_connections&#8221; (<a href="http://travaux.ovh.net/?do=details&amp;id=35689" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">http://travaux.ovh.net/?do=details&amp;id=35689</a>).<br><a href="https://www.ovh.com/blog/a-day-in-the-life-of-a-proxysql-at-ovhcloud/" data-wpel-link="exclude">We had to play with ProxySQL&#8217;s source code to enable its use against mysql 5.1 combined with the pre-mysql 4.0 password hash algorithm.</a><br><a href="https://www.ovh.com/blog/another-day-in-proxysql-life-sharing-is-caring/" data-wpel-link="exclude">We found funny things about encoding in the source code we patched upstream.</a><br>We were able to flood our host&#8217;s ARP table multiple times per hour.</p>



<p>You will learn more about these challenges in our upcoming posts!</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fmigrate-datacentre-quiet-how-do-we-seamlessly-migrate-a-datacentre%2F&amp;action_name=migrate-datacentre%20%26%238211%3Bquiet%3A%20How%20do%20we%20seamlessly%20migrate%20a%20datacentre%3F&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to win at the massive database migration game</title>
		<link>https://blog.ovhcloud.com/how-to-win-at-the-massive-database-migration-game/</link>
		
		<dc:creator><![CDATA[Mikaël Davranche]]></dc:creator>
		<pubDate>Wed, 27 Nov 2019 13:10:01 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Web Hosting]]></category>
		<guid isPermaLink="false">https://www.ovh.com/blog/?p=16283</guid>

					<description><![CDATA[In our previous articles, we explained why we had to move 800,000 databases from one datacentre to another, 300 kilometres away. So here we are&#8230; My team and I did it! It was a real brain-burner, so I hope our story will help you to address more of the huge technical projects we love to [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fhow-to-win-at-the-massive-database-migration-game%2F&amp;action_name=How%20to%20win%20at%20the%20massive%20database%20migration%20game&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p>In <a href="https://www.ovh.com/blog/tag/migration/" data-wpel-link="exclude">our previous articles</a>,  we explained why we had to move 800,000 databases from one datacentre to another, 300 kilometres away. So here we are&#8230; My team and I did it! It was a real brain-burner, so I hope our story will help you to address more of the huge technical projects we love to play with.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="538" src="https://www.ovh.com/blog/wp-content/uploads/2019/11/B6205D94-00EB-4364-B731-A8144659FDF6-1024x538.jpeg" alt="" class="wp-image-16325" srcset="https://blog.ovhcloud.com/wp-content/uploads/2019/11/B6205D94-00EB-4364-B731-A8144659FDF6-1024x538.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/B6205D94-00EB-4364-B731-A8144659FDF6-300x158.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/B6205D94-00EB-4364-B731-A8144659FDF6-768x404.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/B6205D94-00EB-4364-B731-A8144659FDF6.jpeg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading" id="Blogdraft-Theplayingrules">The rules</h3>



<ul class="wp-block-list"><li>To reduce latency, a database must be migrated at the same time as the website using it.</li><li>Because databases are spread across all available MySQL servers, the granularity of a migration has to be the database, not the MySQL instance. In other words, we cannot migrate a whole MySQL server. We must only move a part of it.</li><li>As the link between a website and its database is not necessarily referenced, a website in Gravelines should be able to contact a database  in Paris (for example), and vice-versa.</li><li>To contact its database, a website uses a host name, a user name and a password. We want the migration to be transparent, so nobody should have to change any of those elements to contact their new database.</li><li>Databases&#8217; platforms change between Paris and Gravelines, as shown below.</li></ul>



<p>To sum up, this is what we have before a web cluster migration:</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="907" src="https://www.ovh.com/blog/wp-content/uploads/2019/11/1BF38B2E-CD7F-495E-8F57-2896C967F160-1024x907.jpeg" alt="" class="wp-image-16312" srcset="https://blog.ovhcloud.com/wp-content/uploads/2019/11/1BF38B2E-CD7F-495E-8F57-2896C967F160-1024x907.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/1BF38B2E-CD7F-495E-8F57-2896C967F160-300x266.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/1BF38B2E-CD7F-495E-8F57-2896C967F160-768x680.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/1BF38B2E-CD7F-495E-8F57-2896C967F160.jpeg 1434w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>And this is what we want after the migration:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="763" src="https://www.ovh.com/blog/wp-content/uploads/2019/11/4923CE6C-1BAA-42E3-98BF-AB9E6A01EDFA-1024x763.jpeg" alt="" class="wp-image-16314" srcset="https://blog.ovhcloud.com/wp-content/uploads/2019/11/4923CE6C-1BAA-42E3-98BF-AB9E6A01EDFA-1024x763.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/4923CE6C-1BAA-42E3-98BF-AB9E6A01EDFA-300x224.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/4923CE6C-1BAA-42E3-98BF-AB9E6A01EDFA-768x572.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/4923CE6C-1BAA-42E3-98BF-AB9E6A01EDFA.jpeg 1495w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h4 class="wp-block-heading" id="Blogdraft-Afewmorethings">A few more things&#8230;</h4>



<ul class="wp-block-list"><li>Obviously, we had to keep in mind one of the most important thing when dealing with databases: consistency.  For each database, we had to define a consistency point. Before this point on the timeline, read/writes were made in Paris. After it, read/writes were made in Gravelines.</li><li>We believe in transparency and reversability. These are both key parts of our SMART cloud. That&#8217;s why we wanted to give you access to this consistency point, as a dump on your <a href="https://ovh.com/manager" data-wpel-link="exclude">OVHcloud Control Panel</a>. For every database migrated, we chose to give you access to the dump for one month.</li><li>Migrating 800K databases in about 60 nights meant we had to be very fast and scalable. Our record was on the 1st of July 2019, when we successfully migrating 13,502 databases in 1 hour, 13 minutes and 31 seconds.</li><li>If you’re used to being on duty, you know that your attention and efficiency are lower during the night. Repeating the migration process about 60 times in one year would amplify that, so we wanted everything to be as automated and as simple as possible. As we will see later, to launch the database migrations, we just had to run one command on a single host:</li></ul>



<pre class="wp-block-code"><code class="">migrate-p19</code></pre>



<p>Now you know rules, it&#8217;s time to start the game!</p>



<h3 class="wp-block-heading" id="Blogdraft-Level1">Level 1</h3>



<p>The first level is always an easy one, where you discover how the game works through a kind of tutorial! So, let’s begin with a small database migration. This is how we do it:</p>



<p>1.&nbsp;At the source (Paris)</p>



<ul class="wp-block-list"><li>Set read-only mode. We absolutely need to avoid writes during the migration, to avoid the famous&nbsp;<a href="https://en.wikipedia.org/wiki/Split-brain_(computing)" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">split-brain</a>. The easiest way to do this is to put the database in read-only mode. In most cases, websites need only to read the databases, but in some cases, they need read and  writes, and they will therefore be broken. That&#8217;s not a problem, because the website is currently migrated and is closed. We&#8217;ll block write access, in case the database is used by another host that isn&#8217;t affected by the nighttime migration.</li><li>Dump the database and put the dump somewhere. We choose to store the dumps on OVHcloud’s <a href="https://www.ovh.com/fr/public-cloud/object-storage/" data-wpel-link="exclude">Public Cloud Storage</a> (PCS), as we already use this solution to store 36 million dumps per month. Adding 800,000 dumps in one year is no problem for this awesome platform!</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="820" height="1024" src="https://www.ovh.com/blog/wp-content/uploads/2019/11/AF30FEE4-CD34-4061-8084-F41C63825104-820x1024.jpeg" alt="" class="wp-image-16316" srcset="https://blog.ovhcloud.com/wp-content/uploads/2019/11/AF30FEE4-CD34-4061-8084-F41C63825104-820x1024.jpeg 820w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/AF30FEE4-CD34-4061-8084-F41C63825104-240x300.jpeg 240w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/AF30FEE4-CD34-4061-8084-F41C63825104-768x959.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/AF30FEE4-CD34-4061-8084-F41C63825104.jpeg 1030w" sizes="auto, (max-width: 820px) 100vw, 820px" /></figure></div>



<p>2. At the destination (Gravelines)</p>



<ul class="wp-block-list"><li>Retrieve the dump and import it.</li><li>Create the user and permissions, with write access.</li></ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="832" height="1024" src="https://www.ovh.com/blog/wp-content/uploads/2019/11/0221F782-53F8-430D-8E13-AD5667132740-832x1024.jpeg" alt="" class="wp-image-16318" srcset="https://blog.ovhcloud.com/wp-content/uploads/2019/11/0221F782-53F8-430D-8E13-AD5667132740-832x1024.jpeg 832w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/0221F782-53F8-430D-8E13-AD5667132740-244x300.jpeg 244w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/0221F782-53F8-430D-8E13-AD5667132740-768x945.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/0221F782-53F8-430D-8E13-AD5667132740.jpeg 1039w" sizes="auto, (max-width: 832px) 100vw, 832px" /></figure>



<p>3. Switch to the new database</p>



<ul class="wp-block-list"><li>At this point, the website is still calling the database at Paris. So the website (whether it&#8217;s hosted in Paris or Gravelines) can contact the new database, we&#8217;ll update the DNS so that the name points to the Gravelines MySQL instance rather than the Paris one.</li><li>The read access to the Paris database is also removed.</li><li>Finally, we&#8217;ll update our information system, so you can retrieve the dump from PCS via your Control Panel. This update also allows us to redirect all actions available from the Control Panel (e.g. change a password, create a dump&#8230;) to the new database at Gravelines.</li></ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="832" height="1024" src="https://www.ovh.com/blog/wp-content/uploads/2019/11/0A40E3A4-31AD-4CEC-BADD-288898D45DA7-832x1024.jpeg" alt="" class="wp-image-16320" srcset="https://blog.ovhcloud.com/wp-content/uploads/2019/11/0A40E3A4-31AD-4CEC-BADD-288898D45DA7-832x1024.jpeg 832w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/0A40E3A4-31AD-4CEC-BADD-288898D45DA7-244x300.jpeg 244w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/0A40E3A4-31AD-4CEC-BADD-288898D45DA7-768x945.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/0A40E3A4-31AD-4CEC-BADD-288898D45DA7.jpeg 1039w" sizes="auto, (max-width: 832px) 100vw, 832px" /></figure>



<h3 class="wp-block-heading" id="Blogdraft-Level2:&quot;Decentralizedstatemachine&quot;">Level 2: &#8220;Decentralised state machine&#8221;</h3>



<p>To deliver the proof of concept for the migration, we first ran all those steps manually and sequentially. The natural way to automate this is to write a script to do the same thing, but faster. That’s a centralised method, but such methods experience bottlenecks sooner or later, and imply a <a href="https://en.wikipedia.org/wiki/SPOF" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">single point of failure</a>.</p>



<p>To prevent this, and fulfil our scalability requirements, we have to be decentralised. We must imagine the migration of a single  database as a <a href="https://en.wikipedia.org/wiki/State_machine" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">state machine</a>. Here is a simplified version of the state graph of a database migration, as described above:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="790" src="https://www.ovh.com/blog/wp-content/uploads/2019/11/283BFFEF-1D94-4460-BB7A-FF9DB045B59D-1024x790.jpeg" alt="" class="wp-image-16322" srcset="https://blog.ovhcloud.com/wp-content/uploads/2019/11/283BFFEF-1D94-4460-BB7A-FF9DB045B59D-1024x790.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/283BFFEF-1D94-4460-BB7A-FF9DB045B59D-300x231.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/283BFFEF-1D94-4460-BB7A-FF9DB045B59D-768x592.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2019/11/283BFFEF-1D94-4460-BB7A-FF9DB045B59D.jpeg 1434w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Using this state machine, we can perform those three big steps by different machines to parallelise the workload:</p>



<ul class="wp-block-list"><li>The source</li><li>The destination</li><li>The one updating the DNS</li></ul>



<p>These three hosts can perform their tasks in an independent and decentralised way. All they have to do is watch the state graph to see if they have something to do, and if so, update it and perform the tasks.</p>



<h3 class="wp-block-heading" id="Blogdraft-Thebrainofthemigration:1CloudDB">The brain of the migration: CloudDB</h3>



<p>We love the <a href="https://en.wikipedia.org/wiki/Eating_your_own_dog_food" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">&#8216;eat your own food&#8217;</a> concept! That’s the best quality control ever, and with the feedback you give us, our first source of feature requests. So it&#8217;s no surprise that we used our own <a href="https://docs.ovh.com/fr/clouddb/" data-wpel-link="exclude">CloudDB</a> product to store the state graphs of the databases migrations.</p>



<p>Technically, a state graph is a row in a table. The simplified structure of this table looks like this:</p>



<pre class="wp-block-code"><code class="">- database_name VARCHAR(255) PRIMARY KEY,
- source VARCHAR(255),
- destination VARCHAR(255),
- status VARCHAR(255) NOT NULL DEFAULT 'Waiting',
- dump_url TEXT</code></pre>



<p>Except for the dump_url, all the fields are filled before the migration begins. In other words, we know where the databases are, and where they will be.</p>



<p>We&#8217;ve beaten all the challenges of this level. Now it&#8217;s time to beat the final monster!</p>



<h3 class="wp-block-heading" id="Blogdraft-Level3:Migrate800K">Level 3: Migrate 800K databases</h3>



<p>Now that we know how to migrate a single database in a decentralised way, let’s fill the CloudDB with all the databases we want to migrate! This is what the migration now looks like:</p>



<h4 class="wp-block-heading" id="Blogdraft-InParis">In Paris</h4>



<p>About once a minute*, each host of the 780 database servers asks the CloudDB if they have something to dump. The <code>source</code> and <code>status</code> columns of the table are used to retrieve this information:</p>



<pre class="wp-block-code"><code class="">SELECT … WHERE source = me AND status = 'To dump';</code></pre>



<p>If so, they execute their tasks and update the CloudDB about what they’re doing. When they’re done, they pass the baton for this migration to Gravelines:</p>



<pre class="wp-block-code"><code class="">UPDATE … SET status = 'To import' WHERE database_name = '…';</code></pre>



<h4 class="wp-block-heading" id="Blogdraft-InGravelines">In Gravelines</h4>



<p>At the same time, 300 kilometres away, hundreds of database servers are also asking the CloudDB if they have something to import. As in Paris, they query the CloudDB about once a minute*.  The <code>destination</code> and <code>status</code> columns of the table are used to retrieve this information:</p>



<pre class="wp-block-code"><code class="">SELECT … WHERE destination = me AND status = 'To import';</code></pre>



<p>If so, they execute their tasks and update the CloudDB about what they’re doing. When they’re done, they pass the baton to a third robot, who will change the DNS records for this database migration:</p>



<pre class="wp-block-code"><code class="">UPDATE … SET status = 'DNS to update' WHERE database_name = '…';</code></pre>



<p>(*) To avoid flooding the CloudDB, we use a random frequency to query the database with the state graphs. This way, the connections are globally distributed over time.</p>



<h4 class="wp-block-heading" id="Blogdraft-DNSupdate">DNS update</h4>



<p>The robot responsible for the DNS update is the third player in the migration process, and works in the same way as the dump and import robots described above.</p>



<h4 class="wp-block-heading" id="Blogdraft-Notthat…«easy»">Not that easy&#8230;</h4>



<p>Of course, the actual game was more complex. This was a simplified version of the migration, with some steps missing or not detailed enough, such as:</p>



<ul class="wp-block-list"><li>Preventing writes to the source database</li><li>Updating the IS (among others) so you can see the dump in the Control Panel</li><li>Setting the password on the destination (the same as the one on the source) without knowing it</li><li>And many others</li></ul>



<p>But now that you&#8217;ve got the concept for the main steps, you can imagine how we handled the others.</p>



<h3 class="wp-block-heading" id="Blogdraft-Cheatcode:Iterate!">Cheat code: Iterate!</h3>



<p>Do you know <a href="https://en.wikipedia.org/wiki/Law_of_truly_large_numbers" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">the law of truly large numbers</a>? It states that with a large enough number of samples, any unlikely thing is likely to be observed.</p>



<p>This is one of the first lessons you learn when you host 1.2 million databases. Every day, we face the many improbable things that can happen with databases, so we knew that, despite the tests we conducted, we would encounter difficulties, weird cases, and improbable bottlenecks.</p>



<p>But there&#8217;s a cheat code to beat that boss: iterate!</p>



<ul class="wp-block-list"><li>Begin the migration</li><li>Face a problem</li><li>Fix it definitively (not just for the particular case that failed, but also for all similar cases across the whole platform)</li><li>Then try again, faster!</li></ul>



<p>This method is possible thanks to two things:</p>



<ul class="wp-block-list"><li>The magic command</li><li>The big red button</li></ul>



<h4 class="wp-block-heading" id="Blogdraft-Themagiccommand">The magic command</h4>



<p>As mentioned above, to launch the database migrations, we had to run one command on a single host:</p>



<pre class="wp-block-code"><code class="">migrate-p19</code></pre>



<p>This magic command has one parameter: the number of parallel migrations you want to do. We used <code>400</code> for this parameter.</p>



<pre class="wp-block-code"><code class="">migrate-p19 --max-procs 400</code></pre>



<p>This means that 400 databases are being dumped or imported at the same time –&nbsp; no more, no less.</p>



<p>The <code>migrate-p19</code> command is a scheduler. It updates the CloudDB every 10 seconds, so we always have those 400 migrations performed in parallel:</p>



<pre class="wp-block-code"><code class="">SELECT COUNT(database_name) … WHERE status in ('To dump', 'Dumping', 'Dump failed', 'To import', …);
42
UPDATE … SET status = 'To dump' WHERE status = 'Waiting' LIMIT (400 - 42);</code></pre>



<h4 class="wp-block-heading" id="Blogdraft-Stopthegameduringtheadventure:Thebigredbutton">Pause the game: The big red button</h4>



<p>In every machine, it is mandatory to have a big red button to press when something’s wrong. To interrupt the migration, for a reason or another,  we just have to kill the <code>migration-p19</code> script. When we do this, the ongoing migrations terminate themselves, after which no new ones are launched.</p>



<p>The interruption is automatic. If something’s really bad, the scheduler can see that there are too many operations in an error state, and then decide to stop the migration.</p>



<hr class="wp-block-separator"/>



<p>Our database migration adventure will continue on this blog. Indeed, the world is not perfect, and we&#8217;ve had to handle some interesting cases&#8230;</p>



<p>To be continued…</p>



<hr class="wp-block-separator"/>



<p>Want to be part of the team bringing this migration to life, and keeping this huge platform in an operational state? <a href="https://careers.ovh.com/fr/offres/opensource-sre-and-automation-hf" data-wpel-link="exclude">We are hiring an open-source SRE and automation addict in France and Canada</a>!</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fhow-to-win-at-the-massive-database-migration-game%2F&amp;action_name=How%20to%20win%20at%20the%20massive%20database%20migration%20game&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Web hosting &#8211; How do our databases work?</title>
		<link>https://blog.ovhcloud.com/web-hosting-how-do-our-databases-work/</link>
		
		<dc:creator><![CDATA[Fabien Bagard]]></dc:creator>
		<pubDate>Wed, 25 Sep 2019 14:16:40 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Web Hosting]]></category>
		<guid isPermaLink="false">https://www.ovh.com/blog/?p=16040</guid>

					<description><![CDATA[In our series of articles about migrating web hosting infrastructure from Paris to Gravelines (the first of which is here), we neglected to mention the databases. This is however a very important part, with 800,000 databases to be migrated! In these new series of posts, we will tell you about our experience with web hosting [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fweb-hosting-how-do-our-databases-work%2F&amp;action_name=Web%20hosting%20%26%238211%3B%20How%20do%20our%20databases%20work%3F&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p>In our series of articles about migrating web hosting infrastructure from Paris to Gravelines (the first of which is <a href="https://www.ovh.com/blog/web-hosting-why-we-decided-to-migrate-three-million-websites/" data-wpel-link="exclude">here</a>), we neglected to mention the databases. This is however a very important part, with 800,000 databases to be migrated!</p>



<p>In these new series of posts, we will tell you about our experience with web hosting databases. </p>



<h3 class="wp-block-heading">How to handle 800k databases?</h3>



<p>Our previous posts explained <a href="https://www.ovh.com/blog/web-hosting-why-we-decided-to-migrate-three-million-websites/" data-wpel-link="exclude">why we have to migrate databases along with their websites</a>. You also know that we <a href="https://www.ovh.com/blog/web-hosting-how-to-host-3-million-websites/" data-wpel-link="exclude">set up a network bridge for customers using non-referenced databases</a>. </p>



<p>Yet migrating databases also brings challenges. We will describe the most important ones<em>.</em> &nbsp;But first, a little reminder of our different architectures.</p>



<p>OVH offers two types of databases:</p>



<ul class="wp-block-list"><li>Shared databases (which we call <em>SharedSQL</em>)</li></ul>



<ul class="wp-block-list"><li>Private databases (which we call, you guessed it, <em>PrivateSQL</em>)<br></li></ul>



<h4 class="wp-block-heading">What is a <em>SharedSQL</em>?</h4>



<p>As the name suggests, it is a database on a shared server, which contains many other bases, and which shares its hardware resources, including RAM. </p>



<p>Of course, not everyone has access to everyone&#8217;s data! Each database is defined with a single user able to access it.</p>



<p>This technique allows us to exploit up to 2500 databases on a single server. This is much cheaper than offering a physical server per customer. This is how we can offer low cost access to several databases within our hosting offers.</p>



<h4 class="wp-block-heading">What is a <em>PrivateSQL</em>?</h4>



<p>Unlike <em>SharedSQL</em>, <em>PrivateSQL </em>are databases with guaranteed resources, including RAM. In <em>PrivateSQL</em>, users also have many more rights and greater customisation capabilities.</p>



<p>Does each user have their own server? Not really! Several years ago we used Docker technology to containerise our databases, we already discussed it in this post: <a href="https://www.ovh.com/fr/blog/docker-administrer-bases-de-donnees-une-idee-folle/" data-wpel-link="exclude">https://www.ovh.com/en/blog/docker-administration-databases-a-flying-ideas/</a>. With a <em>PrivateSQL</em>, it&#8217;s not just the database space that is private, the RAM assigned to the service is also guaranteed. This means that in no matter the circumstance, the performance is consistent. </p>



<h3 class="wp-block-heading">Seven differences! </h3>



<p>When considering migration, we had to study<strong> </strong>the difference in architectures between Paris and Gravelines.</p>



<p>Regarding <em>PrivateSQL</em>, it was simple: there is no difference, we had already aligned the architectures when we containerised them. Migrating them would be a piece of cake: we just had to move a container from point A to point B. </p>



<p>At least on paper, in real life it was not so simple, but we will talk about it next time.</p>



<p>Here is a simplified diagram of a <em>PrivateSQL</em></p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="360" height="456" src="https://www.ovh.com/blog/wp-content/uploads/2019/09/17633C41-9CFC-4892-8F19-06E38C4A3809-e1569419653801.jpeg" alt="PrivateSQL" class="wp-image-16051"/></figure></div>



<p>In contrast, <em>SharedSQL</em> databases were not really aligned. When we set up the Gravelines datacentre in 2016, we took advantage of Docker&#8217;s flexibility to review our database technology, and therefore adapt our former solution. </p>



<p><strong>Small comparative schema of a </strong><em><strong>SharedSQL </strong></em><strong>in Paris and Gravelines:</strong></p>



<p><em>SharedSQL</em> at Paris P19 and Gravelines:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="403" src="https://www.ovh.com/blog/wp-content/uploads/2019/09/F8089762-7020-4EF2-A4F9-5FFAF4AFF1FE-1024x403.jpeg" alt="SharedSQL" class="wp-image-16054"/></figure>



<p>On the one hand (in Paris), we have servers with a single database management system (MySQL) hosting 2500 databases on one machine.</p>



<p>On the other (in Gravelines), we have added a level: Docker containers have the same database system (MySQL) hosting up to 250 databases. On each machine, we host 10 containers.</p>



<p>This new system greatly simplifies maintenance, reducing the impact on database performance as it occurs.</p>



<p>Here is what it provides:</p>



<table class="wp-block-table"><tbody><tr><td>&nbsp;</td><td>Paris</td><td>Gravelines</td><td>Explanation</td></tr><tr><td>Number of clients impacted by an incident on an instance of MySQL</td><td>2500</td><td>250</td><td>When MySQL is on a container, the impact is lower than when it is directly on the server. </td></tr><tr><td>Total number of customers per server</td><td><img loading="lazy" decoding="async" width="32" height="32" src="https://www.ovh.com/blog/wp-content/uploads/2019/09/equal-sign-32.png" alt="" class="wp-image-16045"></td><td><img loading="lazy" decoding="async" width="32" height="32" src="https://www.ovh.com/blog/wp-content/uploads/2019/09/equal-sign-32.png" alt="" class="wp-image-16045"></td><td>Equivalent. In Paris, the 2500 databases operate on the same MySQL process. In Gravelines, they share 10 processes, each in their container. But the number per physical machine remains the same. </td></tr><tr><td>Easy server migration in the event of a hardware failure</td><td><img loading="lazy" decoding="async" width="32" height="32" src="https://www.ovh.com/blog/wp-content/uploads/2019/09/x-mark-3-32.png" alt="" class="wp-image-16044"></td><td><img loading="lazy" decoding="async" width="32" height="32" src="https://www.ovh.com/blog/wp-content/uploads/2019/09/check-mark-8-32.png" alt="" class="wp-image-16043"></td><td>Docker containers provide us with ease of migration and disaster recovery between two machines. Thus, we can easily and quickly move a container from one server to another without data loss.</td></tr><tr><td>Startup Speed</td><td><img loading="lazy" decoding="async" width="32" height="32" src="https://www.ovh.com/blog/wp-content/uploads/2019/09/check-mark-8-32.png" alt="" class="wp-image-16043"></td><td><img loading="lazy" decoding="async" width="32" height="32" src="https://www.ovh.com/blog/wp-content/uploads/2019/09/check-mark-8-32.png" alt="" class="wp-image-16043"></td><td>Starting a container is about the same as starting a process.</td></tr><tr><td>Version upgrade</td><td><img loading="lazy" decoding="async" width="32" height="32" src="https://www.ovh.com/blog/wp-content/uploads/2019/09/x-mark-3-32.png" alt="" class="wp-image-16044"></td><td><img loading="lazy" decoding="async" width="32" height="32" src="https://www.ovh.com/blog/wp-content/uploads/2019/09/check-mark-8-32.png" alt="" class="wp-image-16043"></td><td>The transition from one version to another is simplified with the Docker image system. We just need to change the image of the container to the desired version, and restart the container.</td></tr><tr><td>Rollback in case of problem during an update</td><td><img loading="lazy" decoding="async" width="32" height="32" src="https://www.ovh.com/blog/wp-content/uploads/2019/09/x-mark-3-32.png" alt="" class="wp-image-16044"></td><td><img loading="lazy" decoding="async" width="32" height="32" src="https://www.ovh.com/blog/wp-content/uploads/2019/09/check-mark-8-32.png" alt="" class="wp-image-16043"></td><td>We just have to restart the container on its previous image.</td></tr><tr><td>Robust and long-lasting implementation</td><td><img loading="lazy" decoding="async" width="32" height="32" src="https://www.ovh.com/blog/wp-content/uploads/2019/09/check-mark-8-32.png" alt="" class="wp-image-16043"></td><td><img loading="lazy" decoding="async" width="32" height="32" src="https://www.ovh.com/blog/wp-content/uploads/2019/09/check-mark-8-32.png" alt="" class="wp-image-16043"></td><td>Running databases under Docker is not simple (see <a href="https://www.ovh.com/fr/blog/docker-administrer-bases-de-donnees-une-idee-folle/" data-wpel-link="exclude">https://www.ovh.com/blog/docker-administrating-databases-a- crazy-idea /</a>), but we have a few years&#8217; experience. </td></tr></tbody></table>



<p>Of course, running a database in a Docker container seemed like a crazy idea. But after many years of production, this technology simplifies everyday life in the Gravelines datacentre. </p>



<p>So when we had to choose between replicating the Paris infrastructure, or changing infrastructure during migration, we chose to change technology.</p>



<p>And all of a sudden we have another migration challenge. </p>



<p>In our next article, we will detail how to move a huge database in a few minutes, while changing a large part of the software and the infrastructure behind it!<br></p>



<p><br></p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fweb-hosting-how-do-our-databases-work%2F&amp;action_name=Web%20hosting%20%26%238211%3B%20How%20do%20our%20databases%20work%3F&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
