<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Spout's from wherever</title><subtitle type="html">or Michael's ramblings on things possibly related to Architecture&lt;/font&gt;</subtitle><id>http://blogs.msdn.com/michmill/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/michmill/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/michmill/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2004-02-18T12:33:00Z</updated><entry><title>Applications, Infrastructure, and Systems - Part I</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/michmill/archive/2006/05/17/599961.aspx" /><id>http://blogs.msdn.com/michmill/archive/2006/05/17/599961.aspx</id><published>2006-05-17T17:12:00Z</published><updated>2006-05-17T17:12:00Z</updated><content type="html">&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;I’ve been in the consulting business more than a decade.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I’ve designed some really cool applications.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I’ve designed the infrastructure for some big applications.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;What amazes me the most is how infrequently people design systems.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Case in point, I’m working on an enterprise document management system for my current customer.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I was brought in to the project very late, with only a handful of iterations left, and most of the application and infrastructure design completed.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;My job was to come up with the deployment plan to take the app from dev, into the test environment, and finally into production (I know, it’s not Agile, but it’s how the customer does things).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Everything was all well and good until I started looking at the disaster recovery plan.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It was obvious that the application architects and the infrastructure architects were not in the same room when designing the DR plan.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Interestingly, neither side did anything wrong.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In fact, both the app and the infrastructure were designed with best practices in mind.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The only problem was that they wouldn’t work together.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Part of the disaster recovery plan called for replicating the SQL databases from the production environment to the disaster recovery environment using SAN replication.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Good idea.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Keep the replication down at the hardware level, and keep the DR boxes cold until needed.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The app doesn’t need 5 9s uptime.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It’s ok if it takes an hour or two bring up the app in DR.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The infrastructure architects assumed that the app would just have to change the connection string to point to the new SQL servers in DR in case of a catastrophic failure of the production environment.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Sounds logical, but they didn’t tell the application architect.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;The application architect wanted a central repository for all the configuration information.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Since this is a distributed app with a load-balanced front end, putting the configuration information in a SQL DB made sense.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Each of the front-end boxes just needs a connection string to the common configuration SQL DB.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Once again, good idea.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Where the whole thing breaks down, is that the app stores other SQL connection strings in the configuration DB.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;These connection strings may be to other DBs on the same server.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Now think about this for a minute.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;SAN replication is replicating a DB that contains SQL connection strings. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;In a disaster situation, the SQL server that the connection strings in the table point to may not be on-line anymore.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Can you see a problem with that?&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Tomorrow, I’ll talk about possible solutions to the above problem, and how we solved it for the customer.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Cheers,&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;m²&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=599961" width="1" height="1"&gt;</content><author><name>michmill</name><uri>http://blogs.msdn.com/members/michmill.aspx</uri></author></entry><entry><title>The hills are alive with the sound Newark</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/michmill/archive/2005/01/04/346341.aspx" /><id>http://blogs.msdn.com/michmill/archive/2005/01/04/346341.aspx</id><published>2005-01-04T20:08:00Z</published><updated>2005-01-04T20:08:00Z</updated><content type="html">&lt;p&gt;First, please accept my apology for not posting in a while.&amp;nbsp; I won't go into the details, but it will suffice to say I've been on the road and very busy.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;Second, I'd like to wish everyone a happy New Year.&amp;nbsp; May 2005 be better than 2004.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p&gt;My new customer takes me to &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:State w:st="on"&gt;&lt;st1:place w:st="on"&gt;New Jersey&lt;/st1:place&gt;&lt;/st1:State&gt; every week.&amp;nbsp; The project is fun.&amp;nbsp; I'm getting back to my roots as a hardcore coder.&amp;nbsp; C++ is my weapon of choice.&amp;nbsp; Enough about technology for now.&amp;nbsp; Each Monday and Thursday as I pass through Concourse C at the &lt;st1:City w:st="on"&gt;&lt;st1:place w:st="on"&gt;Newark&lt;/st1:place&gt;&lt;/st1:City&gt; airport I can't help but to smile.&amp;nbsp; You see, Bob is invariably there, and he's singing.&amp;nbsp; He's not singing any tune in particular; he's just welcoming people, wishing them a good day, providing directions to the Air Train, and helping hapless travelers find their gate.&amp;nbsp; It's definitely a &lt;st1:City w:st="on"&gt;&lt;st1:place w:st="on"&gt;high point&lt;/st1:place&gt;&lt;/st1:City&gt; in my day.&amp;nbsp; So for you, Bob, on behalf of the traveling public passing through Newark Liberty Airport Concourse C, I say thank you and keep up the good work.&lt;/p&gt; &lt;p&gt;Cheers,&lt;br /&gt;m²&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=346341" width="1" height="1"&gt;</content><author><name>michmill</name><uri>http://blogs.msdn.com/members/michmill.aspx</uri></author></entry><entry><title>Another week done</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/michmill/archive/2004/02/27/81121.aspx" /><id>http://blogs.msdn.com/michmill/archive/2004/02/27/81121.aspx</id><published>2004-02-27T20:27:00Z</published><updated>2004-02-27T20:27:00Z</updated><content type="html">&lt;P&gt;Another week on the road is over.&amp;nbsp; It feels nice to be home, and the cats seem quite happy to see me, too.&lt;/P&gt;
&lt;P&gt;One&amp;nbsp;topic that keeps popping up at my current customer is administration of Code Access Security polices.&amp;nbsp; It seems there is an abundance of information on how to sign code, how to assert permissions, and how to use the tools provided by the .Net Framework to create CAS policies.&amp;nbsp; I can't find a single paper that talks about creating an enterprise level (not the enterprise level in .Net) CAS policy;&amp;nbsp; how an organization should go about defining global organization code groups and permissions; how to deploy the policy to all of the machines, and how to classify internally developed apps into the code groups.&lt;/P&gt;
&lt;P&gt;Would anyone else find this information helpful, too?&lt;/P&gt;
&lt;P&gt;Cheers,&lt;BR&gt;m&amp;#178;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=81121" width="1" height="1"&gt;</content><author><name>michmill</name><uri>http://blogs.msdn.com/members/michmill.aspx</uri></author></entry><entry><title>Hotel Woes</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/michmill/archive/2004/02/18/75653.aspx" /><id>http://blogs.msdn.com/michmill/archive/2004/02/18/75653.aspx</id><published>2004-02-18T20:40:00Z</published><updated>2004-02-18T20:40:00Z</updated><content type="html">&lt;P&gt;It seems the more nefarious elements of our digital world I mentioned in my last post&amp;nbsp;took up residence in my hotel last night.&amp;nbsp; I'm still not convinced they are evil, they may merely be clueless.&amp;nbsp; Whatever they are, they are running a non-authorized DHCP server that is completely disrupting service.&amp;nbsp; I have sneeking suspicion the level 1 and level 2 tech support people aren't necessarily helping the situation.&lt;/P&gt;
&lt;P&gt;My room has been down for 12 hours and counting.&amp;nbsp; Sometimes the port appears to be disconnected, other times I can't get a DHCP address.&amp;nbsp; Even the static IPs the helpdesk gave me didn't work.&lt;/P&gt;
&lt;P&gt;Ah, life on the road.&amp;nbsp; Gotta love it.&lt;/P&gt;
&lt;P&gt;Cheers,&lt;BR&gt;m&amp;#178;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=75653" width="1" height="1"&gt;</content><author><name>michmill</name><uri>http://blogs.msdn.com/members/michmill.aspx</uri></author></entry><entry><title>Patch Time</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/michmill/archive/2004/02/18/75646.aspx" /><id>http://blogs.msdn.com/michmill/archive/2004/02/18/75646.aspx</id><published>2004-02-18T20:33:00Z</published><updated>2004-02-18T20:33:00Z</updated><content type="html">&lt;P&gt;&lt;FONT face=Verdana&gt;Well, that certainly didn't take long.&amp;nbsp; It took hackers only &lt;A href="http://www.msnbc.msn.com/id/4286828/"&gt;one week&lt;/A&gt; from patch to exploit for the &lt;A href="http://www.microsoft.com/technet/treeview/?url=/technet/security/bulletin/MS04-007.asp"&gt;ASN.1 vulnerability&lt;/A&gt;.&amp;nbsp; It seems the more nefarious elements of our digital world are getting more proficient at reverse-engineering security patches.&amp;nbsp; This unfortunate situation only emphasizes the need for a good patch management policy.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;You must have a patch deployment plan in your organization.&amp;nbsp; Whether your organization is 1 to 100,000 computers, you should have a patch management policy.&amp;nbsp; The plan should include testing patch installs on your standard machine image, regression testing of key applications with the patch, understanding how how back-out the patch, deploying the patch, auditing the deployment process, and doing patch inventory on your machines.&amp;nbsp; You gotta do it.&amp;nbsp; Ain't no way 'round it.&amp;nbsp; Period.&amp;nbsp; Check out &lt;A href="http://www.ntbugtraq.com/"&gt;NTBugTraq&lt;/A&gt; for a good list of &lt;A href="http://www.ntbugtraq.com/patchresults.asp"&gt;patch management tools&lt;/A&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;I know this sounds like substantial amount of work, but it really could be as simple as backing up your box, installing the patch, and testing your favorite apps.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;One other very important part of having a good patch management policy is &lt;STRONG&gt;&lt;EM&gt;following&lt;/EM&gt;&lt;/STRONG&gt; your patch management policy.&amp;nbsp; It's like we say in diving:&amp;nbsp; Plan your dive, dive your plan.&amp;nbsp; You could have a very safe dive plan, but if you don't follow it you could get bent, or worse.&amp;nbsp; You can also have the best patch management plan ever devised, but if you don't follow it, it's worthless.&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Every major attack against the Windows OS was against a vulnerability that had a patch available.&amp;nbsp; 331 days from patch to Nimda.&amp;nbsp; 180 days from patch to SQL Slammer.&amp;nbsp; 151 days from patch to Nachi.&amp;nbsp; 25 days from patch to Blaster.&amp;nbsp; Time is getting shorter.&amp;nbsp; How many until the next one (and you know there will be a next one)?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;I've patched my boxen;&amp;nbsp; all 15 of them within 2 days of the patch release.&amp;nbsp; Are yours patched?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Cheers,&lt;BR&gt;m&amp;#178;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=75646" width="1" height="1"&gt;</content><author><name>michmill</name><uri>http://blogs.msdn.com/members/michmill.aspx</uri></author></entry></feed>