<?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>Mael Le Gal, Author at OVHcloud Blog</title>
	<atom:link href="https://blog.ovhcloud.com/author/mael-le-gal/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ovhcloud.com/author/mael-le-gal/</link>
	<description>Innovation for Freedom</description>
	<lastBuildDate>Wed, 01 Jul 2020 20:09:55 +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>Mael Le Gal, Author at OVHcloud Blog</title>
	<link>https://blog.ovhcloud.com/author/mael-le-gal/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>MyBinder and OVH partnership</title>
		<link>https://blog.ovhcloud.com/mybinder-and-ovh-partnership/</link>
		
		<dc:creator><![CDATA[Mael Le Gal]]></dc:creator>
		<pubDate>Mon, 24 Jun 2019 12:16:55 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Jupyter]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OVHcloud Managed Kubernetes]]></category>
		<category><![CDATA[Public Cloud]]></category>
		<guid isPermaLink="false">https://blog.ovh.com/fr/blog/?p=15606</guid>

					<description><![CDATA[Last month, OVH and Binder team partnered together in order to support the growth of the BinderHub ecosystem around the world. With approximately 100,000 weekly users of the mybinder.org public deployment and 3,000 unique git repositories hosting Binder badges, the need for more resources and computing time was felt. Today, we are thrilled to announce [&#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%2Fmybinder-and-ovh-partnership%2F&amp;action_name=MyBinder%20and%20OVH%20partnership&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 class="part">Last month, <strong>OVH</strong> and <strong>Binder</strong> team partnered together in order to support the growth of the <strong>BinderHub</strong> ecosystem around the world.</p>



<div class="wp-block-image"><figure class="aligncenter"><img fetchpriority="high" decoding="async" width="999" height="493" src="/blog/wp-content/uploads/2019/06/IMG_0301.png" alt="OVH loves Binder and the Jupyter project" class="wp-image-15666" srcset="https://blog.ovhcloud.com/wp-content/uploads/2019/06/IMG_0301.png 999w, https://blog.ovhcloud.com/wp-content/uploads/2019/06/IMG_0301-300x148.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2019/06/IMG_0301-768x379.png 768w" sizes="(max-width: 999px) 100vw, 999px" /></figure></div>



<p class="part">With approximately 100,000 weekly users of the <a href="http://mybinder.org/" target="_blank" rel="noopener noreferrer nofollow external" data-wpel-link="external">mybinder.org</a> public deployment and 3,000 unique git repositories hosting Binder badges, the need for more resources and computing time was felt.</p>



<p class="part">Today, we are thrilled to announce that <strong>OVH</strong> is now part of the world-wide federation of BinderHubs powering <a rel="noopener noreferrer nofollow external" href="http://mybinder.org/" target="_blank" data-wpel-link="external">mybinder.org</a>. All traffic to <a rel="noopener noreferrer nofollow external" href="http://mybinder.org/" target="_blank" data-wpel-link="external">mybinder.org</a> is now split between two BinderHubs &#8211; one run by the <strong>Binder team</strong>, and another run on <strong>OVH</strong> infrastructure.</p>



<p class="part">So for those who don’t already know <a href="http://mybinder.org/" target="_blank" rel="noopener noreferrer nofollow external" data-wpel-link="external">mybinder.org</a>, here&#8217;s a summary.</p>



<h2 class="part wp-block-heading" id="What-is-Jupyter">What is Jupyter?</h2>



<p class="part"><a href="https://jupyter.org/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Jupyter</a> is an awesome open-source project that allows users to create, visualise and edit interactive notebooks. It supports a lot of popular programming languages such as <strong>Python</strong>, <strong>R</strong> and <strong>Scala</strong> as well as some presentation standards such as markdown, code snippet, charts visualisation…</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" width="300" height="223" src="/blog/wp-content/uploads/2019/06/jupyer_notebook-300x223.png" alt="" class="wp-image-15609" srcset="https://blog.ovhcloud.com/wp-content/uploads/2019/06/jupyer_notebook-300x223.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2019/06/jupyer_notebook-768x571.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2019/06/jupyer_notebook-1024x762.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2019/06/jupyer_notebook-1200x893.png 1200w, https://blog.ovhcloud.com/wp-content/uploads/2019/06/jupyer_notebook.png 1214w" sizes="(max-width: 300px) 100vw, 300px" /></figure></div>



<p class="part"><em>Example of a local Jupyter Notebook reading a notebook inside the OVH GitHub repository <a href="https://github.com/ovh/prescience-client" target="_blank" rel="noopener noreferrer nofollow external" data-wpel-link="external">prescience client</a>.</em></p>



<p>The main use case is the ability to share your work with tons of people,&nbsp; who can try, use and edit the work directly from their web browser.</p>



<p>Many researchers and professors are now able to work remotely on the same projects, without any infrastructure or environment issues. It&#8217;s a major improvement for communities.</p>



<p>Here is for example a notebook (<a href="https://github.com/rhiever/Data-Analysis-and-Machine-Learning-Projects/blob/master/example-data-science-notebook/Example%20Machine%20Learning%20Notebook.ipynb" target="_blank" rel="noopener noreferrer nofollow external" data-wpel-link="external">Github project</a>) allowing you to use Machine Learning,&nbsp; from dataset ingestion to classification:</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" width="1157" height="777" src="/blog/wp-content/uploads/2019/06/jupyer.machine.learning.png" alt="jupyter machine learning notebook example" class="wp-image-15642" srcset="https://blog.ovhcloud.com/wp-content/uploads/2019/06/jupyer.machine.learning.png 1157w, https://blog.ovhcloud.com/wp-content/uploads/2019/06/jupyer.machine.learning-300x201.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2019/06/jupyer.machine.learning-768x516.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2019/06/jupyer.machine.learning-1024x688.png 1024w" sizes="(max-width: 1157px) 100vw, 1157px" /></figure></div>



<p><em>Example of a Machine Learning Jupyter Notebook<br></em></p>



<h2 class="part wp-block-heading" id="What-is-JupyterHub">What is JupyterHub?</h2>



<p class="part"><a href="https://jupyter.org/hub" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">JupyterHub</a> is an even more awesome open-source project bringing the multi-user feature for <strong>Jupyter</strong> notebooks. With several pluggable authentication mechanisms (ex: PAM, OAuth), it allows <strong>Jupyter</strong> notebooks to be spawned on the fly from a centralised infrastructure. Users can then easily share their notebooks and access rights with each other. That makes <strong>JupyterHub</strong> perfect for companies, classrooms and research labs.</p>



<h2 class="part wp-block-heading" id="What-is-BinderHub">What is BinderHub?</h2>



<p class="part">Finally, <a href="https://binderhub.readthedocs.io/en/latest/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">BinderHub</a> is the cherry on the cake: it allows users to turn any Git repository (such as GitHub) into a collection of interactive <strong>Jupyter</strong> notebooks with only one click.</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="300" height="276" src="/blog/wp-content/uploads/2019/06/binder-300x276.png" alt="" class="wp-image-15611" srcset="https://blog.ovhcloud.com/wp-content/uploads/2019/06/binder-300x276.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2019/06/binder-768x707.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2019/06/binder.png 962w" sizes="auto, (max-width: 300px) 100vw, 300px" /></figure></div>



<p><em>Landing page of the binder project</em></p>



<p class="part">The <strong>Binder</strong> instance deployed by OVH can be accessed <a rel="noopener noreferrer nofollow external" href="https://ovh.mybinder.org/" target="_blank" data-wpel-link="external">here</a>.</p>



<ul class="part wp-block-list"><li>Just choose a publicly accessible git repository (better if it already contains some <strong>Jupyter</strong> notebooks).</li><li>Copy the URL of a chosen repository into the correct binder field.</li><li>Click the launch button.</li><li>If it is the first time that binder sees the repository you provide, you will see compilation logs appear. Your repository is being analysed and prepared for the start of a related <strong>Jupyter</strong> notebook.</li><li>Once the compilation is complete you will be automatically redirected to your dedicated instance.</li><li>You can then start interacting and hacking inside the notebook.</li><li>On the initial binder page you will see a link to share your repository with others.</li></ul>



<h2 class="part wp-block-heading" id="How-it-works">How does it work?</h2>



<h3 class="part wp-block-heading" id="Tools-used-by-BinderHub">Tools used by BinderHub</h3>



<p class="part">BinderHub connects several services together to provide on-the-fly creation and registry of Docker images. It uses the following tools:</p>



<ul class="part wp-block-list"><li class="" data-startline="49" data-endline="49">A cloud provider such as OVH.</li><li class="" data-startline="50" data-endline="50">Kubernetes to manage resources on the cloud</li><li class="" data-startline="51" data-endline="51">Helm to configure and control Kubernetes.</li><li class="" data-startline="52" data-endline="52">Docker to use containers that standardise computing environments.</li><li class="" data-startline="53" data-endline="53">A BinderHub UI that users can access to specify Git repos they want built.</li><li class="" data-startline="54" data-endline="54">BinderHub to generate Docker images using the URL of a Git repository.</li><li class="" data-startline="55" data-endline="55">A Docker registry that hosts container images.</li><li class="" data-startline="56" data-endline="57">JupyterHub to deploy temporary containers for users.</li></ul>



<h3 class="part wp-block-heading" id="What-happens-when-a-user-clicks-a-Binder-link">What happens when a user clicks a Binder link?</h3>



<p class="part">After a user clicks a Binder link, the following chain of events happens:</p>



<ol class="part wp-block-list"><li class="" data-startline="62" data-endline="62">BinderHub resolves the link to the repository.</li><li class="" data-startline="63" data-endline="63">BinderHub determines whether a Docker image already exists for the repository at the latest reference (git commit hash, branch, or tag).</li><li class="" data-startline="64" data-endline="67">If the image doesn’t exist, BinderHub creates a build pod that uses repo2docker to:
<ul>
<li class="" data-startline="65" data-endline="65">Fetch the repository associated with the link.</li>
<li class="" data-startline="66" data-endline="66">Build a Docker container image containing the environment specified in configuration files in the repository.</li>
<li class="" data-startline="67" data-endline="67">Push that image to a Docker registry, and send the registry information to the BinderHub for future reference.</li>
</ul>
</li><li class="" data-startline="68" data-endline="68">BinderHub sends the Docker image registry to JupyterHub.</li><li class="" data-startline="69" data-endline="69">JupyterHub creates a Kubernetes pod for the user that serves the built Docker image for the repository.</li><li class="" data-startline="70" data-endline="71">JupyterHub monitors the user’s pod for activity, and destroys it after a short period of inactivity.</li></ol>



<h3 class="wp-block-heading">A diagram of the BinderHub architecture</h3>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="1024" height="818" src="https://www.ovh.com/blog/wp-content/uploads/2019/06/IMG_0300-1024x818.png" alt="MyBinder Architecture" class="wp-image-15663" srcset="https://blog.ovhcloud.com/wp-content/uploads/2019/06/IMG_0300-1024x818.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2019/06/IMG_0300-300x240.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2019/06/IMG_0300-768x614.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2019/06/IMG_0300-1200x959.png 1200w, https://blog.ovhcloud.com/wp-content/uploads/2019/06/IMG_0300.png 1468w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<h2 class="part wp-block-heading">How we deployed it?</h2>



<h3 class="wp-block-heading">Powered by OVH Kubernetes</h3>



<p class="part">One great thing about the <strong>Binder</strong> project is that it is completely cloud agnostic, you just need a <strong>Kubernetes</strong> cluster to deploy on.</p>



<p class="part">Kubernetes is one of the best choices to make when it comes to scalability on a micro-services architecture stack. The managed Kubernetes solution is powered by OVH’s Public Cloud instances. With OVH Load Balancers and integrated additional disks, you can host all types of workloads, with total reversibility.</p>



<p class="part">To this end, we used 2 services in the OVH Public Cloud:</p>



<ul class="part wp-block-list"><li class="" data-startline="85" data-endline="85">A <a href="https://www.ovh.co.uk/public-cloud/kubernetes/" target="_blank" rel="noopener noreferrer nofollow external" data-wpel-link="external">Kubernetes Cluster</a> today consuming 6 nodes of <code>C2-15</code> VM instances (it will grow in the future)</li><li class="" data-startline="86" data-endline="87">A <a href="https://labs.ovh.com/private-registry" target="_blank" rel="noopener noreferrer" data-wpel-link="exclude">Docker Registry</a></li></ul>



<p class="part">We also ordered a specific domain name so that our binder stack could be publicly accessible from anywhere.</p>



<h3 class="part wp-block-heading" id="Installation-of-HELM-on-our-new-cluster">Installation of HELM on our new cluster</h3>



<p class="part">Once the automatic installation of our Kubernetes cluster was complete we downloaded the administration YAML file allowing us to manage our cluster and to launch <code>kubectl</code> commands on it.</p>



<p class="part"><code>kubectl</code> is the official and most popular tool used to administrate Kubernetes cluster. More information about how to install it can be found <a rel="noopener noreferrer nofollow external" href="https://kubernetes.io/docs/tasks/tools/install-kubectl/" target="_blank" data-wpel-link="external">here</a>.</p>



<p class="part">The automatic deployment of the full Binder stack is already prepared in the form of Helm package. Helm is a package manager for kubernetes and it needs a client part (<code>helm</code>) and a server part (<code>tiller</code>) to work.</p>



<p class="part">All information about installing <code>helm</code> and <code>tille</code> can be found <a href="https://helm.sh/docs/using_helm/#installing-helm" target="_blank" rel="noopener noreferrer nofollow external" data-wpel-link="external">here</a>.</p>



<h3 class="part wp-block-heading" id="Configuration-of-our-HELM-deployment">Configuration of our Helm deployment</h3>



<p class="part">With <code>tiller</code> installed on our cluster, everything was ready to automate the deployment of binder in our OVH infrastructure.</p>



<p class="part">The configuration of the <code>helm</code> deployment is pretty straightforward and all the steps have been described by the Binder team <a rel="noopener noreferrer nofollow external" href="https://binderhub.readthedocs.io/en/latest/setup-binderhub.html" target="_blank" data-wpel-link="external">here</a>.</p>



<h3 class="part wp-block-heading" id="Integration-into-the-binderhub-CDCI-process">Integration into the binderhub CD/CI process</h3>



<p class="part">The<code> binder team </code>already had a travis workflow existing for the automation of their test and deployment processes. Everything is transparent and they expose all their configurations (except secrets) on <a rel="noopener noreferrer nofollow external" href="https://github.com/jupyterhub/mybinder.org-deploy" target="_blank" data-wpel-link="external">their</a> GitHub project. We just had to integrate with their current workflow and push our specific configuration on their repository.</p>



<p class="part">We then waited for their next launch of their Travis workflow and it worked.</p>



<p class="part">From this moment onward, the ovh stack for binder was running and accessible by anyone from everywhere at this adress: <a href="https://ovh.mybinder.org/" target="_blank" rel="noopener noreferrer nofollow external" data-wpel-link="external">https://ovh.mybinder.org/</a>.</p>



<h2 class="part wp-block-heading" id="What-comes-next">What comes next?</h2>



<p class="part"><strong>OVH</strong> will continue engaging with the data open-source community, and keep building a strong relationship with the <strong>Jupyter</strong> foundation and more generally the python community.</p>



<p class="part">This first collaborative experience with such a data-driven open-source organisation helped us to establish the best team organisation and management to ensure that both <strong>OVH</strong> and the community achieve their goals in the best way possible</p>



<p class="part">Working with open source is very different from the industry as it requires a different mindset: very human-centric, where everyone has different objectives, priorities, timeline and points of view that should all be considered.</p>



<h2 class="part wp-block-heading" id="Special-Thanks">Special Thanks</h2>



<p>We are grateful to the Binder, Jupyter, and QuantStack team for their help, the OVH K8s team for the OVH Managed Kubernetes and OVH Managed Private Registry, and the OVH MLS team for the support. You rock, people!</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%2Fmybinder-and-ovh-partnership%2F&amp;action_name=MyBinder%20and%20OVH%20partnership&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>
