Business Agility

Business Agility covers using the technical agility delivered by virtualization and cloud computing to improve business agility, performance and results. This includes the agility derived from the proper implementation of Agile and DevOps methodologies, the agility derived from proper application and system architectures, (Read More)

the agility derived from the proper implementation of Infrastructure as a Server (IaaS), Platform as a Service (PaaS) and Software as a Service (SaaS) clouds, the agility derived from proper monitoring of the environment coupled with a process to resolve problems quickly, and the agility derived from have continuous availability through the use of high availability and disaster recovery products and procedures in place.

News: Windows 2012 Licensing – Mircrosoft learns from VMware’s mistakes?

Microsoft100x30There was an amount of kerfuffle when VMware released vSphere v5.0 and moved to a memory centric licensing model. We speculated on whether other vendors would follow suit. Microsoft has unveiled Windows 2012 licensing terms, which it claims make licensing simpler and better value . The thing to commit to memory? There are now only four versions, and licensing is processor and client access license based. Continue reading News: Windows 2012 Licensing – Mircrosoft learns from VMware’s mistakes?

Enter the FrankenCloud: Or Do we really care about the Hypervisor?

CloudComputingThere has been quite a lot of twitter traffic about the FrankenCloud recently: A cloud with more than one type of hypervisor underneath it. One example, is to build a cloud using Hyper-V three and vSphere, both managed through Microsoft System Center. Another example, is to build a cloud using Hyper-V, KVM, and vSphere all managed through HotLink. But is this a desired cloud topology? Continue reading Enter the FrankenCloud: Or Do we really care about the Hypervisor?

Continuous Integration in the Cloud

Continuous Integration in the cloud

Continuous Integration in the cloud
Continuous Integration in the cloud

In our intro on Agile Cloud Development, we articulated why we think this is the future of software development. Today we’ll kick off the Dev in the Cloud series with a look at Continuous Integration (CI) and the cloud’s impact on this popular agile development practice. We’ll explain how CI is the essential building block for Continuous Deployment, the secret sauce for start-ups from Facebook to Netflix. We’ll also highlight the marketplace for the growing number of CI products hosted in the cloud. While some vendors today are offering hosted solutions for just CI, others are including CI as part of their more comprehensive developer Platform as a Service (PaaS) that manages the entire build-test-deploy process.

What is Continuous Integration?

Continuos Integration is the practice of integrating software very often, typically on any change to an artifact in the source repository. Anytime a team members commits a change to the repository, continuous integration ensures their change was safe and the software can be successfully built, tested and deployed.

CI is the software industry’s version of Toyota’s Stop the Line principle, where work is stopped immediately if a quality problem is found. Because code integration is often a manual, error prone effort, especially on large systems or those that build infrequently, the traditional thinking has been to do it less often in order to avoid the cost of integrating (keep costs low). CI runs counter to this and adopts opposite philosophy, “if it’s hard to do, do it more often”. This means you should integrate more often, not less often. Taken to the extreme this means on on every change to the repository.

Doing this without automation would be prohibitively expensive for most teams. But by leveraging automation to detect changes in repositories and subsequently execute a script that downloads, compiles, packages, tests and deploys the software – the cost to complete this cycle dramatically drops and you get a wealth of benefits.

Continuous Integration is the key building block for Continuous Delivery, the practice of keeping your application in a state where it is always possible to deploy into production. This in turn is the building block for Continuous Deployment, the practice of deploying every change into production. These capabilities provide the business agility start-ups like Facebook, Netlflix and Groupon rely on to deploy changes to their products daily to continually improve their customer’s experience.

Benefits

The primary benefits of CI for organizations and teams include:

  • Improved Quality – Quality is primarily improved through reduced time to detect and resolve issues. When CI is in place teams find and fix issues quickly and generally “keep the build green” throughout development. When issues do occur, teams “stop the line” and address integration defects right away. Automation of most all key tasks to build and deploy helps reduce human error and improve repeatability.
  • Faster Release Cycles – Teams using CI can release code faster because the code always stays in a deployable state. Teams using Continuous Deployment take this concept to the extreme, deploying releases to production everyday by automating all tasks from source repository until running in production.
  • Improved Velocity – CI helps teams achieve a higher velocity (throughput) but automating the mundane development tasks so teams can focus more of their time on building new capabilities. When used in conjunction with automated regression testing, CI can also shorten the testing window at the end of each iteration.
  • Scalability – How do you get 20, 50 or 100+ agile developers all actively working on the same codebase? Without CI, this is very difficult because of the rapid pace of change to the codebase. With CI, your teams can scale as your business scales without sacrificing quality and speed.
  • Reduced Costs – This comes as a by-product of the benefits above. CI can lower the development and maintenance costs through automation and improved quality.
  • Improved Culture – Perhaps the biggest impact on agile teams is the improved culture of quality that’s instilled through CI. Quite simply, CI becomes the  heartbeat of development and a wonderful metaphor for the overall health of the project or product. Teams using CI take pride in consistently producing high quality software that always passes the tests and is ready for deployment.

