<?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; Architecture</title>
	<atom:link href="http://blog.xebia.com/category/architecture/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>Continuous Delivery for Enterprise Java Applications</title>
		<link>http://blog.xebia.com/2011/12/14/continuous-delivery-for-enterprise-java-applications/</link>
		<comments>http://blog.xebia.com/2011/12/14/continuous-delivery-for-enterprise-java-applications/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 12:00:41 +0000</pubDate>
		<dc:creator>Mark van Holsteijn</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Continuous Delivery]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Virtualization]]></category>

	<!-- AutoMeta Start -->
	<category>puppet</category>
	<category>layer7</category>
	<category>balancer</category>
	<category>puppet</category>
	<category>layer7</category>
	<category>balancer</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=8202</guid>
		<description><![CDATA[How do you setup a environment that support the continuous deliver of enterprise Java applications? How do you manage the large number of machines that are involved? How do you enable self-service, continuous delivery of applications onto the platform? In this blog post we will give a description of an open source Java Application Platform [...]]]></description>
			<content:encoded><![CDATA[<p>How do you setup a environment that support the continuous deliver of enterprise Java applications? How do you manage the large number of machines that are involved? How do you enable self-service, continuous delivery of applications onto the platform?</p>
<p>In this blog post we will give a description of an open source Java Application Platform as a Service that we created for our customer, using VMware, Redhat Enterprise Linux, Apache WebServer, JBoss Enterprise Application Platform, JBoss Operations Network, Puppet, Deployit,  F5 Load Balancer and  a Layer7 SecureSpan gateway.</p>
<p><span id="more-8202"></span></p>
<h1>Data Center Quality Platform</h1>
<p>The customer wanted a data center quality Java Application Platform with the following features:</p>
<ul>
<li>Standard configuration</li>
<li>Standardized provisioning</li>
<li>Standardized deployment</li>
<li>Centralized monitoring</li>
<li>Centralized access control</li>
<li>Virtual environment</li>
<li>Proving technology</li>
</ul>
<h2>Current situation</h2>
<p>As the current Java application platform was based on HP-UX on Itanium, the customer was facing high cost for hardware, software licenses and fading support from software vendors.  As all applications ran on a HP Superdome, it was very difficult to add resources to individual applications. In addition, development teams spend too much time taking their software through the development, test and acceptance environments, resulting in slow delivery of software into production. Finally, it was difficult to provide 24&#215;7 availability because all applications are running on a single machine.</p>
<h1><strong><span style="font-family: helvetica;">Java Application Platform </span></strong></h1>
<p>The following figure illustrate the solution architecture of the java application platform.</p>
<p><a href="http://blog.xebia.com/wp-content/uploads/2011/12/jap-solution-overview.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="jap solution overview" src="http://blog.xebia.com/wp-content/uploads/2011/12/jap-solution-overview_thumb.jpg" alt="jap solution overview" width="668" height="375" border="0" /></a></p>
<p>In the following paragraphs we will describe the purpose of the most important components.</p>
<h2>Dual Data Center – HP</h2>
<p>Not shown in the figure, is the hardware setup of the platform. It consists of <a href="http://h18004.www1.hp.com/products/blades/bladesystem/index.html" target="_blank">HP</a> blades setup in two data centers on two different locations. This provides the basic infrastructure for 24&#215;7 availability and fault tolerance.</p>
<h2>VMware ESX</h2>
<p><a href="http://www.vmware.com" target="_blank">VMware</a> ESX is deployed on top of the hardware in the dual data center. This provides us with the ability to create virtual machines and provide high availability in case of single server of single site failures. It also allows us the quickly scale up virtual machines and increase the resources assigned to individual virtual machines.</p>
<p>For all machines in the platform we use a single VMware template image. This image is installed with RedHat Enterprise Linux and a puppet client.</p>
<h2>Puppet</h2>
<p><a href="http://blog.xebia.com/wp-content/uploads/2011/12/vm-template1.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="vm-template" src="http://blog.xebia.com/wp-content/uploads/2011/12/vm-template_thumb1.jpg" alt="vm-template" width="308" height="142" border="0" /></a></p>
<p><a href="http://www.puppetlabs.com" target="_blank">Puppet</a> fully automates system management. It is used for the installation of software packages, conformity tests and day to day system administration tasks.  For every type of node, we have a puppet plan. When the machines boots, the puppet agent provisions the machine with all the necessary software and configuration according to the plan for that machine.</p>
<p>The use of Puppet completely automates and standardizes the configuration, ensures 100% reproducibility of the configuration and is fast. Provisioning of a new machine from the template to full operational mode is done in a matter of minutes.</p>
<h2>JBoss EAP</h2>
<p><a href="http://www.jboss.com/products/platforms/application/" target="_blank">JBoss Enterprise Application Platform</a> is the Enterprise Java applications server for all java applications.  The installation and configuration is done by Puppet and uses the official RedHat RPMs.  Puppet configures JBoss to ensure that :</p>
<ul>
<li>JBoss management applications authenticate users against Active Directory, providing a single point of authorization for operations.</li>
<li>A JBoss Oracle database schema is automatically provisioned for that specific instance of JBoss, providing persistence for the JBoss server system state.</li>
<li>All Business Applications can authenticate users using SAML against the Layer7 Identity provider, providing a single point of authentication and authorization for their customers.</li>
<li>The JBoss instance is added to the pool in the F5 Load balancer</li>
<li>The application server is added to the Deployit infrastructure inventory, providing the tenants of the platform with the ability to deploy applications to the server.</li>
</ul>
<p>JBoss application servers are always deployed in multiples of two, where each server of a pair is assigned to a physically different data center location by VMware.</p>
<p>The use of puppet provides us with a fast and reproducible way of provisioning JBoss application servers, allowing for a fast and reliable scale out mechanism for the applications.</p>
<h2>JBoss Operations Network</h2>
<p><a href="http://blog.xebia.com/wp-content/uploads/2011/12/image.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="image" src="http://blog.xebia.com/wp-content/uploads/2011/12/image_thumb.png" alt="image" border="0" /></a></p>
<p><a href="http://www.redhat.com/jboss_on/" target="_blank">JBoss Operations Network (</a>JON) is used for monitoring all the resources in the platform.   By default, Puppet installs a JON agent on every machine. This agent scans the inventory of the machine and reports it to the JON server.</p>
<p>JON has a very good support for high availability and fail over. By simply adding a JON server machine, agents will automatically distribute themselves across the servers and failover if necessary. Each JON server also runs a JON agent, making sure that unavailability of a JON server is also covered.</p>
<p>In JON we created a number of alert templates for different resource types (os, apache, jboss, jon, puppet, etc.)  that will monitor and report critical conditions on the system.  All error messages from the JBoss servers logs are reported as incidents.</p>
<p>All alerts and clearing conditions from JBoss Operations network are reported via SNMP to TNG Unicenter.</p>
<p>Through the  use of JBoss Operations Network all machines, servers and resources in the platform are automatically added to the centralize monitoring system.</p>
<h2>Deployit</h2>
<p><a href="http://blog.xebia.com/wp-content/uploads/2011/12/image1.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="image" src="http://blog.xebia.com/wp-content/uploads/2011/12/image_thumb1.png" alt="image" width="244" height="148" border="0" /></a></p>
<p><a title="Deployit" href="http://www.xebialabs.com" target="_blank">Deployit</a> is used for the automated deployment of applications onto the platform. It automatically deploys all the application components in a stack to the appropriate containers.  Deployit :</p>
<ul>
<li>deploys static content and proxy configuration to the apache webservers,</li>
<li>deploys enterprise java application components to all individual JBoss servers in the farm,</li>
<li>executes SQL scripts to the database,</li>
<li>configures the F5 loadbalancers to add or remove servers or applications to the pool,</li>
<li>applies environment specific changes to the application configuration.</li>
</ul>
<p>The deployment plan for a specific application is prepared in close cooperation between the application developer and platform management staff. When the deployment plan is finished, developers can deploy new versions of the application themselves, directly from a build tool or manually.This ensures solving any installation or configuration problem isn&#8217;t postponed until the application is installed for production use, but rather is solved at the early stage of any development.</p>
<p>The same deployment plan is used for all environments. Authorization can be configured per enviroment and per application. LDAP is used to authorize software developers to deploy and configure an application for development and testing purposes, while integration specialist can deploy the application in production.</p>
<p>The use of Deployit provides the platform with a fully automated and standardized deployment mechanism, improving the speed of deployment of applications through the development, test and acceptance environments while reducing the number of staff involved and lowering the number of configuration errors.</p>
<h2>F5 Load Balancer</h2>
<p><a href="http://blog.xebia.com/wp-content/uploads/2011/12/image2.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="image" src="http://blog.xebia.com/wp-content/uploads/2011/12/image_thumb2.png" alt="image" width="244" height="229" border="0" /></a></p>
<p>The<a title="F5 Load balancers" href="http://www.f5.com/products/big-ip/" target="_blank"> F5 Load balancers</a> is used to support scalability and fail over for the JBoss Application Server farm.</p>
<p>The pools are configured to use a sticky session protocol based upon the JSESSIONID session cookie. If the cookie is not present, round-robin load balancing of the HTTP requests is performed.</p>
<p>Puppet adds the JBoss servers to the  pool in the F5 Load Balancer.</p>
<p>When a server is scheduled for a restart, the server is taken out of the pool. This ensures that this server does not get any new request, but will still be servicing existing sessions. When the session count in JBoss drops to zero, the server is restarted and restored to the pool.</p>
<p>The use of the F5 Load Balancer provides us with the ability to increase and decrease the number of servers in the farm, provide load balancing, fail over and graceful decommissioning of servers in the farm.</p>
<h2>Layer7 XML Gateway / Identity Provider</h2>
<p><a href="http://blog.xebia.com/wp-content/uploads/2011/12/image3.png"><img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="image" src="http://blog.xebia.com/wp-content/uploads/2011/12/image_thumb3.png" alt="image" width="244" height="149" border="0" /></a></p>
<p>The<a href="http://www.layer7tech.com/products/soa-gateway" target="_blank"> Layer7 SecureSpan Gateway</a> is used as centralized security policy enforcement point and SAML identity provider.</p>
<p>Layer7 supports multiple authentication methods, Kerberos, digital certificates, username+password and is able to use multiple identity stores.</p>
<p>Puppet configures all JBoss application servers with SAML support and configures Layer7 as the identity provider: JBoss receives authentication (identity) and authorization (roles) information as a SAML-token. The information contained in the token is translated to a standard JEE-principal user (using a tiny layer of custom code), so all JEE applications can access the authentication and authorization information in a standard way.  Whether the JEE application is a web application or provides webservices, from a security there&#8217;s no distinction. All application designers have to do is declare the application security roles conform the JEE standard.</p>
<p>The use of Layer7 standardizes the authentication and authorization for all business applications and centralizes access control.</p>
<h1>Conclusion</h1>
<p>The customer wanted a modern data center quality Java Application Platform to ensure that java applications could be deployed with lower cost and with high availability and easy scalability.</p>
<p>VMware, the dual data center, Layer7, the F5 Load balancer and JBoss provide the infrastructure for a  high availability and scalability for any java application. The combination of VMware, Puppet and Deployit are the fabric to enable continuous delivery of enterprise java applications.</p>
<p>Through virtualization and automated provisioning and deployment it has become possible to add a completely new, correctly configured machine to a cluster in a matter of minutes, completely secure and under full monitoring.</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/12/14/continuous-delivery-for-enterprise-java-applications/"></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%2F12%2F14%2Fcontinuous-delivery-for-enterprise-java-applications%2F&amp;title=Continuous%20Delivery%20for%20Enterprise%20Java%20Applications" 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/2011/12/14/continuous-delivery-for-enterprise-java-applications/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Did we make the right architectural choice?</title>
		<link>http://blog.xebia.com/2011/08/31/did-we-make-the-right-architectural-choice/</link>
		<comments>http://blog.xebia.com/2011/08/31/did-we-make-the-right-architectural-choice/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 10:09:41 +0000</pubDate>
		<dc:creator>Gero Vermaas</dc:creator>
				<category><![CDATA[Architecture]]></category>

	<!-- AutoMeta Start -->
	<category>spreadsheet</category>
	<category>caption</category>
	<category>alternatives</category>
	<category>scus</category>
	<category>coordination</category>
	<category>connections</category>
	<category>subsystem</category>
	<category>alternative</category>
	<category>spreadsheet</category>
	<category>caption</category>
	<category>alternatives</category>
	<category>scus</category>
	<category>coordination</category>
	<category>connections</category>
	<category>subsystem</category>
	<category>alternative</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=7354</guid>
		<description><![CDATA[That was the question on my mind while walking out of an hour and a half meeting which was attended by 6 people. The problem wasn&#8217;t that complicated, we went into the meeting with 3 alternative solutions: so why did it take so long to pick one? It kept nagging me a bit and then [...]]]></description>
			<content:encoded><![CDATA[<p>That was the question on my mind while walking out of an hour and a half meeting which was attended by 6 people. The problem wasn&#8217;t that complicated, we went into the meeting with 3 alternative solutions: so why did it take so long to pick one? It kept nagging me a bit and then I recalled the &#8220;<a href="http://www.amazon.com/Architectures-Enterprises-PRO-best-Practices-Microsoft/dp/0735625786">Simple Architectures for Complex Enterprises</a>&#8221; book by Roger Sessions. By applying his approach I was able to determine if we made the right choice and I&#8217;ll describe the results below.</p>
<p><span id="more-7354"></span><br />
For details on the calculation, refer to the book. It&#8217;s well worth the read and if you&#8217;d like to start off with a shorter version, there&#8217;s a whitepaper available <a href="http://objectwatch.com/white_papers.htm#Math">here</a>. The short summary is that simplicity trumps all other quality aspects of a system. Simple systems are easier to maintain, perform better, scale better, etc. Simple is the opposite of complex and using his approach you can calculate the relative complexity of different alternatives. Number of business functions and number of connections per system are the main input for the calculation. The one with the lowest complexity is the best alternative.</p>
<div style="padding: 5px; float: right;">
<div id="attachment_7359" class="wp-caption alignright" style="width: 179px"><a href="http://blog.xebia.com/wp-content/uploads/2011/08/start-situation3.jpg"><img class="size-medium wp-image-7359" title="start-situation" src="http://blog.xebia.com/wp-content/uploads/2011/08/start-situation3-169x300.jpg" alt="Start situation" width="169" height="300" /></a><p class="wp-caption-text">Start situation</p></div>
</div>
<p>Enough theory, what is the problem at hand? The picture on the right is the system landscape that is already in place. In reality there are more systems surrounding it, but I limited it to the systems that are considered in the alternatives. Systems A/B/C/D are all part of a fulfillment chain and as you can see they are all decoupled by <a href="http://en.wikipedia.org/wiki/Enterprise_application_integration">EAI</a> adapters. The datawarehouse (DWH) is fed with product details that are delivered by the fulfillment chain systems.</p>
<p>The functionality used down the chain from system A till D is now limited to order processing. However, system A now needs an information service that enables it to decide on certain properties for the order submitted to system B. This information service needs:</p>
<ul>
<li>Details of delivered products that are present in system B and C (and also fed to the DWH)</li>
<li>Business rules that are only known in system C</li>
<li>Business rules that are only known in system D</li>
</ul>
<div>To calculate the complexity of the existing situation I used <a href="http://www.objectwatch.com/whitepapers/ArchitecturalComplexity.xls">the spreadsheet</a> provided with the whitepaper. Putting the number of business functions and connections per subsystem into the spreadsheet adds up to 157 SCUs (Standard Complexity Units, see <a href="http://objectwatch.com/white_papers.htm#Math">whitepaper</a> for details). This does not mean much yet, but once we have done the calculations for the alternatives, we&#8217;ll be able to see the relative increase in complexity. The calculations for the existing situation and the three 3 alternatives can be found in <a title="ArchitecturalComplexity-blog-alternatives.xls" href="http://blog.xebia.com/wp-content/uploads/2011/08/ArchitecturalComplexity-blog-alternatives.xls">this spreadsheet</a>.</div>
<div>How are we going to realize this information service? As said, three alternatives had been put on the table. I&#8217;ll describe each of them and their relative complexity according to the calculations of Roger Sessions.</div>
<div>
<div style="padding: 5px; float: right;">
<div id="attachment_7361" class="wp-caption alignright" style="width: 219px"><a href="http://blog.xebia.com/wp-content/uploads/2011/08/alternative-1.jpg"><img class="size-medium wp-image-7361" title="alternative-1" src="http://blog.xebia.com/wp-content/uploads/2011/08/alternative-1-209x300.jpg" alt="EAI coordination, no DWH" width="209" height="300" /></a><p class="wp-caption-text">EAI coordination, no DWH</p></div>
</div>
<p><strong>Alternative 1: EAI Coordination without DWH</strong></p>
<p>In this alternative a composite EAI service is created that is invoked by system A and subsequently gets the required details from system B, then asks system C to enrich it and apply its business rules and finally asks system D to apply its business rules. After that it&#8217;s able to send the response back to system A.</p>
<div>Putting the number of business functions and connections per subsystem into the <a href="http://blog.xebia.com/wp-content/uploads/2011/08/ArchitecturalComplexity-blog-alternatives.xls">spreadsheet</a> adds up to 422 SCUs. So adding one new component and 4 new connections almost tripled the complexity!</div>
</div>
<p><br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/>
<div style="padding: 5px; float: right;">
<div id="attachment_7369" class="wp-caption alignright" style="width: 224px"><a href="http://blog.xebia.com/wp-content/uploads/2011/08/alternative-21.jpg"><img class="size-medium wp-image-7369" title="alternative-2" src="http://blog.xebia.com/wp-content/uploads/2011/08/alternative-21-214x300.jpg" alt="EAI Coordination with DWH" width="214" height="300" /></a><p class="wp-caption-text">EAI Coordination with DWH</p></div></p>
</div>
<p><strong>Alternative 2: EAI Coordination with DWH</strong></p>
<p>In this alternative a composite EAI service is created that is invoked by system A and subsequently gets the required details from the DWH (instead of from system B), then asks system C to enrich it and apply its business rules and finally asks system D to apply its business rules. After that it&#8217;s able to sent the response back to system A.</p>
<div>Putting the number of business functions and connections per subsystem into the <a href="http://blog.xebia.com/wp-content/uploads/2011/08/ArchitecturalComplexity-blog-alternatives.xls">spreadsheet</a> adds up to 408 SCUs. So that&#8217;s better than alternative 1 and the lower complexity is mostly caused by the fact that system B now only has 2 business functions.</div>
<div>
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/><br />
<br/></p>
<div style="padding: 5px; float: right;">
<div id="attachment_7377" class="wp-caption alignright" style="width: 183px"><a href="http://blog.xebia.com/wp-content/uploads/2011/08/alternative-3.jpg"><img class="size-medium wp-image-7377" title="alternative-3" src="http://blog.xebia.com/wp-content/uploads/2011/08/alternative-3-173x300.jpg" alt="Down the chain" width="173" height="300" /></a><p class="wp-caption-text">Down the chain</p></div></p>
</div>
<p><strong>Alternative 3: Down the chain</strong></p>
<p>In this alternative there is no composite EAI service that does the orchestration, but the request is pushed down the fulfillment chain (incl. EAI adapters) just like the normal orders. Each system and EAI adapter exposes a new service and once system D produces the result, it traverses up the chain though all systems again before it&#8217;s handed over to system A. At first glimpse this may seem a nice solution because a similar pattern is used as for the order processing, but each system/EAI adapter now has one extra business function and has extra connections.</p>
</div>
<div>When doing the math with the <a href="http://blog.xebia.com/wp-content/uploads/2011/08/ArchitecturalComplexity-blog-alternatives.xls">spreadsheet</a>, it adds up to 715 SCUs. So this is actually the most complex alternative of the three.</div>
<p><strong>Conclusion</strong></p>
<div>What alternative did we choose before doing the math? We selected alternative 2 and since this one has the lowest complexity we made the right choice. However, we could have reached the conclusion much faster if one of us would have done the math before we went into the meeting. And in addition we would have some &#8216;formal&#8217; argumentation why this alternative was the best one. I use this approach more often now. If you have used this, what are your experiences?</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/08/31/did-we-make-the-right-architectural-choice/"></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%2F31%2Fdid-we-make-the-right-architectural-choice%2F&amp;title=Did%20we%20make%20the%20right%20architectural%20choice%3F" 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/08/31/did-we-make-the-right-architectural-choice/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Customize off the shelf, be warned</title>
		<link>http://blog.xebia.com/2011/08/19/customize-of-the-shelf-be-warned/</link>
		<comments>http://blog.xebia.com/2011/08/19/customize-of-the-shelf-be-warned/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 07:47:54 +0000</pubDate>
		<dc:creator>Gero Vermaas</dc:creator>
				<category><![CDATA[Architecture]]></category>

	<!-- AutoMeta Start -->
	<category>cots</category>
	<category>shelf</category>
	<category>procurement</category>
	<category>experts</category>
	<category>cots</category>
	<category>shelf</category>
	<category>procurement</category>
	<category>experts</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=7323</guid>
		<description><![CDATA[A while ago I realized that the C in COTS stands for Customize, so in reality it is Customize Off The Shelf (and not Commercial Off The Shelf). The premise of COTS products is that it reduces system development costs and long term operational maintenance costs. Sounds like music to management and procurement departments. Reality [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago I realized that the C in <a href="http://en.wikipedia.org/wiki/Commercial_off-the-shelf">COTS</a> stands for <span style="text-decoration: underline;">Customize</span>, so in reality it is Customize Off The Shelf (and not Commercial Off The Shelf). The premise of COTS products is that it reduces system development costs and long term operational maintenance costs. Sounds like music to management and procurement departments. Reality can be different. Realizing that the C stands for Customize highlights one of the pitfalls most people are aware of: the amount of customization needed to make a COTS product fit in an organization can be huge. But there are more pitfalls and in this blog I&#8217;ll highlight a few.</p>
<p><span id="more-7323"></span></p>
<p>First pitfall is that many procurement departments and management still have the mindset that everything is clear at the start of a project, when there is a rough idea what problem must be solved and there is relative confidence that a positive business case can be made. To get a better picture of the costs service integrators are contacted such that the business case can be made. A preference for a COTS based solution is expressed and from there on the discussions focus on the features of the COTS product, license costs and hourly rates for professional services. Little attention is given to deeper analyze the problem to be solved, get core requirements clear and see if a COTS product is the appropriate solution. For example a real time ETL product may support <a href="http://en.wikipedia.org/wiki/Change_data_capture">Change Data Capture</a>, but using it would create a really tight coupling to the internal data model of the source system and requires the ETL product to understand how to interpret that data model. Although technically possible, it is definitely not preferred from an architectural perspective.</p>
<p>Selecting a COTS product is a decision that cannot be taken lightly, it frames the architecture and design space and comes with a set of consequences. This decision is hard to revert, so to make this decision you should understand the problem you trying to solve, the constraints that apply, the pro&#8217;s and con&#8217;s of the product etc. Proof of concepts provide valuable information and it forces you to really think about the problem you&#8217;re solving. Domain and technical experts should be able to decide what the relevant requirements (both functional and non-functional) to be included in the proof of concept are. Don&#8217;t rely on experts of the service integrator or COTS vendor alone, ensure you have some neutral experts involved. Should you pay for execution of such a proof of concept? Definitely not for licenses involved, for hours spent you could. Costs of a proof of concept should be a fraction of the total costs and you may be saving yourself an ton of money by doing a serious proof of concept and learning from it. Remember, you get what you pay for.</p>
<p>When the decision for a specific COTS product is made next pitfalls come into play. Although the product is envisioned to work off the shelf, there is always that <em>tiny</em> bit of configuration to be done. More often than not this turns out to be a significant effort. Now the team starts to really dig into the requirements and understand them. Some can be realized easily with the COTS products, some not and that&#8217;s where trouble starts. If you feel like your pushing a square through a round hole, you know you got the wrong tool for the problem at hand. Deciding to no use the COTS product (for everything) often is a politically sensitive subject. Therefore, be open about this and always keep the option open to use other tools to if the COTS product becomes an impediment. The goal is not to use the COTS product XYZ, the goal is to solve the business problem at hand.</p>
<p>The next pitfall concerns the use of development practices. If significant configuration effort and/or custom coding is required it becomes a development project instead of <em>just</em> deploying a COTS product. If it is a development project, it should be treated like that and established practices like version and release management, continuous integration, automated testing, automated deployment, etc. must be applied. These practices build quality into the process and enable teams to identify and fix issues early instead of after go-live. Are these practices ignored? Yes, at least I&#8217;ve seen it happen. The question is &#8220;why?&#8221;.</p>
<p>I suspect that one cause is mix of skills in the team, or actually, the lack thereof. When running a project based on a COTS product the natural tendency is to search for team members that are trained for that product. Although they know the COTS product inside out, they may not have a software engineering background and/or are not hooked into the software engineering community. They are simply not aware of these practices. And if they are aware of the existence of these practices, they may not know how to execute them. For these reasons it&#8217;s important to have a mixed skills set in the team. Sure you need COTS product experts, but you also need all-round software engineers, a DBA, operating system experts, etc. They might not be full time team members during the whole project, but they must be available at short notice and stay informed about the current state of the project.</p>
<p>Another reason why these practices are not applied may be limitations of the COTS product. If the COTS product doesn&#8217;t support version management by itself and integration with a well known version management system like Subversion is not possible, then you&#8217;ll have to work out an alternative. This may involve some manual exporting etc, but the fact that it&#8217;s not supported out of the box, does not imply that these practices can be skipped without negative consequences.</p>
<p>A third reason to have a mixed team is to prevent the <a href="http://en.wikipedia.org/wiki/Law_of_the_instrument">golden hammer syndrome</a>. If the team consists only of COTS product experts, they&#8217;ll try to solve every problem with the COTS product. Even when a bit of scripting or the use of standard command line tools would do the trick much faster and with less effort. Generation of test data is an example, typically a bit of scripting is enough to generate test data. However, I&#8217;ve seen situations in which complete ETL workflows in the COTS product were developed to generate test data. That took significant effort and the speed at which the data was generated was low (which became a problem when the database had to be populated with larger amounts of data). An all-round software engineer must be able to generate that test data in a much more efficient way.</p>
<p>These are some pitfalls and suggestions how to deal with them that I cam across. They can be prevented by having the right mix of skills involved and by focussing on the problem to be solved instead of focussing on COTS product features. What pitfalls have you seen? How should we prevent them from happening?</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/19/customize-of-the-shelf-be-warned/"></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%2F19%2Fcustomize-of-the-shelf-be-warned%2F&amp;title=Customize%20off%20the%20shelf%2C%20be%20warned" 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/08/19/customize-of-the-shelf-be-warned/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting started with Node.js, npm, Coffeescript, Express, Jade and Redis</title>
		<link>http://blog.xebia.com/2011/06/24/getting-started-with-node-js-npm-coffeescript-express-jade-and-redis/</link>
		<comments>http://blog.xebia.com/2011/06/24/getting-started-with-node-js-npm-coffeescript-express-jade-and-redis/#comments</comments>
		<pubDate>Fri, 24 Jun 2011 13:40:19 +0000</pubDate>
		<dc:creator>Erwin van der Koogh</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Node.js npm coffeescript express java redis]]></category>

	<!-- AutoMeta Start -->
	<category>redis</category>
	<category>redis</category>
	<category>app2</category>
	<category>3000</category>
	<category>express</category>
	<category>express</category>
	<category>1337</category>
	<category>sudo</category>
	<category>redis</category>
	<category>redis</category>
	<category>app2</category>
	<category>3000</category>
	<category>express</category>
	<category>express</category>
	<category>1337</category>
	<category>sudo</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=7001</guid>
		<description><![CDATA[To celebrate my move to the Agile Consulting and Training division of Xebia I thought it would be very appropriate to start playing with some hip new technologies. From their homepages: Node.js: Evented I/O for V8 JavaScript. (A framework for building completely non-blocking servers in Javascript) NPM: A package manager for node. CoffeeScript: A little [...]]]></description>
			<content:encoded><![CDATA[<p>To celebrate my move to the Agile Consulting and Training division of Xebia I thought it would be very appropriate to start playing with some hip new technologies.</p>
<p>From their homepages:</p>
<p><a href="http://nodejs.org/">Node.js</a>: Evented I/O for V8 JavaScript. (A framework for building completely non-blocking servers in Javascript)<br />
<a href="http://npmjs.org/">NPM</a>: A package manager for node.<br />
<a href="http://jashkenas.github.com/coffee-script/">CoffeeScript</a>: A little language that compiles into JavaScript<br />
<a href="http://expressjs.com/">Express</a>: High performance, high class web development for Node.js<br />
<a href="http://jade-lang.com/">Jade</a>: Node Template Engine<br />
<a href="http://www.redis.io/">Redis</a>: An open source, advanced key-value store</p>
<p>In this guide I will take very small steps so that you can verify that you are check whether you are still on track.<br />
The result is an extremely performant, scalable and lightweight alternative for web development.</p>
<p><span id="more-7001"></span></p>
<p>So I installed a brand new Ubuntu 11.4 virtual machine and got started. After following some tutorials, googling and some tweaking this is the step-by-step guide I came up with.</p>
<p><strong>Installing Node.js</strong></p>
<p><code>$ sudo apt-get install python-software-properties<br />
$ sudo add-apt-repository ppa:jerome-etienne/neoip<br />
$ sudo apt-get update<br />
$ sudo apt-get install nodejs<br />
</code></p>
<p><strong>Installing npm</strong></p>
<p><code>$ apt-get install curl<br />
$ curl http://npmjs.org/install.sh | sudo sh<br />
</code></p>
<p><strong>Node.js Hello World</strong></p>
<p><code>$ mkdir helloworld<br />
$ cd helloworld<br />
$ vi helloworld.js<br />
</code></p>
<p>insert</p>
<pre class="brush: jscript; title: ; notranslate">
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337);
console.log('Server running at http://127.0.0.1:1337/');
</pre>
<p><code>$ node helloworld.js</code></p>
<p>check http://127.0.0.1:1337</p>
<p><strong>Add Coffeescript</strong></p>
<p>Writing all that javascript is going to lead to lots and lots of brackets, semi-colons and parantheses. Let&#8217;s use Coffeescript to make our code readable again.</p>
<p><code>$ sudo npm install -g coffee-script<br />
$ cd ..<br />
$ mkdir hellocoffee<br />
$ cd hellocoffee<br />
$ vi hellocoffee.coffee<br />
</code></p>
<p>insert </p>
<pre class="brush: jscript; title: ; notranslate">http = require &quot;http&quot;
http.createServer( (req, res) -&gt;
  res.writeHead 200, {&quot;Content-Type&quot;: &quot;text/plain&quot;}
  res.end &quot;Hello Coffee!!&quot;
).listen 1337

console.log 'Server running at http://127.0.0.1:1337/'
</pre>
<p><code>$ coffee -c hellocoffee.coffee<br />
$ node hellocoffee.js</code></p>
<p>And check http://127.0.0.1:1337 again.</p>
<p><strong>Adding Express</strong></p>
<p>Node.js is a very powerful, but it still requires quite a bit of boilerplating to use it for web development. That&#8217;s where Express comes in. It is build on top of another middleware layer called Connect and gives you much better support in handling requests, rendering, templates and responses.</p>
<p><code>$ cd ..<br />
$ sudo npm install -g mime qs connect express<br />
$ mkdir helloexpress<br />
$ cd helloexpress<br />
$ express<br />
$ npm install -d<br />
$ node app.js<br />
</code></p>
<p>check http://127.0.0.1:3000</p>
<p><code>vi app2.coffee</code></p>
<p>insert:</p>
<pre class="brush: jscript; title: ; notranslate">
express = require('express')app = express.createServer()

# Setup configuration
app.use express.static(__dirname + '/public')
app.set 'view engine', 'jade'

# App Routes
app.get '/', (request, response) -&gt;
  response.render 'index', { title: 'Express with Coffee' }

# Listen
app.listen 3000
console.log &quot;Express server listening on port %d&quot;, app.address().port
</pre>
<p><code>$ coffee -c app2.coffee<br />
$ node app2.js<br />
</code></p>
<p>And check http://127.0.0.1:3000 again.<br />
Now that we have Coffeescript working with Express let&#8217;s add sessions.</p>
<p><strong>Add session support</strong></p>
<p><code>$ vi app2.coffee</code></p>
<p>insert after app.use express.static(__dirname + &#8216;/public&#8217;)</p>
<pre class="brush: jscript; title: ; notranslate">app.use express.cookieParser()
app.use express.session {secret: &quot;Coffeebreak&quot; }
</pre>
<p>insert after app.get &#8216;/&#8217;, (request, response) -></p>
<pre class="brush: jscript; title: ; notranslate">request.session.views++</pre>
<p>replace</p>
<pre class="brush: jscript; title: ; notranslate">response.render 'index', { title: request.session.views + ': Express with Coffee and sessions' }</pre>
<p><code>$ coffee -c app2.coffee<br />
$ node app2.js</code></p>
<p>Check http://127.0.0.1:3000 and refresh a few times. You should see the counter increase.</p>
<p><strong>Install Redis</strong></p>
<p>Open a new terminal.</p>
<p><code>$ wget http://redis.googlecode.com/files/redis-2.2.11.tar.gz<br />
$ tar -zxvf redis-2.2.11.tar.gz<br />
$ cd redis-2.2.11/<br />
$ sudo apt-get install build-essential<br />
$ make<br />
$ ./src/redis-server<br />
</code></p>
<p><strong>Add redis session to node</strong></p>
<p><code>$ npm install -d redis connect-redis<br />
vi app2.coffee</code></p>
<p>insert after express = require &#8216;express&#8217;</p>
<pre class="brush: jscript; title: ; notranslate">RedisStore = require('connect-redis')(express)</pre>
<p>change</p>
<pre class="brush: jscript; title: ; notranslate">app.use express.session {secret: &quot;Coffeebreak&quot;, store: new RedisStore, cookie: { maxAge: 60000 } }</pre>
<p><code>$ coffee -c app2.coffee<br />
$ node app2.js<br />
</code></p>
<p>In the Redis terminal you should now see something like:<br />
<code>[25489] 24 Jun 04:57:11 - DB 0: 1 keys (1 volatile) in 4 slots HT.<br />
[25489] 24 Jun 04:57:11 - 1 clients connected (0 slaves), 799032 bytes in use<br />
</code></p>
<p>Check http://127.0.0.1:3000 and refresh a bunch of times<br />
kill and restart node</p>
<p><code>$ node app2.js</code></p>
<p>Check http://127.0.0.1:3000 again and refresh a few more times<br />
Note that you started where you left off.</p>
<p>And that brings us to the end of this guide. As you can see the stack is very powerful and extremely small, lightweight and clean. With all the session information in the Redis store the availability of the entire systems comes down to the availability of Redis. And with these guys working on a proper clustering solution it will be very interesting to see where all this is going in the near future.</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/24/getting-started-with-node-js-npm-coffeescript-express-jade-and-redis/"></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%2F24%2Fgetting-started-with-node-js-npm-coffeescript-express-jade-and-redis%2F&amp;title=Getting%20started%20with%20Node.js%2C%20npm%2C%20Coffeescript%2C%20Express%2C%20Jade%20and%20Redis" 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/06/24/getting-started-with-node-js-npm-coffeescript-express-jade-and-redis/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Usefulness of a flexible architecture</title>
		<link>http://blog.xebia.com/2011/05/05/usefulness-of-a-flexible-architecture/</link>
		<comments>http://blog.xebia.com/2011/05/05/usefulness-of-a-flexible-architecture/#comments</comments>
		<pubDate>Thu, 05 May 2011 13:42:20 +0000</pubDate>
		<dc:creator>Herbert Schuurmans</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[SOA]]></category>

	<!-- AutoMeta Start -->
	<category>flexible</category>
	<category>outbalanced</category>
	<category>noble</category>
	<category>anxious</category>
	<category>hierarchal</category>
	<category>headline</category>
	<category>rigidity</category>
	<category>organization</category>
	<category>flexible</category>
	<category>outbalanced</category>
	<category>noble</category>
	<category>anxious</category>
	<category>hierarchal</category>
	<category>headline</category>
	<category>rigidity</category>
	<category>organization</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=6820</guid>
		<description><![CDATA[A flexible architecture can only come to its full potential when the organization itself is flexible. Recently I worked at a classical, hierarchal organization with all kinds of rigid procedures. The organization probably has (or at least had) very good reasons to have these procedures: when something goes wrong it will be headline news. For [...]]]></description>
			<content:encoded><![CDATA[<p>A flexible architecture can only come to its full potential when the organization itself is flexible.<span id="more-6820"></span></p>
<p>Recently I worked at a classical, hierarchal organization with all kinds of rigid procedures. The organization probably has (or at least had) very good reasons to have these procedures: when something goes wrong it will be headline news. For that reason they are quite anxious for things to go wrong. This has resulted in a standard waterfall development process. Because of this, it takes a long time to develop new applications. In some cases it takes even longer to deploy a new application in the production environment due to a complex and document heavy handover to the operations department.</p>
<p>About 5 years ago this organization decided to change to a flexible architecture<sup>1)</sup> by means of a SOA. The reason for this was mainly to be able to respond more quickly to business requests. In general the key benefits of a SOA are among others: IT-business alignment, improved development speed and re-usability of services. This should lead to a lower Time to Market, hence the decision for the organization to choose this architecture.<br />
Noble benefits, but what are the added values of a flexible architecture to this kind of static organizations when time related business requirements are involved?</p>
<p>In my opinion there are none. The flexibility of the architecture is outbalanced by the rigidity of the design, development and deployment process. A (very) small project would probably take 4-5 months to design, 2-3 weeks to build and test and something like 3-4 months to deploy. That includes all the paper work. A flexible architecture would probably shorten this by a few weeks. Instead of 9 months it would perhaps take 8.5 months. The processes involved are simply too time consuming to take a reasonable profit of a flexible architecture.</p>
<p>A flexible architecture can therefore only come to its full potential when the organization itself is flexible, for example by a more iterative and incremental way of working.</p>
<p>More about this, in relation to Conway&#8217;s law in a next blog.</p>
<p><sup>1)</sup> Flexible architecture = an architecture which meets changing business demands without major changes to the architecture itself first.</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/05/usefulness-of-a-flexible-architecture/"></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%2F05%2Fusefulness-of-a-flexible-architecture%2F&amp;title=Usefulness%20of%20a%20flexible%20architecture" 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/05/05/usefulness-of-a-flexible-architecture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Architecture in an Agile world</title>
		<link>http://blog.xebia.com/2011/05/03/architecture-in-an-agile-world/</link>
		<comments>http://blog.xebia.com/2011/05/03/architecture-in-an-agile-world/#comments</comments>
		<pubDate>Tue, 03 May 2011 06:20:40 +0000</pubDate>
		<dc:creator>Niklas Odding</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[lean architecture]]></category>
		<category><![CDATA[Requirements Management]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Lean]]></category>

	<!-- AutoMeta Start -->
	<category>cycles</category>
	<category>sync</category>
	<category>architecture</category>
	<category>cycles</category>
	<category>sync</category>
	<category>architecture</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=6773</guid>
		<description><![CDATA[This Blog is a kick off to for many writings about architecture in an Agile World. We will explore the topic from all the views possible, in order to gain a better understanding about it. By doing so, we hope to create a community of followers, who would also like to contribute or discuss about [...]]]></description>
			<content:encoded><![CDATA[<p>This Blog is a kick off to for many writings about architecture in an Agile World. We will explore the topic from all the views possible, in order to gain a better understanding about it. By doing so, we hope to create a community of followers, who would also like to contribute or discuss about this topic.</p>
<p>Xebia is helping many organizations in the Netherlands, France, the United States and India with implementing an agile way of system development. In most of the cases the Scrum method is applied and very good results are achieved. Business and IT are working much closer together, resulting in more quality and much more customer satisfaction. However, lately we also see a trend in problems that seem to occur in (almost) every organization. Software is developed in a fast way with high quality, but it takes forever to get it in production. The more teams are being formed, the more interdependencies between the teams occur<span id="more-6773"></span>, disturbing the heartbeat of the teams. Teams have to wait for other teams to finish, or they have to work together to complete the work. Also it’s not always clear which team should do which job. Next to this product owners are being over asked. They have to supply the teams with user stories / epics, but also have to know upfront which team to ask it, have a clear understanding of the direction of the solution and at the same time define non-functional requirements like availability or system responsiveness.</p>
<p>The scrum masters in the teams are not able to solve all this. They have the interest of their team at hand and are mainly focused on the process to do a good job. They are less focused on the contents of the product backlog or how team deliverables are related to the broader context. However the real situation in many organizations is different. The environment of scrum teams is complex and often not very agile. Scrum teams need to work in the context of an existing organization, which has formed over years. To be able to do so, they need a context. Especially the context in the content in important. Here is where architecture comes in.</p>
<p>The picture below shows how Scrum synchronizes the business cycles with the IT project cycles. Without Scrum the time lines for supply and demand are out of sync. By delivering software faster, Scrum is able to follow the priority of the business and develop IT systems which are in line with current demand (not with a demand from last year). However, businesses also have a longer term strategy, which can make them give significant competitive advantages in the near future. To be able to direct the IT development towards this longer term goals, the business needs architecture. In this way the short terms Business cycles and IT development cycles are in sync, but they move forward towards reaching the ultimate business goals. The picture shows the three different stages from being out of sync, to being in sync and also be moving towards the strategic goals.</p>
<p style="text-align: center;"><a href="http://blog.xebia.com/wp-content/uploads/2011/05/Scrum-architecture.png"><img class="aligncenter size-full wp-image-6774" title="Architecture aligns scrum" src="http://blog.xebia.com/wp-content/uploads/2011/05/Scrum-architecture.png" alt="" width="583" height="257" /></a></p>
<p>Therefore, architecture in the agile world has a very important role to play. However it has to adapt to the new way of working and the new way of looking at the world. In an earlier blog from Xebia, we talk about the 3 C’s of architecture. We defined three goals of the architecture function in IT organizations: The <a href="http://blog.xebia.com/2010/04/the-three-cs-of-architecture/" target="_blank">Three <strong>C’s of Architecture</strong></a>. These are: <strong>Connection, Cohesion and Changeability</strong>. Taking these as the prime principles of architecture provides focus on what to do and how to position architecture in the Agile organization. We deliberately do not speak of “the architect”, because architecture is created by many people: domain experts, (experienced) software developers, testers, operations people, software architects, enterprise architects, etc. Therefor we will talk about the architecture role.</p>
<p>The <strong><em>C</em></strong>onnection with organizational goals is achieved by using enterprise architecture as a way to create a common understanding about the business and IT in the future. But also the architecture role plays an important part in helping the product owner(s) to specify their requirements and give directions to possible solutions (in line with the enterprise architecture). <strong><em>C</em></strong>ohesion between teams and cohesion between teams and their surroundings, are the main aspects the architecture role has to focus on, by helping the teams getting more productive. Finally the architecture role focuses on <strong><em>C</em></strong>hangeability by continuously evolving the architecture and adjusting it to the real world. Architecture creates its own learning cycle. Next to this the modularity of the architecture has to be taken care of, so software is easily adapted without too much interference with other elements in the architecture.</p>
<p>In the coming months we will write a series of blogs, about several aspects of architecture in the agile world. First of all we will write about experiences in the field. How things are done. What can be done better and which lessons are learned. Next to this we would like to present out view about the architecture role in an Agile environment. Which tasks should be done, who contributes to creating architecture. Also we would like to write some blogs, about tools and methodologies used to be able to fulfill this new role in the best way possible. Finally we would like to talk about the architecture itself. How can we make architecture agile? How do we modularize the application architecture, or in what way does virtualization, provisioning and automated deployment help? With all these blogs we intend to redefine the world of architecture in the agile world. Comments and opinions are most welcome, so the architecture and agile communities merge together with a way of thinking on architecture.</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/03/architecture-in-an-agile-world/"></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%2F03%2Farchitecture-in-an-agile-world%2F&amp;title=Architecture%20in%20an%20Agile%20world" 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/05/03/architecture-in-an-agile-world/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Architects &amp; Scrum: 4. What is the role of the architect in Scrum?</title>
		<link>http://blog.xebia.com/2011/02/28/architects-scrum-4-what-is-the-role-of-the-architect-in-scrum/</link>
		<comments>http://blog.xebia.com/2011/02/28/architects-scrum-4-what-is-the-role-of-the-architect-in-scrum/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 09:44:51 +0000</pubDate>
		<dc:creator>Niklas Odding</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[lean architecture]]></category>
		<category><![CDATA[Requirements Management]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[role]]></category>

	<!-- AutoMeta Start -->
	<category>architects</category>
	<category>architects</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=6258</guid>
		<description><![CDATA[In my last blog I presented an illustration which shows the two primary aspects of the architects’ role. On one side they play a role in strengthening the heartbeat. On the other side, they play a role in envisioning the future. The focus in this blog is on the solution architect or application architect. The [...]]]></description>
			<content:encoded><![CDATA[<p>In my last blog I presented an illustration which shows the two primary aspects of the  architects’ role. On one side they play a role in strengthening the  heartbeat. On the other side, they play a role in envisioning the  future.</p>
<p>The focus in this blog is on the solution architect or application architect. The way the Enterprise architect deals with Scrum will be explored more in detail in a later blog. This blog combined with the previous 3 blogs can be also downloaded as a whitepaper from the Xebia website: <a title="Whitepaper Architects &amp; Scrum" href="http://www.xebia.com/architects_scrum" target="_blank">http://www.xebia.com/architects_scrum</a></p>
<p><em><strong>What is the role of the architect?</strong></em><br />
Last blog I presented the illustration as shown below. In this blog I will focus on the parts of this illustration in which the solution architect / application architect plays a role</p>
<p><strong><span id="more-6258"></span>Product backlog</strong><a rel="attachment wp-att-6067" href="http://blog.xebia.com/2011/02/09/architects-scrum-3-architects-add-vision/agile-architects-autosaved/"><img class="size-full wp-image-6067 alignright" title="Agile architects" src="http://blog.xebia.com/wp-content/uploads/2011/02/Agile-architects-Autosaved.gif" alt="" width="406" height="304" /></a><br />
Traditionally, architects have been the chief designers in software development. Projects often start with an extensive project architecture document, in which the solution has been written down using many words and lots of paper. In today’s Scrum practice, the focus is on the most prioritized epics and user stories in the product backlog. Epics and user stories are usually short. Teams take epics and user stories from the backlog and design the best solution for them. So what is the role of architects at this stage?</p>
<p>In fact, architects have a very important role during this stage, especially in larger organizations with many software systems. They discuss the requirements with the organization and make the first global design decisions for each epic on the product backlog in line with the overall architecture. In large organizations with multi-layered SOA architectures, the number of software components used can be very high. Ten to twenty agile teams working on new features is not an exception. Architects make the first global design decisions because they are the ones who oversee the whole picture. Questions have to be answered, such as ”do we need extra components?”, ”do we adjust existing components?” and “in which layer of the architecture do we want to implement the change?” These decisions are not made by architects alone. They discuss them with product owners to determine their real needs, and they discuss them with the agile teams to determine how the software really works.</p>
<p>The design decisions made at this stage are normally written down on no more than one-half page. If this is not the case, then the architects could lose themselves in details. These details will be discussed in the teams. The architects can also make an initial estimation of the complexity of the solution, which can be used when epics are picked up by the teams.</p>
<p>Architects help to narrow the cone of uncertainty. The cone of uncertainty describes the evolution of uncertainty during a project. At the beginning of a project, comparatively little is known about the product or work results, so estimates have a high level of uncertainty. Architects help the product owner reduce the level of uncertainty, making it easier for the product owner to set priorities and for teams to focus on the specific solution within their areas of expertise.</p>
<p><strong><em>Agile teamwork</em></strong></p>
<p>Architects are present daily on agile teams. They have to discuss the upcoming epics/user stories in the next sprints. Additionally, daily design decisions are made together with the teams on a lower level. This provides feedback to the architects about the positive and negative sides of the global design decisions they have made. Architects without experience in the teams will lose contact with the real world.</p>
<p>Architects also have an important role in monitoring the architectural principles through all layers of the architecture. This means, for example, that they have to know whether all business rules are implemented within the business layer or whether customer information is always stored in the CRM component. Being on the team can help architects make architectural principles more practical; the architectural principles evolve from a practical standpoint.</p>
<p>The architectural principles also include more technical aspects, such as the use of middleware and hardware. Ideally, the “definition of done” within a team includes the deployment to production. In this respect, the DEVOPS movement has recently become stronger. The architects can provide guidance in performance issues or security issues. This brings these aspects of software development closer to software developers and analysts.</p>
<p>Cooperation in teams between developers, testers, performance specialists, hardware specialists and others will help to create and capture new ideas. These new ideas might not always be implemented directly. New ideas can also impact other teams, or software redesign may require extra time or expertise that is not available to the team, which means the team cannot implement the ideas. So how can architects deal with these ideas?</p>
<p><strong><em> </em></strong></p>
<p><strong><em>Dealing with design ideas</em></strong></p>
<p>Architects who are helping to groom the product backlog and who are working in agile teams are often very busy with daily problems. But there is a second, equally important part to their role: to envision the future. They step out of the daily problem-solving activities to evaluate the big picture. What new ideas are desirable and possible? How does current progress influence the overall architecture? This thinking results in what we call design ideas.</p>
<p>First of all, new design ideas can emerge from grooming the product backlog and working in the teams. Ideas for new components or ideas to change existing components emerge. The focus in agile teams is often on the speed of delivery, so the business can adapt quickly to changes in its environment. Although this is a major strength of Scrum, it also makes architectural deficiencies very likely. Software redesign is not done properly because of lack of time, or is not done at all. It is important that these shortcomings are acknowledged and written down as design ideas for future sprints. A design idea with a valid business case of its own should also be placed on the product backlog.</p>
<p>Design ideas arise not only from software architecture; technical and business areas are also a rich source of design ideas. Virtualization of the hardware can save a lot of money and reduce complexity. Regulatory compliance demands more control over traceability. These types of ideas are often executed by the IT department, without a direct connection to business goals. However, these design ideas should be linked to business requirements and find their way to the product backlog. If necessary, new agile teams — guided by product owners with help from the architects — can be formed to handle the implementation of these ideas.</p>
<p>New ideas also emerge from the strategic alignment of the business and IT. This is the domain of enterprise architecture and IT strategy. IT can become a critical success factor for the business and a catalyst for future business change. Enterprise architects or chief information officers are closely related to and cooperate with organization management. Their goal is to see how IT can be employed as an important production factor in the organization. Enterprise architects translate strategic choices into new design ideas. These design ideas will also find their way to the product backlog.</p>
<p>Traditionally, architects decide on the architecture and on the conformance of software to the enterprise architecture. But a transparent assessment of the real business value is rarely made. Conformance is king. This dynamic has changed in the new reality of Scrum. We employ a different approach for translating enterprise architectural requirements into concrete software artifacts. The main purpose of design ideas is to select the right ideas or architectural features to implement, based on actual value. The first step is to organize design ideas in a backlog. Architects use that backlog while collaborating with product owners in evolving the product backlog. This collaboration is based on a partnership aiming towards business value, now and in the future.</p>
<p>Business value does not necessarily equal cost savings. It is also found in continuity planning (e.g. when the number of servers needs to be increased to preserve system stability) or in software adaptability. The choice of which design ideas to implement is ultimately made by the product owner. Architects have an important role in explaining and promoting these ideas.</p>
<p><strong><em>Balancing the work</em></strong></p>
<p>In companies with a complex multi-system environment and multiple agile teams, architects should be very close to the product owner, helping to create maximum business value out of the requirements on the product backlog. By sketching the solution and the complexity, architects help the product owner to set even better priorities, and help the support teams with the outcome of these global design discussions. Also, new design ideas will be discussed with the product owner and possibly placed on the product backlog. An effective relationship between the product owner and the architects can create more business value with less effort<strong><em>. </em></strong></p>
<p>If we follow Chandler’s principles, the adoption of Scrum should include an alignment of structure, process, and strategy — or it will fail. At best, it results in a sub-optimization within the overall enterprise. In this white paper we explored the alignment of Scrum with the architectural processes and showed how the role of architects within an agile context takes shape in order to create more business value.</p>
<p>Agile architects focus on the most important outcomes of their work. They go back to basics and chose their tools deliberately. By focusing less on documentation and much more on communication, they can become an important accelerator for sprint teams and help the organization to build business value by fostering new design ideas.</p>
<p>But architects not only focus on daily business activities and on strengthening the heartbeat of the Scrum teams. The second pillar of their work is envisioning the future and clarifying the enterprise architecture. All architects therefore should claim time for this and communicate the benefits for business and IT.</p>
<p>Agile architects do not live in ivory towers. They are pragmatic and involved in daily business, while not forgetting their role in envisioning the future.</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/02/28/architects-scrum-4-what-is-the-role-of-the-architect-in-scrum/"></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%2F02%2F28%2Farchitects-scrum-4-what-is-the-role-of-the-architect-in-scrum%2F&amp;title=Architects%20%26%23038%3B%20Scrum%3A%204.%20What%20is%20the%20role%20of%20the%20architect%20in%20Scrum%3F" 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/02/28/architects-scrum-4-what-is-the-role-of-the-architect-in-scrum/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Architects &amp; Scrum: 3. Architects add vision</title>
		<link>http://blog.xebia.com/2011/02/09/architects-scrum-3-architects-add-vision/</link>
		<comments>http://blog.xebia.com/2011/02/09/architects-scrum-3-architects-add-vision/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 09:10:39 +0000</pubDate>
		<dc:creator>Niklas Odding</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[lean architecture]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Scrum]]></category>

	<!-- AutoMeta Start -->
	<category>architects</category>
	<category>strengthening</category>
	<category>heartbeat</category>
	<category>illustration</category>
	<category>worlds</category>
	<category>assist</category>
	<category>pursuing</category>
	<category>blog </category>
	<category>architects</category>
	<category>strengthening</category>
	<category>heartbeat</category>
	<category>illustration</category>
	<category>worlds</category>
	<category>assist</category>
	<category>pursuing</category>
	<category>blog </category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=5891</guid>
		<description><![CDATA[In my last post I stated that there is a lot of emphasis on the fact that architects have to help to get the scrum team to work better, faster en with more quality. By following the agile values the architect will help “strengthening the heartbeat” of the scrum teams. However the activities of architects [...]]]></description>
			<content:encoded><![CDATA[<p>In my last post I stated that there is a lot of emphasis on the fact that architects have to help to get the scrum team to work better, faster en with more quality. By following the agile values the architect will help “strengthening the heartbeat” of the scrum teams. However the activities of architects should encompass more. In this blog  I will explain what this is and how to incorporate this in your way of working with scrum teams.</p>
<p><span id="more-5891"></span></p>
<p><strong><em>Architects add vision</em></strong></p>
<p><em>Strengthening the heartbeat</em> of Scrum teams is an overly limited view of the contribution that architects can make in an agile environment. They also help develop new design ideas, assist the organization in pursuing its strategy with the aid of IT, identify IT opportunities which could promote business value and assist in their implementation. Architects envision the future. In this way architects can also become catalysts for change. New IT developments can have a major impact on the business strategy and on the priorities for IT development.</p>
<p>This part of the work of the architect is often forgotten in organizations that are adopting Scrum. But is a very important part of the architects work. The following illustration shows the two primary aspects of the architects’ role. On one side they play a role in strengthening the heartbeat. On the other side, they play a role in envisioning the future.</p>
<p style="text-align: center;"><a href="http://blog.xebia.com/wp-content/uploads/2011/02/Picture1.png"><br />
</a><a href="http://blog.xebia.com/wp-content/uploads/2011/02/Agile-architects.tif"><img class="aligncenter size-full wp-image-6065" title="Way of working Agile architects" src="http://blog.xebia.com/wp-content/uploads/2011/02/Agile-architects.tif" alt="" /></a><a href="http://blog.xebia.com/wp-content/uploads/2011/02/Agile-architects.tiff"><img class="aligncenter size-full wp-image-6066" title="Agile architects" src="http://blog.xebia.com/wp-content/uploads/2011/02/Agile-architects.tiff" alt="" /></a><a href="http://blog.xebia.com/wp-content/uploads/2011/02/Agile-architects-Autosaved.gif"><img class="aligncenter size-full wp-image-6067" title="Agile architects" src="http://blog.xebia.com/wp-content/uploads/2011/02/Agile-architects-Autosaved.gif" alt="" width="619" height="477" /></a></p>
<p style="text-align: left;">As can be seen in the illustration, there are of course the necessary connections between the two parts of the job. The concept of <em>&#8220;design ideas&#8221;</em> is helping a lot to be able to connect the two worlds. In my next post I will go into more detail about the way the architects can connect both worlds and add more value to the organization.</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/02/09/architects-scrum-3-architects-add-vision/"></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%2F02%2F09%2Farchitects-scrum-3-architects-add-vision%2F&amp;title=Architects%20%26%23038%3B%20Scrum%3A%203.%20Architects%20add%20vision" 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/02/09/architects-scrum-3-architects-add-vision/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Architects &amp; Scrum: 1. The forgotten questions of scrum.</title>
		<link>http://blog.xebia.com/2011/01/18/architects-scrum-1-the-forgotten-questions-of-scrum/</link>
		<comments>http://blog.xebia.com/2011/01/18/architects-scrum-1-the-forgotten-questions-of-scrum/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 09:05:14 +0000</pubDate>
		<dc:creator>Niklas Odding</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[lean architecture]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[role of architect]]></category>

	<!-- AutoMeta Start -->
	<category>chandler</category>
	<category>influenced</category>
	<category>forgotten</category>
	<category>organization</category>
	<category>architects</category>
	<category>departments</category>
	<category>examine</category>
	<category>scrum</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=5735</guid>
		<description><![CDATA[This blog is intended to be the first of a series of blogs in which I will examine the role of architects in Scrum. I will start with what I think that are the forgotten questions of Scrum and in next blogs I will examine how the role of the architect changes, what kind of [...]]]></description>
			<content:encoded><![CDATA[<p>This blog is intended to be the first of a series of blogs in which I will examine the role of architects in Scrum. I will start with what I think that are the forgotten questions of Scrum and in next blogs I will examine how the role of the architect changes, what kind of architects are needed and and which activities architects should be doing to be successful and  valuable.</p>
<p><strong><em>The forgotten questions of  Scrum<a href="http://blog.xebia.com/wp-content/uploads/2011/01/Agile-architects1.jpg"><img class="alignright size-medium wp-image-5782" title="Chandler" src="http://blog.xebia.com/wp-content/uploads/2011/01/Agile-architects1-300x225.jpg" alt="" width="300" height="225" /></a></em></strong></p>
<p><strong><em></em></strong>In the 1960’s Alfred Chandler already wrote that the organization structure of an organization is tightly related to its strategy and based on its organizational processes.  In the optimal world according to Chandler: Structure follows processes follows strategy.<span id="more-5735"></span></p>
<p>But what if a process change occurs in the organization? Should that also not at least influence the organizational structure and the strategy? This blog is the first of an intended series of more, where I will try to find answers to this question when the new process that is implemented is a Scrum process.</p>
<p>A Scrum implementation in any organization is a clear process implementation in a specific part of the organization, namely software development. A new way of working, that starts by having business requirements and ends by having working software. A clear scope of a process. However having the statement of Chandler in mind three questions arise, which have not been given many thoughts in the Agile world:</p>
<ol>
<li>Was there a new strategy from the organization that made Scrum happen? Or will the strategy be influenced by it?<br />
Implementing a process changes without a clear justifiable goal will fail in the end. That&#8217;s why the reason Scrum is implemented in organizations should be examined carefully. Is it really there to support the business strategy towards the future or is is just a nice hobby from a well intended IT-manager?</li>
<li>Are new organization departments being formed now at the IT-side and business side?<br />
Implementing Scrum is forming self organizing teams in the organization. But what does that mean for the old functional departments? Are they ceasing to exist? Does the role of the line manager change? and how? And what about the more supporting departments like architecture, quality and operations?</li>
<li>What about the influence this process change has on processes in the organization that are linked to this Scrum process?<br />
Processes in an organization are linked together. They need each other to work optimally. A scrum process should have clearly influence on the business requirements process. But also all business processes should be able to adopt changes more quickly then ever before. Next to this the more supporting IT-processes should find their new way of working in line with the Scrum development process.</li>
</ol>
<p>In the next upcoming blogs I will first focus on the third question. Specifically I will examine the architecture processes in an organization and the way they are influenced or even incorporated in the Scrum process.  Next week more&#8230;</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/01/18/architects-scrum-1-the-forgotten-questions-of-scrum/"></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%2F01%2F18%2Farchitects-scrum-1-the-forgotten-questions-of-scrum%2F&amp;title=Architects%20%26%23038%3B%20Scrum%3A%201.%20The%20forgotten%20questions%20of%20scrum." 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/01/18/architects-scrum-1-the-forgotten-questions-of-scrum/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>What will Agile bring in 2011?</title>
		<link>http://blog.xebia.com/2011/01/06/what-will-agile-bring-in-2011/</link>
		<comments>http://blog.xebia.com/2011/01/06/what-will-agile-bring-in-2011/#comments</comments>
		<pubDate>Thu, 06 Jan 2011 17:32:00 +0000</pubDate>
		<dc:creator>Jarl Meijer</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Process]]></category>

	<!-- AutoMeta Start -->
	<category>2011</category>
	<category>corporations</category>
	<category>metrics</category>
	<category>consultancy</category>
	<category>senior</category>
	<category>embrace</category>
	<category>risk</category>
	<category>journey</category>
	<category>2011</category>
	<category>corporations</category>
	<category>metrics</category>
	<category>consultancy</category>
	<category>senior</category>
	<category>embrace</category>
	<category>risk</category>
	<category>journey</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=5663</guid>
		<description><![CDATA[2010 has ended and a new year has begun. 2010 offered us a lot of learning opportunities. It was a good year for the Agile community in the Netherlands and in the world. We saw more and more big corporations embrace Agile methodologies and put serious effort into making it work for them, mostly as a [...]]]></description>
			<content:encoded><![CDATA[<p>2010 has ended and a new year has begun. 2010 offered us a lot of learning opportunities. It was a good year for the Agile community in the Netherlands and in the world. We saw more and more big corporations embrace Agile methodologies and put serious effort into making it work for them, mostly as a project methodology. &#8216;Agile adoption&#8217; was THE 2010 word, maybe on par with &#8216;Wikileak&#8217;. So what do we think will be hot in 2011?<br />
<span id="more-5663"></span></p>
<p>We are sure the Agile hot topics for 2011 are:</p>
<dl>
<dt><strong>Agile Management</strong></dt>
<dd>The managers finally find their place within an agile organization. In 2010 a lot of managers struggled with their position, in 2011 they find their spot. It&#8217;s called facilitation island and it smells like paradise and still feels like hard work.</dd>
<dt><strong>Agile Management Consultancy</strong></dt>
<dd>The management consultancy world invites itself to the party. The consultancies bring new (project)managementmodels around Agile with them to establish their position in the agile world. This is a mixed blessing: it&#8217;s both confusing and useful at the same time. Confusing because Agile is put in models that oppose the Agile values and put more emphasis on process tracking, Big Up Front Plans and management control. Useful as it attracts senior management attention to Agile and help accelarate agile thinking on typical board management topics as Agile strategy implementation, Agile KPI management, Agile risk management, Agile budget control and Agile organization structures.</dd>
<dt><strong>Agile at Scale</strong></dt>
<dd>Corporations shift from scaling agile to agile at scale. Instead of using Agile only for projects, agile is implemented at corporate level with a stronger focus on product portfolio management to deliver more value. Senior management gets seriously involved in the prioritisation of what&#8217;s really important.  The discussion is no longer about prioritizing projects, it&#8217;s about what delivers most value to the company in the long run.</dd>
<dt><strong>Agile Maturity</strong></dt>
<dd>Many companies start their journey with agile. They seek to learn from the past experiences of those that went before them. Those trailblazers on the other hand are ready for the &#8216;beyond Agile&#8217;. Agile maturity with a focus on the journey from just starting to completely incorporating agile is the subject of many publications and presentations in 2011. Agile maturity is how the different groups share their experiences and learn from each other.</dd>
<dt><strong>Agile Metrics</strong>
<dt>
<dd>Now the use of Agile has become more and more serious, the need for good metrics has become even more real. The Agile world rids itself of its cowboy stigma by creating more transparancy in a way that is useful for everyone in an organization. Putting things on a wall is no longer enough, you can&#8217;t expect everybody in a 30,000 people company to visit all the teams daily or even weekly. The big agile adoptions embrace metrics to enable running agile at scale.</dd>
<dt><strong>Risk Management</strong></dt</p>
<dd>Given these other trends risk management becomes more important. The IT risk management so far has been the laughing stock of real risk management. 2011 is the year IT risk management matures and agile leads the way.</dd>
<dt><strong>Agile Results Only Work  Spheres</strong></dt>
<dd>The Results Only Work Environment (ROWE) or &#8216;new way of working&#8217; (Dutch: &#8220;Het nieuwe werken&#8221;) is here and implemented by many corporations. While corporations want the benefits from working with Agile, there is also a strong desire to apply ROWE. An answer is found to combine distributed working and teameffort into a new way of working called: Agile Result Only Work Spheres also known as AROWS.</dd>
</dl>
<p>We wish you all a pleasant 2011 and may it be a MoreAgile year !</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/01/06/what-will-agile-bring-in-2011/"></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%2F01%2F06%2Fwhat-will-agile-bring-in-2011%2F&amp;title=What%20will%20Agile%20bring%20in%202011%3F" 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/01/06/what-will-agile-bring-in-2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  blog.xebia.com/category/architecture/feed/ ) in 0.77724 seconds, on Feb 9th, 2012 at 6:00 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 9th, 2012 at 7:00 pm UTC -->
