Could your next development environment be in the cloud?

by

Your new project has been given the green light. You need to get your team up and running quickly.  Could a cloud based development environment be the answer? This blog discusses some of the options  and issues for moving to a  hosted development environment.

Cloud City

One of the first tasks for any Agile project team is to establish a robust, reliable set of development tools and associated infrastructure. Generally on any new development endeavour the following needs to be put in place:

  • Locate or create a source code repository and import your skeleton project.
  • Locate or create a continuous integration server to build your source code, run your tests and notify the team via email of any failures.
  • Locate or create a task/user story tracking server and/or issue management tool and add your project to it.
  • Locate or create your test environments for developer smoke, integration, and functional testing.

Now you might be lucky and have much of this infrastructure in place, in which case adding some extra users, a new project and associated set of build jobs might be relatively straightforward. However, if it isn’t you will need to   allocate a decent chunk of time to setting things up yourself. This may involve procurement of hardware, installation of an appropriate OS, installation of the relevant applications, providing secure access to project team members and so on. This gets more complex if the team is distributed and the infrastructure must be accessible beyond a LAN.

Often these development tools are open source, which means that while the cost of acquisition for the software may be zero, the ongoing maintenance and support will probably require specialist knowledge.  Any time your team spends doing this is time that could be spent progressing the project.

With either option, server space and administration time is required and there are obviously costs associated with this, and the costs may be disproportionately large to small and medium-sized organisations.

In the same way that SaaS offerings for email and collaboration suites (such as Google Apps) have sought over the past few years sought to turn these services into low-cost, click-and-go commodities, there are now equivalent hosted solution options available for Agile development infrastructure.

Hosted version control solutions have been available for a while and the market has expanded rapidly over the past few years. Collabnet (the people behind Subversion) and CVSdude are probably the best known. Both companies have expanded their offerings, and not only provide version control but are bundled with or integrate to a host of other tools.  These now compete with newer entrants like Beanstalk, Assembla and Unfuddle (which also does Git hosting). GitHub itself has seen huge growth over the past year, with over 400 new users and 1,000 projects being added each day.

Coming from the other direction are suppliers of Development collaboration and productivity tools, Atlassian are probably the biggest player here and their hosted JIRA studio suite based around the very popular Jira issue tracking tool was launched in May 2008.  Fogbugz is another alternative, based around an integrated Project Management, Wiki, Issue Management and Helpdesk set of tools.

Each vendor has a different focus with JIRA studio and Collabnet’s Team-Forge perhaps the most fully featured for development teams. Both offer a very comprehensive stack and are moving towards the idea of an Application Lifecycle Management (ALM) suite. It will be interesting to see how these platforms develop, and how the traditional Enterprise tool vendors (IBM Rational, Microsoft and Borland) respond.

If  a platform sounds too restrictive and you want to “pick and mix” your own set of tools you can.  There are also some great tools which focus on a specific area – Basecamp for Project Management and Lighthouse for Issue Management are a couple of well-known examples worth looking at. Most of these tools have open APIs that enable you to integrate easily with others, so getting together an integrated  set of tooling is easily achievable.

My advice here is to be clear about what you want from these tools. Some are very feature rich and developer centric while others do a great job of providing a clean and simple process and interface. So which tools suits you will depend on your project, your team, and your organisation. What is clear though is that there is growth in this sector, increased competition and greater integration between the providers. All of this can only be good for those who are happy to outsource their development environments – increased choice and competition against a backdrop of  decreasing hosting costs.

Moving on from  managing your project to testing it, the use of externalized environments that allow teams to deploy a release of a web-based application and run functional tests against it, is trickier. Depending on the nature of the application and its associated runtime dependencies this may require the creation of a bespoke environment. However, recent developments in cloud computing should soon make this much easier. Google’s App Engine for example allows you to run Java (and Python) applications on their infrastructure. So if the AppEngine is your production target, creating a test environment that is a clone of production should be a relatively straight-forward activity. More recently in August this year, SpringSource launched their Cloud Foundry which allows you to rapidly deploy a test (and also production) environment for your Java web application with a few mouse clicks and Microsoft have also weighed in with Azure. Both Google and Microsoft are promising tighter integration with the IDE, and I’ll be watching these platforms closely.

