<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>.Hibri - High Availability</title>
    <link>http://www.hibri.net/</link>
    <description>Thoughts on the craft of building software</description>
    <language>en-gb</language>
    <copyright>Hibri Marzook</copyright>
    <lastBuildDate>Sat, 05 Jul 2008 15:09:35 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>hibri@hibri.net</managingEditor>
    <webMaster>hibri@hibri.net</webMaster>
    <item>
      <trackback:ping>http://www.hibri.net/Trackback.aspx?guid=6138a7a8-9023-4789-a225-8bb7ef857a77</trackback:ping>
      <pingback:server>http://www.hibri.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.hibri.net/PermaLink,guid,6138a7a8-9023-4789-a225-8bb7ef857a77.aspx</pingback:target>
      <dc:creator>Hibri</dc:creator>
      <wfw:comment>http://www.hibri.net/CommentView,guid,6138a7a8-9023-4789-a225-8bb7ef857a77.aspx</wfw:comment>
      <wfw:commentRss>http://www.hibri.net/SyndicationService.asmx/GetEntryCommentsRss?guid=6138a7a8-9023-4789-a225-8bb7ef857a77</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
When trying to order pizza today, I get this error on the <a title="Pizza hut website crashes" href="http://www.pizzahut.co.uk/" target="_blank">Pizza
Hut</a> web site. The site crashed when making my transaction , and I had to call
the bank  to check if the transaction went through.
</p>
        <p>
          <a href="http://www.hibri.net/content/binary/WindowsLiveWriter/313911e61d04_C78E/pizza-hut-error_2.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="pizza-hut-error" src="http://www.hibri.net/content/binary/WindowsLiveWriter/313911e61d04_C78E/pizza-hut-error_thumb.png" width="644" height="391" />
          </a>
        </p>
        <p>
Is it really that hard to show some care when  running a web site ? I mean, it
doesn't take a lot to turn on  <a title="customErrors element" href="http://msdn.microsoft.com/en-us/library/h0hfz6fc.aspx" target="_blank">Custom
Error pages on the web.config</a> and turn off <a title="Asp.net web.config debug mode" href="http://blogs.msdn.com/tess/archive/2006/04/13/575364.aspx" target="_blank">debug
mode.</a> Having this sort of error shown on a public web site that is getting a lot
of traffic shows <a href="http://www.adactus.co.uk/" target="_blank">lack of care,
lack of planning and un-professionalism by whoever built and runs this site</a>. Expecting
something to fail and handling the failure gracefully shows that the developer has
planned for the unexpected. But not in this instance.  From this it is likely
that the site owners didn't use some decent infrastructure to handle fail over, they
didn't think of what could go wrong. I was still getting this for about an hour means
that they don't have anyway of getting notified to fix it. 99% uptime ? Nah, not for
us. 
</p>
        <p>
Would I trust my credit card details with them again ? Nope..
</p>
        <p>
Maybe it was because they used business <a href="http://www.rackspace.co.uk/default.asp?docId=14682&amp;productGroupId=15884" target="_blank">objects
written by Van Halen</a>.
</p>
      </body>
      <title>99% Uptime ? Nah not for us..</title>
      <guid isPermaLink="false">http://www.hibri.net/PermaLink,guid,6138a7a8-9023-4789-a225-8bb7ef857a77.aspx</guid>
      <link>http://www.hibri.net/2008/07/05/99UptimeNahNotForUs.aspx</link>
      <pubDate>Sat, 05 Jul 2008 15:09:35 GMT</pubDate>
      <description>&lt;p&gt;
