InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Bamboo Continuous Integration Server Adds Amazon EC2 Build Agents

Posted by Dave West on Mar 26, 2009

Sections
Process & Practices,
Architecture & Design,
Operations & Infrastructure
Topics
Cloud Computing ,
Build systems ,
Agile
Tags
Continuous Integration ,
EC2 ,
Atlassian

Continuous Integration (CI) facilitates the daily build and test-driven development practices that support high-performance Agile teams. But CI puts significant, and variable, demand on resources. If a team's compute resources are fixed and demand for those resources increases as the team approaches a release (more tests are being introduced, more code requires build and integration) they can pay a significant penalty in terms of waiting time.

Clouds, such as Amazon's EC2 offering, provide a way to scale resources to meet that kind of variable demand. Ken Olofsen's blog post on the announcement of the version 2.2 release of Atlassian's Bamboo Continuous Integration Server notes a new feature, "Elastic Bamboo," that directly addresses this scaling issue:

... Bamboo can launch remote build agents, or elastic agents, into the cloud.
This is great for reducing build queues on those days leading up to a major milestone when everyone is checking in loads of changes all day long. Less queuing means quicker feedback, so you can get on with everything else you need to do.

An elastic agent differs from a standard remote agent only in the fact that it exists in the cloud and therefore can be intialized, used, and terminated as demand warrants. Costs for the resource are not incurred unless it is being used. Atlassian believes, although it is too early to determine exactly, that teams will realize significant cost savings using this solution.

While using Bamboo 2.2 for their in-house development, Atlassian, discovered and addressed issues likely to be encountered by their customers. One of the more interesting issues is the assumption of a robust context for the CI Server. Edwin Wong (also of Atlassian) notes:

... builds were not entirely "environment agnostic", in that they assume some setup on the environment has already happened.

The other issue is what some of our engineers on the team have dubbed the "download the entire internet" problem. ... a sizable amount of dependencies needed to be pulled down from the public repositories. Most of these dependencies are quite static. But because we blow away our instances every time, these downloads need to happen every single time an instance starts up (which can, potentially, be every build).

EC2 offers a service, Elastic Block Store (EBS), that acts as a "mountable drive" that you can attach to an instance of your cloud image. Storing all of the static dependencies as well as snapshots of the running instance, in an EBS drive allows customization of a cloud image and an easy means to snapshot that image. Wong's post includes additional details.

Atlassian is known for its support of developer communities, non-profits, and open source. They offer special licensing terms for its products as a means of showing that support.

  • This article is part of a featured topic series on Agile

No comments

Watch Thread Reply

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.