<?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>Grant Archibald - asp.net</title>
    <link>http://www.garchibald.com/blog/</link>
    <description>Continuous Improvement</description>
    <language>en-us</language>
    <copyright>Grant Archibald</copyright>
    <lastBuildDate>Fri, 13 Jun 2008 00:08:27 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.1.8102.813</generator>
    <managingEditor>http://kontactr.com/user/garchibald</managingEditor>
    <webMaster>http://kontactr.com/user/garchibald</webMaster>
    <item>
      <trackback:ping>http://www.garchibald.com/blog/Trackback.aspx?guid=bf0df883-c115-4c80-9973-a207dd363ac8</trackback:ping>
      <pingback:server>http://www.garchibald.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.garchibald.com/blog/PermaLink,guid,bf0df883-c115-4c80-9973-a207dd363ac8.aspx</pingback:target>
      <dc:creator>Grant Archibald</dc:creator>
      <wfw:comment>http://www.garchibald.com/blog/CommentView,guid,bf0df883-c115-4c80-9973-a207dd363ac8.aspx</wfw:comment>
      <wfw:commentRss>http://www.garchibald.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=bf0df883-c115-4c80-9973-a207dd363ac8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div class="intro">I have just finished listened to the <a href="http://www.hanselminutes.com/default.aspx?showID=134">Distributed
Caching with Microsoft's "Velocity"</a> podcast by Scott Hanselman and it has some
interesting points covered from a development, architecture and infrastructure point
of view. I have summarised a quick overview of some of the functionality offered together
with some initial thoughts around implications and next steps to think about.<br /></div>
        <div class="information">
          <h4>Overview<br /></h4>
          <div class="content">Velocity from and ASP.Net point of view provides the ability
to use it as an alternative to using either the out of process or SQL Server <b>session
state</b> giving the following benefits:<br /></div>
          <br />
          <ul>
            <li>
Scalability - The information stored across multiple machines.<br /></li>
            <li>
Failsafe - The state information is recoverable in the event one node fails.<br /></li>
            <li>
Reduce - Load on the SQL Server.<br /></li>
            <li>
Availability - Information cab be retrieved in the event that the SQL Server is not
available.<br /></li>
            <li>
Performance - Latency expected to be around 2ms as opposed for 20ms for SQL Server
call.<br /></li>
          </ul>
          <div class="content">Thinking though the availability scenario, the <b>caching API</b> together
with Distributed caching could be used to store information retrieved from the SQL
Server. In the event that the SQL server if not available, then return the last cached
value. Using this approach however would need to carefully think through a strategy
what happens to the information that would have been written to the database and what
the user experience would be.<br /></div>
          <br />
          <div class="information">
            <div class="heading">Caches types supported<br /></div>
            <br />
            <ul>
              <li>
Partitioned Cache - Ability to share key/value pairs across a cluster of machines
e.g. 2 computers with 1Gb memory each allowing 2Gb storage.<br /></li>
              <li>
Replicated Cache - Small objects that that are available on each cache node, allow
faster read access to the data.<br /></li>
              <li>
Local Cache - Stored in process without need to serialise/deserialise.<br /></li>
            </ul>
Implications<br /><br /><div class="heading">Development implications:<br /></div><ul><li>
New API's<br /></li><li>
Instrumentation to know what information is in cache and how often inserted, updated,
expired etc.<br /></li><li>
Strategies to implement failover to to preserve availability.<br /></li><li>
Development best practices for caching information.<br /></li><li>
Serialisation of objects.<br /></li><li>
Local development with components.<br /></li></ul><div class="heading">Architecture implications:<br /></div><ul><li>
Design for Availability, Reliability etc.<br /></li><li>
Process/Strategies for handing distributed caching/session information and interaction
with database &amp; presenters.<br /></li></ul>
Infrastructure implications:<br /><ul><li>
Can be on the web server (provided it has enough memory).</li><li>
Possible requirements for separate computers.<br /></li><li>
Network capacity to store and retrieve information between web servers and velocity.<br /></li><li>
Network interfaces to/from the distributed cache.<br /></li><li>
Updates to UAT and Production servers.<br /></li><li>
Updates for maintenance.<br /></li></ul>
Next Steps<br /><br /><div class="information">Timeframe for the product:<br /><ul><li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=B24C3708-EEFF-4055-A867-19B5851E7CD2&amp;displaylang=en">CTP</a> is
available now.<br /></li><li>
Next CTP should available around PDC Oct 08.<br /></li><li>
Expected release early 09.</li><br /></ul>
Points for further investigation:<br /><ul><li>
Follow future version 2 functionality that allows LINQ queries over distributed cache.<br /></li><li>
Compare and contrast with other current frameworks that exist.<br /></li><li>
Look at <a href="http://simpable.com/code/velocity-setup/">Setup of Velocity</a> for
review of features.</li><li>
Investigate <a href="http://blogs.msdn.com/velocity/archive/2008/06/02/introducing-project-codename-velocity.aspx">situations
that are ideal</a> for Distributed Caching</li></ul></div></div>
        </div>
        <img width="0" height="0" src="http://www.garchibald.com/blog/aggbug.ashx?id=bf0df883-c115-4c80-9973-a207dd363ac8" />
      </body>
      <title>Distributed Caching</title>
      <guid isPermaLink="false">http://www.garchibald.com/blog/PermaLink,guid,bf0df883-c115-4c80-9973-a207dd363ac8.aspx</guid>
      <link>http://www.garchibald.com/blog/2008/06/13/DistributedCaching.aspx</link>
      <pubDate>Fri, 13 Jun 2008 00:08:27 GMT</pubDate>
      <description>&lt;div class="intro"&gt;I have just finished listened to the &lt;a href="http://www.hanselminutes.com/default.aspx?showID=134"&gt;Distributed
