Reflex Logo

Dell

Multi-Node VM Clusters in Minutes, From the Browser: How Dell Built Dynamic Lab in Pure Python

Grid
Gradient Reflex Logo
Dell logo
1Engineer built the entire full-stack production app: backend and UI, all in pure Python
200+Engineers using Dynamic Lab today
2,000+VMs actively managed through the app at any given time
FoundedRound Rock, Texas, 1984
InvestorsNYSE: DELL
Websitedell.com

Dynamic Lab: internal VM management app built with Reflex

Here's how JL Olmstead, a Senior Principal Engineer at Dell, describes Reflex after using it to ship a production-ready internal app:

"It gives us the ability to create essentially a React web page with Tailwind support that is all driven through Python. Back-end, front-end, APIs: we configure it all in Python, and Reflex builds it out."

Meet Dell, one of the largest technology companies in the world. Headquartered in Round Rock, Texas, Dell employs over 100,000 people and supports customers across enterprise infrastructure, data center hardware, end-user computing, software-defined storage, and managed services, including flagship products like PowerScale, PowerStore, PowerEdge, and the Dell client portfolio.

Behind those products sits a global support and engineering organization that needs to replicate, debug, and validate customer environments every single day.

Inside Dell's enterprise support and engineering org, engineers need on-demand access to fully configured clusters and VMs to reproduce customer setups, troubleshoot live cases, and validate fixes. For a support engineer working a ticket, the gap between a same-day resolution and a multi-day debug often comes down to how quickly they can stand up a lab that matches what the customer is running.

Historically, this was a real bottleneck. Engineers either had workstations under their desks, or shared servers that one person had configured and lent out to teammates. Spinning up a fresh, multi-node cluster on a specific product version, let alone one matching a specific customer configuration, was something only a handful of senior engineers could do efficiently.

JL, a Senior Principal Engineer at Dell, was tasked with fixing this. His mandate was to make lab provisioning self-service so that any engineer, including day-one techs and subject matter experts who weren't infrastructure specialists, could spin up a multi-node cluster in minutes, replicate a customer's environment, and start debugging. The third evolution of this internal tool, Dynamic Lab, would be browser-based.

"Trying to get labs set up for many thousands of users was difficult. We'd have workstations under people's desks. Other people would set up servers and they'd be the only ones using them. It was very difficult for someone coming in entry-level to say "I want to learn how to use this product" and be able to jump in and get up and running."
JLSenior Principal Engineer at Dell

The previous two iterations of the tool had been CLI-based. They worked, but they were cumbersome. Engineers had to memorize commands, poll for job completion, and run separate commands just to figure out how to connect to the VMs they had spun up.

JL has spent his development career in Python infrastructure. The backend services his team had built for scanning VMs, gathering data, and coordinating Jenkins and Ansible jobs were all written in Python. The path from CLI to browser was the bottleneck, but the question wasn't whether he could learn React. As a Senior Principal Engineer, his calculus was about what would actually scale: any UI layer outside his Python codebase would mean a parallel stack to maintain, a separate skill set to keep on the team, and another set of dependencies to take through Dell's procurement process.

He still spent months evaluating his options. React was the obvious enterprise default, but it would have meant ramping up on JavaScript, a frontend toolchain, and component libraries that none of his existing Python tooling spoke to. He explored Svelte and tried to get a Vue environment running. None of them got him to a working tool fast enough to justify the parallel stack cost.

"I spent six months researching frontend frameworks. React, Svelte, even tried to get a Vue environment working. It was just too much."
JLSenior Principal Engineer at Dell

Before Reflex, JL's own early attempts at building a webUI for the lab tool were, in his words, "hacked-together HTML" that "looked like garbage and were tough to use as an end user." That wasn't going to fly for a tool meant to scale across thousands of engineers under the Dell brand.

JL started prototyping Dynamic Lab in Reflex and had a working demo within a week. Because Reflex is pure Python, every backend service he had already written, including the VM scanners, the Jenkins and Ansible coordination, and the data collection logic, could be reused directly. No rewrite. No JavaScript layer. No new toolchain.

"With Reflex, I could put together demo pieces within the first week that could functionally take and display the data. I could get data in and out, and it just worked. Total game changer."
JLSenior Principal Engineer at Dell

The team was able to:

  • Reuse their existing Python backend services for VM scanning and Jenkins/Ansible coordination without modification
  • Build a full browser UI using Reflex's rx.card, rx.foreach, tabs, popovers, dropdowns, and built-in theming
  • Hook the app up to Dell's Okta SSO for authentication
  • Embed a Guacamole-based SSH client so engineers can connect to provisioned VMs directly from the browser
  • Stream live progress from Jenkins jobs into a UI progress bar as multi-node clusters spin up
  • Self-host the entire app on Dell's internal ESXi / vCenter / vSAN / NSX infrastructure, with a roadmap to make Dynamic Lab fully hypervisor-agnostic via Ansible and Terraform
"As soon as I saw the card component on the Reflex site, I was able to build the initial wireframe we'd been sketching, get it up and running and responding. It was a clear winner."

The result is a production beta that lets any Dell support engineer pick a product, pick a version, and spin up a fully working multi-node cluster, with networks, configuration, and clients all included, in a few minutes.

"This lets a user jump into a fully working PowerScale cluster where we've configured the backend networks and everything else. They can match what the customer is running, bring in different clients, replicate the issue, and solve a case faster."
JLSenior Principal Engineer at Dell

JL evaluated multiple paths to a production browser-based tool and chose Reflex because it allowed his team to:

  • Build full-stack in Python, the language his entire backend already runs in. No JavaScript, no separate frontend team, no parallel toolchain.
"All the stuff we had done in the previous app was Python-based. This just made it really clean and easy. It was a lot easier to onboard."
JLSenior Principal Engineer at Dell
  • Standardize the team on a single language, critical for a tool that needs to outlast any one contributor and scale to thousands of users.
  • Ship a polished UI without staffing a frontend specialist. JL built cards, tabs, dropdowns, alert dialogs, and live-updating views entirely in Python.
"I am not coming from a web background at all. Being able to say "OK, I want tabs, I want this color, I want the content to look like this" was what made it a lot easier."
JLSenior Principal Engineer at Dell
  • Read and reason about the codebase. The whole app stayed in Python that JL's team could read and extend without context switching.
"I can look at the Reflex code and I know what's happening. And that makes it a lot easier."
JLSenior Principal Engineer at Dell

Dynamic Lab is currently in beta with 200+ engineers across Dell and is managing roughly 2,000 VMs at any given moment. The team is moving to beefier hardware to support broader adoption. The broader engineering organization, thousands of developers who were constrained by the original CLI bottleneck, represents the long-term opportunity.

JL is also extending the platform with:

  1. A Reflex-based management server that drops gateways into different environments, with the goal of making Dynamic Lab hypervisor-agnostic across customer and partner deployments
  2. A file upload pipeline using rx.upload so template creators can submit ISOs and other artifacts directly through the app
  3. A migration from SQLite to Postgres to support the higher concurrency expected as user count scales

What started as one Senior Principal Engineer's attempt to replace a CLI is now embedded infrastructure for how Dell's support and engineering org reproduces customer environments and resolves cases.

"My early attempts at building a webUI were just hacked-together HTML. They looked like garbage and were tough to use. Reflex is the opposite. It looks good, runs well, and the performance has been great."

Contact Us

Book a demo

Book a demo to see how you can build powerful Python web apps for your team with Reflex AI.

Built with Reflex