The world is fast moving to Software-as-a-Service (SaaS) and we developers are busy learning how to build SaaS applications.
We can now finally do that using nothing but SaaS applications ourselves.
The Developer’s Toolbox
As developers, we don’t ask for much.
An Integrated Development Environment (IDE) lets us do our main task: writing code. A Source Code Management (SCM) system stores our Heartbreaking Work of Staggering Genius. A Continuous Integration (CI) server pulls our code through hoops that prove it is ready for use. And finally a Platform-as-a-Service (PaaS) or other deployment environment runs our applications.
We are used to running all of these on premises. IDEs like Eclipse or IntelliJ run on our local machines. SCMs like Git or Subversion run on some company server, as does our Jenkins/Hudson or TeamCity CI server. Finally, we deploy to a Paas like CloudFoundry, or to a custom server.
Most of those tools already run in the cloud. For those that don’t, we can easily find good alternatives. Let’s take a look at some of the candidates.
Integrated Development Environments
Neither can match a local IDE experience yet, but the gap is closing. On the other hand, they offer some functionality you won’t easily find in locally installed IDEs, like remote pair programming.
Source Code Management
Git has taken over the world, and the SaaS version of it, GitHub, is following suit.
Some people even think that your GitHub profile is your resume.
Again, you can use the hosted version (with public or private repositories), or install GitHub in your data center.
Both Cloud9 and Codenvy work seamlessly with GitHub repositories.
Jenkins/Hudson is the leader in this space, and CloudBees offers a SaaS version. Other products include Bamboo, Travis CI and CodeShip. Some of these are free for open source projects. Again, there are hosted and on premises versions.
The CI tools support GitHub through public SSH keys for access and commit hooks for starting jobs.
After GitHub, these are probably the most familiar to you: Pivotal CloudFoundry, Heroku, Google App Engine, and Azure. CloudFoundry is backed by many big organizations (including the company I work for, EMC) and seems to be emerging as the leader.
Some cloud IDEs let you push to a PaaS directly, but I don’t think that’s the right way to do it.
You should commit to your SCM and let CI pick up your changes.
Your CI jobs should be responsible for pushing to the PaaS. Your CI may have a custom integration to your PaaS, or you may have to use something like the CloudFoundry command-line interface to push your changes.
It seems that our entire tool chain is now available as a service, although the IDEs still leave us wanting a bit. Most of these tools are available as open source and can be deployed in your own data center.
Looks like we’re making some progress towards a Frictionless Development Environment!
What SaaS applications are you using for software development? Please leave a comment below.