Skip to main content

How we used the cloud to supercharge remote development

Floating app and technology icons around a glowing center on yellow.

The Rippling application is a Python monolith. Our repository has 1.91M lines of code and 8.6K Python files with 200+ developers contributing and merging 100+ PRs every day. 

When I joined the development team, the application was already massive enough to put significant strain on our standard-issue development machines. It required considerable memory and CPU effort to simply run. Each time we’d open PyCharm (our preferred IDE for development) and bring our entire stack up, the laptop’s resources were pushed to the limits. Add a Zoom session to the mix and the dreaded kernel_task would kick in and our laptops would become unusable. 

We needed to find a solution to our hardware resource challenges, one that played nice with a mostly remote development team and, most importantly, one that could handle a dynamic enterprise-scale Python repository. Here’s what we came up with. 

Working with remote servers 

From the start, we had a hunch that the solution to our hardware resourcing issues lay in the cloud. In June 2021, we started experimenting with offloading our application, and much of the compute load, to remote servers. 

Our primary consideration was to retain developers' existing workflow of using PyCharm to develop code, run tests, access the backend server, debug issues, and use known keyboard shortcuts. Due to this, we rejected all browser-based cloud development solutions such as AWS Cloud9 and Codespaces.

We wanted the UX of local IDE with the resource power and scalability of the cloud. To meet these requirements, we chose to use EC2 servers hosted within our AWS account for the compute power while retaining PyCharm as the IDE.

In this approach:

  • Developers continue to write code in PyCharm

  • As they write code, we sync it with the remote EC2 servers

  • Developers use their usual shortcuts to run tests and debug the application

  • Execution occurs on the EC2 servers with seamless integration to PyCharm’s output console

The sync & testing challenge

Our remote-first approach had many advantages over local machines, but we needed to solve two crucial requirements before implementing it company wide. 

  • The sync must be seamless and transparent with low latency. Developers should not wait for their changes to propagate every time they write code.

  • Retain the use of PyCharm as a built-in way of running/debugging tests. Developers can continue to use the same keyboard shortcuts, with minimal workflow disruption. 

Diagram showing remote code sync and remote test execution and results.
Diagram of a Mutagen daemon syncing files and forwarding an app port.
Diagram showing PyCharm connecting to a remote instance's Docker daemon.

Bringing it all together

To unite our new cloud development environment, we wrote a few scripts that would:

  • Log in to AWS

  • Identify the instance for the developer 

  • Start the instance

  • Start the sync using Mutagen along with port forwarding

To trigger the scripts, a few PyCharm configuration files came in handy. Users run a PyCharm configuration to start the sync or the backend server or start/shut down the instance.

Command palette with Cloud Start Remote server sync selected.
Development command menu with Cloud Run Backend Server selected.

Disclaimer

Rippling and its affiliates do not provide tax, accounting, or legal advice. This material has been prepared for informational purposes only, and is not intended to provide or be relied on for tax, accounting, or legal advice. You should consult your own tax, accounting, and legal advisors before engaging in any related activities or transactions.

Rippling logo
Schedule a demo with Rippling today
See Rippling

Author

Small headshot of a mustached person in a white shirt

Senthil Velu Sundaram

Lead, Engineering Shared Services

Explore more

Illustration of laptop, tablet, and phones sharing a Wi-Fi password

7 Lessons from building our RADIUS server in the cloud

7 crucial lessons learned from building Rippling's Radius server in the cloud for increased security and performance.

Cloud and AWS tile beside a silver key on burgundy.

How Rippling runs IT: Streamlining AWS access

Learn how to leverage the power of Rippling and AWS IAM Identity Center to supercharge developer productivity and bolster security.

Abstract burgundy workflow pattern of boxes, diamonds, circles, and connecting lines.

Streamlining AWS access with Rippling at scale — Integrating IAM Identity Center and Just-In-Time access

Here's how we've leveraged the power of Rippling and AWS IAM Identity Center to supercharge our developers' productivity and bolster our security stance.

Three floating cloud shapes connected by yellow circuit-like lines on burgundy.

How Rippling used Spot instances to save and scale CI/CD

As of mid 2023, Rippling has 650 engineers pushing hundreds of pull requests every day. Learn how we used Spot Instances to save on infrastructure costs.

Abstract burgundy workflow pattern of boxes, diamonds, circles, and connecting lines.

Mastering mobile app quality: Rippling's CI/CD journey with Bitrise

Check out how Rippling scaled its mobile infrastructure to a fully cloud-based CI/CD setup for Android and iOS.

Yellow padlock beside a password field on dark purple.

Just-in-Time Access for AWS at Rippling

Discover how Arta and her team created Just-In-Time Access (JITA) and how it has made getting secure, temporary AWS access at Rippling a breeze.

Secure web system illustration with code window, databases, servers, and padlock

10 Lessons: Containerizing our Django Backend

Discover 10 key lessons learned from containerizing Rippling's Django backend to enhance scalability and performance.

Abstract purple and pink maze-like pixel pattern

How we overhauled our end-to-end testing to improve speed, reliability, and developer experience

Revisiting end-to-end testing for better reliability, speed, and developer experience at scale

See Rippling in action

Increase savings, automate busy work, and make better decisions by managing HR, IT, and Finance in one place.