we as developers, seek as much control as possible. This leads many of us to feel that we will have more control over our development environment the more local it is. After all, this is how it has always been.
Local development has benefits, but they could be shortsighted if you design distributed systems relying on managed services.
A faster iteration speed of developing locally does not help if invested in futile work, such as mocking managed services for local testing.
The long road is still ahead.
There are numerous reasons cloud development might be advantageous.
For instance, even though you wish to develop on Windows, your code will finally execute on Linux. You might require more RAM or processing power than your present machine can provide, or you might need to keep code off your personal computer due to a business policy.
Although it has been a long road from on-premise to the cloud, today's software frequently includes virtual machines, containerisation, microservices, managed services, and serverless technology.
In the past, you could efficiently operate a virtual machine on your personal computer and communicate with it as though it were online. But maintaining this has become increasingly difficult.
The quest to boost developer productivity...
Let's look at the journey from local development to container-based cloud development.
Have you ever started a new project eager to get to work and begin writing code but instead received screens and screens of instructions to set up your environment?
You wait for install commands to complete for hours while being passed from colleague to colleague to troubleshoot build issues. Before you can complete the job effectively, it may just take days.
When you get beyond the onboarding hurdle, your team needs to update one of the project's dependency versions. So after testing the upgrade and pushing any refactoring updates, you must install the latest version on your machine. However, your team members' computers run macOS while yours run Windows.
Thus, the adjustments aren't taking effect in their environment, so you still have more debugging to perform. Then, you must ensure that all the upgrades function correctly in production.
And the ball is still rolling... to infinity and beyond.
Containers to the rescue!
It was precisely for this reason that containers initially appeared in the virtual world: as a more efficient means of product delivery. They offer a mechanism to ship your software, including all its dependencies, configuration files, and binaries.
More than 75% of all enterprises worldwide are expected to operate containerised apps in production by 2023, up from fewer than 30% in 2020.
Because the container contains everything the software needs to run, less time is wasted on configuration overhead. After that, moving the container from one environment to another is simple.
Containers are typically used when the code is prepared to be deployed to production.
This paradigm performs a great job of streamlining the software development lifecycle at the very end.
Still, it doesn't help developers when they are writing and testing the code.
Container-based development appeared to close this gap.
With the advantages of container-based cloud development, developers may start writing code in no time.
You have access to resources on another system that can instantly be set up and made available anywhere in the cloud.
A development container hosted in the cloud that is ready whenever you need it may be created and configured in minutes. Then, instead of relying on your laptop's resources to keep up with the demand, you may connect via your editor (on the desktop or, for example, within the Codeanywhere cloud IDE) to a working environment that is totally controlled by you.
Container-based cloud development reduces the requirement to simulate external tools and services and lowers the possibility of discrepancies between development and production environments.
As software engineers, we aim to spend more time creating new stuff and less time configuring it.
Industry trends should and can be leveraged to help developers become more productive.
Reposted to Blog