DEV Community

Cover image for Remote Development at Woovi
Sibelius Seraphini for Woovi

Posted on

Remote Development at Woovi

Woovi’s Remote Development Journey: Scaling Efficiently

At Woovi, we manage two monorepos that house all our backend and frontend services—eight services each. Running everything at this scale demands significant CPU and memory resources. Even type-checking can become slow with such a large codebase. To tackle these challenges, we’ve adopted remote development, a solution that not only optimizes resource usage but also addresses other operational bottlenecks, as we’ll outline in this article.

What is Remote Development?

Remote development refers to creating, testing, and maintaining software by accessing a development environment hosted on a remote server or cloud infrastructure, rather than using a local machine. This approach provides developers with a consistent, centralized workspace while leveraging the power of remote servers for efficiency, scalability, and security.

First try using Coder

Our initial foray into remote development was with Coder. We set it up using Docker within a large Linux container (LXC). However, as more developers spun up new environments, performance began to degrade.

We also tested Coder within our Kubernetes (K8s) staging cluster, but this approach encountered challenges. Docker’s limited ability to isolate CPU and memory resources meant one developer's workload could impact another’s. These issues highlighted the need for a more robust solution.

Why LXC for Remote Development?

At Woovi, simplicity is key. We pivoted to using pure Linux Containers (LXC) for our remote development stack. This approach provides each developer with a dedicated Linux environment, effectively isolating resources. With LXC, even if one developer exhausts their allocated resources, it doesn’t affect others—ensuring stability and performance across all containers.

SSH Connection and IDEs

To be able to SSH connect using a terminal or any IDE like VSCode or Webstorm you need to add your computer SSH pub key to the LXC.

# Copy your ssh pub key
cat ~/.ssh/id_rsa.pub | pbcopy

# Paste it in inside LXC
echo "ssh-rsa AAA .... " >> ~/.ssh/authorized_keys
Enter fullscreen mode Exit fullscreen mode

Add a SSH host config inside ~/.ssh/config

Host sibelius-dev
  HostName 10.0.99.44
  User root
  LocalForward 5001 localhost:5001
  RemoteForward 7771 localhost:7771
Enter fullscreen mode Exit fullscreen mode

This will enable you to connect in the terminal like this:

ssh sibelius-dev
Enter fullscreen mode Exit fullscreen mode

You can also predefine which ports you want to port forward to access services in your machine.

Cost Efficiency of Remote Development

Cloud-based remote development can be expensive. At Woovi, we addressed this by transitioning to bare-metal servers, detailed in our article Owning your Infrastructure: A Journey to Bare Metal and Out of the Cloud
.
Our remote development server, equipped with 96 CPUs and 512GB of RAM, easily supports 10 developers without performance issues. By avoiding cloud costs, we only incur the initial hardware expense and a minimal colocation fee. Compared to equipping developers with high-performance laptops, this approach is significantly more economical.
It is much cheaper to buy server hardware than Macbooks.

Benefits at Woovi

  • Improved Productivity: Developers spend less time configuring environments and more time coding.
  • Enhanced Collaboration: Shared environments align team workflows.
  • Operational Efficiency: Lightweight containers allow optimal resource utilization.
  • Future-Proofing: Our infrastructure can scale with the company’s growth.
  • Security: We can add security measures inside LXC and have audit logs.

Areas for Improvement

To further enhance our remote development setup, we aim to:

Automate the addition of developers' SSH public keys.
Enable automatic provisioning of LXC containers for new team members.
Create LXC templates preloaded with essential tools like Git, Node.js, and pnpm.

In Conclusion

Initially skeptical about remote development, we’ve now seen its potential fully realized. Modern IDEs provide excellent support, and open-source tools are making this approach accessible to all. Leading tech companies have long embraced remote development, and smaller organizations can now follow suit.

If your team hasn’t explored remote development yet, it’s time to give it a try. The benefits—productivity, scalability, and cost efficiency—are undeniable.


Woovi
Woovi is a fintech platform revolutionizing how businesses and developers handle payments in Brazil. Built with a developer-first mindset, Woovi simplifies integration with instant payment methods like Pix, enabling companies to receive payments seamlessly and automate financial workflows.

If you want to work with us, we are hiring!

Top comments (0)