Traditional IDEs were late entrants to the market to support the wave of HTML5 development. The developers did not prioritize the UI approach popularized by traditional IDEs. Thus, fast and performant text editors such as Textmate, Sublime Text, Atom, VS Code etc. became popular amongst developers. Most developers used it for development of wide varied of applications ranging from APIs to mobile applications.
Features such as runtime environment, debugger, and source code/symbol mapping were implemented in the web browsers, which were traditionally offered by the IDE front-end. It was only a matter of time to implement actual experience of coding within the browser window.
Development environment in the browser benefits a different class of developers as well. As more applications are becoming cloud native, the inability to have an execution environment or a ‘local cloud’ on one’s desktop becomes more pronounced. A cloud-based development environment accessible from one’s browser window also caters to the cloud developer.
Why should we opt for Development Environment on the Cloud?
The notion of having development environment on the cloud seems to be inspired from the terminal-based mainframe development approach. However, there have been many improvements in the past couple of decades, such as collaboration, immutable infrastructure and running applications on a variety of environments. With cloud-based development, it is possible for a developer to run over 200 test cases simultaneously on a farm of virtual machines across different browsers, browser versions, operating systems and hardware configurations.
A Cloud IDE has features that help in various ways such as:
- Onboarding a developer or a team onto a project quickly and smoothly
- Allowing advanced scenarios that help developers leverage multiple programming languages (also known as polyglot programming) and target mobile form factor applications without changing the IDE
- Developing a wide variety of applications, from web-based applications and microservices to mobile applications
- Sharing of workspace/code/artifacts using normal source code control techniques. Additionally, it also allows developers to share their dev environment, taking collaborative development/pair programming to a completely new level.
- Allowing developers to clone their workspace with a few clicks. This helps to quickly create new branches of the same workspace for new projects and Clients
- Supports popular version control tools such as Git and SVN
Cloud-based development environments can be optimally used for development of:
- Cloud native microservices, for processing HL7, CDA/CCDA, FHIR, etc. messages
- Cloud deployed backend server in Node.js for supporting different healthcare mobile apps.
- Backend services deployed on cloud to ingest and manipulate data
- Customized web applications for healthcare organizations specific needs. This needs no investment in local full-fledged development environments
Advantages of development environment on cloud
Development environment on the cloud has following advantages over traditional environments.
- Lighter footprint: helps to increase productivity and efficiency due to faster set-up
- Better Agility: Most cloud IDE's have an inbuilt ability to deploy code on cloud. Deploying code from development to Test and to Production/Live environments becomes easier.
- Cost: Licensing or subscribing to a cloud-based development environment tends to be more cost-effective. It may vary based on application stack used and the size of the development team.
- Accessibility: Developers can access their development environment from anywhere, using any device
Disadvantages of development environment on cloud
- Developers need internet connectivity at all times
- Latency and bandwidth issues impact productivity
- Availability is vendor controlled
- Less than seamless experience to execute and debug GUI apps
- Code and other artifacts are on 3rdparty servers. Hence, one should consider compliance to security and privacy regulations
Different Cloud development environments
One can also set up a development stack using a virtual machine on public cloud. Apart from that, cloud-based IDEs such as Cloud9 and Codenvy are also available. Below are the most popular among all.
Cloud9 is a cloud-based IDE, which developers can access via latest browsers. It supports GitHub and BitBucket code repositories. Cloud9 has integration with Google Cloud Platform. This makes it easy to create Google App Engine projects. It only allows external access to ports such as 8080, 8081 and 8082 over http(s) hence restricting creation of app, which uses any other protocol. Cloud9 supports languages like Node.js, Ruby, C++, etc.
Codenvy is a cloud-based IDE which a developer can access using latest browsers. It has pre-configured framework stacks like Java, .NET, Node.js, etc. Codenvy supports Git and SVN. It also has Android stack for facilitating app development and packaging.
In summary, cloud IDE gives seamless experience for developing cloud or web-based apps. Local development environment is suitable for thick client and network protocol oriented applications.