EN

United States (EN)

Australia (EN)

Canada (EN)

Canada (FR)

France (FR)

Germany (DE)

Ireland (EN)

United Kingdom (EN)

EN

United States (EN)

Australia (EN)

Canada (EN)

Canada (FR)

France (FR)

Germany (DE)

Ireland (EN)

United Kingdom (EN)

Blog

How we used the cloud to supercharge remote development

Published

March 4, 2022

Updated

September 5, 2024

Read time

3 MIN

seo_image_f259961d_aBAMAKUq0

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. 

inline_1-1
inline_2
inline_3-1

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.

inline_4
inline_5-1

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.

Author

avatar_image_6c83b869_aBAMAKeA0

Senthil Velu Sundaram

Lead, Engineering Shared Services

Explore more

seo_image_718b65e1_aBAMAKUq0
Aug 21, 2025
|
13 MIN

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.

seo_image_986781d2_aBAMAKUq0
Aug 21, 2025
|
10 MIN

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.

seo_image_5b1aad84_aBAMAKUq0
Aug 21, 2025
|
10 MIN

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.

seo_image_af53dd89_aBAMAKUq0
Aug 21, 2025
|
14 MIN

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.

seo_image_af53dd89_aBAMAKUq0
Aug 21, 2025
|
7 MIN

Spot-friendly CI pipeline: Persistence

In part two of our three-part series on how Rippling moved to AWS Spot Instances for CI, we'll share how we solved the work persistence problem and were able to move forward with spot adoption in Rippling CI.

seo_image_fbd7f8fc_aBAMAKUq0
Aug 21, 2025
|
11 MIN

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

[Blog] | Featured image | From Copy‑Paste Chaos to Cohesive Mobile CI/CD | .jpg
Sep 30, 2025
|
7 MIN

From copy‑paste chaos to cohesive mobile CI/CD: Rippling’s journey with Bitrise Modular YAML

Learn how Kushal Agrawal helped Rippling adopt Bitrise Modular YAML for cohesive mobile CI/CD.

seo_image_9cb6be56_aBAMAKUq0
Aug 21, 2025
|
9 MIN

10 Lessons: Containerizing our Django Backend

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

See Rippling in action

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