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)(Read Less)
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.
Citrix’sXenClient Enterprise 4.1 is the first full release since Citrix’s acquisition of Virtual Computer in May. What is new? Is there anything more substantial than a fresh smell of paint? Citrix XenClient had a reputation for being a niche use-case solution, with a limited hardware compatibility list. Does Citrix XenClient 4.1 change that? Citrix’s market dominance has been in delivering remote access to applications – where does XenClient fit a thinner, desktop-PC-lessening world?
Obviously, I’m not going to sit here and laud it that I was right when Citrix actually did acquire Virtual Computer. Because I also said it’d take 12-18 months for integration and here we are, barely 25% of the way through that and a release is out of the door. Like when you bet on Italy in the final of an international soccer competition sometimes you win, sometimes you lose.
Far more importantly, if you’re considering introducing virtual desktop into your enterprise desktop strategy are client hypervisors a tool to consider? What is the competition for XenClient now that NxTop has been subsumed?
There 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?→
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.
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.
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.
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 Jenkins, Anthill Pro, CruiseControl, go, Visual Studio TFS 2010, TeamForge, BuildMaster, 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.
For those wanting to learn more about Continuous Integration, I recommend these resources:
At 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→
One 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→