<?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>breddy.net &#187; architecture</title>
	<atom:link href="http://www.breddy.net/tag/architecture/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.breddy.net</link>
	<description>Personal and professional weblog of Chris Bredesen</description>
	<lastBuildDate>Tue, 21 Jun 2011 20:31:05 +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>Environmental Config Files</title>
		<link>http://www.breddy.net/2007/02/03/environmental-config-files/</link>
		<comments>http://www.breddy.net/2007/02/03/environmental-config-files/#comments</comments>
		<pubDate>Sat, 03 Feb 2007 18:33:41 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Professional]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.breddy.net/2007/02/03/environmental-config-files/</guid>
		<description><![CDATA[I came across something disturbing recently and I want to get my two cents on the table because this isn&#8217;t the first time it&#8217;s come up. Several components in the project I&#8217;m assigned to store various configuration attributes in text &#8230; <a href="http://www.breddy.net/2007/02/03/environmental-config-files/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I came across something disturbing recently and I want to get my two cents on the table because this isn&#8217;t the first time it&#8217;s come up.  Several components in the project I&#8217;m assigned to store various configuration attributes in text files.  Whether they&#8217;re name-value (properties) files or XML data, this is a good choice because it allows the customization of application behavior without code changes or redeployment &#8230; if you do it properly.<br />
<span id="more-60"></span><br />
What I encountered in several places is a conf directory which contained subdirectories which resemble the following:  /local, /dev, /test, /stg, /prod.</p>
<p>At first glance, this looks completely reasonable especially if you consider that each corresponding environment declares a container-level variable whose value is one of the directory names (Development/Integration=dev, UAT/Test=test, etc.).  Developers get to configure each environment and at deployment time  the server simply knows how to behave based on the preset environment variable.  Sounds OK, right?</p>
<p>NO!  It isn&#8217;t OK.  It is horrible and you should never do it.  Packaging configuration in with code leaves the <em>System Administrator</em> powerless to <em>administer</em> the <em>system</em>.  See the problem?  No?  Here are more reasons:</p>
<ul>
<li>Configuration changes require a redeployment of the application (possibly even repackaging)</li>
<li>Developers may not (indeed, <em>should</em> not) be privy to certain config information (passwords, let&#8217;s say) for production environments</li>
<li>Test environments of the same &#8220;level&#8221; can&#8217;t have differing configuration unless you jump through hoops like branching source code</li>
<li>Turning a dev/test/stage box into a production one (or vice versa) with one small change is just scary</li>
<li>A developer can change production and nobody will notice until the code gets to production!</li>
<li><strong>A developer can change production and nobody will notice until the code gets to production!</strong></li>
<li><strong>A DEVELOPER CAN CHANGE PRODUCTION AND NOBODY WILL NOTICE UNTIL THE CODE GETS TO PRODUCTION!</strong></li>
</ul>
<p>Get it?</p>
<p>The way to manage configuration is to provide a nicely-commented <em>prototype</em> config file (that can&#8217;t/won&#8217;t be read) with your application and leave the runtime configuration in a file outside the deployed application path.  There are many ways to make such files available to your program regardless of whether you&#8217;re using a container or not.  You can:</p>
<ul>
<li>Add a <tt>conf</tt> directory to the runtime classpath</li>
<li>Put the config files in a known directory such as <tt>common/classes</tt> on Tomcat</li>
<li>Jar them up and name them according to environment, if you just absolutely must not let the admins touch them.</li>
</ul>
<p>Any of these tactics work.  As long as you aren&#8217;t marrying code and configuration, you can&#8217;t miss.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.breddy.net/2007/02/03/environmental-config-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Project/Issue Management</title>
		<link>http://www.breddy.net/2006/05/23/agile-projectissue-management/</link>
		<comments>http://www.breddy.net/2006/05/23/agile-projectissue-management/#comments</comments>
		<pubDate>Tue, 23 May 2006 23:01:48 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Professional]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[architecture]]></category>

		<guid isPermaLink="false">http://www.breddy.net/2006/05/23/agile-projectissue-management/</guid>
		<description><![CDATA[The dev shop I manage really has no choice but to be agile.Â  With lightning-fast changes in priorities, there&#8217;s no room for wholesale planning beyong a couple weeks out.Â  What&#8217;s missing, however, are the tools to make this all work. &#8230; <a href="http://www.breddy.net/2006/05/23/agile-projectissue-management/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The dev shop I manage really has no choice but to be agile.Â  With lightning-fast changes in priorities, there&#8217;s no room for wholesale planning beyong a couple weeks out.Â  What&#8217;s missing, however, are the tools to make this all work.</p>
<p>Sure we do the best we can with <a target="_blank" title="Atlassian JIRA" href="http://www.atlassian.com/jira">JIRA</a> (a fantastic traditional bug tracker) and <a target="_blank" title="MS Project" href="http://www.microsoft.com/office/preview/programs/project/highlights.mspx">MS Project</a> (a not-so-fantastic project management tool), but there doesn&#8217;t seem to be a good selection of tools to mimick an agile team.</p>
<p>I want creamy visual objects that represent features which can be moved between developers.Â  I want a view of each developer&#8217;s workload for the next week, month and year.Â  I want to know in 10sec what&#8217;s going out when, and which tasks are the limiting factor.</p>
<p>The closest thing I&#8217;ve found is <a target="_blank" title="VersionOne" href="http://www.versionone.com/">VersionOne</a>, and I haven&#8217;t had a chance to fully evaluate it yet.Â  If anyone has any clues, I&#8217;m all ears.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.breddy.net/2006/05/23/agile-projectissue-management/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