When trying to order pizza today, I get this error on the &lt;a title="Pizza hut website crashes" href="http://www.pizzahut.co.uk/" target="_blank"&gt;Pizza
Hut&lt;/a&gt; web site. The site crashed when making my transaction , and I had to call
the bank&amp;nbsp; to check if the transaction went through.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.hibri.net/content/binary/WindowsLiveWriter/313911e61d04_C78E/pizza-hut-error_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="pizza-hut-error" src="http://www.hibri.net/content/binary/WindowsLiveWriter/313911e61d04_C78E/pizza-hut-error_thumb.png" width="644" height="391"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Is it really that hard to show some care when&amp;nbsp; running a web site ? I mean, it
doesn't take a lot to turn on&amp;nbsp; &lt;a title="customErrors element" href="http://msdn.microsoft.com/en-us/library/h0hfz6fc.aspx" target="_blank"&gt;Custom
Error pages on the web.config&lt;/a&gt; and turn off &lt;a title="Asp.net web.config debug mode" href="http://blogs.msdn.com/tess/archive/2006/04/13/575364.aspx" target="_blank"&gt;debug
mode.&lt;/a&gt; Having this sort of error shown on a public web site that is getting a lot
of traffic shows &lt;a href="http://www.adactus.co.uk/" target="_blank"&gt;lack of care,
lack of planning and un-professionalism by whoever built and runs this site&lt;/a&gt;. Expecting
something to fail and handling the failure gracefully shows that the developer has
planned for the unexpected. But not in this instance.&amp;nbsp; From this it is likely
that the site owners didn't use some decent infrastructure to handle fail over, they
didn't think of what could go wrong. I was still getting this for about an hour means
that they don't have anyway of getting notified to fix it. 99% uptime ? Nah, not for
us. 
&lt;/p&gt;
&lt;p&gt;
Would I trust my credit card details with them again ? Nope..
&lt;/p&gt;
&lt;p&gt;
Maybe it was because they used business &lt;a href="http://www.rackspace.co.uk/default.asp?docId=14682&amp;amp;productGroupId=15884" target="_blank"&gt;objects
written by Van Halen&lt;/a&gt;.
&lt;/p&gt;</description>
      <comments>http://www.hibri.net/CommentView,guid,6138a7a8-9023-4789-a225-8bb7ef857a77.aspx</comments>
      <category>.Net Web</category>
      <category>High Availability</category>
    </item>
    <item>
      <trackback:ping>http://www.hibri.net/Trackback.aspx?guid=a14908b0-989c-4f6d-897a-fad02c4123e6</trackback:ping>
      <pingback:server>http://www.hibri.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.hibri.net/PermaLink,guid,a14908b0-989c-4f6d-897a-fad02c4123e6.aspx</pingback:target>
      <dc:creator>Hibri</dc:creator>
      <wfw:comment>http://www.hibri.net/CommentView,guid,a14908b0-989c-4f6d-897a-fad02c4123e6.aspx</wfw:comment>
      <wfw:commentRss>http://www.hibri.net/SyndicationService.asmx/GetEntryCommentsRss?guid=a14908b0-989c-4f6d-897a-fad02c4123e6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 <a href="http://blogs.msdn.com/velocity/" target="_blank">a distributed cache
solution for ASP .Net</a>, and its from MS at last. About time there was a solution
to the age old problem of session state and scalability. Its in CTP right now, and
looking forward to having this in a standard .net distribution.
</p>
      </body>
      <title>Velocity</title>
      <guid isPermaLink="false">http://www.hibri.net/PermaLink,guid,a14908b0-989c-4f6d-897a-fad02c4123e6.aspx</guid>
      <link>http://www.hibri.net/2008/06/07/Velocity.aspx</link>
      <pubDate>Sat, 07 Jun 2008 02:27:42 GMT</pubDate>
      <description>&lt;p&gt;
&amp;nbsp;&lt;a href="http://blogs.msdn.com/velocity/" target="_blank"&gt;a distributed cache
solution for ASP .Net&lt;/a&gt;, and its from MS at last. About time there was a solution
to the age old problem of session state and scalability. Its in CTP right now, and
looking forward to having this in a standard .net distribution.
&lt;/p&gt;</description>
      <comments>http://www.hibri.net/CommentView,guid,a14908b0-989c-4f6d-897a-fad02c4123e6.aspx</comments>
      <category>.Net Web</category>
      <category>High Availability</category>
    </item>
    <item>
      <trackback:ping>http://www.hibri.net/Trackback.aspx?guid=b07b5bfd-56b0-4d83-b2f8-498a5d0fa14e</trackback:ping>
      <pingback:server>http://www.hibri.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.hibri.net/PermaLink,guid,b07b5bfd-56b0-4d83-b2f8-498a5d0fa14e.aspx</pingback:target>
      <dc:creator>Hibri</dc:creator>
      <wfw:comment>http://www.hibri.net/CommentView,guid,b07b5bfd-56b0-4d83-b2f8-498a5d0fa14e.aspx</wfw:comment>
      <wfw:commentRss>http://www.hibri.net/SyndicationService.asmx/GetEntryCommentsRss?guid=b07b5bfd-56b0-4d83-b2f8-498a5d0fa14e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
When going through the asp.net forums, one thing I've noticed is that there is a lack
of understanding among many devs about ASP .Net caching. The majority of the problems
are caused when trying to use the Cache as a reliable in-memory storage medium.
The Cache object is not meant to do this.
</p>
        <p>
Cache storage is volatile, It can be garbage collected, it can expire, and it is not
expected to be synched in a web farm.
</p>
        <p>
So far I've used the Cache to avoid expensive db hits. I use a refactoring approach
to storing data in the Cache.
</p>
        <p>
