Since we first announced Bungee Connect we have been advocating moving development of web applications to the cloud. During this time we have talked with many companies and developers about the benefits of a cloud-based development process. While most have been receptive to the idea, a few are a little afraid of what development in the cloud means and its impact to their overall productivity. Some of the most common fears we hear include things like “the code is not on my machine”, “I don’t control the environment”, “What about source control and team development”, and “I don’t manage the provisioning process”.
We agree that these are legitimate concerns, but we also believe they can be resolved entirely in the cloud, using a platform-as-a-service (PaaS). Let me illustrate:
Since the inception of the web, there have been many applications and utilities that have benefited from its distributed nature. First, sales and marketing teams became more effective with on-demand CRM systems by replacing fat clients with web browsers—freeing them to work when and where they want. Then entire organizations began collaborating more efficiently by moving document management systems out of email and onto the web. At both work and home, the majority of us now use Wikipedia as a preferred reference source, where we benefit from an editing process that was moved from a small group of editors to a global group of domain experts.
Development can see the same results by moving the entire process to the web. Removing the need to build and maintain individual development environments can free developers to focus on the creation of the applications they need to build. Also, moving the development process to the target platform where the application will be delivered enables them to have a clearer understanding of how the application will behave as it’s delivered to end users. Because development is native to the web, developers will be able to more easily share and collaborate with other developers on the projects they are currently working on.
A development environment is made up of many different moving pieces, installed and configured to work on one workstation or within a LAN. As the individual pieces change and update, developers are left to patch and reconfigure the environment, hoping everything will continue to play well with each other. This leaves the developers at the mercy of the roadmap of many different API providers, whose changes invariably disrupt the current configurations as updates are applied.
Development on the cloud doesn’t require any time-wasted in configuration or updates. Updates and patches are handled transparently by the PaaS vendor with no involvement required by each independent app developer. Changes that would affect interoperability and configuration are tracked and managed by the PaaS system as a policy rather than as a “design pattern” or style that changes from developer to developer, sometimes within the same project.
Create and Edit anywhere
In the cloud, application creation and editing can happen anywhere there is browser access. No longer do developers need to be concerned with figuring out how to get to their machine or taking their machine with them everywhere they go. With nothing to install or maintain, developers can easily switch between machines as their needs dictate without the loss of productivity or effectiveness.
If a developer is away from their main machine they simply login to their cloud-based development environment and have full access to the entire development environment without installing or configuring anything on the machine they are currently using. In this way they can be immediately productive without the hassle of configuring yet another environment.
Share and collaborate
Wikipedia has enabled millions of individuals to collaborate on the collection and presentation of information, creating a more thorough and accurate compilation of information than could be created by a smaller group of individuals. Web applications can also benefit from the same level of collaboration.
Through the cloud, developers can share and collaborate with other developers on a more granular level than through traditional methods. Because the code lives in the cloud, not on individual machines developers can grant access to entire projects, or even just pieces of the project, quickly and easily. Not only can they grant access, but they can also revoke access without concern that the code is still on the other developer’s machine.
Sharing through the cloud also ensures that the code will operate the same way with the other developers as well. No need to worry about making sure they have the same version and build of the development environment. Team developers are automatically on the same version and can seamlessly share between one another.
Code, like content of any kind, becomes more complex to manage as more versions and iterations are created. Introducing a revision control system is necessary for most development activities. With a cloud-based development process the revision control system is integrated directly into the environment and does not require any additional systems to be built or maintained. In a fully integrated cloud-based development system, snapshots and versions of an application will continue to work no matter who opens the code on which machine. With traditional non-web-driven environments, as snapshots of the code are moved between machines the code is susceptible to changes in the environment which could require significant attention before the code will run on the new environment. With a cloud-based environment the code is not tied to any particular machine or local configuration, therefore a developer can access the code from any machine and continue working without concern for version settings or local configuration implications.
Apps created in the cloud are already live and in the cloud, completely eliminating the need to build the app for multiple environments. This unique feature provides developers with a better understanding of how the application will function for end users as the user experience is exactly the same during development as it is during deployment. Instant and incremental deployment capability also makes the process of moving between development, testing and production much less complex because the traditional need for configuring and moving applications between environments.
New technologies offer the promise of new capability and power, sometimes rule changing, but many times we drag along the baggage of old standards and approaches which cause developers to fall into old patterns of use. The result leads to diminished capacity and applying old modes of thinking to new problems as they present themselves in the new world. Developing using previous technological methods, such as client-server application-style development techniques, only results in gating the possibilities of the emerging new age of cloud computing. If you don’t already have a Bungee Connect account, get one here.