In addition to these, CI in the cloud offers a few more:

  • Faster Startup – No more hassles with provisioning a new build server, downloading software, installing, configuring and managing your own CI environments. Not to mention patches,  upgrades and maintenance. All of these services can be provided by CI products designed to run in cloud either stand-alone or within broader development platform as a service tools.
  • Elasticity – Need more resources to build, test and deploy your applications faster? Why not leverage the cloud’s elastic benefits to provision these on-demand and greatly reduce the time to run large builds or regression test suites.

Cloud Computing Impact

Continuous Integration came from the XP community with Kent Beck and Martin Fowler as early advocates. Today it has grown into one of the most common development practices in agile development with a marketplace of tools for doing continuous integration with a variety of technology platforms. As development and deployment tools have moved toward the cloud, so have CI products.

While most CI products are still designed to download and run in locals environments, the cloud has created a new breed of products that provide CI services on hosted platforms that teams can began using quickly. Now you can avoid the hassles, costs and time of procuring a new environment, downloading, installing and configuring the CI software. Now it’s hosted in the cloud for you, just configure and go. Need more horsepower to speed up build times? Not a problem, some of these products can leverage the cloud’s elasticity to provision extra build resources on-demand and even parallel the build tasks.

Marketplace

The market for cloud-based CI solutions continues to grow as many established CI vendors now offer hosted versions of their products. Many of these started life as downloadable CI products but are now hosted in the cloud as a part of a larger integrated development Platform as a Service (dPaaS) solutions.

These solutions integrate all parts of software development and delivery including requirements and project management, source control, building, testing, release management, issue tracking and collaboration from a single cloud-based product. Larger dPaas solutions that include CI include Bamboo, CloudBees, CloudForge and Electric Commander. These solutions are focused on enterprise customers and their needs whereas focused CI solutions for the Ruby (tddium) and iOS (hostedci) markets are primarily focused on the developer community and their needs.

Popular Continuous Integration in the Cloud Tools
VendorProductStrengths
 Atlassian BambooIntegration with JIRA
Integrated Development Platform as a Service
Elastic Agents for cloud builds
Automatic Branching and Merging
 Cloudbees, Inc Cloudbees Java Focus and Support
Integrated Development Platform as a Service
Built on open-source Jenkins
 CollabNet CloudForgeEnterprise Focus and Hybrid Cloud Support
Integrated Development Platform as a Service
Technology platform agnostic
Integration with popular ALM tools
 Electric Cloud Electric CommanderDevelopment Process agnostic
Custom workflow design and visualization
Technology platform agnostic
Integration with popular ALM tools
hostedcihostedci iOS / OSX / Mac Focus and Support
Built on open-source Jenkins
Solano Labs, inc.tddium Ruby Focus and Support
Integrated Automated Testing

In addition to these hosted solutions above, downloadable CI products exist for private clouds or internal virtualized environments. Popular ones include JenkinsAnthill Pro, CruiseControl, go, Visual Studio TFS 2010, TeamForgeBuildMaster, Mojo and Buildbot. For those teams not ready to move entirely to a hosted CI solution, many are still migrating internal build servers running CI to Amazon EC2 instances for improved management and reduced costs.

Resources

For those wanting to learn more about Continuous Integration, I recommend these resources:

BooksArticlesRelated BlogsTwitter
Continuous Integration by Paul Duvall Continuous Integration by Martin FowlerContinuous Delivery#ContinuousDelivery
Continuous Delivery by Jez Humble and David Farley Continuous Delivery Guide by Martin FowlerStelligent Blog 
 Continuous Delivery vs. Continuous Deployment by Jez HumbleNetflix Tech Blog
 Continuous Delivery Cheat Sheet by Paul DuvallBuild Doctor
dev2ops

Rethinking Your Already Virtualized Low Hanging Fruit

Virtualization ManagementAt VMworld 2011, VMware presented a chart that showed their progress in terms of virtualizing various workloads in their own customer base.  The chart (shown below) demonstrated that VMware had made some really good progress with some really hard workloads, and mostly excellent progress with easy workloads (low hanging fruit). The interesting question is what is the best way to proceed from here on out. Continue reading Rethinking Your Already Virtualized Low Hanging Fruit

Moving to the Cloud as a Service or as a Machine

CloudComputingOne of the decisions faced by anyone that wishes to have a cloud presence is what will be moved to the cloud, why, and whether or not there is a service that can be used instead of using virtual machines.  Give The Virtualization Practice’s case, we plan on moving our customer facing VMs to the cloud, but what are those machines? The most important are a Web Server with a split LAMP stack, a Mail Server, and DNS. Continue reading Moving to the Cloud as a Service or as a Machine

Cisco puts Cius on hold as BYOD growth kills the enterprise tablet

DesktopVirtualizationThe continued growth of BYOD and the increased maturity of mobile device management and mobile application management tools have forced Cisco to rethink both its enterprise collaboration strategy and its tablet strategy. Cisco came early to the enterprise tablet market announcing the Cius in mid-2010 just 3 months after Apple launched the first generation iPad.  Continue reading Cisco puts Cius on hold as BYOD growth kills the enterprise tablet