<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Xebia Blog &#187; Xebia Labs</title>
	<atom:link href="http://blog.xebia.com/category/xebialabs/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.xebia.com</link>
	<description>Software development done right!</description>
	<lastBuildDate>Wed, 01 Feb 2012 00:30:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Why Application Release Automation needs a Release and an Operations view</title>
		<link>http://blog.xebia.com/2012/02/01/why-application-release-automation-needs-a-release-and-an-operations-view/</link>
		<comments>http://blog.xebia.com/2012/02/01/why-application-release-automation-needs-a-release-and-an-operations-view/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 00:30:00 +0000</pubDate>
		<dc:creator>Andrew Phillips</dc:creator>
				<category><![CDATA[Continuous Delivery]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Methodology]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Xebia Labs]]></category>
		<category><![CDATA[application release automation]]></category>
		<category><![CDATA[continuous delivery]]></category>
		<category><![CDATA[devops]]></category>

	<!-- AutoMeta Start -->
	<category>myapplication</category>
	<category>myapplication</category>
	<category>perspectives</category>
	<category>prod</category>
	<category>devops</category>
	<category>delivery</category>
	<category>owned</category>
	<category>pipeline</category>
	<category>myapplication</category>
	<category>myapplication</category>
	<category>perspectives</category>
	<category>prod</category>
	<category>devops</category>
	<category>delivery</category>
	<category>owned</category>
	<category>pipeline</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=8559</guid>
		<description><![CDATA[As the interface between Development and Operations, Application Release Management1 handles information that is highly relevant to your Release and Operations teams. Selecting an Application Release Automation solution that provides insight and analytics from both perspectives is thus a key component of an effective DevOps strategy. Here, we explain how Deployit&#8216;s Infrastructure and new Release [...]]]></description>
			<content:encoded><![CDATA[<p>As the interface between Development and Operations, Application Release Management<sup>1</sup> handles information that is highly relevant to your Release and Operations teams. Selecting an Application Release Automation solution that provides insight and analytics from <em>both</em> perspectives is thus a key component of an effective DevOps strategy.</p>
<p>Here, we explain how <a href="http://www.xebialabs.com/tour" target="_new">Deployit</a>&#8216;s Infrastructure and new Release Overview features help you achieve this goal.<br />
<span id="more-8559"></span></p>
<h3>Continuous Delivery &#038; the Release Perspective</h3>
<p>In today&#8217;s highly competitive economic environment, the need to bring new features to market quickly, flexibly and reliably is paramount &#8211; a goal that is ultimately the aim of the main IT trends Cloud, Agile and DevOps.</p>
<p>Continuous Delivery &#8211; extending <a href="/2010/10/12/deployment-automation-vs-build-automation/" target="_new">Continuous Integration</a> to  automatically transition applications down the <em>Dev-Test-Acc-Prod</em> delivery pipeline &#8211; is a key component of this strategy. In order to be able to effectively implement this, your ARA solution needs to allow your developers &#8211; or, in larger organisations, release or DevOps teams, to quickly and efficiently answer questions such as:</p>
<ul>
<li><strong>How far is <em>MyApplication</em> down the road to Production?</strong></li>
<li><strong>When will <em>MyApplication</em> take the next step down the road?</strong></li>
<li><strong>What do I still need to do before that next step can be taken<sup>2</sup>?</strong></li>
</ul>
<p><img src="http://blog.xebialabs.com/wp-content/uploads/2012/01/two-perspectives-release1.png" alt="" title="two-perspectives-release" class="aligncenter size-full wp-image-8347" /></p>
<p>Ideally, this dashboard would also allow you to plan <em>MyApplication</em>&#8216;s next step and calculate the estimated go-live data, perhaps even based on an analysis of previews versions of <em>MyApplication</em>.</p>
<h3>(Virtual) Environment Management &#038; the Operations Perspective</h3>
<p>From an Operations point of view, an individual application is only a small part of the picture. Across your <em>Dev-Test-Acc-Prod</em> landscape, you will need to track <em>all</em> applications vying for these environments, to manage potentially conflicting resource requests, plan environment maintenance activities and the like.</p>
<p>Since these environments are often owned and managed by different teams and certainly have varying service levels, you will also want to limit your view to one or a subset of these environments at a time.</p>
<p>Your Operations or DevOps teams need to know:</p>
<ul>
<li><strong>Which application versions are currently deployed to my environment(s), or were deployed at a certain point in time?</strong></li>
<li><strong>Which components do these applications consist of? On which middleware and infrastructure systems are these components deployed?</strong></li>
<li><strong>What are the current values of any properties or settings for these components? Which environment-specific customizations have been applied?</strong></li>
</ul>
<p><img src="http://blog.xebialabs.com/wp-content/uploads/2012/01/two-perspectives-ops1.png" alt="" title="two-perspectives-release" class="aligncenter" /></p>
<p>Cloud and the on-demand environments it enables will eventually replace the rigid <em>Dev-Test-Acc-Prod</em> distinction<sup>3</sup>. Nevertheless, the ability to present an environment-centric view will still be required, since virtual environments will still be owned by different groups or teams. Indeed, such a perspective will be even <em>more</em> important if you want to effectively combat &#8220;virtual sprawl&#8221;.</p>
<p>While the coming generations of &#8220;true&#8221; cloud architectures will hopefully reduce the shared resource conflicts that greatly complicate much of today&#8217;s <em>Dev-Test-Acc-Prod</em> management, databases, legacy systems and external payment providers are not likely to disappear anytime soon.</p>
<p>In fact, Facebook, Twitter and other social elements of your future business services may even <em>increase</em> the number of shared resources you need to manage!</p>
<h3>Incorporating ARA Data in the Service Delivery Picture</h3>
<p>Whilst your ARA solution should be your &#8220;go-to&#8221; platform for answers about how your applications and environments relate, it is equally important to consider when this data might be more effectively embedded in a broader service delivery picture. </p>
<p>For example, your ARA platform is not a good candidate for providing a release calendar, since it is not aware of much of the information that is relevant in this context, such as CAB<sup>4</sup> meeting schedules, business sign-off dates or operational maintenance windows.</p>
<p>It is thus important to ensure that your ARA solution can make its data accessible via APIs such as RSS feeds, iCal calendars and other APIs, to enable effective integrations with the rest of your service delivery tooling.</p>
<h3>Conclusion</h3>
<p>The right Application Release Automation platform gives your Delivery and Operations teams fast, accurate insight into your application environments and delivery pipeline. </p>
<p>Choosing a solution like <a href="http://www.xebialabs.com/tour" target="_new">Deployit</a> with focused Operations and Delivery overviews as well as open APIs for easy integration into your overall Service Delivery dashboards and reports greatly enhances the accessibility and effectiveness of your application release management.</p>
<div style="background-color: #efeeea; border: 1px solid #AAAAAA; margin: 0.8em; padding: 0.4em; font-size: 85%;"><strong>Footnotes</strong></p>
<ol>
<li>a.k.a. <em>Deployment Automation</em> &#8211; choose your favourite <img src='http://blog.xebia.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </li>
<li>For instance, certain blocking release conditions, such as test sign-off, may still need to be met.</li>
<li>and have long done so in many forward-looking organisations</li>
<li><a href="http://en.wikipedia.org/wiki/Change_Advisory_Board" target="_new"><strong>C</strong>hange <strong>A</strong>dvisory <strong>B</strong>oard</a></li>
</ol>
</div>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2012/02/01/why-application-release-automation-needs-a-release-and-an-operations-view/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2012%2F02%2F01%2Fwhy-application-release-automation-needs-a-release-and-an-operations-view%2F&amp;title=Why%20Application%20Release%20Automation%20needs%20a%20Release%20%3Cem%3Eand%3C%2Fem%3E%20an%20Operations%20view" id="wpa2a_2"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2012/02/01/why-application-release-automation-needs-a-release-and-an-operations-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Taking Application Release Automation to the Next Level</title>
		<link>http://blog.xebia.com/2011/11/29/taking-application-release-automation-to-the-next-level/</link>
		<comments>http://blog.xebia.com/2011/11/29/taking-application-release-automation-to-the-next-level/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 18:54:29 +0000</pubDate>
		<dc:creator>Andrew Phillips</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Xebia Labs]]></category>
		<category><![CDATA[application release automation]]></category>
		<category><![CDATA[continuous deployment]]></category>
		<category><![CDATA[deployment automation]]></category>

	<!-- AutoMeta Start -->
	<category>standardisation</category>
	<category>outs</category>
	<category>intelligence</category>
	<category>adopters</category>
	<category>generation</category>
	<category>standardisation</category>
	<category>outs</category>
	<category>intelligence</category>
	<category>adopters</category>
	<category>generation</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=8147</guid>
		<description><![CDATA[Whether the driver is Agile, Cloud or DevOps1, or a &#8220;plain old&#8221; efficiency drive or process improvement initiative, forward-thinking organisations are currently looking for ways to improve their application release processes through automation. In an area where manual activities are still all too common, it&#8217;s unsurprising that the initial focus has been on automating the [...]]]></description>
			<content:encoded><![CDATA[<p>Whether the driver is Agile, Cloud or DevOps<sup>1</sup>, or a &#8220;plain old&#8221; efficiency drive or process improvement initiative, forward-thinking organisations are currently looking for ways to improve their application release processes through automation. In an area where manual activities are still all too common, it&#8217;s unsurprising that the initial focus has been on automating the deployment <em>execution</em> &#8211; moving all the bits to the right places.</p>
<p>What early adopters have learnt is that, at the enterprise scale, automating release execution quickly introduces a new bottleneck in today&#8217;s dynamic IT environments: continuous management of the deployment plan definition. A new generation of application release automation (ARA) tooling avoids this pitfall by leveraging intelligence to automate deployment <em>planning</em> as well as execution.<br />
<span id="more-8147"></span></p>
<h3>The State of ARA</h3>
<div style="padding: 5px; float: right;">
<img src="http://blog.xebialabs.com/wp-content/uploads/2011/11/ara_next_level-11.jpg" alt="" title="ara_next_level-1" width="200" height="159" class="alignnone size-full wp-image-6003" />
</div>
<p>Given how strongly our IT industry is dedicated to the automation of processes, it is nothing short of amazing how much of the deployment of <em>our own solutions</em> depends on manual actions coordinated more or less effectively between large groups of people.<br />
Indeed, a recent analyst report noted that the majority of large enterprises were still relying on manual application release processes or on in-house scripting understood by only a small number of specialists, operated as a black box that &#8211; hopefully &#8211; will do its job and will most likely necessitate a painful troubleshooting session if it doesn&#8217;t.</p>
<p>With key IT trends such as Agile, Cloud and DevOps dramatically ramping up the frequency of application releases in order to increase responsiveness to business needs and provide more and better services to customers, it&#8217;s clear that this situation cannot continue. </p>
<p>Thinking of today&#8217;s common release processes, it is also hardly surprising that the initial drive has been to automate the actual <a href="http://blog.xebialabs.com/2010/12/20/deployment-automation-vs-server-provisioning/" target="_new">rollout of the application</a> itself: copying the files to the target machines, restarting the servers, running the SQL against the DB etc. Using a defined workflow to organise these activities makes lots of sense: fewer failures, no more missing steps or steps executed in the wrong order, no more typos, better visualization etc.</p>
<h3>Lessons from the First Generation</h3>
<div style="padding: 5px; float: right;">
<img src="http://blog.xebialabs.com/wp-content/uploads/2011/11/ara_next_level-2.png" alt="" title="ara_next_level-2" width="200" height="143" class="alignnone size-full wp-image-6001" />
</div>
<p>Ironically, using one of these first generation ARA tools at an enterprise scale quickly made it obvious to early adopters how much effort is required to maintain the substantial number of workflow definitions that quickly accumulate to support full deployments, partial upgrades, rollbacks, environment scale-outs etc. across an enterprise application portfolio.</p>
<p>Of course, this is not a new challenge: ask anyone who has had to update 100 build job definitions in a continuous integration tool to change a compilation parameter, or 100 test plans in an automated testing setup to accommodate a different target browser, just how time-consuming and error-prone this type of maintenance is.</p>
<p>It&#8217;s not as though these modifications are <em>unique per process</em>. They tend to be <u>systematic</u> changes that reflect changes to the overall deployment strategy and/or context. The issue is that these first-generation tools, where all the deployment <em>intelligence</em> is stored in the power user&#8217;s brain, simply do not have enough internal <em>knowledge</em> of the structure of deployment to assist effectively.</p>
<h3>The Next Level of Application Release Automation</h3>
<div style="padding: 5px; float: right;">
<img src="http://blog.xebialabs.com/wp-content/uploads/2011/11/ara_next_level-3.jpg" alt="" title="ara_next_level-3" width="200" height="189" class="alignnone size-full wp-image-6004" />
</div>
<p>A new generation of Application Release Automation includes this intelligence. These advanced tools<sup>2</sup> no longer require hand-holding by your power users every step of the way, and encode knowledge of deployment best practices and strategies to automate the planning <em>and</em> execution of deployments.<sup>3</sup></p>
<p>No pre-provided strategy can be a 100% fit in an enterprise environment, so the strategies must be configurable, of course. Once your power users have fine-tuned them, however, all the individual deployment plans &#8211; initial installations, full and partial upgrades, downgrades, undeployments, scale-outs etc&#8230;easily hundreds across an application portfolio &#8211; are automatically tailored to your scenario.</p>
<p>This becomes even more efficient the fewer deployment strategies are in play, so these tools also motivate and reward increased standardisation of deployment procedures, in itself a valuable business goal. In fact, with a suitable interface and integrations into the development pipeline you essentially have an enterprise <a href="http://en.wikipedia.org/wiki/Cloud_computing#Platform" target="_new">Platform as a Service</a>, potentially on a private or hybrid cloud.</p>
<h3>Conclusions</h3>
<p>With adoption of Application Release Automation rapidly on the increase, a new generation of solutions are appearing that automate deployment planning as well as execution.<br />
Based on the challenges experienced in scaling the first generation of ARA tools to enterprise levels, these next generation solutions are designed to eliminate &#8220;continuous expert hand-holding&#8221;, promote standardisation and allow organisations to create a &#8220;software factory&#8221; that continuously delivers business value.</p>
<div style="background-color: #efeeea; border: 1px solid #AAAAAA; margin: 0.8em; padding: 0.4em; font-size: 85%;"><strong>Footnotes</strong></p>
<ol>
<li>My spelling preference is <u>still</u> for &#8220;Devops&#8221; since the whole point is, after all, that Dev and Ops are <em>no longer</em> regarded as separate, but hey&#8230; <img src='http://blog.xebia.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </li>
<li>like XebiaLabs&#8217; <a href="http://www.xebialabs.com/tour" target="_new">Deployit</a></li>
<li><a href="http://blog.xebialabs.com/2011/05/03/deployment-is-the-new-build-part-1/" target="_new">This advance</a> closely mirrors the development of build frameworks from tools like <a href="https://ant.apache.org/" target="_new">Ant</a> to today&#8217;s industry standards like <a href="https://maven.apache.org/" target="_new">Maven</a> and on to the next generation of <a href="http://www.gradle.org/" target="_new">Gradle</a>, <a href="https://github.com/harrah/xsbt/wiki/" target="_new">SBT</a> and others.</li>
</ol>
</div>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2011/11/29/taking-application-release-automation-to-the-next-level/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2011%2F11%2F29%2Ftaking-application-release-automation-to-the-next-level%2F&amp;title=Taking%20Application%20Release%20Automation%20to%20the%20Next%20Level" id="wpa2a_4"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2011/11/29/taking-application-release-automation-to-the-next-level/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Continuous deployment with Atlassian Bamboo and XebiaLabs Deployit</title>
		<link>http://blog.xebia.com/2011/10/20/continuous-deployment-with-atlassian-bamboo-and-xebialabs-deployit/</link>
		<comments>http://blog.xebia.com/2011/10/20/continuous-deployment-with-atlassian-bamboo-and-xebialabs-deployit/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 08:48:42 +0000</pubDate>
		<dc:creator>Vincent Partington</dc:creator>
				<category><![CDATA[Build tools]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Xebia Labs]]></category>

	<!-- AutoMeta Start -->
	<category>bamboo</category>
	<category>atlassian</category>
	<category>continuous</category>
	<category>incompatibility</category>
	<category>push</category>
	<category>xebialabs</category>
	<category>deployit</category>
	<category>scale</category>
	<category>bamboo</category>
	<category>atlassian</category>
	<category>continuous</category>
	<category>incompatibility</category>
	<category>push</category>
	<category>xebialabs</category>
	<category>deployit</category>
	<category>scale</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=7935</guid>
		<description><![CDATA[Over the past five to ten years, continuous integration has become a no-brainer for every medium to large scale software development project. It&#8217;s hard to imagine going back to not having every commit (or push) automatically trigger a build of the code and, most importantly, a test run of of the code. That test run [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.xebialabs.com/wp-content/uploads/2011/10/LOGO_Bamboo_Transparent_Half_Size.png" alt="" title="LOGO_Bamboo_Transparent_Half_Size" width="332" height="98" align="right" /><br />
Over the past five to ten years, <a href="http://martinfowler.com/articles/continuousIntegration.html">continuous integration</a> has become a no-brainer for every medium to large scale software development project. It&#8217;s hard to imagine going back to <em>not</em> having every commit (or <a href="http://gitref.org/remotes/#push">push</a>) automatically trigger a build of the code and, most importantly, a test run of of the code. That test run will surely include <a href="http://www.extremeprogramming.org/rules/unittests.html">unit tests</a>, but setting it up to also run <a href="http://c2.com/cgi/wiki?IntegrationTest">integration tests</a> used to be harder. You&#8217;ll need to automatically deploy the application to the target middleware environment and then run the integration tests against that environment.</p>
<p>The Deployit plugin for the new 3.3 release of <a href="http://www.atlassian.com/software/bamboo/">Atlassian Bamboo</a> adds the enterprise-scale deployment capabilities of <a href="http://www.xebialabs.com/">XebiaLabs Deployit</a> to Bamboo. This allows you to speed up your development process by adding automated deployment to your continuous integration setup and make the the first step towards <a href="http://timothyfitz.wordpress.com/2009/02/08/continuous-deployment/">continuous deployment</a> and <a href="http://continuousdelivery.com/">continuous delivery</a>. Instead of deployment being a bottleneck to your development process, it will be be an integrated part of it. You can test your application on the target platform as soon as possible, find any platform incompatibility and deployment issues early on, and, when it&#8217;s time to deploy to the production environment, your deployment will be quick and reliable.</p>
<p> <a href="http://blog.xebialabs.com/2011/10/20/continuous-deployment-with-atlassian-bamboo-and-xebialabs-deployit/#more-5882" class="more-link">read more</a></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2011/10/20/continuous-deployment-with-atlassian-bamboo-and-xebialabs-deployit/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2011%2F10%2F20%2Fcontinuous-deployment-with-atlassian-bamboo-and-xebialabs-deployit%2F&amp;title=Continuous%20deployment%20with%20Atlassian%20Bamboo%20and%20XebiaLabs%20Deployit" id="wpa2a_6"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2011/10/20/continuous-deployment-with-atlassian-bamboo-and-xebialabs-deployit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Leveraging the IBM Workload Deployer CLI to automate WebSphere application deployment</title>
		<link>http://blog.xebia.com/2011/08/15/leveraging-the-ibm-workload-deployer-cli-to-automate-websphere-application-deployment/</link>
		<comments>http://blog.xebia.com/2011/08/15/leveraging-the-ibm-workload-deployer-cli-to-automate-websphere-application-deployment/#comments</comments>
		<pubDate>Mon, 15 Aug 2011 07:43:53 +0000</pubDate>
		<dc:creator>Vincent Partington</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Xebia Labs]]></category>

	<!-- AutoMeta Start -->
	<category>workload</category>
	<category>cloudburst</category>
	<category>cloudburst</category>
	<category>workloads</category>
	<category>deployer</category>
	<category>deploys</category>
	<category>appliance</category>
	<category>websphere</category>
	<category>workload</category>
	<category>cloudburst</category>
	<category>cloudburst</category>
	<category>workloads</category>
	<category>deployer</category>
	<category>deploys</category>
	<category>appliance</category>
	<category>websphere</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=7265</guid>
		<description><![CDATA[A few months ago I blogged about the integration between Deployit and IBM WebSphere CloudBurst (since renamed to IBM Workload Deployer). While that article gave an overview of the integration and included some nice screenshots, it did not really go into the details. Now is the time to explore the implementation of this integration.. Workload [...]]]></description>
			<content:encoded><![CDATA[<p><em>A few months ago I <a href="http://blog.xebialabs.com/2011/05/08/deployit-integrated-with-websphere-cloudburst-appliance-for-applications-on-demand/">blogged about the integration between Deployit and IBM WebSphere CloudBurst</a> (since renamed to IBM Workload Deployer). While that article gave an overview of the integration and included some nice screenshots, it did not really go into the details. Now is the time to explore the implementation of this integration.</em>.</p>
<p>
Workload Deployer V3</a> and <a href="http://www.xebialabs.com/features">Deployit</a> from <a href="http://www.xebialabs.com/">XebiaLabs</a> both &#8220;deploy&#8221; things, but they deploy different things.  Deployit deploys application artifacts and resources, such as EAR files and data sources, to middleware systems like IBM WebSphere Application Server (but also HTML to web servers, IBM WebSphere MQ configurations to queue managers, and so on). IBM Workload Deployer, on the other hand, deploys patterns (or topologies) of virtual images to hypervisors &#8212; but not just any kind of virtual images. IBM Workload Deployer is especially geared toward deploying middleware topologies.</p>
<p>
IBM Workload Deployer V3 is an updated and enhanced version of the  WebSphere CloudBurst Appliance, renamed to reflect the expanded scope of workloads it can deploy, which are no longer limited to only WebSphere workloads.  The content for this article (including screen captures) was created using a WebSphere CloudBurst Appliance, but everything noted here is equally applicable to IBM Workload Deployer V3.  However, for the sake of consistency with the images presented, &#8220;WebSphere CloudBurst&#8221; is used throughout this article to refer to both products.</p>
<p>
In other words, IBM Workload Deployer deploys the middleware systems and Deployit deploys applications to those middleware systems &#8212; complementary functionalities that form a perfect fit.</p>
<p>
At XebiaLabs, we have been working on two exciting new integrations for Deployit. We created a Deployit plugin that enables you to deploy EAR files directly to virtual systems created by IBM Workload Deployer V3 or its predecessor, IBM WebSphere CloudBurst Appliance V2. We also created a WebSphere CloudBurst script package to deploy application artifacts and resources on newly created virtual systems.</p>
<p>
This article explores two integrations between WebSphere CloudBurst and Deployit as a way of showing how you can leverage the WebSphere CloudBurst command line interface and script packages to integrate cloud deployment with your application deployment automation solution.</p>
<p>
<a href=http://www.ibm.com/developerworks/websphere/techjournal/1108_inreach/1108_inreach.html?ca=drs-" class="more-link">(more&#8230;)</a></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2011/08/15/leveraging-the-ibm-workload-deployer-cli-to-automate-websphere-application-deployment/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2011%2F08%2F15%2Fleveraging-the-ibm-workload-deployer-cli-to-automate-websphere-application-deployment%2F&amp;title=Leveraging%20the%20IBM%20Workload%20Deployer%20CLI%20to%20automate%20WebSphere%20application%20deployment" id="wpa2a_8"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2011/08/15/leveraging-the-ibm-workload-deployer-cli-to-automate-websphere-application-deployment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Release Automation: The Missing Step in Release Management</title>
		<link>http://blog.xebia.com/2011/08/03/release-automation-the-missing-step-in-release-management/</link>
		<comments>http://blog.xebia.com/2011/08/03/release-automation-the-missing-step-in-release-management/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 05:31:10 +0000</pubDate>
		<dc:creator>Andrew Phillips</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Xebia Labs]]></category>
		<category><![CDATA[release automation]]></category>
		<category><![CDATA[release management]]></category>

	<!-- AutoMeta Start -->
	<category>8230</category>
	<category>industries</category>
	<category>release</category>
	<category>automation</category>
	<category>critical</category>
	<category>considerations</category>
	<category>scalability</category>
	<category>outline</category>
	<category>8230</category>
	<category>industries</category>
	<category>release</category>
	<category>automation</category>
	<category>critical</category>
	<category>considerations</category>
	<category>scalability</category>
	<category>outline</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=7243</guid>
		<description><![CDATA[Across all industries, the services delivered by business applications have become an essential part of an enterprise&#8217;s customer offering. Bringing new features to market quickly is thus a critical factor in determining a company&#8217;s success. In this post (an extended version of which is available as a whitepaper), we will outline today&#8217;s Release Management challenges [...]]]></description>
			<content:encoded><![CDATA[<p>Across all industries, the services delivered by business applications have become an essential part of an enterprise&#8217;s customer offering. Bringing new features to market quickly is thus a critical factor in determining a company&#8217;s success.</p>
<p>In this post (an extended version of which is <a href="http://www.xebialabs.com/DeploymentAutomation_Whitepaper" target="_new">available as a whitepaper</a>), we will outline today&#8217;s Release Management challenges and discuss the need for Release Automation. </p>
<p>We&#8217;ll identify key considerations for successful solutions and highlight why &#8220;Zero-Maintenance&#8221; is a critical requirement for Release Automation that provides the scalability required in an agile landscape and enables the delivery of continuous business value.</p>
<p><a href="http://blog.xebialabs.com/2011/08/03/release-automation-the-missing-step-in-release-management/" class="more-link">(more&#8230;)</a></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2011/08/03/release-automation-the-missing-step-in-release-management/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2011%2F08%2F03%2Frelease-automation-the-missing-step-in-release-management%2F&amp;title=Release%20Automation%3A%20The%20Missing%20Step%20in%20Release%20Management" id="wpa2a_10"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2011/08/03/release-automation-the-missing-step-in-release-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jar-with-deps don&#8217;t like META-INF/services</title>
		<link>http://blog.xebia.com/2011/07/20/jar-with-deps-dont-like-meta-infservices/</link>
		<comments>http://blog.xebia.com/2011/07/20/jar-with-deps-dont-like-meta-infservices/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 11:33:45 +0000</pubDate>
		<dc:creator>Andrew Phillips</dc:creator>
				<category><![CDATA[Build tools]]></category>
		<category><![CDATA[Gradle]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Xebia Labs]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[spi]]></category>

	<!-- AutoMeta Start -->
	<category>deps</category>
	<category>mergedir</category>
	<category>gradle</category>
	<category>truezip</category>
	<category>truezip</category>
	<category>checker</category>
	<category>overthere</category>
	<category>runtimedeps</category>
	<category>deps</category>
	<category>mergedir</category>
	<category>gradle</category>
	<category>truezip</category>
	<category>truezip</category>
	<category>checker</category>
	<category>overthere</category>
	<category>runtimedeps</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=7218</guid>
		<description><![CDATA[Recently, I was preparing a connection checker for Deployit&#8217;s powerful remote execution framework Overthere. To make the checker, as compact as possible, I put together a jar-with-deps1 for distribution. Tests and trial runs from the IDE worked, so I was expected the dry-run of the distribution to be a quick formality. Instead: boom! Turns out [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I was preparing a <a href="https://github.com/demobox/overthere-connection-checker/" target="_new">connection checker</a> for <a href="http://www.xebialabs.com/tour" target="_new">Deployit&#8217;s</a> powerful remote execution framework <a href="https://github.com/xebialabs/overthere" target="_new">Overthere</a>. To make the checker, as compact as possible, I put together a <a href="http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html#jar-with-dependencies" target="_new">jar-with-deps</a><sup>1</sup> for distribution.<br />
Tests and trial runs from the IDE worked, so I was expected the dry-run of the distribution to be a quick formality. Instead: <em>boom!</em><br />
Turns out that one of the libraries used by Overthere, <a href="http://truezip.java.net/" target="_new">TrueZIP</a> &#8211; or indeed any code that utilizes Java&#8217;s <a href="http://download.oracle.com/javase/6/docs/technotes/guides/jar/jar.html#Service%20Provider" target="_new">SPI mechanism</a><sup>2</sup> &#8211; doesn&#8217;t play well with the <em>jar-with-deps</em> idea.<span id="more-7218"></span></p>
<h3>Seeing Double</h3>
<p>TrueZIP uses a <tt>de.schlichtherle.truezip.fs.spi.FsDriverService</tt> provider configuration file in <tt>META-INF/services</tt> to register drivers for various archive formats, and the checker was failing because one of the required drivers wasn&#8217;t being loaded, even though the code was correctly included in the <em>jar-with-deps</em>.</p>
<p>The <tt>duplicate</tt> option of Ant&#8217;s <a href="http://ant.apache.org/manual/Tasks/jar.html" target="_new">Jar task</a><sup>3</sup> and Gradle issue <a href="http://issues.gradle.org/browse/GRADLE-1050" target="_new">1050</a>, which talks about merging files during archive creation, hint at what the problem is: once packaged up in a single <em>jar-with-deps</em> archive, only one of TrueZIP&#8217;s provider configuration files was being found.</p>
<h3>Maven, Gradle and Java</h3>
<p>Once I examined the <em>jar-with-deps</em> <a href="https://github.com/demobox/jar-with-deps-vs-spi/blob/master/pom.xml" target="_new">constructed by Maven</a><sup>4</sup>, it was pretty clear why: the JAR only <em>contains</em> one of the configuration files &#8211; looks like the first one encountered in my case, but that may be non-deterministic. Presumably, this happens because Maven uses a temporary directory to prepare the archive contents, which of course can&#8217;t hold multiple files of the same name.</p>
<p><a href="https://github.com/demobox/jar-with-deps-vs-spi/blob/master/build.gradle" target="_new">With Gradle</a><sup>5</sup>, things are a bit more interesting because the archive does indeed contain all the configuration files &#8211; the ZIP format supports duplicate entries<sup>6</sup>. However, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/ClassLoader.html#getResources(java.lang.String)" target="_new">ClassLoader.getResources</a> doesn&#8217;t play along, so again only one entry is found.</p>
<h3>There Can Be Only One</h3>
<p>Basically, it seems that merging the affected files is the only feasible way around this. Here&#8217;s a possible Gradle snippet<sup>7</sup>:</p>
<pre class="brush: groovy; title: ; notranslate">
task jarWithDeps(type: Jar, dependsOn: classes) {
	mergeDir = &quot;${buildDir}/merge&quot;
	// might need a lazy var in a multi-module project where deps are inherited
	runtimeDeps = configurations.runtime.collect { zipTree(it) }

	doFirst {
		new File(mergeDir).delete()
		mergeFiles(mergeDir, runtimeDeps, file-to-merge)
		// ... possibly other files too
	}

	// this project's classes and all deps
	from sourceSets*.classesDir
	from(runtimeDeps) {
		exclude file-to-merge
	}
	from mergeDir
}

private def mergeFiles(targetDir, fileTrees, relativePath) {
  // prepare the merge
  mergedFile = new File(&quot;${targetDir}/${relativePath}&quot;)
  new File(mergedFile.parent).mkdirs()

  fileTrees*.matching({ include &quot;**/${relativePath}&quot; })*.each {
    mergedFile &lt;&lt; it.bytes
  }
}
</pre>
<p>Unfortunately, I haven&#8217;t been able to find a similar option for the <a href="http://maven.apache.org/shared/maven-archiver/" target="_new">Maven Archiver</a>, but I guess there must be <em>something</em> out there in the Maven ecosystem <img src='http://blog.xebia.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><em>Edited 21/07/2011 to add:</em> The <a href="https://github.com/demobox/jar-with-deps-vs-spi/" target="_new">sample code</a> now includes possible solutions suggested in comments. Run <tt>gradle clean jarWithDeps2</tt>, <tt>mvn clean package -Pwith-shade-plugin</tt> or <tt>mvn clean package -Pwith-keystone-plugin</tt><sup>8</sup> to try them out.<br />
<em>Edited 25/07/2011 to add:</em> You can now also run <tt>mvn clean package -Pwith-services-handler</tt> to see how the Assembly plugin&#8217;s <a href="http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html#class_containerDescriptorHandler" target="_new"><tt>&lt;containerDescriptorHandlers&gt;</tt></a> can take care of this too.</p>
<div style="background-color: #EFEEEA; border: 1px solid #AAAAAA; margin: 0.8em; padding: 0.4em; font-size: 85%;">
<strong>Footnotes</strong></p>
<ol>
<li>A.k.a. &#8220;farJar&#8221;. For an equivalent Gradle task definition, see <a href="http://docs.codehaus.org/display/GRADLE/Cookbook#Cookbook-Creatingafatjar" target="_new">here</a>.</li>
<li>See <a href="http://blog.xebia.com/2011/02/multispi-consuming-service-provider-interfaces-in-2011/" target="_new">MultiSPI</a> for an approach that provides more flexibility and &#8220;modern alternatives&#8221; for service providers.</li>
<li>Note that the <a href="http://download.oracle.com/javase/6/docs/technotes/tools/solaris/jar.html#options" target="_new">jar utility</a> itself <em>doesn&#8217;t</em> provide a similar option.</li>
<li>run <tt>mvn clean package</tt></li>
<li>run <tt>gradle clean jarWithDeps</tt></li>
<li>although the <a href="http://download.oracle.com/javase/6/docs/api/java/util/zip/ZipOutputStream.html" target="_new">ZipOutputStream</a> evidently wasn&#8217;t <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4406823" target="_new">too happy</a> with them and, judging by the 1.6.0_20 implementation, will still throw a <tt>ZipException</tt></li>
<li>Would be interesting to try to do the merging at JAR construction time, perhaps by keeping &#8220;merge-so-far(s)&#8221; in the <tt>mergeDir</tt> and using <a href="http://www.gradle.org/current/docs/dsl/org.gradle.api.tasks.bundling.Jar.html#org.gradle.api.tasks.bundling.Jar:eachFile%28groovy.lang.Closure%29" target="_new"><tt>eachFile</tt></a> to replace the unmerged files and update the &#8220;merge-so-far(s)&#8221; at the same time.</li>
<li>required <a href="http://pastebin.com/QNhkX6TE" target="_new">two fixes</a> to the code to get it work correctly on my system</li>
</ol>
</div>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2011/07/20/jar-with-deps-dont-like-meta-infservices/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2011%2F07%2F20%2Fjar-with-deps-dont-like-meta-infservices%2F&amp;title=jar-with-deps%20don%26%238217%3Bt%20like%20META-INF%2Fservices" id="wpa2a_12"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2011/07/20/jar-with-deps-dont-like-meta-infservices/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Deployit integrated with DPAdmin for heterogeneous deployments to IBM DataPower appliances</title>
		<link>http://blog.xebia.com/2011/07/06/deployit-integrated-with-dpadmin-for-heterogeneous-deployments-to-ibm-datapower-appliances/</link>
		<comments>http://blog.xebia.com/2011/07/06/deployit-integrated-with-dpadmin-for-heterogeneous-deployments-to-ibm-datapower-appliances/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 16:51:04 +0000</pubDate>
		<dc:creator>Vincent Partington</dc:creator>
				<category><![CDATA[Deployment]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Xebia Labs]]></category>

	<!-- AutoMeta Start -->
	<category>datapower</category>
	<category>xi50</category>
	<category>xa35</category>
	<category>xs40</category>
	<category>workload</category>
	<category>appliances</category>
	<category>appliance</category>
	<category>cloudburst</category>
	<category>datapower</category>
	<category>xi50</category>
	<category>xa35</category>
	<category>xs40</category>
	<category>workload</category>
	<category>appliances</category>
	<category>appliance</category>
	<category>cloudburst</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=7087</guid>
		<description><![CDATA[In a previous blog I talked about the integration we&#8217;ve achieved between XebiaLabs&#8217; Deployit and IBM&#8217;s Workload Deployer (still called WebSphere CloudBurst Appliance at the time) to allow users to deploy Java EE packages straight to a private cloud environment managed by IBM Workload Deployer. An IBM developerWorks article with more details is in the [...]]]></description>
			<content:encoded><![CDATA[<p><em>In <a href="http://blog.xebialabs.com/2011/05/08/deployit-integrated-with-websphere-cloudburst-appliance-for-applications-on-demand/">a previous blog</a> I talked about the integration we&#8217;ve achieved between <a href="http://www.xebialabs.com/">XebiaLabs&#8217; Deployit</a> and IBM&#8217;s <a href="http://www.ibm.com/software/webservers/workload-deployer/">Workload Deployer</a> (still called WebSphere CloudBurst Appliance at the time) to allow users to deploy Java EE packages straight to a private cloud environment managed by IBM Workload Deployer. An IBM developerWorks article with more details is in the publishing queue. When it&#8217;s been published, I&#8217;ll post a link here. In this blog, I&#8217;d like to discuss another integration we&#8217;ve been working on.</em></p>
<p>IBM&#8217;s <a href="http://www-01.ibm.com/software/integration/datapower/">WebSphere DataPower appliances</a> are a family of appliances that provide valuable services for SOA architectures such as XML acceleration (<a href="http://www-01.ibm.com/software/integration/datapower/xa35/">XA35</a>), XML security (<a href="http://www-01.ibm.com/software/integration/datapower/xs40/">XS40</a>) and data integration/ESB (<a href="http://www-01.ibm.com/software/integration/datapower/xi50/">XI50</a> ). While the DataPower appliances provide a powerful web-based management GUI, they are not easy to automate. The only command line available is an interactive command line that requires you to telnet into the appliance and the other way to automate the system is a <a href="http://www.redbooks.ibm.com/abstracts/redp4446.html">SOAP/XML based API</a> that requires quite a lot of coding.</p>
<p><a href="http://blog.xebialabs.com/2011/07/06/deployit-integrated-with-dpadmin-for-heterogeneous-deployments-to-ibm-datapower-appliances/" class="more-link">(more&#8230;)</a></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2011/07/06/deployit-integrated-with-dpadmin-for-heterogeneous-deployments-to-ibm-datapower-appliances/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2011%2F07%2F06%2Fdeployit-integrated-with-dpadmin-for-heterogeneous-deployments-to-ibm-datapower-appliances%2F&amp;title=Deployit%20integrated%20with%20DPAdmin%20for%20heterogeneous%20deployments%20to%20IBM%20DataPower%20appliances" id="wpa2a_14"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2011/07/06/deployit-integrated-with-dpadmin-for-heterogeneous-deployments-to-ibm-datapower-appliances/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deployment is the new build (part 3)</title>
		<link>http://blog.xebia.com/2011/06/16/deployment-is-the-new-build-part-3/</link>
		<comments>http://blog.xebia.com/2011/06/16/deployment-is-the-new-build-part-3/#comments</comments>
		<pubDate>Thu, 16 Jun 2011 21:08:08 +0000</pubDate>
		<dc:creator>Andrew Phillips</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Xebia Labs]]></category>
		<category><![CDATA[devops]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=6872</guid>
		<description><![CDATA[Earlier this year, I was invited to present a talk at Devopsdays Boston about deployment as the new build: how deployments are carried out now, how they will need to adapt in a more virtualized, on-demand application landscape and what fundamental improvements will need to come before deployment matures into the invisible, it just works&#8482; [...]]]></description>
			<content:encoded><![CDATA[<p><em>Earlier this year, I was invited to present a <a href="http://www.devopsdays.org/events/2011-boston/proposals/deployment_is_the_new_build/" target="_new">talk</a> at <a href="http://www.devopsdays.org/events/2011-boston/" target="_new">Devopsdays Boston</a> about </em><a href="http://www.slideshare.net/apwashere/deployment-is-the-new-build" target="_new">deployment as the new build</a><em>: how deployments are carried out now, how they will need to adapt in a more virtualized, on-demand application landscape and what fundamental improvements will need to come before deployment matures into the invisible, </em>it just works&trade;<em> experience build is today.</em></p>
<p>In the <a href="http://blog.xebia.com/2011/05/deployment-is-the-new-build-part-2/" target="_new">previous post</a>, we looked at how <em>Reusable commands</em>, <em>Models</em> and <em>Conventions++</em> helped turn build from a “black box” process into the “just works” experience we know today. </p>
<p>We then shifted back to deployment and identified <em>Develop a common model</em>, <em>(Re)discover vanilla</em> and <em>Support a &#8220;clean build&#8221;</em> as three key steps required to achieve a similar transition.<br />
<span id="more-6872"></span></p>
<h3>Develop a common model</h3>
<div style="padding: 5px; float: right;"><img src="http://blog.xebia.com/wp-content/uploads/2011/05/deployment-is-the-new-build-p3-1.png" alt="" title="deployment-is-the-new-build-p3-1" width="300" height="225" class="alignnone size-full wp-image-6954" /></div>
<p>Before we can advance to the &#8216;model&#8217; stage, we first&#8230;well&#8230;need a model. Thankfully, a very simple one can suffice: <strong>Packages</strong>, <strong>Environments</strong> and <strong>Deployments</strong>. </p>
<p>There&#8217;s nothing particularly magical to this, and indeed the concepts are commonly found in most organisations. But giving these things explicit labels helps not just formalize the ideas and gives developers and vendors something to support. It also creates a shared vocabulary and language around deployment, which is the first step to shared understanding and reusable functionality.</p>
<p>Indeed, the concepts are so basic that there does not appear to be much to say about them.</p>
<p><strong>Packages</strong> capture the components of the versioned item to be released, both artifacts represented by actual files as well as configuration, resource settings and metadata.</p>
<p>In accordance with release management best practice, packages should be stored in a <a href="http://en.wikipedia.org/wiki/Information_Technology_Infrastructure_Library#Software_Asset_Management" target="_new">DSL</a> and should be independent of the target environment, so that you have one &#8220;gold standard&#8221; package running in Development, Test, QA and Production. </p>
<p>Packages also mean that we can version everything, not just the application binaries but also the related configuration and environment settings.</p>
<p>Development and Test just mentioned are examples of <strong>Environments</strong>, simply collections of infrastructure &#8211; physical, virtual, long-running, on-demand, whatever &#8211; that applications run in as they progress through the <a href="http://en.wikipedia.org/wiki/Software_development_process#Deployment_and_maintenance" target="_new">ALM cycle</a>, potentially with approvals or other checkpoints governing the transition from one to the next.</p>
<p><strong>Deployment</strong>, then, is perhaps the one concept not immediately widely understood. A Deployment represents not just the activity of getting a Package running in a certain Environment, with a start and stop time, executing user, status and so forth. </p>
<p>Rather, a Deployment also documents the way in which the Package&#8217;s components have been deployed and, if applicable, customized. For instance, a Deployment will record that a certain EAR file in the package has been deployed to the following target server(s) or cluster(s), or that the data source password for this specific environment has been customized and set to a new value.</p>
<p>Recording this information is critical because it is very hard to be able to intelligently and correctly modify an application&#8217;s state &#8211; when upgrading to a new version, for instance, or adding new servers to the target cluster &#8211; if you do not know where and with which settings the application is currently running.</p>
<h3>(Re)discover vanilla</h3>
<div style="padding: 5px; float: right;"><img src="http://blog.xebia.com/wp-content/uploads/2011/05/deployment-is-the-new-build-p3-2.png" alt="" title="deployment-is-the-new-build-p3-2" width="301" height="200" class="alignnone size-full wp-image-6955" /></div>
<p>If we are going to achieve hassle-free, push-button deployments, another thing we will have to reconsider is whether we really need to tweak and customize our infrastructure in every way possible. Indeed, some companies seem to almost have a policy that any setting that might be a default should be regarded with suspicion and, preferably, changed.</p>
<p>Much as custom project layouts made setting up a build unnecessarily tedious and complicated in a convention- and model-based system, stubbornly refusing to go with infrastructure defaults will make it harder to get hassle-free deployments that truly cover all the steps required.</p>
<p>Sticking with defaults not only encourages reusability because the chances are much higher that a solution developed for a different scenario will also work in yours. It also improves maintainability and cuts down on the risk of &#8220;ripple&#8221; changes, where a custom value in the setting for the servers hosting application X requires further changes to the setup of application Y etc.</p>
<h3>Support a &#8220;clean build&#8221;</h3>
<div style="padding: 5px; float: right;"><img src="http://blog.xebia.com/wp-content/uploads/2011/05/deployment-is-the-new-build-p3-3.png" alt="" title="deployment-is-the-new-build-p3-3" width="298" height="208" class="alignnone size-full wp-image-6956" /></div>
<p>When building a large project, we try to cut down on the time taken by recompiling only the source code that has been modifying. When deploying applications, we similarly want to save time when upgrading to a new version, especially when this time represents production downtime.<br />
However, we also know that, eventually, some parts of any incremental build will end up going out of sync, causing strange compilation problems, or features or fixes not appearing when they should.</p>
<p>What do we do in such a case? Do we laboriously try to track down the files that are out of sync and rebuild piece by piece? No, we simply run a clean build to start from scratch, because in 99% of cases it&#8217;s much quicker to simply rebuild than try to track down the cause of the problem.</p>
<p>In deployment-land, we seldom have the ability to clean build, and this is one of the main causes for the stressful, time- and resource-consuming troubleshooting hunts that are still far too common. Of course, in order to clean build a system we need full versioning of the environment, its configuration and the applications deployed to it. Virtual appliances and virtualization solutions with snapshot capabilities will have a major role to play here.</p>
<p>We also need a known state for durable resources such as databases, which remains challenging but is being addressed by a growing number of products out there. </p>
<h3>Push button deployments</h3>
<p>Taking stock, it&#8217;s clear that there is still some way to go. We&#8217;re slowly developing a common model, but both &#8220;(Re)discovering vanilla&#8221; and &#8220;Supporting a &#8220;clean build&#8221; are visions not quite yet on the horizon of most large companies.<br />
In fact, it&#8217;s not so much technological advances that are required &#8211; many startups are pretty close to push-button deployments and continuous delivery. Indeed, the &#8220;poster children&#8221; of this movement already have setups where every commit can pass through an entire regression, integration and performance testing suite and potentially go straight to production.</p>
<p>No, the important hurdles to be taken are procedural and mental, changing rusty ways of working and entrenched mindsets. For those that can make it, though, the benefits in terms of accelerated business value are already proving to be game changers.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2011/06/16/deployment-is-the-new-build-part-3/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2011%2F06%2F16%2Fdeployment-is-the-new-build-part-3%2F&amp;title=Deployment%20is%20the%20new%20build%20%28part%203%29" id="wpa2a_16"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2011/06/16/deployment-is-the-new-build-part-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deployment is the new build (part 2)</title>
		<link>http://blog.xebia.com/2011/05/21/deployment-is-the-new-build-part-2/</link>
		<comments>http://blog.xebia.com/2011/05/21/deployment-is-the-new-build-part-2/#comments</comments>
		<pubDate>Fri, 20 May 2011 22:49:01 +0000</pubDate>
		<dc:creator>Andrew Phillips</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Xebia Labs]]></category>
		<category><![CDATA[devops]]></category>

	<!-- AutoMeta Start -->
	<category>conventions</category>
	<category>conventions</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=6846</guid>
		<description><![CDATA[Earlier this year, I was invited to present a talk at Devopsdays Boston about deployment as the new build: how deployments are carried out now, how they will need to adapt in a more virtualized, on-demand application landscape and what fundamental improvements will need to come before deployment matures into the invisible, it just works&#8482; [...]]]></description>
			<content:encoded><![CDATA[<p><em>Earlier this year, I was invited to present a <a href="http://www.devopsdays.org/events/2011-boston/proposals/deployment_is_the_new_build/" target="_new">talk</a> at <a href="http://www.devopsdays.org/events/2011-boston/" target="_new">Devopsdays Boston</a> about </em><a href="http://www.slideshare.net/apwashere/deployment-is-the-new-build" target="_new">deployment as the new build</a><em>: how deployments are carried out now, how they will need to adapt in a more virtualized, on-demand application landscape and what fundamental improvements will need to come before deployment matures into the invisible, </em>it just works&trade;<em> experience build is today.</em></p>
<p>In the <a href="http://blog.xebia.com/2011/05/deployment-is-the-new-build-part-1/" target="_new">previous post</a>, we compared deployment to another key process in the application lifecycle &#8211; build &#8211; and asked which key developments turned <em>it</em> from a magical &#8220;black box&#8221; into the &#8220;just works&#8221; process it is today. </p>
<p>We identified <em>Reusable commands</em>, <em>Models</em> and <em>Conventions++</em> as three key steps, which we&#8217;ll look into in more detail in this post. Then, we&#8217;ll shift back to deployment and ask which improvements will be essential to getting to &#8220;just works&#8221; here.<br />
<span id="more-6846"></span></p>
<h3>Reusable commands</h3>
<div style="padding: 5px; float: right;"><img src="http://blog.xebia.com/wp-content/uploads/2011/05/deployment-is-the-new-build-p2-1.png" alt="" title="deployment-is-the-new-build-p2-1" width="250" height="154" class="alignnone size-full wp-image-6861" /></div>
<p>The first step, epitomised by <a href="http://ant.apache.org/" target="_new">Apache Ant</a>, was the recognition that most of the low-level tasks or actions are the same whatever application is being built, whether calling a compiler, copying files or replacing placeholders.<br />
Rather than copy-pasting the same OS commands into every new build script, we encapsulated these commands as libraries of reusable components that only needed to be written once.<br />
Further, we discovered that certain patterns of step sequences would appear in many different builds. These &#8216;chunks&#8217;, such as constructing a classpath, or copying and processing static resources, evidently represented some higher-level build activity with a distinct function.</p>
<h3>Models</h3>
<div style="padding: 5px; float: right;"><img src="http://blog.xebia.com/wp-content/uploads/2011/05/deployment-is-the-new-build-p2-2.png" alt="" title="deployment-is-the-new-build-p2-2" width="250" height="150" class="alignnone size-full wp-image-6862" /></div>
<p>Whilst the realisation that all the actions carried out in a build are basically a sequence of common chunks was an important start, the next big advance was brought about by recognising that we weren&#8217;t just seeing repeated patterns of actions, but that the types of data these actions were working on were also shared.<br />
This gave rise to the notion of a true domain model for application builds, with source sets, resource sets, modules, dependencies and so forth that were originally introduced by <a href="http://maven.apache.org/" target="_new">Maven</a> and have featured and been reused in all build systems since.</p>
<p>Combining the sequence of common chunks with the new domain model that structured the data being processed gave rise to notion of distinct phases, in which parts of the build model are generated, prepared and made available to subsequent commands.<br />
In addition, Maven also supported the idea that the domain model, and thus the build phases, would have to be able to vary slightly to accommodate different types of Java artifacts that need to be delivered, such as JARs and EARs. This has subsequently been further developed to support builds of totally different technologies such as <a href="http://flexmojos.sonatype.org/" target="_new">Adobe Flex applications</a>.</p>
<h3>Conventions++</h3>
<div style="padding: 5px; float: right;"><img src="http://blog.xebia.com/wp-content/uploads/2011/05/deployment-is-the-new-build-p2-3.png" alt="" title="deployment-is-the-new-build-p2-3" width="250" height="172" class="alignnone size-full wp-image-6863" /></div>
<p>An additional benefit of domain models for build was the ability to make use of default values in a structured way, for instance for the names of built artifacts or the location of resource files.<br />
However, the flip side of this convenience, certainly in combination with <a href="http://maven.apache.org/pom.html" target="_new">XML</a> as a descriptor language for builds, meant that deviating from these standards could be quite a challenge. Certainly if the aim was to extend the domain model in some way, or to support a language or technology whose build flow was reasonably different from Java&#8217;s, such as building documentation bundles or virtual machine images, for instance.<br />
This has led to a generation of build tools, such as <a href="http://www.gradle.org/" target="_new">Gradle</a>, that aim to restore the developer to a position of full control in which arbitrary actions can easily be defined and organised into phases, tasks and entire builds. Of course, given how used we have become to the convenience of &#8220;it just works&#8221; in simple cases, these tools still support the full domain models and conventions of <a href="http://www.gradle.org/standard_plugins.html" target="_new">common technologies</a> such as Java.</p>
<h3>Who&#8217;d have thought?</h3>
<p>Reviewing this progression from today&#8217;s perspective, a couple of facts stand out that, certainly in comparison to other evolutions in IT, are quite surprising.<br />
Firstly, whilst it&#8217;s now hard to imagine specifying a dependency using anything other than the <a href="http://maven.apache.org/pom.html#Dependencies" target="_new">groupId:artifactId:version</a> pattern, none of the models or conventions that developed were formalised in industry standards. Instead, they were either based on observations of common patterns, or simply clever or even somewhat arbitrary choices (<a href="http://maven.apache.org/pom.html#Directories" target="_new"><tt>src/main/java</tt></a>, for instance).<br />
Secondly, we have seen how ease-of-use based on conventions, coupled with a moderate nuisance factor of tweaking those conventions, can dramatically change user behaviour. Initially, for instance, many of those new to Maven spent quite a significant amount of time, and produced a fair amount of XML, to change the standard settings to match their own environment, naming conventions, file paths etc.<br />
Pretty soon, though, and especially as the ratio of green field vs. legacy projects increased, it simply became easier to stick with Maven&#8217;s standard values and be done with it. Today, these conventions have become so standardised that they are supported not just by Maven, but essentially all other build systems out there, too.<br />
It&#8217;s not just users&#8217; preferences that were &#8220;charmed&#8221; into adopting standard conventions, though. In many cases, company standards previously seen as cast-iron were progressively discarded or modified if they could easily not be accommodated by the emerging de facto standards. Ease-of-use was able to triumph against abstract rules.</p>
<h3>And deployment?</h3>
<p>So much for the build process. What about deployment, today&#8217;s critical hurdle for automation in the business value delivery chain? As previously mentioned, the current industry average is somewhere between &#8220;black box&#8221; and &#8220;step sequence&#8221;. In terms of the descriptions of the build process evolution, the most advanced deployment automation systems are somewhere just beyond &#8220;reusable commands&#8221;, in other words.<br />
Which naturally begs the question: how do we get to a push-button state? What do we need to do to be able to reach the maturity level of build today?<br />
Looking at what we encounter in the industry today, three critical aspects will be:</p>
<ol>
<li><strong>Develop a common model</strong></li>
<li><strong>(Re)discover vanilla</strong></li>
<li><strong>Support a &#8220;clean build&#8221;</strong></li>
</ol>
<p>We’ll cover the details of these three concepts in the <a href="http://blog.xebia.com/2011/06/deployment-is-the-new-build-part-3/" target="_new">next blog</a>…</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2011/05/21/deployment-is-the-new-build-part-2/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2011%2F05%2F21%2Fdeployment-is-the-new-build-part-2%2F&amp;title=Deployment%20is%20the%20new%20build%20%28part%202%29" id="wpa2a_18"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2011/05/21/deployment-is-the-new-build-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deployit integrated with WebSphere CloudBurst Appliance for applications on demand</title>
		<link>http://blog.xebia.com/2011/05/08/deployit-integrated-with-websphere-cloudburst-appliance-for-applications-on-demand/</link>
		<comments>http://blog.xebia.com/2011/05/08/deployit-integrated-with-websphere-cloudburst-appliance-for-applications-on-demand/#comments</comments>
		<pubDate>Sun, 08 May 2011 14:01:43 +0000</pubDate>
		<dc:creator>Vincent Partington</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[Xebia Labs]]></category>

	<!-- AutoMeta Start -->
	<category>cloudburst</category>
	<category>appliance</category>
	<category>topologies</category>
	<category>virtual</category>
	<category>deployit</category>
	<category>websphere</category>
	<category>deploys</category>
	<category>deploy</category>
	<category>cloudburst</category>
	<category>appliance</category>
	<category>topologies</category>
	<category>virtual</category>
	<category>deployit</category>
	<category>websphere</category>
	<category>deploys</category>
	<category>deploy</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=6828</guid>
		<description><![CDATA[At XebiaLabs, we have recently been working on an exciting new integration for Deployit, our deployment automation product. We&#8217;ve created a Deployit plugin that allows you to deploy EAR files directly to virtual systems created by IBM&#8217;s WebSphere CloudBurst Appliance (WCA). But a small piece of background first. Deployit and WebSphere CloudBurst Appliance both &#8220;deploy&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>At XebiaLabs, we have recently been working on an exciting new integration for <a href="http://www.xebialabs.com/features">Deployit</a>, our deployment automation product. We&#8217;ve created a Deployit plugin that allows you to deploy EAR files directly to virtual systems created by IBM&#8217;s <a href="http://www-01.ibm.com/software/webservers/cloudburst/">WebSphere CloudBurst Appliance</a> (WCA).</p>
<p>
But a small piece of background first. Deployit and WebSphere CloudBurst Appliance both &#8220;deploy&#8221; things. But they deploy different things. Deployit deploys application artifacts and resources such as EAR files and data sources to middleware systems like WebSphere Application Server (but also HTML to web servers, MQ configuration to queue managers, etc.). The WebSphere CloudBurst Appliance on the other hand, deploys patterns (topologies) of virtual images to hypervisors. But not just any kind of virtual images. It is especially geared towards deploying middleware topologies. In other words, the software Deployit wants to deploy <em>to</em>! This means that the functionalities of WCA and Deployit are a perfect fit; have WCA deploy the middleware systems and have Deployit deploy applications to those middleware systems.<br />
<a href="http://blog.xebialabs.com/2011/05/08/deployit-integrated-with-websphere-cloudburst-appliance-for-applications-on-demand/#more-6828" class="more-link">(more&#8230;)</a></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2011/05/08/deployit-integrated-with-websphere-cloudburst-appliance-for-applications-on-demand/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2011%2F05%2F08%2Fdeployit-integrated-with-websphere-cloudburst-appliance-for-applications-on-demand%2F&amp;title=Deployit%20integrated%20with%20WebSphere%20CloudBurst%20Appliance%20for%20applications%20on%20demand" id="wpa2a_20"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2011/05/08/deployit-integrated-with-websphere-cloudburst-appliance-for-applications-on-demand/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  blog.xebia.com/category/xebialabs/feed/ ) in 0.79240 seconds, on Feb 4th, 2012 at 5:52 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 4th, 2012 at 6:52 am UTC -->
