<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Jupyter Blog - cloud computing</title><link href="https://jasongrout.github.io/medium-archive/pelican/" rel="alternate"/><link href="https://jasongrout.github.io/medium-archive/pelican/feeds/tag-cloud-computing.atom.xml" rel="self"/><id>https://jasongrout.github.io/medium-archive/pelican/</id><updated>2025-03-03T14:05:00+00:00</updated><subtitle>The Project Jupyter blog: news, releases, and community stories, archived from blog.jupyter.org.</subtitle><entry><title>Simplifying and speeding up Binder builds with BuildKit</title><link href="https://jasongrout.github.io/medium-archive/pelican/posts/2025/simplifying-and-speeding-up-binder-builds-with-buildkit/" rel="alternate"/><published>2025-03-03T14:05:00+00:00</published><updated>2025-03-03T14:05:00+00:00</updated><author><name>Chris Holdgraf</name></author><id>tag:jasongrout.github.io,2025-03-03:/medium-archive/pelican/posts/2025/simplifying-and-speeding-up-binder-builds-with-buildkit/</id><summary type="html">&lt;p&gt;The Binder Project allows users to build reproducible, sharable environments for interactive computing. To accomplish this, Binder uses a…&lt;/p&gt;
</summary><content type="html">&lt;p&gt;The &lt;a href="http://mybinder.org"&gt;Binder Project&lt;/a&gt; allows users to build reproducible, sharable environments for interactive computing. To accomplish this, Binder uses a tool called &lt;a href="https://repo2docker.readthedocs.io/"&gt;repo2docker&lt;/a&gt; to generate an executable Docker image using the &lt;a href="https://repo2docker.readthedocs.io/en/latest/specification.html"&gt;Reproducible Execution Environment Specification&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2025/simplifying-and-speeding-up-binder-builds-with-buildkit/images/001-1_NOEeFGGHdpGZMHSq5ykl9A.webp" alt="" loading="lazy" data-body-image=""&gt;&lt;/p&gt;
&lt;p&gt;The first time a repository is launched on Binder, repo2docker must build the reproducible environment for it. This process can take a long time because of all the dependencies that need to be installed and turned into the image. As a result, Binder launches can feel slow and clunky, which is a poor UX for workflows that are designed around quick interactive sessions.&lt;/p&gt;
&lt;p&gt;repo2docker was built several years ago, and followed patterns that were commonplace at the time. However, in the past few years the Docker community has made significant advances in optimizing the image building process. One-such improvement is the creation of &lt;a href="https://docs.docker.com/build/buildkit/"&gt;BuildKit&lt;/a&gt;, a replacement for Docker’s historical build system that is much more sophisticated. However, repo2docker hasn’t leveraged these improvements because it was still using the original Docker Build system.&lt;/p&gt;
&lt;p&gt;So, we’ve decided to spend a few cycles modernizing repo2docker’s image building logic by using the more modern &lt;a href="https://docs.docker.com/build/buildkit/"&gt;BuildKit API&lt;/a&gt; (via ‘docker buildx build’). This allows for optimizations like build parallelization, better build caching, and supporting some &lt;code&gt;Dockerfile&lt;/code&gt; features that Binder didn’t support earlier (particularly, &lt;code&gt;COPY --chown&lt;/code&gt;). It also lays a foundation for significantly simplifying the repo2docker build infrastructure and leveraging more of BuildKit’s parallelization functionality. For example, we’d like to &lt;a href="https://docs.docker.com/build/builders/drivers/kubernetes/"&gt;leverage BuildKit’s Kubernetes driver&lt;/a&gt; which distributes builds much more efficiently and in parallel.&lt;/p&gt;
&lt;p&gt;Authors of Binder repositories won’t need to take any action¹, and they’ll simply notice that mybinder.org (and any other community-run BinderHub instance) will be a bit snappier at building images.&lt;/p&gt;
&lt;p&gt;If you’d like to learn more about the changes that enabled this, &lt;a href="https://github.com/jupyterhub/mybinder.org-deploy/pull/3225"&gt;check out this mybinder.org pull request&lt;/a&gt; which has links to the repo2docker pull requests that added this functionality. We’re excited keep improving Binder, and are hopeful that this makes the experience of using mybinder.org and community Binders a little bit better.&lt;/p&gt;
&lt;h2 id="authors-and-acknowledgements"&gt;Authors and acknowledgements&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://github.com/yuvipanda"&gt;Yuvi Panda&lt;/a&gt; is a co-founder and the Technical Lead at &lt;a href="http://2i2c.org"&gt;2i2c&lt;/a&gt;. He is passionate about building participatory open infrastructure for scientific &amp;amp; educational use cases. He is a Project Jupyter team member primarily focused on infrastructure related projects (JupyterHub, Binder, etc). He also wrote most of the code for this &lt;code&gt;docker buildx&lt;/code&gt; transition, and shepherded it through to deployment on mybinder.org as well. He is ex-Wikimedia and ex-GNOME. Let’s eliminate accidental complexities wherever we find them.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://chrisholdgraf.com"&gt;Chris Holdgraf&lt;/a&gt; is a co-founder and the Executive Director of &lt;a href="http://2i2c.org"&gt;2i2c&lt;/a&gt;. He is on the Executive Council of Project Jupyter, and co-leads the &lt;a href="https://jupyterhub-team-compass.readthedocs.io/en/latest/team.html#jupyterhub-team"&gt;JupyterHub and Binder team&lt;/a&gt; as well as the &lt;a href="https://compass.jupyterbook.org"&gt;Jupyter Book team&lt;/a&gt;). He was previously a post-doctoral researcher in the Department of Statistics at &lt;a href="https://www.berkeley.edu/"&gt;UC Berkeley&lt;/a&gt;, and a Community Architect with the &lt;a href="https://data.berkeley.edu/"&gt;Division of Data Science&lt;/a&gt; at Berkeley. He’s interested in using open infrastructure to support interactive computing workflows in research and education.&lt;/p&gt;
&lt;p&gt;Many thanks to &lt;a href="https://github.com/minrk"&gt;@minrk&lt;/a&gt;, &lt;a href="https://github.com/manics"&gt;@manics&lt;/a&gt;, and &lt;a href="https://github.com/consideRatio"&gt;@consideRatio&lt;/a&gt; for their help reviewing and shaping this work.&lt;/p&gt;
&lt;h2 id="footnotes"&gt;Footnotes&lt;/h2&gt;
&lt;p&gt;¹ Unless they were relying on undocumented implementation details of the old builder — in particular, the presence of a &lt;code&gt;/.dockerenv&lt;/code&gt; file to detect if you are running in repo2docker &lt;a href="https://github.com/scikit-learn/scikit-learn/pull/30835"&gt;scikit-learn/scikit-learn#30835&lt;/a&gt; has an example.&lt;/p&gt;
</content><category term="Binder"/><category term="cloud computing"/><category term="JupyterHub"/><category term="reproducibility"/></entry><entry><title>Desktop GIS software in the cloud with JupyterHub: A QGreenland workshop success story</title><link href="https://jasongrout.github.io/medium-archive/pelican/posts/2023/desktop-gis-software-in-the-cloud-with-jupyterhub/" rel="alternate"/><published>2023-08-02T16:23:00+00:00</published><updated>2023-08-02T16:51:00+00:00</updated><author><name>Matt Fisher</name></author><id>tag:jasongrout.github.io,2023-08-02:/medium-archive/pelican/posts/2023/desktop-gis-software-in-the-cloud-with-jupyterhub/</id><summary type="html">&lt;p&gt;A QGreenland workshop success story&lt;/p&gt;
</summary><content type="html">&lt;p&gt;👋 We are Trey Stafford and Matt Fisher, co-authors of the &lt;a href="https://github.com/nsidc/qgreenland"&gt;QGreenland&lt;/a&gt; data package’s source code. This year, we had the pleasure of running a hands-on geospatial data and open science &lt;a href="http://qgreenland-workshop-2023-researcher.github.io/"&gt;QGreenland Researcher Workshop&lt;/a&gt;. It was important for attendees to participate in the workshop in a hands-on way while minimizing the negative impacts of installing software, requiring expensive personal computers, and troubleshooting unique computer configurations. We felt a &lt;a href="https://jupyter.org/hub"&gt;JupyterHub&lt;/a&gt; was a good fit for our workshop for this reason, if it could accommodate our need for running QGIS — a desktop application.&lt;/p&gt;
&lt;p&gt;In this blog post, we will introduce QGreenland, describe our experience using JupyterHub in the cloud for our workshop’s computing environment, and discuss challenges we overcame to enable our attendees to use QGIS in a cloud graphical desktop environment. Finally, we will highlight some workshop outcomes and discuss opportunities for enhancement based on new developments in the Jupyter ecosystem.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In our workshop, 25–30 international learners (including from Germany, India, France, Canada, Poland, and the United States) used &lt;em&gt;QGIS&lt;/em&gt; in a &lt;em&gt;JupyterHub&lt;/em&gt;’s browser-based Linux desktop environment to collaboratively test, explore, visualize, and process Earth science data simultaneously with the same user experience they expect from using &lt;em&gt;QGIS&lt;/em&gt; on their personal computers! Better yet, getting started was as simple as logging in.&lt;/strong&gt; Our workshop was a success story not just in education, but also in open source and collaborative development, and we want to share what we learned.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="A map depicting Greenland is displayed within QGIS software running in a cloud-based desktop environment. A visualization of September 2012 Arctic sea ice concentration is overlaid." src="https://jasongrout.github.io/medium-archive/pelican/posts/2023/desktop-gis-software-in-the-cloud-with-jupyterhub/images/001-1_ZG76hcKdS3-4PppQ6lSnuQ.jpg" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Note the browser tabs at the top of this screenshot; this is a full desktop-based GIS environment running QGreenland in the cloud!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The JupyterHub used by the QGreenland 2023 Researcher Workshop was generously provided by the &lt;a href="https://cryointhecloud.com/"&gt;NASA CryoCloud&lt;/a&gt; team, whose mission is to help researchers transition to cloud-based collaboration.&lt;/p&gt;
&lt;h2 id="about-qgreenland"&gt;About QGreenland&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://qgreenland.org/"&gt;QGreenland&lt;/a&gt; is an open-source Greenland-focused geospatial data package for &lt;a href="https://qgis.org/en/site/"&gt;QGIS&lt;/a&gt;, a community-owned graphical Geographic Information System (GIS) platform. Researchers and members of the public leverage QGreenland’s ready-to-use interdisciplinary datasets to do field planning, teach about glaciers, and much more.&lt;/p&gt;
&lt;p&gt;QGreenland’s MIT-licensed &lt;a href="https://github.com/nsidc/qgreenland/"&gt;source code&lt;/a&gt; uses community-maintained open software like &lt;a href="https://gdal.org/index.html"&gt;GDAL&lt;/a&gt; and &lt;a href="https://qgis.org/pyqgis/latest"&gt;PyQGIS&lt;/a&gt; to automate data normalization and populate the QGIS project with important information like data provenance and the order of layers in the QGIS Layers Panel. Check out &lt;a href="https://qgreenland.readthedocs.io"&gt;our documentation&lt;/a&gt; to learn more! QGreenland also has a &lt;a href="https://www.youtube.com/@qgreenland/videos"&gt;YouTube channel&lt;/a&gt; with tutorials produced by &lt;a href="https://cires.colorado.edu/outreach/programs/qgreenland"&gt;CIRES Education and Outreach&lt;/a&gt;.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="A map depicting Greenland is displayed within QGIS software running in a cloud-based desktop environment. Visualizations of bathymetric depth, Greenland ice sheet thickness, and Arctic sea routes are overlaid." src="https://jasongrout.github.io/medium-archive/pelican/posts/2023/desktop-gis-software-in-the-cloud-with-jupyterhub/images/002-0__t2MDU659mlYEvxD.jpg" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;&lt;em&gt;Once QGIS is installed, opening QGreenland is as easy as double-clicking the included “.qgs” file. Here, a representative view of QGreenland v3 alpha in QGIS is displayed with newly updated layers: Arctic sea routes (National Geospatial Intelligence Agency), bathymetric depth (General Bathymetric Chart of the Oceans (GEBCO)), and ice thickness (IceBridge BedMachine Greenland v5) layers.&lt;/em&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Based on user research, QGreenland has enabled:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the public to more easily access data gathered by researchers visiting Greenland: &lt;em&gt;“In Greenland, people are often asking, ‘how can we find the data the foreign scientists bring back from Greenland?’ Now we can directly utilize much of it.”&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;researchers to plan field work: &lt;em&gt;“Being able to use QGreenland at our field station was critical to our research process!”&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;educators to develop interactive lessons about Greenland and climate change: &lt;em&gt;“…using QGreenland for presentations because it is presentation quality already.”&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="qgreenlands-2023-researcher-workshop"&gt;QGreenland’s 2023 researcher workshop&lt;/h2&gt;
&lt;p&gt;One of the QGreenland team’s most important forms of direct user interaction and support is facilitating workshops. Most recently, we hosted a 3-day (total of 9 hours) virtual workshop for researchers focused on working with geospatial data in an open science framework. All of the &lt;a href="https://qgreenland-workshop-2023-researcher.github.io/content/materials.html"&gt;materials&lt;/a&gt; covered in the workshop were built &lt;a href="https://qgreenland-workshop-2023-researcher.github.io/content/built-with-open-source.html"&gt;using open-source tools&lt;/a&gt; and are MIT-licensed and &lt;a href="https://github.com/qgreenland-workshop-2023-researcher/qgreenland-workshop-2023-researcher.github.io"&gt;published on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="a-personal-computer-in-the-cloud"&gt;A “personal computer” in the cloud&lt;/h3&gt;
&lt;p&gt;We decided early on that we wanted to use JupyterHub to solve the diverse problems that come with “bring your own device” workshops. We experimented with administering our own &lt;a href="http://z2jh.jupyter.org"&gt;JupyterHub on Kubernetes&lt;/a&gt;, but the setup overhead was too high for our short workshop. CryoCloud’s JupyterHub enabled us to avoid this overhead and focus on serving our participants. Because the software that comprises CryoCloud is open-source and developed in collaboration with the communities CryoCloud serves, we could directly contribute to curating a computing environment ideal for our participants.&lt;/p&gt;
&lt;p&gt;JupyterHub is known for providing access to Jupyter Notebooks via JupyterLab, but it turns out it can also be used to host pretty much any interactive web based application! The &lt;a href="https://github.com/jupyterhub/jupyter-server-proxy/"&gt;jupyter-server-proxy&lt;/a&gt; project enables this, and there are additional packages that make running specific applications easier. &lt;a href="https://github.com/jupyterhub/jupyter-rsession-proxy"&gt;jupyter-rsession-proxy&lt;/a&gt; makes it easy to run &lt;a href="https://posit.co/download/rstudio-server/"&gt;RStudio&lt;/a&gt; inside JupyterHub, &lt;a href="https://github.com/betatim/vscode-binder/"&gt;jupyter-vscode-proxy&lt;/a&gt; allows running code-server (fully open source self-hosted version of Visual Studio Code) inside a JupyterHub, etc. Pertinent to our use case is &lt;a href="https://github.com/jupyterhub/jupyter-remote-desktop-proxy"&gt;jupyter-remote-desktop-proxy&lt;/a&gt;, which lets you run a complete Linux desktop environment inside your JupyterHub! This was critical for our workshop, as it allowed us to use QGIS — purely desktop software, not adapted for the web — from inside a web browser. Workshop participants did not need to install anything. This enabled participants to focus on the &lt;em&gt;content&lt;/em&gt; of our workshop rather than the logistics of setting up and debugging tools on their varied machines.&lt;/p&gt;
&lt;p&gt;The CryoCloud JupyterHub enabled each of our workshop participants to provision their own compute environment (JupyterLab + Linux Desktop) with all of our workshop’s dependencies pre-installed. It also set everyone on equitable footing — someone accessing the workshop on a 10 year old laptop would get the same computing resources as someone on a brand new MacBook Pro.&lt;/p&gt;
&lt;h3 id="challenges-scaling-qgreenland"&gt;Challenges scaling QGreenland&lt;/h3&gt;
&lt;p&gt;The CryoCloud JupyterHub already had &lt;em&gt;jupyter-remote-desktop-proxy&lt;/em&gt; and &lt;em&gt;QGIS&lt;/em&gt; installed, so we could validate this approach to our workshop quickly. However, to use &lt;em&gt;QGreenland&lt;/em&gt; at this scale, we needed to solve a couple of usability problems. The first issue was a user experience problem: the operating system did not have appropriate file type associations for &lt;em&gt;QGIS&lt;/em&gt;, so files like the &lt;em&gt;QGreenland&lt;/em&gt; project file would not open in &lt;em&gt;QGIS&lt;/em&gt; when double-clicked in the desktop file browser. We quickly discovered a solution and integrated it with a &lt;a href="https://github.com/CryoInTheCloud/hub-image/pull/59"&gt;simple pull request&lt;/a&gt; to the Docker image we were using.&lt;/p&gt;
&lt;p&gt;The second problem was a performance problem: QGIS would take several minutes to open QGreenland from the hub’s shared storage drive. After some investigation, it turned out this was due to us loading multiple GB of data from an NFS share! While a long term solution might involve getting QGIS to load data directly from cloud object storage (like S3), we instead decided to go a different route — provision each user a small, fast and temporary &lt;a href="https://aws.amazon.com/ebs/"&gt;Elastic Block Store&lt;/a&gt; disk. At the start of the workshop, we provided all users a small script that would copy the dataset from NFS to this faster disk once, and this drastically reduced load times from about 5 minutes to under 3 seconds! You can follow our debugging process &lt;a href="https://github.com/CryoInTheCloud/hub-image/issues/60"&gt;on this issue&lt;/a&gt;, and find the JupyterHub config used to provision these disks &lt;a href="https://github.com/2i2c-org/infrastructure/blob/5078e5b6e2115930468f910f3095a9ffd1261eb3/helm-charts/basehub/values.yaml#L616"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;By overcoming these challenges, we created a smooth, intuitive, and performant computing experience for all of our participants, most of whom had never been exposed to this sort of collaborative computing environment.&lt;/p&gt;
&lt;h3 id="outcomes"&gt;Outcomes&lt;/h3&gt;
&lt;p&gt;The workshop participants engaged in small group work to complete various exercises, group discussions, and data scenarios. Each group produced Jupyter Notebooks and GitHub Discussions posts as deliverables. We created an &lt;a href="https://qgreenland-workshop-2023-researcher.github.io/outcomes/"&gt;outcomes&lt;/a&gt; webpage to summarize our participants’ accomplishments. One highlight was &lt;a href="https://github.com/orgs/qgreenland-workshop-2023-researcher/discussions/categories/fair-care"&gt;participants’ insightful commentary on FAIR &amp;amp; CARE principles.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Based on these outcomes, we consider our workshop a success. While we put in a significant amount of time creating our materials, CryoCloud’s cloud costs and our time investment in preparing computing resources were relatively small. For approximately 25 people, our cloud costs break down to roughly &lt;strong&gt;$1/person/day&lt;/strong&gt;!&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;The CryoCloud JupyterHub met our workshop needs and provided a delightful experience for administrators and participants alike, and we are excited for what’s next. JupyterLab 4 and jupyter_collaboration v1.0.0, a real-time collaboration extension, were &lt;a href="/posts/2023/jupyterlab-4-0-is-here/"&gt;just announced&lt;/a&gt;, and the CryoCloud team is currently working to integrate these new releases into their hub. Real-time collaboration will enable exciting cloud use cases, like small groups working together on the same notebook without a screen share, or organizers providing technical support in a live notebook. We anticipate running this workshop again. We are excited to use JupyterHub again and look forward to experimenting with these new features!&lt;/p&gt;
&lt;h2 id="acknowledgements"&gt;Acknowledgements&lt;/h2&gt;
&lt;h3 id="reviewers"&gt;Reviewers&lt;/h3&gt;
&lt;p&gt;In alphabetical order, thanks to Twila Moon, Yuvi Panda, Tasha Snow, and Alyse Thurber for their time contributing to this post!&lt;/p&gt;
&lt;h3 id="cryocloud"&gt;CryoCloud&lt;/h3&gt;
&lt;p&gt;Snow, Tasha, Millstein, Joanna, Scheick, Jessica, Sauthoff, Wilson, Leong, Wei Ji, Colliander, James, Pérez, Fernando, James Munroe, Felikson, Denis, Sutterley, Tyler, &amp;amp; Siegfried, Matthew. (2023). CryoCloud JupyterBook (2023.01.26). Zenodo.&lt;a href="https://doi.org/10.5281/zenodo.7576602"&gt;https://doi.org/10.5281/zenodo.7576602&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="2i2c"&gt;2i2c&lt;/h3&gt;
&lt;p&gt;2i2c is a non-profit organization that runs open-source &lt;a href="https://github.com/2i2c-org/infrastructure"&gt;infrastructure&lt;/a&gt; for collaborative computing, and maintains the CryoCloud JupyterHub used in this workshop. You can see the complete configuration of this JupyterHub in this &lt;a href="https://github.com/CryoInTheCloud/hub-image"&gt;public repository&lt;/a&gt;.&lt;/p&gt;
</content><category term="accessibility"/><category term="cloud computing"/><category term="education"/><category term="events"/><category term="geoscience"/><category term="JupyterHub"/><category term="science"/><category term="workshops"/></entry><entry><title>National Scale Interactive Computing</title><link href="https://jasongrout.github.io/medium-archive/pelican/posts/2019/national-scale-interactive-computing/" rel="alternate"/><published>2019-08-22T19:06:00+00:00</published><updated>2019-08-22T20:06:00+00:00</updated><author><name>James Colliander</name></author><id>tag:jasongrout.github.io,2019-08-22:/medium-archive/pelican/posts/2019/national-scale-interactive-computing/</id><summary type="html">&lt;p&gt;Delivering interactive computing to universities at a national scale with a Jupyter stack.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;&lt;em&gt;This is an invited post from Jim Colliander, Professor of Mathematics at UBC and Director of the&lt;/em&gt; &lt;a href="http://www.pims.math.ca/"&gt;&lt;em&gt;Pacific Institute for the Mathematical Sciences&lt;/em&gt;&lt;/a&gt;.¹&lt;/p&gt;
&lt;p&gt;In 2017, the &lt;a href="http://www.pims.math.ca/"&gt;Pacific Institute for the Mathematical Sciences (PIMS)&lt;/a&gt;, in partnership with &lt;a href="https://www.computecanada.ca/featured/compute-canada-and-pims-launch-jupyter-service-for-researchers/"&gt;Compute Canada&lt;/a&gt; and &lt;a href="https://www.cybera.ca/services/jupyter-all-in-one-science-platform/"&gt;Cybera&lt;/a&gt;, launched &lt;a href="https://syzygy.ca"&gt;Syzygy&lt;/a&gt;, a cloud-hosted interactive computing platform that delivers &lt;a href="https://jupyter.org/"&gt;JupyterHub deployments&lt;/a&gt; for &lt;a href="https://www.google.com/maps/d/embed?mid=1nzSAGLSn8eWdfQ6K7zTw-31h82I&amp;amp;hl=en"&gt;universities across Canada&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Syzygy has been used by over 16,000 students at 20 universities. The main results of the Syzygy experiment so far are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Demand for interactive computing is ubiquitous² and growing strongly at universities.&lt;/li&gt;
&lt;li&gt;The Jupyter ecosystem is an effective way to deliver interactive computing.&lt;/li&gt;
&lt;li&gt;A scalable, sustainable, and cost-effective interactive computing service for universities is needed as soon as possible.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="demand-for-interactive-computing"&gt;Demand for interactive computing&lt;/h2&gt;
&lt;p&gt;Both research and teaching at universities are adapting to major societal changes driven by explosions in data and computational tools. New educational programs that prepare students to think computationally are emerging, while research strategies are changing in ways that are more open, reproducible, collaborative, and interdisciplinary. These transformations are inextricably linked and are accelerating demand for interactive computing. The Syzygy experiment has shown that using Jupyter in educational programs drives interest in using Jupyter for research (and vice versa). For example, students in mathematics, statistics, and computer science &lt;a href="https://medium.com/pims-math/saving-lives-with-data-and-math-b697667d1cd7"&gt;collaborated with a researcher from St. Paul’s Hospital in Vancouver using Syzygy&lt;/a&gt; to identify new pathways to prevent death from sepsis. Research communities typically need access to deeper computational resources and often span multiple universities, but the common thread is the need to expand access to interactive computing.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="A map of JupyterHub deployments deployed by Syzygy." src="https://jasongrout.github.io/medium-archive/pelican/posts/2019/national-scale-interactive-computing/images/001-1_L8MzmheO2NZQBH0t-BGpFg.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;A map of JupyterHub deployments deployed by Syzygy.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="technical-milestone-achieved"&gt;Technical milestone achieved&lt;/h2&gt;
&lt;p&gt;The Syzygy project has demonstrated that it’s possible to deploy tools for interactive computation at a national scale rapidly and efficiently using an entirely open source technology stack. Students, faculty and staff across Canada use Syzygy to access Jupyter through their browsers with their university single-sign-on credentials. The JupyterHubs range from a “standard” configuration to bespoke environments with specially curated tools and data integrations. This richness is possible because of the architecture of the Syzygy and Jupyter projects and the flexibility of the underlying cloud resources. As a case-study, Syzygy demonstrates that the Jupyter community has achieved a significant technical milestone: interactive computing &lt;em&gt;can be delivered&lt;/em&gt; at national scale using cloud technologies.&lt;/p&gt;
&lt;h2 id="service-level-requirements"&gt;Service level requirements&lt;/h2&gt;
&lt;p&gt;The validation that interactive computing can be technically delivered at national scale prompts universities to ask a variety of questions. Can interactive computing service be delivered robustly? How will users be supported? What are the uptime expectations? What is the data security policy? How is privacy protected? Can the robustness of the service be clarified in a service level agreement? Syzygy, as an experimental service offered to universities at no charge and without a service level agreement, does not properly address these questions. To advance on their education-research-service mission and address growing demand, universities need a reliable interactive computing service with a service level agreement.&lt;/p&gt;
&lt;h2 id="whats-next"&gt;What’s next?&lt;/h2&gt;
&lt;p&gt;How should universities address their needs for interactive computing over the next five years? Right now, universities are following two primary approaches:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🙏 &lt;em&gt;&lt;strong&gt;Ad hoc&lt;/strong&gt;&lt;/em&gt;: faculty figure out how to meet their own needs for interactive computing; IT staff deploys JupyterHub on local or commercial cloud servers; this approach gives universities control over their deployments and hardware, though requires time and expertise that many may not have.&lt;/li&gt;
&lt;li&gt;🎩 &lt;em&gt;&lt;strong&gt;Use a cloud provider’s service&lt;/strong&gt;&lt;/em&gt;: Google Colab, Amazon Sagemaker, Microsoft Azure Notebooks, IBM Watson Studio; this approach allows universities to quickly launch interactive computing services, with a loss of flexibility and some risks by becoming reliant upon a particular vendor’s closed-source and proprietary software.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These approaches are not sustainable over the long term. If universities all deploy their own JupyterHub services, many will need technical expertise they do not currently have and will involve a significant duplication of effort. If universities rely on hosted cloud notebook services, the reliance on proprietary technology will impair their ability to switch between different cloud vendors, change hardware, customize software, etc. Vendor lock-in will limit the ability of universities to respond to changes in price for the service. Universities will lose agility in responding to changes in faculty, staff, and student computing needs.&lt;/p&gt;
&lt;p&gt;There is a third option that addresses the issues with these two approaches and generates other benefits for universities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🤔 &lt;em&gt;&lt;strong&gt;Form an interactive computing consortium&lt;/strong&gt;&lt;/em&gt;: universities collaborate to &lt;em&gt;build&lt;/em&gt; an interactive computing service provider aligned with their missions to better serve their students, facilitate research, and avoid risks associated with vendor lock-in.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To retain control over their interactive computing stacks, avoid dependence⁴ on cloud providers, and accelerate the emergence of new programs, universities should work together to deploy interactive computing environments in a vendor-agnostic manner. This might take the form of a consortium — an organization dedicated to serving the needs of universities through customized shared infrastructure for interactive computing. The consortium would also ensure that universities will continue to play a leadership role in the development of the interactive computing tools used for education and research.&lt;/p&gt;
&lt;p&gt;The Syzygy experiment confirmed that growing demand for interactive computation within universities can be supplied with the available technologies advanced by the Jupyter open source community. In the coming year, we aim to build upon the success of the Syzygy experiment and seed an initial node of a consortium in Canada with the intention of fostering a global network of people invested in advanced interactive computing. If you are interesting in partnering, &lt;a href="https://ten.blue/2i2c/#/3/4"&gt;please get in touch!&lt;/a&gt; See &lt;a href="https://discourse.jupyter.org/t/creating-national-infrastructure-for-jupyter-environments/1966"&gt;this Jupyter Community Forum post&lt;/a&gt; to continue the discussion.&lt;/p&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li&gt;The author gratefully acknowledges feedback on this piece from Ian Allison, Lindsey Heagy, Chris Holdgraf, Fernando Perez, and Lindsay Sill.&lt;/li&gt;
&lt;li&gt;Interactive computing needs have been identified in agriculture, applied mathematics, astronomy, chemistry, climate science, computer science, data science, digital humanities, ecology, economics, engineering, genomics, geoscience, health sciences, K-12 education, neuroscience, political science, physics, pure mathematics, statistics, and sociology.&lt;/li&gt;
&lt;li&gt;Relying on commercial cloud vendors to provide the interactive computing service for universities risks recreating the problems associated with scientific publishing that emerged with the internet.&lt;/li&gt;
&lt;/ol&gt;
</content><category term="cloud computing"/><category term="science"/></entry><entry><title>The International Binder Federation</title><link href="https://jasongrout.github.io/medium-archive/pelican/posts/2019/the-international-binder-federation/" rel="alternate"/><published>2019-07-01T09:11:00+00:00</published><updated>2019-07-01T09:11:00+00:00</updated><author><name>Chris Holdgraf</name></author><id>tag:jasongrout.github.io,2019-07-01:/medium-archive/pelican/posts/2019/the-international-binder-federation/</id><summary type="html">&lt;p&gt;We are happy to announce that mybinder.org is now backed by two clusters hosted by two different cloud providers: Google Cloud and OVH.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;About two years ago, the Binder project evolved into the community led project that it is today. The deployment at &lt;a href="http://mybinder.org/"&gt;mybinder.org&lt;/a&gt; was upgraded to use&lt;br&gt;
BinderHub, a scalable open-source web application that runs on Kubernetes and provides free, sharable, interactive computing environments to people&lt;br&gt;
all around the world.&lt;/p&gt;
&lt;p&gt;In the ensuing years, the Binder community has grown considerably.&lt;br&gt;
Now people use the public deployment at &lt;a href="http://mybinder.org/"&gt;mybinder.org&lt;/a&gt; around 100,000 times each week, and there are around &lt;a href="https://github.com/betatim/binderlyzer/blob/master/binder-launches.ipynb"&gt;8,000 unique repositories&lt;/a&gt; compatible with Binder. Binder links now work with multiple repository providers, such as GitHub, GitLab, BitBucket, and even Zenodo! This means that providing enough compute power for everyone is a challenge.&lt;/p&gt;
&lt;p&gt;This is why today we are happy to announce that mybinder.org is now backed by two clusters hosted by two different cloud providers: Google Cloud and &lt;a href="https://www.ovh.com"&gt;OVH&lt;/a&gt;. This is the beginning of the International Binder Federation.&lt;/p&gt;
&lt;p&gt;How did we get here? Alongside mybinder.org’s growth we’ve seen growth in another part of the Binder ecosystem: people deploying a BinderHub for their own groups. In the last year, we have seen BinderHubs deployed &lt;a href="http://pangeo.io/"&gt;for large-scale earth analytics with the Pangeo project&lt;/a&gt;, for &lt;a href="https://the-turing-way.netlify.com/introduction/introduction"&gt;communities of best-practices in open science with The Turing Way&lt;/a&gt;, and for &lt;a href="https://notebooks.gesis.org/binder/"&gt;specific domains such as the social sciences like GESIS&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As more BinderHubs are deployed, we realized that there was an opportunity to leverage the strengths and resources of the community to improve the large, public BinderHub deployment at &lt;a href="http://mybinder.org/"&gt;mybinder.org&lt;/a&gt;. Instead of a single BinderHub run by the Binder team, we could build a &lt;strong&gt;network&lt;/strong&gt; of BinderHubs that shares the load and keeps &lt;code&gt;mybinder.org&lt;/code&gt; stable and quick.&lt;/p&gt;
&lt;h2 id="ovh-joins-the-mybinderorg-federation"&gt;OVH Joins the &lt;a href="http://mybinder.org/"&gt;mybinder.org&lt;/a&gt; Federation&lt;/h2&gt;
&lt;p&gt;Today, we are thrilled to announce that the Binder Project now has &lt;strong&gt;a world-wide federation of BinderHubs powering&lt;/strong&gt; &lt;a href="http://mybinder.org/"&gt;&lt;strong&gt;mybinder.org&lt;/strong&gt;&lt;/a&gt;. We’ve partnered with OVH, a cloud hosting company based in Europe that is supportive of open projects such as Jupyter and Binder.&lt;/p&gt;
&lt;p&gt;Through the partnership with OVH, all traffic to &lt;code&gt;mybinder.org&lt;/code&gt; will now be split between &lt;strong&gt;two&lt;/strong&gt; BinderHubs - one run by the Binder team, and another run by a team of open-source advocates at OVH. They have generously offered their resources and computing time to allow Binder to serve the scientific and educational communities.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="The mybinder.org federation currently has two BinderHubs, but this network can (and will!) grow as more groups offer to connect their own BinderHubs to the network." src="https://jasongrout.github.io/medium-archive/pelican/posts/2019/the-international-binder-federation/images/001-1_D0lhgUpJeWhb6K7igl4DvQ.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;The mybinder.org federation currently has two BinderHubs, but this network can (and will!) grow as more groups offer to connect their own BinderHubs to the network.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="what-does-this-mean"&gt;What does this mean?&lt;/h2&gt;
&lt;p&gt;So what has changed for you, the user? Probably not much. The&lt;br&gt;
biggest difference you’ll notice is that landing at &lt;code&gt;mybinder.org&lt;/code&gt;&lt;br&gt;
will now &lt;em&gt;redirect&lt;/em&gt; you to one of two places:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;gke.mybinder.org&lt;/code&gt; is the BinderHub hosted on the Google Cloud Platform&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ovh.mybinder.org&lt;/code&gt; is the BinderHub hosted on the OVH platform in France.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other than this, your experience should be the same. You might even notice an improvement in speed and load times because the BinderHub you’re using has a little bit less traffic on it 😀.&lt;/p&gt;
&lt;p&gt;As always, we are pushing this out as soon as we think it is useful. You can help us to scale this model and make it rock solid by reporting weird things you notice. Expect tweaks over the next few weeks based on feedback from users. Let us know about the things you like, dislike or have questions about at &lt;a href="https://discourse.jupyter.org/t/the-binder-federation/1286"&gt;https://discourse.jupyter.org/t/the-binder-federation/1286&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="why-is-this-a-big-deal"&gt;Why is this a big deal?&lt;/h2&gt;
&lt;p&gt;We think that having a federation of BinderHubs behind mybinder.org is pretty cool, for a few different reasons. First, it demonstrates the dedication that the Binder community has towards building tools that anybody can deploy — we certainly don’t want to be the only ones running a BinderHub, and having other BinderHubs behind mybinder.org is a great example of this. Second, a network of BinderHubs for mybinder.org means that we can eventually do some clever things like use geolocation to distribute users, which should improve the performance that you all experience. Third, having fewer users per BinderHub means that we can optimize the resources available to each hub — resulting in improvements in speed and stability. Finally, having a federation of BinderHubs makes the mybinder.org service significantly more robust, and less-dependent on a single team, deployment, platform, and funding source. We are now more confident than ever that mybinder.org will continue to be available as a stable, free, public service that keeps growing.&lt;/p&gt;
&lt;h2 id="whats-next"&gt;What’s next?&lt;/h2&gt;
&lt;p&gt;Now that we’ve reached N=2 BinderHubs powering &lt;code&gt;mybinder.org&lt;/code&gt;,&lt;br&gt;
it is straightforward for us to grow this network to N=3 and beyond. Over the summer we will continue our work on approaching universities, research councils, and cloud hosting companies.&lt;/p&gt;
&lt;p&gt;If you are interested in helping out: we’d love to see other community members come forward to offer their time or resources to provide more nodes in the international BinderHub federation. If you’re interested in doing so, please &lt;a href="https://github.com/jupyterhub/team-compass/issues"&gt;open an issue in the JupyterHub team compass repository&lt;/a&gt;&lt;br&gt;
to discuss the possibilities of working together!&lt;/p&gt;
&lt;p&gt;We’re excited about the ability for the Binder community continuing&lt;br&gt;
to grow, and to build more tools for distributed, community-run&lt;br&gt;
infrastructure for open science and education. This is all possible&lt;br&gt;
because of the hard work of many people in the community, so a big&lt;br&gt;
thank you to those who spend their time working on open tools in&lt;br&gt;
the Jupyter and Binder ecosystems. We’re excited to see what comes&lt;br&gt;
next!&lt;/p&gt;
</content><category term="Binder"/><category term="cloud computing"/><category term="Kubernetes"/></entry><entry><title>Incident Report: Jupyter services down</title><link href="https://jasongrout.github.io/medium-archive/pelican/posts/2017/incident-report-jupyter-services-down/" rel="alternate"/><published>2017-12-14T19:52:00+00:00</published><updated>2017-12-14T20:46:00+00:00</updated><author><name>M Bussonnier</name></author><id>tag:jasongrout.github.io,2017-12-14:/medium-archive/pelican/posts/2017/incident-report-jupyter-services-down/</id><summary type="html">&lt;p&gt;update: December 14, 20:45 UTC, all services should be restored and back up.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;&lt;strong&gt;update:&lt;/strong&gt; December 14, 20:45 UTC, all services should be restored and back up.&lt;/p&gt;
&lt;p&gt;On December 13, at 22:10 UTC (4:10pm EST), a large number of Jupyter-provided services stopped responding. This included, but was not limited to &lt;a href="https://nbviewer.jupyter.org,"&gt;https://nbviewer.jupyter.org,&lt;/a&gt; &lt;a href="https://try.jupyter.org"&gt;https://try.jupyter.org&lt;/a&gt; (powered by tmpnb) and &lt;a href="https://cdn.jupyter.org"&gt;https://cdn.jupyter.org&lt;/a&gt;. We quickly narrowed this down to an issue with our hosting provider and have been working with them to resolve the issue as fast as possible.&lt;/p&gt;
&lt;p&gt;When outages happen, the &lt;a href="http://status.jupyter.org/"&gt;Jupyter Status page&lt;/a&gt; should show which services are affected and we publish updates there.&lt;/p&gt;
&lt;h2 id="how-are-jupyter-services-hosted"&gt;How are Jupyter services hosted?&lt;/h2&gt;
&lt;p&gt;To understand the cause of the outage, we need to understand how the Jupyter services are hosted and maintained. As Jupyter is an open organization which is mostly maintained by volunteers, we do not have a dev-ops team assigned to maintaining our infrastructure. Even with full-time developers hired through universities or companies, the time spent fixing infrastructure is taken on nights and weekends. These developers are often stretched thin and cannot be available 24/7.&lt;/p&gt;
&lt;p&gt;Most of our cloud infrastructure is donated to us by companies like &lt;a href="https://www.cloudflare.com/"&gt;CloudFlare&lt;/a&gt;, &lt;a href="https://www.rackspace.com/"&gt;Rackspace&lt;/a&gt;, &lt;a href="http://cloudflare"&gt;Fastly&lt;/a&gt;, &lt;a href="https://cloud.google.com/"&gt;Google&lt;/a&gt;, and &lt;a href="https://azure.microsoft.com"&gt;Microsoft&lt;/a&gt;. Donating resources can be challenging, both technically and legally. In this particular case, Rackspace graciously created a special account for Jupyter that handles invoices on our behalf, thereby making resources free to the project. Following a hiccup, this Jupyter account was suspended and all services are unavailable as a result.&lt;/p&gt;
&lt;h2 id="temporary-resolution"&gt;Temporary resolution&lt;/h2&gt;
&lt;p&gt;As nbviewer is one of the most used services provided by Jupyter, we’ve moved it to one of our personal account at another cloud-provider. &lt;a href="https://www.fastly.com/"&gt;Fastly&lt;/a&gt; was set up to load-balance on the yet-to-come-back-up instances as well as this newly created instance, so all should be fine now.&lt;/p&gt;
&lt;p&gt;The other services (tmpnb, mails@jupyter.org, cdn.jupyter.org, …) will still unavailable or highly degraded until a permanent solution is found, or the services are restarted. &lt;code&gt;try.jupyter.org&lt;/code&gt; will likely redirect to a repo on &lt;a href="https://mybinder.org"&gt;https://mybinder.org&lt;/a&gt; in the meantime so people can still try out Jupyter.&lt;/p&gt;
&lt;h2 id="low-bus-factor"&gt;Low bus factor&lt;/h2&gt;
&lt;p&gt;The outage of all these services lasted for a significant time (more than 18 hours). Which perturbed many of you relying on these services. We understand that this is hardly acceptable and we hope you’ll indulge us as these services are provided for free and without ads. One of the factors leading to the slow reestablishment of service was a relatively low &lt;a href="https://en.wikipedia.org/wiki/Bus_factor"&gt;bus factor&lt;/a&gt;, with only one and a half of our developers knowing how to deploy and maintain these services. Documentation and access to credentials was also limited.&lt;/p&gt;
&lt;p&gt;This is one of the challenges in a distributed team like Jupyter where contributors self-organize. It is easy to forget that new code is not the only way to contribute and that &lt;a href="https://www.nytimes.com/2017/07/22/opinion/sunday/lets-get-excited-about-maintenance.html"&gt;infrastructure and maintenance&lt;/a&gt; are crucial.&lt;/p&gt;
&lt;p&gt;We also overly rely on a single vendor (in this case Rackspace), and while we are happy with Rackspace and have no reason to move to another provider, we should have a plan to restore critical services even temporarily in case of failure.&lt;/p&gt;
&lt;p&gt;A couple of months ago, the subject was brought to our attention, and we developed a plan to move many of our deployment to &lt;a href="https://k8s.io"&gt;Kubernetes&lt;/a&gt; (which is provider agnostic). We underestimated the probability to need an emergency plan this early.&lt;/p&gt;
&lt;h2 id="how-can-you-help"&gt;How can you help&lt;/h2&gt;
&lt;p&gt;Jupyter is mainly governed by the community all around the world. Contributing is not limited to writing code! We need members with knowledge in multiple languages, in design, dev-ops, etc. Whether you are an expert, or still learning, we would like you to &lt;a href="https://jupyter.org/community.html"&gt;get involved&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks everyone for your patience and the kind words when you reached to us when discovering the services were down.&lt;/p&gt;
</content><category term="cloud computing"/><category term="DevOps"/></entry></feed>