Custom Notebook Web UI with remote kernels

I need to create on-demand Jupyter Notebook environments on my website.
Something similar to what kaggle.com provides. The notebook UI should be rendered on my site’s webpage ( mostly support for editing and running cells), the back-end is running in AWS and should be scalable to support a large number of concurrent users.
I need some help navigating the Jupyter ecosystem and picking the right tools and services. My initial plan is to use Jupyterlab JS API on the front-end communicating with a Jupyter Notebook server(s) running in AWS(EC2 or Docker container) which in turn talks to Jupyter Kernel Gateways (running on AWS Fargate)

My Webpage(Jupyterlab JS) -> Jupyter Notebook Servers (AWS EC2 or Fargate) -> Jupyter Kernel Gateway ( Docker containers on AWS Fargate, auto-scaled)

Users click a button on my webpage to create a new notebook, get a kernel allocated, see my custom UI, run code, terminate notebook

So, I basically want to have the following flow(borrowed from here), only the browser is not running on the same host as the Jupyter Notebook server

Is my approach feasible? Is there a better(or already existing) way to implement this?

Thanks
Sergey

2 Likes