<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Better Software: Setting Up the Development Environment</title>
	<atom:link href="http://vikashazrati.wordpress.com/2008/07/04/better-software-development-environment/feed/" rel="self" type="application/rss+xml" />
	<link>http://vikashazrati.wordpress.com/2008/07/04/better-software-development-environment/</link>
	<description>Byte by Byte Impressions on Technology, People and Process !</description>
	<lastBuildDate>Sat, 07 Nov 2009 15:47:28 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: vikashazrati</title>
		<link>http://vikashazrati.wordpress.com/2008/07/04/better-software-development-environment/#comment-587</link>
		<dc:creator>vikashazrati</dc:creator>
		<pubDate>Sat, 02 Aug 2008 14:36:14 +0000</pubDate>
		<guid isPermaLink="false">http://vikashazrati.wordpress.com/?p=119#comment-587</guid>
		<description>&lt;blockquote&gt;
So, in conclusion, you need a tool to :
- automate and ease deployment, (roll back too , ..)
- keep history of change in configuration file ( they can be changed between two release due to production issues, investigation, … ;)
&lt;/blockquote&gt;

Laurent, thanks for your comments. I agree with what you have to say, probably it would be a part of our production infrastructure though. I wanted to bring about the minimalistic infrastructure for the dev team. You are right that once we get to production there are bigger things to worry about. Automated deployment is one part of the pie and indeed an important one.</description>
		<content:encoded><![CDATA[<blockquote><p>
So, in conclusion, you need a tool to :<br />
- automate and ease deployment, (roll back too , ..)<br />
- keep history of change in configuration file ( they can be changed between two release due to production issues, investigation, … <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
</p></blockquote>
<p>Laurent, thanks for your comments. I agree with what you have to say, probably it would be a part of our production infrastructure though. I wanted to bring about the minimalistic infrastructure for the dev team. You are right that once we get to production there are bigger things to worry about. Automated deployment is one part of the pie and indeed an important one.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: LAurent Tardif</title>
		<link>http://vikashazrati.wordpress.com/2008/07/04/better-software-development-environment/#comment-582</link>
		<dc:creator>LAurent Tardif</dc:creator>
		<pubDate>Wed, 23 Jul 2008 22:28:47 +0000</pubDate>
		<guid isPermaLink="false">http://vikashazrati.wordpress.com/?p=119#comment-582</guid>
		<description>sorry about the confusion regarding the &#039;configuration management&#039;. It took me ages to understand my &#039;ops&#039;, and they call &#039;configuration management&#039; every thing related to application configuration on a server, datacenter, ... 

So, I&#039;ll try to give more details. 
Imagine a simple app (in a large/medium company). It&#039;s made of : 
  1) An apache frontend 
  2) a web service (tomcat/jboss/...)
  3) a database.
Of course, to be scalable you&#039;ll have a load balancer between 1 and 2, and between 2 and 3. 
You&#039;ll have monitoring application, network configuration .... 
So, when you deploy your whole system (made of main 3 applications) you deployed in fact a bunch of jar file, of RPM, CPAN/YPAN modules, and you need to update a set of configuration files (httpd.cong, my.cnf, app.xml, log4j.xml, ....). If you are lucky, your application is very well design and coded, and all your webserver instance have exactly the same configuration .... but because of hardware upgrade, developper ... most of the time, configuration defer from one box to an other one. 

So, in conclusion, you need a tool to : 
   - automate and ease deployment, (roll back too , ..)
   - keep history of change in configuration file ( they can be changed between two release due to production issues, investigation, ...)

Currently i&#039;ve not seen much tools doing date efficiently (maven work very well to package application using only Java, but as soon as you want to deploy RPM/CPAN module with your application, you need to add an other layer to your framework to deploy your application, and it doesn&#039;t offer any mechanism to keep history of configuration changes. 

To illustrate, let say i&#039;m an RPM addict, and I&#039;m using yum to deploy my application.
So, i would like to use yum to deploy my application on my CI farm, in order to validate my deployment process in the flow ..... and the problems start here :-D, integrating such tools/framework in a CI flow ...... it&#039;s a mess !