One area which is less mature is hosted continuous integration. There are currently only a small number of pioneering providers in this space, which may surprise some, as the practice of continuous integration is at the heart of the Agile development process. The SaaS multi-tenant application model does not fit easily with the requirements for continuous and often complex software builds. It is computing resource intensive activity, especially for programming languages such as Java, and this will inevitably impact the cost of such a service to the end-user. Mike CI is one of these pioneers and there is a good analysis of the others here.

Now I’m not saying trusting your code to a 3rd party is a simple decision to make. There are often legal, security and organisational hurdles to consider. It isn’t be for everyone and for many large corporates it might be a step too far. But for many people the cost, convenience and management overhead of maintaining it all yourself does not stack up. Your team is in place to write great software. For your next project, I’d recommend that you seriously consider using these low-cost, on-demand hosted services.

Advertisements

Tags: , , , ,

14 Responses to “Could your next development environment be in the cloud?”

  1. Jesse Gibbs Says:

    Nice summary of the cloud-based offerings available to teams.

    A quick note on hosted CI: Atlassian’s Bamboo is now available as part of our JIRA Studio offering. Bamboo builds run in the Amazon EC2 cloud, allowing teams to run as many agents as they wish to support their CI needs. This feature is currently available to all Studio customers as a Beta feature, and will be feature complete when we launch JIRA Studio next month.

    • Chris Neal Says:

      Hi Jesse thanks for reading. One question regarding Bamboo CI – do Studio users who want this need a separate EC2 account? Presumably you give them a preconfigured AMI and then they get billed on the the build time they use on that AMI.

      • jgibbsatlassian Says:

        Hi Chris,

        Yes, Studio users need to have a separate Amazon EC2 account. They can use one of our pre-built AMIs, or create their own. They are billed by Amazon for the time the builds are running, separate from their JIRA Studio billing.

      • Chris Neal Says:

        Thanks for the reply Jesse.

  2. C. G. Brown Says:

    Hi Chris, this is a great roundup of the expanding list of cloud services. My company, ProjectLocker (http://www.projectlocker.com), also offers free and low-cost Git hosting, Subversion hosting, and Trac hosting, along with integrations to an increasing number of partners. We strongly agree that using the cloud for these services is more economical and in many ways safer than doing it yourself, and encourage customers to look at us and our competitors to choose the service that best suits their needs.

  3. rdempsey Says:

    Hi Chris, great post on the stack that a team needs to be able to develop. In the Rails world, for a hosted CI solution, there is Run Code Run (http://runcoderun.com/). I know a number of shops that have used it and liked it. Also, as a shameless plug, for companies that are practicing Agile, our app Scrum’d (http://scrumd.com) holds to the rules of scrum’d. We’re working on integrating with hosted repo services as well.

  4. Beth Schechner Says:

    Hi Chris – Nice collection of Cloud and Host Solution vendors.

    Since you mentioned suppliers of Development collaboration and productivity tools specifically, I wanted to add one more to your list. Elementool (www.elementool.com) launched in 2000 as a web-based Issue Tracking tool. We now offer 7 integrated SaaS tools in addition to Issue tracking, including Help Desk, Test Cases, File Sharing, Forums, Time Tracking and Docs. The last is the result of an API intergration partnership with Zoho.

  5. Shanon Says:

    Great Post. I’m just dreaming about starting a rails project…

    Source: GitHub.com
    Issues: GitHub.com
    Continuos Integration: RunCodeRun.com
    Deployment: Heroku.com
    Monitoring: NewRelic.com

  6. Hussam Ahmad Says:

    Hi and thanks for a very good summary. I was looking for such an overview of possibilities for develpment teams. Unfortunatly, it is still a little bit far away from possible to move a more complex development environment to the cloud. When I say “complex” I think about systems that have been develped over years and may utilize different development tools and technologies.

    Hope we will be able one day to abstract the underlying platform and make the develpment process focus only on delivering value.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s


%d bloggers like this: