Cloudtops – A Remote Workstation

Nov 15, 2023   ·  6 min read

Together with my team, we developed a novel and successful new approach for deploying remote workstations for data scientists.

A former colleague of mine coined the term "cloudtop" on our MLOps team two years ago when we were developing a remote workstation for Data Scientists on AWS. He was mostly joking,  but I wouldn't let the name go and it ended up sticking. Little did we know that this trend already existed and was gaining momentum throughout the world!

What is a Cloudtop?

A "cloudtop" is a bit of a play on words. You've heard the words "desktop" and "laptop" before – You might even be using one to read this article! A desktop is understood as a computer that sits on a desk, while a laptop is a portable computer that can sit on your lap. In a similar vein, a cloudtop is also a computer... but one that sits in the Cloud.


The advent of cloud technology has opened up a realm of new possibilities for the digital world. One of those possibilities is the ability to remotely access powerful resources that are hosted in data centers across the world. A "cloudtop" is a remote development environment (e.g., a computer) that is hosted in the cloud and can be provisioned with whatever resources that you might need (i.e., advance hardware, lightning fast networks, powerful security, etc.).  The benefits of such a device are many and can be read about further in the next section.


NOTE: My preferred cloud is Amazon Web Services. Because of that, this article will be written under that premise. To disambiguate what a cloudtop is, I use Amazon EC2 instances and pair them with a docker dev container to make a *chef's kiss* of a remote workstation. There are many other options, like GitPods or GitHub Codespaces, that might also be of interest to you.

Why Use a Cloudtop?

You might be asking yourself, "Who would use a cloudtop?" 🤔  Well, anyone who has the need (duh), but one primary audience are those who work in fields like Data Science, Machine Learning, and Artificial Intelligence. Practitioners in these fields typically need access to more powerful resources than a typical laptop or desktop can (or should) offer. Because of this, we're seeing an increasing amount of teams and companies offering their employees such virtual development environments in the cloud (e.g., cloudtops) to better perform their work.


With anything, there are trade-offs. Cloudtops have been incredibly useful for myself and the teams that I've supported over the past few years.

Here are some of the advantages and disadvantages we've found with using cloudtops:

Advantages

Disadvantages

How to Make a Cloudtop?

There are a many different ways to make a cloudtop for yourself, but here are two steps I'd propose:

1) Deploy an EC2 server on AWS

2) Set up a Docker dev container

Step #1 - Deploy an EC2 Server on AWS

[I'll come back here later and will add a segment on how to deploy the necessary infrastructure for a Cloudtop, either via the AWS CDK or AWS console]

Step #2 - Set Up a Docker Dev Container

To set up a dev container, all you need is (1) VS Code on your local machine for ease-of-use,  and (2) a devcontainer.json file and a DockerFile file saved onto your remote server under a .devcontainer/ directory. Here are some examples of files I've used in the past for setting up a personal cloudtop for me to operate from my Ipad:

devcontainer.json file:

DockerFile file:

Step #3 - (Optional) Ansible Configuration Playbook

Ansible configuration management can be incredibly helpful for you if you wish do perform additional and reproducible configurations on our remote server(s).

configure-cloudtop.yaml file:

If you found any of my content helpful, please consider donating
using one of the following options   Anything is appreciated!