(note, i&#039;ve not talk about dynamics allocation of server in my CI farm, or about virtualisation in order to increase server usage, or to reduce my electricity bill, or to ease some tests :) I should wrote a dedicated post on that.

Hope that&#039;s more clear, and that I&#039;ve not lost you in my explenation.</description>
		<content:encoded><![CDATA[<p>sorry about the confusion regarding the &#8216;configuration management&#8217;. It took me ages to understand my &#8216;ops&#8217;, and they call &#8216;configuration management&#8217; every thing related to application configuration on a server, datacenter, &#8230; </p>
<p>So, I&#8217;ll try to give more details.<br />
Imagine a simple app (in a large/medium company). It&#8217;s made of :<br />
  1) An apache frontend<br />
  2) a web service (tomcat/jboss/&#8230;)<br />
  3) a database.<br />
Of course, to be scalable you&#8217;ll have a load balancer between 1 and 2, and between 2 and 3.<br />
You&#8217;ll have monitoring application, network configuration &#8230;.<br />
So, when you deploy your whole system (made of main 3 applications) you deployed in fact a bunch of jar file, of RPM, CPAN/YPAN modules, and you need to update a set of configuration files (httpd.cong, my.cnf, app.xml, log4j.xml, &#8230;.). If you are lucky, your application is very well design and coded, and all your webserver instance have exactly the same configuration &#8230;. but because of hardware upgrade, developper &#8230; most of the time, configuration defer from one box to an other one. </p>
<p>So, in conclusion, you need a tool to :<br />
   &#8211; automate and ease deployment, (roll back too , ..)<br />
   &#8211; keep history of change in configuration file ( they can be changed between two release due to production issues, investigation, &#8230;)</p>
<p>Currently i&#8217;ve not seen much tools doing date efficiently (maven work very well to package application using only Java, but as soon as you want to deploy RPM/CPAN module with your application, you need to add an other layer to your framework to deploy your application, and it doesn&#8217;t offer any mechanism to keep history of configuration changes. </p>
<p>To illustrate, let say i&#8217;m an RPM addict, and I&#8217;m using yum to deploy my application.<br />
So, i would like to use yum to deploy my application on my CI farm, in order to validate my deployment process in the flow &#8230;.. and the problems start here <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> , integrating such tools/framework in a CI flow &#8230;&#8230; it&#8217;s a mess !</p>
<p>(note, i&#8217;ve not talk about dynamics allocation of server in my CI farm, or about virtualisation in order to increase server usage, or to reduce my electricity bill, or to ease some tests <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I should wrote a dedicated post on that.</p>
<p>Hope that&#8217;s more clear, and that I&#8217;ve not lost you in my explenation.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: vikashazrati</title>
		<link>http://vikashazrati.wordpress.com/2008/07/04/better-software-development-environment/#comment-578</link>
		<dc:creator>vikashazrati</dc:creator>
		<pubDate>Sat, 19 Jul 2008 07:19:57 +0000</pubDate>
		<guid isPermaLink="false">http://vikashazrati.wordpress.com/?p=119#comment-578</guid>
		<description>&lt;blockquote&gt;

Thanks for your comments. I guess you are right the build tool is very important and that is the reason that I mentioned maven and ant. I agree on your point of build tool being responsible for 3rd party jars and reports and I maven is capable of doing that.

&lt;blockquote&gt;

I am not sure if I fully understood the distribution/configuration management server part. My understanding of &lt;a href=&quot;http://en.wikipedia.org/wiki/Software_configuration_management&quot; rel=&quot;nofollow&quot;&gt; Software configuration management &lt;/a&gt; can be handled with tools like CVS /SVN. May be you can elaborate.
And yes there may be a couple of boxes missing but as I said during the start of the post, this is the minimum configuration that you would need to start with. Of course with the complexities of the environment you may need more.</description>
		<content:encoded><![CDATA[<blockquote>
<p>Thanks for your comments. I guess you are right the build tool is very important and that is the reason that I mentioned maven and ant. I agree on your point of build tool being responsible for 3rd party jars and reports and I maven is capable of doing that.</p>
<blockquote>
<p>I am not sure if I fully understood the distribution/configuration management server part. My understanding of <a href="http://en.wikipedia.org/wiki/Software_configuration_management" rel="nofollow"> Software configuration management </a> can be handled with tools like CVS /SVN. May be you can elaborate.<br />
And yes there may be a couple of boxes missing but as I said during the start of the post, this is the minimum configuration that you would need to start with. Of course with the complexities of the environment you may need more.</p></blockquote>
</blockquote>
]]></content:encoded>
	</item>
	<item>
		<title>By: LAurent Tardif</title>
		<link>http://vikashazrati.wordpress.com/2008/07/04/better-software-development-environment/#comment-577</link>
		<dc:creator>LAurent Tardif</dc:creator>
		<pubDate>Thu, 17 Jul 2008 21:38:01 +0000</pubDate>
		<guid isPermaLink="false">http://vikashazrati.wordpress.com/?p=119#comment-577</guid>
		<description>I&#039;m mainly agree with your split for &#039;good software&#039; startup. I think that you should emphasis a bit, the &#039;build tool&#039;. It&#039;s a key point of the success of the CI especially on medium/large project. For me, the build tool should be in charge of :
   - handling the components depedencies (third party jar, RPM, )
   - compute a set of quality metrics on the lib (jdepend, pmd,...) but also to generate packaging of the lib, the application.
Also, the build tool should be usable in batch mode (CI), but integrated with the IDE .... indeed if you don&#039;t benefit of the build tool function in your IDE, you do twice the job (lib definition, class path, test path, test run ...) 
The CI tools, will mainly manage the history of the build (btw, you should take a look at Hudson, who did a great start in the CI tools world). 

I think, there is one (or two) missing box : the distribution / configuration management server. An application in large/medium company is not only a war file you deployed on a tomcat/jboss, but a bunch of webapp/monitoring tools/cron/.... and so, such a box, alimented by the CI (packages in nightly/release mode) will help to deploy the CI farm, the QA and the production.

In the tool family, you should also point i think virtualisation tools. It&#039;s an easy/cheap way to test several configuration, and to have several CI line having some small differences (in lib versions, OS, ...).</description>
		<content:encoded><![CDATA[<p>I&#8217;m mainly agree with your split for &#8216;good software&#8217; startup. I think that you should emphasis a bit, the &#8216;build tool&#8217;. It&#8217;s a key point of the success of the CI especially on medium/large project. For me, the build tool should be in charge of :<br />
   &#8211; handling the components depedencies (third party jar, RPM, )<br />
   &#8211; compute a set of quality metrics on the lib (jdepend, pmd,&#8230;) but also to generate packaging of the lib, the application.<br />
Also, the build tool should be usable in batch mode (CI), but integrated with the IDE &#8230;. indeed if you don&#8217;t benefit of the build tool function in your IDE, you do twice the job (lib definition, class path, test path, test run &#8230;)<br />
The CI tools, will mainly manage the history of the build (btw, you should take a look at Hudson, who did a great start in the CI tools world). </p>
<p>I think, there is one (or two) missing box : the distribution / configuration management server. An application in large/medium company is not only a war file you deployed on a tomcat/jboss, but a bunch of webapp/monitoring tools/cron/&#8230;. and so, such a box, alimented by the CI (packages in nightly/release mode) will help to deploy the CI farm, the QA and the production.</p>
<p>In the tool family, you should also point i think virtualisation tools. It&#8217;s an easy/cheap way to test several configuration, and to have several CI line having some small differences (in lib versions, OS, &#8230;).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex Pimenov</title>
		<link>http://vikashazrati.wordpress.com/2008/07/04/better-software-development-environment/#comment-566</link>
		<dc:creator>Alex Pimenov</dc:creator>
		<pubDate>Fri, 11 Jul 2008 07:37:07 +0000</pubDate>
		<guid isPermaLink="false">http://vikashazrati.wordpress.com/?p=119#comment-566</guid>
		<description>Vikashazrati,

You may also check out our &lt;a href=&quot;http://www.viewtier.com/products/parabuild/index.htm&quot; rel=&quot;nofollow&quot;&gt;Parabuild&lt;/a&gt; for Continuous Integration. It includes statistics for &lt;a href=&quot;http://www.viewtier.com/products/parabuild/new_in_parabuild_3_2/build_telemetry.htm#Statistics_and_Reports_For_PMD&quot; rel=&quot;nofollow&quot;&gt;CheckStyle, PMD and FindBugs&lt;/a&gt; and integrates with Bugzilla.</description>
		<content:encoded><![CDATA[<p>Vikashazrati,</p>
<p>You may also check out our <a href="http://www.viewtier.com/products/parabuild/index.htm" rel="nofollow">Parabuild</a> for Continuous Integration. It includes statistics for <a href="http://www.viewtier.com/products/parabuild/new_in_parabuild_3_2/build_telemetry.htm#Statistics_and_Reports_For_PMD" rel="nofollow">CheckStyle, PMD and FindBugs</a> and integrates with Bugzilla.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian</title>
		<link>http://vikashazrati.wordpress.com/2008/07/04/better-software-development-environment/#comment-564</link>
		<dc:creator>Brian</dc:creator>
		<pubDate>Wed, 09 Jul 2008 10:39:01 +0000</pubDate>
		<guid isPermaLink="false">http://vikashazrati.wordpress.com/?p=119#comment-564</guid>
		<description>Check out http://buildix.thoughtworks.com - it&#039;s pre-bundled Subversion, CruiseControl &amp; Trac.</description>
		<content:encoded><![CDATA[<p>Check out <a href="http://buildix.thoughtworks.com" rel="nofollow">http://buildix.thoughtworks.com</a> &#8211; it&#8217;s pre-bundled Subversion, CruiseControl &amp; Trac.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: vikashazrati</title>
		<link>http://vikashazrati.wordpress.com/2008/07/04/better-software-development-environment/#comment-561</link>
		<dc:creator>vikashazrati</dc:creator>
		<pubDate>Mon, 07 Jul 2008 17:05:11 +0000</pubDate>
		<guid isPermaLink="false">http://vikashazrati.wordpress.com/?p=119#comment-561</guid>
		<description>Thanks for your comment Eugene, I would check out the server.</description>
		<content:encoded><![CDATA[<p>Thanks for your comment Eugene, I would check out the server.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eugene</title>
		<link>http://vikashazrati.wordpress.com/2008/07/04/better-software-development-environment/#comment-560</link>
		<dc:creator>Eugene</dc:creator>
		<pubDate>Mon, 07 Jul 2008 11:26:34 +0000</pubDate>
		<guid isPermaLink="false">http://vikashazrati.wordpress.com/?p=119#comment-560</guid>
		<description>I think JetBrains TeamCity would fit nicely in your &quot;Continuous Integration Server&quot; list especially since you mentioned the IntelliJ.
Check the free TeamCity Pro version.</description>
		<content:encoded><![CDATA[<p>I think JetBrains TeamCity would fit nicely in your &#8220;Continuous Integration Server&#8221; list especially since you mentioned the IntelliJ.<br />
Check the free TeamCity Pro version.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