Caching with Microsoft's "Velocity"&lt;/a&gt; podcast by Scott Hanselman and it has some
interesting points covered from a development, architecture and infrastructure point
of view. I have summarised a quick overview of some of the functionality offered together
with some initial thoughts around implications and next steps to think about.&lt;br&gt;
&lt;/div&gt;
&lt;div class="information"&gt;
&lt;h4&gt;Overview&lt;br&gt;
&lt;/h4&gt;
&lt;div class="content"&gt;Velocity from and ASP.Net point of view provides the ability
to use it as an alternative to using either the out of process or SQL Server &lt;b&gt;session
state&lt;/b&gt; giving the following benefits:&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Scalability - The information stored across multiple machines.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Failsafe - The state information is recoverable in the event one node fails.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Reduce - Load on the SQL Server.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Availability - Information cab be retrieved in the event that the SQL Server is not
available.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Performance - Latency expected to be around 2ms as opposed for 20ms for SQL Server
call.&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="content"&gt;Thinking though the availability scenario, the &lt;b&gt;caching API&lt;/b&gt; together
with Distributed caching could be used to store information retrieved from the SQL
Server. In the event that the SQL server if not available, then return the last cached
value. Using this approach however would need to carefully think through a strategy
what happens to the information that would have been written to the database and what
the user experience would be.&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;div class="information"&gt;
&lt;div class="heading"&gt;Caches types supported&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Partitioned Cache - Ability to share key/value pairs across a cluster of machines
e.g. 2 computers with 1Gb memory each allowing 2Gb storage.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Replicated Cache - Small objects that that are available on each cache node, allow
faster read access to the data.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Local Cache - Stored in process without need to serialise/deserialise.&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
Implications&lt;br&gt;
&lt;br&gt;
&lt;div class="heading"&gt;Development implications:&lt;br&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
New API's&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Instrumentation to know what information is in cache and how often inserted, updated,
expired etc.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Strategies to implement failover to to preserve availability.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Development best practices for caching information.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Serialisation of objects.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Local development with components.&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="heading"&gt;Architecture implications:&lt;br&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
Design for Availability, Reliability etc.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Process/Strategies for handing distributed caching/session information and interaction
with database &amp;amp; presenters.&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
Infrastructure implications:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Can be on the web server (provided it has enough memory).&lt;/li&gt;
&lt;li&gt;
Possible requirements for separate computers.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Network capacity to store and retrieve information between web servers and velocity.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Network interfaces to/from the distributed cache.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Updates to UAT and Production servers.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Updates for maintenance.&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
Next Steps&lt;br&gt;
&lt;br&gt;
&lt;div class="information"&gt;Timeframe for the product:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=B24C3708-EEFF-4055-A867-19B5851E7CD2&amp;amp;displaylang=en"&gt;CTP&lt;/a&gt; is
available now.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Next CTP should available around PDC Oct 08.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Expected release early 09.&lt;/li&gt;
&lt;br&gt;
&lt;/ul&gt;
Points for further investigation:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Follow future version 2 functionality that allows LINQ queries over distributed cache.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Compare and contrast with other current frameworks that exist.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
Look at &lt;a href="http://simpable.com/code/velocity-setup/"&gt;Setup of Velocity&lt;/a&gt; for
review of features.&lt;/li&gt;
&lt;li&gt;
Investigate &lt;a href="http://blogs.msdn.com/velocity/archive/2008/06/02/introducing-project-codename-velocity.aspx"&gt;situations
that are ideal&lt;/a&gt; for Distributed Caching&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://www.garchibald.com/blog/aggbug.ashx?id=bf0df883-c115-4c80-9973-a207dd363ac8" /&gt;</description>
      <comments>http://www.garchibald.com/blog/CommentView,guid,bf0df883-c115-4c80-9973-a207dd363ac8.aspx</comments>
      <category>asp.net</category>
    </item>
  </channel>
</rss>