As I entered the office today, it was clear that physical desktop computers are becoming a rarity. Most desks were equipped only with monitors, reflecting a significant shift in how many organizations, including Google, are approaching employee workstations. Historically, developers might have received both a desktop and a laptop. However, the trend is now towards providing only high-tier laptops, with heavy workloads and software development tasks offloaded to virtual workstations hosted in the cloud. This approach offers enhanced control over assets, improved security, and streamlined management for organizations.
This cloud-centric approach offers substantial benefits for organizations aiming to equip their employees with powerful development environments without the complexities of procuring and maintaining physical desktops. Beyond the immediate advantage of remote work flexibility, where employees can be fully productive with just a laptop and a stable internet connection, cloud-based workstations offer significant scalability. They allow organizations to rapidly provision and de-provision resources as needed, ensuring developers always have access to the optimal computing power, including high-end GPU-accelerated environments that traditional laptops simply cannot provide for demanding industry needs.
There are two ways your organization can leverage this model using Google Cloud Platform.
Google Compute Engine
Google Compute Engine (GCE) provides an Infrastructure as a Service (IaaS) approach to creating virtual workstations through highly configurable virtual machines. This solution offers unparalleled flexibility, granting you complete control over virtually every aspect of your development environment. You can choose your preferred operating system, machine type (including CPU, memory, and specialized hardware), storage solutions, and install any software or tools required. This level of customization makes GCE an excellent choice for a variety of use cases, including:
Heavy graphics
Once you create a virtual machine equipped with a powerful GPU, you can work with demanding graphical applications. Designing complicated systems and models, programming games or rendering videos - all this heavy lifting can happen in the datacenter, while your computer only has to handle the decoding of the remote desktop stream. To fully leverage the remote desktop experience of those setups, you need to:
- Pick a GPU that supports NVIDIA RTX Virtual Workstations (vWS) for graphics workloads. That means L4, T4, P4 or P100 accelerators. A new G4 machine type hosting NVIDIA RTX PRO 6000 Blackwell cards should be available by the end of 2025.
- Install RTX-compatible GPU drivers.
- Select the remote desktop software you want to use to access the machines. There are many available options like HP Anywhere, Parsec or Moonlight to name a few.
- Ensure the Internet connection on your client side is fast and reliable.
Computation intensive (like AI)
Google Cloud offers really powerful GPUs that can empower your team to effortlessly tackle many AI challenges. With no need for high-quality graphical interface, access to machines in this category can be even limited to an SSH tunnel. The developer can run their favourite IDE on their laptop, while executing the code remotely in the cloud. Depending on the GPU you pick, the pricing of such workstations will vary greatly. Good news though, a single machine can be easily shared between multiple developers with proper configuration.
General development
Developers who don’t need GPU-powered machines to do their jobs, still can benefit from a remote, powerful environment. More RAM, CPUs and storage is really easy to obtain to exceed what even the best laptops can provide.
Considerations
When working with GCE VMs, it is crucial to pay special attention to both the security and cost optimization of these machines. Failing to properly configure these aspects can lead to vulnerabilities or unnecessary expenses. Here are some key considerations (this list is not exhaustive):
Security Best Practices
1) Service Accounts: Avoid using the default compute Service Account, which comes with an overly permissive Editor role. Instead, create new service accounts with the principle of least privilege, assigning only the minimal required permissions for your workloads. For individual users, consider creating dedicated service accounts.
2) Network Access: Consider disabling external IPs for your VMs. For internet access, configure Cloud NAT. For secure remote access, leverage Cloud VPN or Identity-Aware Proxy (IAP).
3) Firewall Policies: Implement stringent firewall policies to control inbound and outbound traffic, ensuring only necessary ports and protocols are open.
Cost Optimization Strategies
1) Commitment-based Discounts: Take advantage of Committed Use Discounts (CUDs) for predictable workloads, which can substantially reduce costs over long-term commitments.
2) Automated Scheduling: Implement VM instance scheduling to automatically stop workstations during off-hours (e.g., overnight or weekends), minimizing resource consumption when not in use.
Google Cloud Workstations
If all your team needs is the computation power of cloud instances and not a full graphical connection, then Cloud Workstations might be just for you (video explainer). It’s a managed solution, which allows you to create virtual workstations that your team can connect to and use for development. Those instances can be based on many different machine types, including GPU-accelerated ones. You can choose to use them through Code OSS (Visual Studio), multiple JetBrains IDEs through JetBrains Gateway or Posit Workbench (with RStudio Pro).
Workstations allow you to customize the developer environments, so that each new instance comes with all the necessary tools preinstalled. Users can be allowed to create and destroy their own environments, while you retain the control over the allowed configurations of those environments.
Despite being a bit more expensive than “raw” Compute Engine instances, the managed Workstations might turn out to be cheaper in use than Compute Instances, as they allow you to configure auto-sleep and auto-shutdown settings, so resources are not wasted when the workstations are not used.
Cloud Workstations offer a wide variety of customization options and security configurations. While not as flexible as simple Virtual Machines, the Workstations might be more attractive due to easier management, strict control and out-of-the-box compatibility with popular coding solutions.
In summary
Google Cloud offers virtual workstation solutions for all kinds of developer needs. Here’s a short summary table, highlighting various applications of GCE and Workstations.
Compute Engine (unmanaged VMs) | Cloud Workstations | |
---|---|---|
Graphical-heavy work Designing Gaming Game development Video editing | GPU-accelerated VMs offer great performance when paired with proper virtual workspace software. | N/A - Cloud Workstations don’t support this kind of work. |
AI and HPC workloads AI training AI inference GPU-powered simulations | GPU-accelerated VMs can make use of every GPU-type available in Google Cloud. Sharing a big VM between multiple developers is a valid approach. | Cloud Workstations support GPU-accelerated machine types, allowing developers to work on software that requires GPU-acceleration. |
General workloads | While regular VMs can work for hosting a workstation for this kind of applications, it might not be worth the management effort. | Cloud Workstations work great as a platform for developers who need a remote cloud-based environment to work on their projects. With the majority of management hassle taken care of, you are free to just work on your project. |
Embrace the future of development today by exploring the powerful virtual workstation solutions offered by Google Cloud. While Compute Engine provides unbridled flexibility, Cloud Workstations offer streamlined efficiency. Unlock enhanced productivity and simplified asset management for your team. Start your cloud development journey now and discover the perfect environment for your needs.