Application and Tool Containerization

Containerization and Cloud Capabilities

What is containerization?

In most scenarios, containerization (using Helm and Kubernetes) of your application or tool will be required for deployment on EDX. Containerization is a software deployment process that packages software code with the libraries and dependencies required to run the code. Containerization is a type of virtualization that allows applications to run in isolated user spaces while using the same shared operating system. Containers are portable and conducive to automation; they provide an efficient way to deploy, manage, and scale applications across different platforms. How you choose to containerize is dependent on many factors such as the need for updates and management, complexity of your application and skillset of your team.

Google Cloud Platform (GCP) offers many ways to run your content in the cloud. Compute Engine, Kubernetes Engine, Cloud Run, and App Engine are just a few options that all have different use cases that you may leverage based on the complexity of your application.

  • Compute Engine – GCP virtual machine. There are different machine configurations available.
  • Google Kubernetes Engine  (GKE) – Kubernetes is a portable, extensible, open source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.
  • Cloud Run – containerized apps written in any language (including Go, Python, Java, Node.js, .NET, and Ruby) on a fully managed platform.
  • App Engine – monolithic server-side rendered websites. App Engine supports popular development languages with a range of developer tools.

If you are not familiar with containerization, infrastructure-as-code, and/or serverless computing, we recommend the “Where should I run my stuff?” blog post from Google Cloud as a starting point to familiarize yourself with the direction you need to go. It is the responsibility of the contributor to properly containerize their application to make it available for use on EDX.

Blog post – “Where should I run my stuff?”

https://cloud.google.com/blog/topics/developers-practitioners/where-should-i-run-my-stuff-choosing-google-cloud-compute-option

Video – “Where should I run my stuff?”

https://www.youtube.com/watch?v=q_5AgiI7KFQ