First I write my usual data access and data binding code with,
</p>
        <pre>
          <span style="COLOR: teal; BACKGROUND-COLOR: lightgrey">
          </span> Datatable userDataTable; <span style="COLOR: teal; BACKGROUND-COLOR: lightgrey"></span> userDataTable
= DataUtils.GetUsers(); <span style="COLOR: teal; BACKGROUND-COLOR: lightgrey"></span><span style="COLOR: green">//bind
and display</span></pre>
        <p>
          <span style="COLOR: green">
          </span> 
</p>
        <p>
Now to cache the user date, I refactor the code to this,
</p>
        <pre>DataTable userDataTable;
userData = Cache[<span style="COLOR: maroon">"USER_DATA"]</span>; <span style="COLOR: blue">if</span>(userData
== <span style="COLOR: blue">null</span>){ userDataTable = DataUtils.GetUsers(); <span style="COLOR: green">//code
to refresh cache, insert etc... </span> Cache.Insert(<span style="COLOR: maroon">"USER_DATA"</span>,userDataTable);
} <span style="COLOR: green">//bind and display</span></pre>
        <pre>
          <span style="COLOR: green">
          </span> </pre>This
simple practice ensures that there is always data, and handles a cache miss gracefully.
Any thoughts on this ?</body>
      <title>Cache overuse ?</title>
      <guid isPermaLink="false">http://www.hibri.net/PermaLink,guid,b07b5bfd-56b0-4d83-b2f8-498a5d0fa14e.aspx</guid>
      <link>http://www.hibri.net/2005/10/31/CacheOveruse.aspx</link>
      <pubDate>Mon, 31 Oct 2005 08:58:47 GMT</pubDate>
      <description>
&lt;p&gt;
When going through the asp.net forums, one thing I've noticed is that there is a lack
of understanding among many devs about ASP .Net caching. The majority of the problems
are caused&amp;nbsp;when trying to use the Cache as a reliable in-memory storage medium.
The Cache object is not meant to do this.
&lt;/p&gt;
&lt;p&gt;
Cache storage is volatile, It can be garbage collected, it can expire, and it is not
expected to be synched in a web farm.
&lt;/p&gt;
&lt;p&gt;
So far I've used the Cache to avoid expensive&amp;nbsp;db hits. I use a refactoring approach
to storing data in the Cache.
&lt;/p&gt;
&lt;p&gt;
First I write my usual data access and data binding code with,
&lt;/p&gt;
&lt;pre&gt;&lt;span style="COLOR: teal; BACKGROUND-COLOR: lightgrey"&gt; &lt;/span&gt; Datatable userDataTable; &lt;span style="COLOR: teal; BACKGROUND-COLOR: lightgrey"&gt; &lt;/span&gt; userDataTable
= DataUtils.GetUsers(); &lt;span style="COLOR: teal; BACKGROUND-COLOR: lightgrey"&gt; &lt;/span&gt; &lt;span style="COLOR: green"&gt;//bind
and display&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;span style="COLOR: green"&gt;&lt;/span&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Now to cache the user date, I refactor the code to this,
&lt;/p&gt;
&lt;pre&gt;DataTable userDataTable;
userData = Cache[&lt;span style="COLOR: maroon"&gt;"USER_DATA"]&lt;/span&gt;; &lt;span style="COLOR: blue"&gt;if&lt;/span&gt;(userData
== &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;){ userDataTable = DataUtils.GetUsers(); &lt;span style="COLOR: green"&gt;//code
to refresh cache, insert etc... &lt;/span&gt; Cache.Insert(&lt;span style="COLOR: maroon"&gt;"USER_DATA"&lt;/span&gt;,userDataTable);
} &lt;span style="COLOR: green"&gt;//bind and display&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="COLOR: green"&gt;&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;This simple practice ensures 
that there is always data, and handles a cache miss gracefully. Any thoughts on 
this ?</description>
      <comments>http://www.hibri.net/CommentView,guid,b07b5bfd-56b0-4d83-b2f8-498a5d0fa14e.aspx</comments>
      <category>.Net Web</category>
      <category>High Availability</category>
    </item>
    <item>
      <trackback:ping>http://www.hibri.net/Trackback.aspx?guid=47797438-5488-41c5-9fe5-a507d7a05764</trackback:ping>
      <pingback:server>http://www.hibri.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.hibri.net/PermaLink,guid,47797438-5488-41c5-9fe5-a507d7a05764.aspx</pingback:target>
      <dc:creator>Hibri</dc:creator>
      <wfw:comment>http://www.hibri.net/CommentView,guid,47797438-5488-41c5-9fe5-a507d7a05764.aspx</wfw:comment>
      <wfw:commentRss>http://www.hibri.net/SyndicationService.asmx/GetEntryCommentsRss?guid=47797438-5488-41c5-9fe5-a507d7a05764</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
