Blog

Search This Blog

Loading...

Monday, April 2, 2012

Why Aren't You Developing in the Cloud?


Cloud computing has completely altered software distribution. Traditionally, software licenses were purchased, installed and accessed on personal machines. Today, most applications are service based and accessible from any network connected device. E-mail, documents and even business applications have transitioned to SaaS applications and give users quicker access, more control and fewer dependencies compared to installable software.

Software-as-a-Service (SaaS) has become the most popular way to consume software; however, when it comes to developing software, the majority of developers have yet to abandon their local installations for service-based alternatives. Cloud application services are growing by leaps and bounds and it won’t be long before applications, both large and small, will be developed almost exclusively using cloud services. It all started for me when we started using Amazon's SimpleDB. There just wasn't an offline option so I was forced into using a service for my database that I couldn’t install locally. But now that I’ve done it, there’s no going back.

The number one objection to transitioning to a cloud development model is fairly simple: connectivity. The only way to get value from a cloud development environment is to connect to it. While Internet connectivity is fairly ubiquitous, it isn’t everywhere (yet). Developers on the go prefer to keep their projects locally so they don’t have to worry about Internet connection. Second would be performance. It is a lot slower to connect to your database in the cloud than it is to connect to a local database, but unless you’re moving lots of data, that is pretty negligible.


But for any of you developers out there who aren’t experiencing connectivity challenges, you may want to give cloud development a try. Just like the benefits of SaaS over installable software, building applications on cloud services makes development a whole lot simpler and faster.

No Installations or Configuration

It doesn’t matter what kind of application you are building, you don’t need to install a thing (except your sdk/editor/ide of course). Firing up a database or connecting a software component is as easy as punching in a couple lines of code. Building a full dev environment locally can take hours to get all the software installed and configured. In the cloud, it takes minutes to tie services together so you can stop with all the busy work and start developing.

More Accessible

Creating software with a local dev environment can be quite an anchor, especially if you are working on a desktop. Keeping your code on an accessible service like GitHub and using cloud application services allows developers to build from any machine without extra setup/configuration, making it easy to take the project anywhere there is an Internet connection. Making development environments accessible also makes it easy to share the projects with others.

You get a new computer, clone your code, and you're working in minutes. You can switch from desktop to laptop, pull latest changes, and you're working again. When a new developer joins the team, he/she clones the repository, runs the app immediately and is working in minutes. If someone on the team adds a new service, like say an awesome message queue, the rest of the team doesn't need to install any MQ software, they just pull the latest code. The only thing I still run locally is the application code itself and even that will probably be in the cloud soon when we start seeing more Cloud 9’s.

Collaboration

Not all projects require collaboration, but making a collaborative development environment on a local machine or server is much more challenging. Cloud environments provide a secure, robust and collaborative development environment right out of the box without all the headaches. There are no software or hardware dependencies - just connect and collaborate.

Reduces Gap Between Development and Production

Understandably, development and production environments will never be identical, but if a development environment is installed locally and the production environment is in the cloud there can be a host of differences between the two. A classic, and very common, issue amongst Rails developers was a lot of people developed their Rails apps locally using the default Rails database sqlite, but nobody used sqlite in production. So when it came time to deploy to production which was using a totally different database, the problems would surface. And sometimes these differences are subtle and aren’t noticed right away and these are the worst kind of issues.

Are you an early adopter of developing in the cloud or are you still tied to your local machine? Why or why not? I would love to hear your thoughts in the comments below.