Explanations
Remote development with workspaces
Coherence comes with integrated cloud development environments called workspaces that allow developers to perform their work entirely in the cloud. While discussions about developing remotely in the cloud are often met with raised eyebrows and skepticism, we believe remote development is the future. This article will show the benefits of remote development and how Coherence provides these benefits via our workspaces.
Remote environments save time and money
Collaborating on multiple branches across multiple projects was painful. We’d often find ourselves staring down a 45-minute bootstrap when a branch introduced new dependencies, shipped schema changes, or branched from a different SHA. ... this was a regular source of engineering friction. - Source
Developers spend significant time maintaining their local development environments, often spending several hours, sometimes days, updating and maintaining their machines. How much time and money would you save if your developers never had to maintain their local environments again?
"I've seen engineers lose hours or even days debugging local development environment issues. It's even worse when starting a new job. There's little more disappointing and disempowering than to excitedly begin your job and then get stalled because you can't get your local development environment working. Every company should aim to get their developers as productive as quickly as possible. How long does it take a brand new developer to get code in the hands of customers when they start at your company? Is it measured in months, weeks, days, or hours?" - Source
As your application grows and becomes more complex, it will consume more resources like CPU and RAM. With cloud development environments, you can upgrade every engineer's machine with a single configuration change in seconds! Otherwise, you will have to buy every engineer a brand-new laptop, and how much would it cost to purchase brand-new laptops for every engineer?
Remote development allows engineers to start working in minutes instead of hours or days because they no longer need to maintain their local environments. Coherence maintains everything for you, freeing up your developers to do what they do best.
Knowledge silos
DevOps within an organization tend to be knowledge silos since these teams are often relatively small, sometimes comprised of only a single person. All your operations knowledge lies within a few people or, even worse, a single person.
What do you do when this person leaves, and all that knowledge goes with them?
We can tell you from first-hand experience that you and your team will be left scrambling, trying to figure out everything they know. Don't put yourself in this position. You can remove knowledge silos entirely because we maintain everything for you.
The dreaded "it works on my machine" problem
If you had a nickel, right?
If you think about it, a developer's machine is like a snowflake. Your developers often work on various operating systems, with tools, software, and dependencies in multiple versions and states. Trying to maintain consistency across unique machines only leads to headaches and frustration.
Yet for all our efforts, local development remained brittle. Any number of seemingly innocuous changes could render a local environment useless and, worse still, require hours of valuable development time to recover. Mysterious breakage was so common and catastrophic that we’d codified an option for our bootstrap script to... delete as much as it responsibly can in an attempt to restore the local environment to a known good state. - Source
Remote development solves this problem because every development environment is the same. The cloud is the environment. Cloud environments are ephemeral by design which means they can be spun up and destroyed quickly, because of this they do not live long enough to become outdated.
"New hires can go from zero to a functioning development environment in less time than it takes to install Slack" - Source
Cloud-native IDEs increase code quality
A topic rarely discussed in this controversial debate is how remote development impacts code quality. We believe the impact of developing in the cloud improves overall code quality and produces fewer bugs. Let us explain how.
Typically, when a developer is reviewing another developer's code, they are looking at the "diff" between the current state of the application in either the "main" or "master" branches versus the changes in the developer's "feature" branch. Seeing these changes is vitally important, but there is another crucial step that most of us skip; pulling the code down onto our machines, ensuring the code works. Most of us ignore this critical step because it is often too painful and time-consuming.
The developer performing the code review is most likely working on their feature, fixing a bug, or doing something completely unrelated to the code under review. They would have to save their code changes, switch contexts, and get their local development environments in the same working state as the code under review. This means pulling down the code under review and installing packages, libraries, version updates, etc., a recipe for yak shaving. By developing in the cloud, developers can perform code reviews in the same environment the code was written by simply visiting a URL.
No more yak shaving!
Context switching
Everyone knows context switching is bad but let's be honest with ourselves; it happens all the time. A developer can work on their feature, suddenly open a new environment to fix a bug, and even open a third environment to do a code review. We are not suggesting that context switching between three different contexts is a good idea, but context switching does happen more often than we like to admit, and it is effortless when developing in the cloud.
One operating system to rule them all
Another thing to consider is that cloud environments run on top of a single operating system. Local developers could use Mac, Windows, or various Linux distributions. Even if they use the same operating system, that does not necessarily mean everyone is running the same version. In cloud environments, everything is the same, including the operating system. Your developers also benefit from developing on the same operating system used in production, providing a narrower gap between dev and production.
At Coherence, it is our job to ensure that the infrastructure and environments that power our workspaces mimic production environments as much as possible. We work incredibly hard to ensure that the code written in a workspace will work the same in production.
Coherence workspaces under the hood
Coherence workspaces run in our cloud, not yours, allowing us to maintain them so you don't have to. Under the hood, a workspace provides the following:
- Port forwarding to all the running services, with SSL taken care of
- Persistent volumes so that your code saves even if you don't commit it when your workspace goes to sleep
- Supports VSCode, Emacs, Vim, and more, including per-repo and per-user preferences saved in your Coherence profile
- Environment variable management for each branch
- They run in Coherence's cloud on a GKE cluster with strict security controls (Autopilot)
- Coherence CLI aka the
cocli
binary, is preinstalled to support logging and debugging in all your services - Integrates with your coherence-managed docker registry automatically
If you are curious to know how much they cost, please check out our pricing page.
Cloud environments are more secure
Remotely managed instances also mean one central point for security controls. You control the authentication, transport security, and network controls enforced on your remote instances. These controls allow engineers to limit what is stored on their devices and, if you’re subject to any compliance regime, helps you manage the security of your development lifecycle. - Source
We should be concerned about software security, as the issues and stakes around security are ever-increasing. Think about it: every developer's laptop is a security risk and threat. If your developers work locally, they have source code and intellectual property saved onto their machines. With remote environments, source code only exists in a secure cloud environment, never locally on a developer's machine, allowing you to enforce strict security access controls if necessary.
Since Covid and the massive influx of remote workers, security is now an even greater concern and liability. It is nearly impossible to enforce strict security measures when team members work wherever they like. Don't even get us started with public wifi! A single access point can enforce greater control over who is authorized to access source code, secrets, and intellectual property.
Let's face it, we all know security is critical, yet most of us are terrified we are not doing it right. By using Coherence workspaces, you no longer have to worry. We maintain everything for you so you can focus on what matters most to your business and, most importantly, your customers.
Coherence workspace security and best practices.
Here are some of the security best practices and benefits of using a workspace:
- Your code stays in a controlled environment such that a malicious user or a virus cannot copy the codebase
- Development is tracked more deeply than just commits, so you know the exact environment the code was written in and when it was accessed.
- GitHub credentials & secrets are securely stored in the cloud so there's less risk from public networks or malware capturing them
- Consistent environments enforce best practices like linting and scanning
- Use of best practices like cloud IAM is easier. No need to add individual devs as admins on cloud systems anymore
- Integration into SDLC policies is automatic. You can only start a pipeline or build the right way.
Cloud development is the future
Remote development is in a similar place the cloud was in several years ago. People were quite skeptical when the idea of "the cloud" was first introduced. These days, the cloud is ubiquitous. We believe that cloud development will soon be too.
We are not the only ones who believe this, as large companies like Google, Microsoft, and JetBrains continue to invest heavily in cloud-native development. Companies like Slack, Shopify, Meta, Esty, Tesla, and many more are investing in remote development environments for their engineers because the costs and benefits far outweigh local development.
Coherence provides integrated development environments because, as engineers ourselves, we have personally experienced the benefits and do every single day. Our team uses Coherence to build Coherence, aka "dogfooding." We can't imagine ever spending the time, money, and resources necessary for local development again.
As a startup, we must move at breakneck speeds without compromising our burn rate. Developing remotely in the cloud feels like a secret weapon since we take all the time and money we are saving to focus on delivering value and differentiating ourselves from the competition.
Conclusion
We believe that remote development will revolutionize software development. The benefits of cloud development far outweigh those of local development. It is only a matter of time before remote development becomes the norm and standard practice.
If you want to experience remote development using one of our workspaces, please try one of our free sandboxes.