I was looking at how to implement a load balancing/load sharing system for a data
centre.<span style="mso-spacerun: yes">  </span>The data centre hosts websites
and other servers on a domain name www.mydomain.com (for example). Servers within
the data centre are load balanced by Cisco Content Switches. The company wants 3 data
centres. The traffic coming to www.mydomain.com should be shared among the data centres
providing redundancy and scalability. These 3 data centres are in different physical
locations, and will be served by different ISPs (ideally).
</p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
 
</p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
The solution to this is to implement a DNS based load balancing system. In this solution
the primary name server for www.mydomain.com will be replaced with an "intelligent"
DNS server.
</p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
Instead of replying to DNS request with just one IP address, this smart DNS server
will give out the IP addresses based on the load at each of the data centres. The
client resolving an IP address for www.mydomain.com will get the IP address of the
data centre with the least load.
</p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
The DNS server can also stop clients from going to a data centre that is not functioning.
</p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
This solution is explained in more detail at <a href="http://ntrg.cs.tcd.ie/undergrad/4ba2.01/group8/DNS.html">http://ntrg.cs.tcd.ie/undergrad/4ba2.01/group8/DNS.html</a></p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
 
</p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
These are some of the solutions available in the market.
</p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
 
</p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <a href="http://www.sysmaster.com/s_net_dns.htm">http://www.sysmaster.com/s_net_dns.htm</a>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
 
</p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <a href="http://www.cisco.com/en/US/netsol/ns340/ns394/ns50/ns254/networking_solutions_white_paper09186a00801b7725.shtml">Cisco
GSS Global Server Load-Balancing</a>
        </p>
        <p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">
          <a href="http://www.cisco.com/en/US/netsol/ns340/ns394/ns50/ns254/networking_solutions_white_paper09186a00801b7725.shtml">
          </a> 
</p>
      </body>
      <title>Load Sharing with DNS</title>
      <guid isPermaLink="false">http://www.hibri.net/PermaLink,guid,47797438-5488-41c5-9fe5-a507d7a05764.aspx</guid>
      <link>http://www.hibri.net/2005/03/16/LoadSharingWithDNS.aspx</link>
      <pubDate>Wed, 16 Mar 2005 17:46:21 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
I was looking at how to implement a load balancing/load sharing system for a data
centre.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The data centre hosts websites
and other servers on a domain name www.mydomain.com&amp;nbsp;(for example). Servers within
the data centre are load balanced by Cisco Content Switches. The company wants 3 data
centres. The traffic coming to www.mydomain.com should be shared among the data centres
providing redundancy and scalability. These 3 data centres are in different physical
locations, and will be served by different ISPs (ideally).
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
The solution to this is to implement a DNS based load balancing system. In this solution
the primary name server for www.mydomain.com will be replaced with an "intelligent"
DNS server.
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
Instead of replying to DNS request with just one IP address, this smart DNS server
will give out the IP addresses based on the load at each of the data centres. The
client resolving an IP address for www.mydomain.com will get the IP address of the
data centre with the least load.
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
The DNS server can also stop clients from going to a data centre that is not functioning.
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
This solution is explained in more detail at &lt;a href="http://ntrg.cs.tcd.ie/undergrad/4ba2.01/group8/DNS.html"&gt;http://ntrg.cs.tcd.ie/undergrad/4ba2.01/group8/DNS.html&lt;/a&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
These are some of the solutions available in the market.
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
&lt;a href="http://www.sysmaster.com/s_net_dns.htm"&gt;http://www.sysmaster.com/s_net_dns.htm&lt;/a&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
&lt;a href="http://www.cisco.com/en/US/netsol/ns340/ns394/ns50/ns254/networking_solutions_white_paper09186a00801b7725.shtml"&gt;Cisco
GSS Global Server Load-Balancing&lt;/a&gt;
&lt;/p&gt;
&lt;p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1"&gt;
&lt;a href="http://www.cisco.com/en/US/netsol/ns340/ns394/ns50/ns254/networking_solutions_white_paper09186a00801b7725.shtml"&gt;&lt;/a&gt;&amp;nbsp;
&lt;/p&gt;</description>
      <comments>http://www.hibri.net/CommentView,guid,47797438-5488-41c5-9fe5-a507d7a05764.aspx</comments>
      <category>High Availability</category>
    </item>
  </channel>
</rss>