<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Designing the future</title>
    <link rel="alternate" type="text/html" href="http://community.oclc.org/engineering/" />
    <link rel="self" type="application/atom+xml" href="http://community.oclc.org/engineering/atom.xml" />
    <id>tag:community.oclc.org,2009-05-05:/engineering//1</id>
    <updated>2009-06-17T21:49:31Z</updated>
    <subtitle>Web-scale for libraries</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.23-en</generator>

<entry>
    <title>Transparent Transaction Redirection</title>
    <link rel="alternate" type="text/html" href="http://community.oclc.org/engineering/2009/06/transparent-transaction-redirection.html" />
    <id>tag:community.oclc.org,2009:/engineering//1.6</id>

    <published>2009-06-17T21:47:12Z</published>
    <updated>2009-06-17T21:49:31Z</updated>

    <summary> Normal 0 false false false EN-US X-NONE X-NONE MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNormalTable {mso-style-name:&quot;Table Normal&quot;; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:&quot;&quot;; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:&quot;Times New Roman&quot;; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;...</summary>
    <author>
        <name>Mike Teets</name>
        
    </author>
    
    <category term="transparenttransactionredirectionfailoversessionworkflowsstate" label="transparent transaction redirection failover session workflows state" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-US" xml:base="http://community.oclc.org/engineering/">
        <![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="ProgId" content="Word.Document"><meta name="Generator" content="Microsoft Word 12"><meta name="Originator" content="Microsoft Word 12"><link rel="File-List" href="file:///C:%5CUsers%5Cteetsm%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"><link rel="themeData" href="file:///C:%5CUsers%5Cteetsm%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"><link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Cteetsm%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"><!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-US</w:LidThemeOther>
  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:DontVertAlignCellWithSp/>
   <w:DontBreakConstrainedForcedTables/>
   <w:DontVertAlignInTxbx/>
   <w:Word11KerningPairs/>
   <w:CachedColBalance/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="&#45;-"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]--><style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin-top:0in;
	margin-right:0in;
	margin-bottom:10.0pt;
	margin-left:0in;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:10.0pt;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:minor-fareast;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;}
</style>
<![endif]-->

<p class="MsoNormal"><span style="">Moving on from the
previous post to the topic of transaction transparency.<span style="">&nbsp; </span>The previous post, which in hindsight seemed
a bit dry, focused on the numbers of being highly available.<span style="">&nbsp; </span>Sure, I had a colored graphic and all, but it
was just math.<span style="">&nbsp; </span>There were probably only
one or two people that were inquisitive enough to actually check the math.<span style="">&nbsp; </span>Transaction level redirection is where
meeting the numeric goals gets interesting.<span style="">&nbsp;
</span>It may be the key distinguishing characteristic</span> between a hosted
web application and a system that is designed for web scale.<span style="">&nbsp; </span><span style=""><o:p></o:p></span></p>

<p class="MsoNormal"><span style="">To recap <b><i style="">Transparent</i></b></span><i style="">: Transaction level redirection without user
knowledge. Any service within the infrastructure should fail over quietly and
reliably to an alternate service with little to no disruption to the user.
There should be no degradation when services go down</i></p>

<p class="MsoNormal">Sessions and State leading to Efficient Workflow</p>

<p class="MsoNormal"><span style="">&nbsp;</span>Can you believe that
it was almost 15 years ago that we started down the path of trying to force our
session based, stateful systems into the "World Wide Web" and the Mosaic
browser?<span style="">&nbsp; </span>We slapped web skins on
existing applications.<span style="">&nbsp; </span>Many even
continued to architect this way because it was the knowledge that existed at
the time.<span style="">&nbsp; </span>Unfortunately, some of that
legacy is still with us.<span style="">&nbsp; </span>Admittedly,
OCLC has some remaining pockets of this model.<span style="">&nbsp;
</span></p>

<p class="MsoNormal">The limitations led many to view statefulness and session
based designs as bad juju.<span style="">&nbsp; </span>Over the next
years, the information industry has meandered through various solutions to this
problem:<span style="">&nbsp; </span>Cookies, bad cookies; Session
URL tags, bad session URL tags; etc.<span style="">&nbsp; </span>Fast
forward to today and we find that most systems strive to implement good
stateful models without the legacy of doing so with sessions.<span style="">&nbsp;&nbsp; </span>Think of "good stateful models" as those
that support efficient workflows.<span style="">&nbsp; </span>Workflows
might be a good future topic... but I will just throw out that "efficient" is
usually not equal to "the way I always did it".</p>

<p class="MsoNormal">What does that have to do with Transaction Redirects?</p>

<p class="MsoNormal">Efficient workflows require that your services maintain some
context for you.<span style="">&nbsp;&nbsp; </span>Why are you here?<span style="">&nbsp; </span>What did you do last?<span style="">&nbsp; </span>What are you likely to do next?<span style="">&nbsp; </span>These are relatively simple things to do in a
single host environment.<span style="">&nbsp; </span>They become a
little harder across multiple machines.<span style="">&nbsp;
</span>They become very difficult across data centers.<span style="">&nbsp;&nbsp; </span>Now introduce failures into the system:
machines crashing, disks failing, applications failing, networks failing... all
things that will happen.<span style="">&nbsp; </span>Your systems
must be prepared on every transaction to infer some context even if that system
has not previously seen your history.<span style="">&nbsp; </span></p>

<p class="MsoNormal">Consistency and Availability</p>

<p class="MsoNormal">As you might imagine, transaction redirections introduce a
balance between consistency and availability... something that has been difficult
in the library industry.<span style="">&nbsp; </span>Up to a point,
they both can increase together with well built software.<span style="">&nbsp; </span>At some point however, higher consistency
across larger and larger stores of data leads to lower reliability (insert your
favorite metasearch story here). There is not a single right answer.<span style="">&nbsp; </span>For some applications, you don't want an
answer unless it is guaranteed right... at your doctor's office for example.<span style="">&nbsp; </span>In other cases, having the service available
is more important than getting the exact same answer on multiple attempts...
shopping on Amazon.<span style="">&nbsp; </span>The key is finding
the right balance for your environment.</p>

<p class="MsoNormal">Again, what does this have to do with Transaction Redirects?</p>

<p class="MsoNormal">I used the above path to demonstrate the issues of
statefulness and sessions in human interaction with our systems.<span style="">&nbsp; </span>These issues apply to service components in
service oriented architectures.<span style="">&nbsp; </span>In
modern service oriented systems, the number of components can be onerous (70+
in worldcat.org). <span style="">&nbsp;</span>We must build the
overall system anticipating failures.<span style="">&nbsp;
</span>The value of SOA systems is that components can be scaled independently
and fail over independently.<span style="">&nbsp; </span>For
example, if cover art is becoming slow, we can add cover art virtual servers within
minutes.<span style="">&nbsp; </span>If one fails, the calling
applications can switch over silently to an alternative.<span style="">&nbsp; </span>Each component of the system must be prepared
for taking transaction loads in growth situations as well as failures.<span style="">&nbsp; </span>They must do this without forcing the user to
back up to the top of a workflow chain.</p>

<p class="MsoNormal">But how do you do that?</p>

<p class="MsoNormal">The good news is that there are many blazing the trail and
pointing us to what works and what doesn't work. <span style="">&nbsp;</span>The not-so-good news is there is not an easy way
to take an existing application and add this stuff after the fact. <span style="">&nbsp;</span>There is much written about the architectures
of the large internet services.<span style="">&nbsp;&nbsp; </span>The
common point amongst all of them is that they are designing core
infrastructures that support models of scale and availability.<span style="">&nbsp; </span>They are not simply hosting an application on
the web.</p>

<p class="MsoNormal">An example component at OCLC is our internally developed
text engine.<span style="">&nbsp; </span>All of the data is in
memory for absurdly fast response time.<span style="">&nbsp;
</span>It is spread across three clusters.<span style="">&nbsp;
</span>Each transaction is sent to all three at the same time.<span style="">&nbsp; </span>The first one to respond wins.<span style="">&nbsp; </span>Each partition within each cluster is also
replicated.<span style="">&nbsp; </span>A transaction failure,
outside of those we humans cause, is practically impossible.<span style="">&nbsp; </span>We have even tested pulling plugs from the
wall and watching a load tests continue to hum along without skipping a beat.</p>

<p class="MsoNormal"><o:p>&nbsp;</o:p></p>

<p class="MsoNormal"><o:p>&nbsp;</o:p></p>

 <div><div id="F5rw_option_box" style="border: 1px solid rgb(0, 0, 0); margin: auto; padding: 4px; background: rgb(238, 238, 255) none repeat scroll 0% 0%; text-align: left; position: fixed; bottom: 50px; left: 540px; visibility: hidden; color: rgb(0, 0, 0); -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-border-radius-topleft: 6px; -moz-border-radius-topright: 6px; -moz-border-radius-bottomright: 6px; -moz-border-radius-bottomleft: 6px; font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; z-index: 99999;"><form action="" contenteditable="false"><table id="F5rw_table" style="border: medium none ;" cellpadding="0" cellspacing="0" width="100%"><tbody><tr id="F5rw_row"><td id="F5rw_cell" colspan="2" align="center"><span id="F5rw_span" style="font-size: 16px; font-weight: bold;">"Auto F5 reload window" options</span></td><td id="F5rw_cell">         </td></tr><tr id="F5rw_row"><td id="F5rw_cell">Default timeout</td><td id="F5rw_cell"><input size="10" value="5:00" id="F5rw_default_timeout" type="text" />*      </td></tr><tr id="F5rw_row"><td id="F5rw_cell">Timeout for this page</td><td id="F5rw_cell"><input size="10" value="5:00" id="F5rw_timeout" type="text" />*              </td></tr><tr id="F5rw_row"><td id="F5rw_cell">Add random value to timeout between 0 and</td><td id="F5rw_cell"><input size="10" value="0" id="F5rw_random" type="text" />*               </td></tr><tr id="F5rw_row"><td id="F5rw_cell">Show and hide menu </td><td id="F5rw_cell"><input size="1" value="T" id="F5rw_hotkey" maxlength="1" type="text" /> </td></tr><tr id="F5rw_row"><td id="F5rw_cell">Ignore everything after these symbols in URL(separate with spaces)</td><td id="F5rw_cell"><input size="10" value="; ? #" id="F5rw_separators" type="text" />&nbsp;&nbsp;</td></tr><tr id="F5rw_row"><td id="F5rw_cell">Include the separators in the URL saved</td><td id="F5rw_cell"><input checked="checked" id="F5rw_separators_incl" type="checkbox" />      </td></tr><tr id="F5rw_row"><td id="F5rw_cell">Hide menu when clicking outside the menu</td><td id="F5rw_cell"><input checked="checked" id="F5rw_autoclose" type="checkbox" />            </td></tr><tr id="F5rw_row"><td id="F5rw_cell">Prolong timeout on mouseclicks or keyboard input</td><td id="F5rw_cell"><input id="F5rw_click_extend" type="checkbox" />         </td></tr><tr id="F5rw_row"><td id="F5rw_cell">Reload all pages with default timeout, which has no timeout set</td><td id="F5rw_cell"><input id="F5rw_refresh_all" type="checkbox" />            </td></tr><tr id="F5rw_row"><td id="F5rw_cell" colspan="2" style="font-size: 11px;"><br />*Format examples: hh:mm:ss, h:m:ss, m:sss, s etc. like 1:20:30 oder 500 oder 3:100</td></tr><tr id="F5rw_row"><td id="F5rw_cell" colspan="2" align="center"><br /><input style="background-color: rgb(255, 255, 255);" value="OK" id="F5rw_ok" type="button" /><input style="background-color: rgb(255, 255, 255);" value="Cancel" id="F5rw_cancel" onclick="document.getElementById('F5rw_option_box').style.visibility='hidden';" type="reset" /><input style="background-color: rgb(255, 255, 255); color: rgb(204, 0, 0);" value="Abort reload" id="F5rw_abort" type="button" /></td></tr></tbody></table><br /></form></div></div>]]>
        
    </content>
</entry>

<entry>
    <title>Available and Reliable</title>
    <link rel="alternate" type="text/html" href="http://community.oclc.org/engineering/2009/05/available-and-reliable.html" />
    <id>tag:community.oclc.org,2009:/engineering//1.5</id>

    <published>2009-05-21T20:22:49Z</published>
    <updated>2009-05-22T18:53:35Z</updated>

    <summary><![CDATA[This is the second post in the series on "What is Web-Scale".&nbsp; It has been a while since my first post so I had better get on with it.&nbsp; I took an informal poll on twitter to select which area...]]></summary>
    <author>
        <name>Mike Teets</name>
        
    </author>
    
    <category term="available" label="available" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="fournines" label="four nines" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="reliable" label="reliable" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="webscale" label="web-scale" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-US" xml:base="http://community.oclc.org/engineering/">
        <![CDATA[<p class="MsoNormal"><span style="">This is the second post in the series on "What is Web-Scale".&nbsp; It has been a while
since my first post so I had better get on with it.<span style="">&nbsp; </span>I took an informal poll on twitter to select
which area of the web-scale / cloud concepts to expand.<span style="">&nbsp;&nbsp; </span>Transparency was popular but the most
popular was "just do them in order".<span style="">&nbsp; </span>That
is what I will do.<span style="">&nbsp; </span>Transparency will be
next.<o:p></o:p></span></p>

<p class="MsoNormal"><span style="">Reiterating the
bullet from the summary post:<span style="">&nbsp; </span><b>Available</b></span>
<b>and Reliable:</b> 99.9 or 99.99% Availability (24x7x365, not against an
advertised availability) Always On: No down time, planned or otherwise. The
site must always be available.</p>


<p class="MsoNormal"><b style=""><span style=""></span></b>A common internet forum statement is "If
there aren't pictures, it didn't happen"... so here is a picture.<span style="">&nbsp;&nbsp; </span>The first thing about availability at scale is that you cannot depend on opinions or feelings about whether it is good enough.&nbsp; You must measure it.<span style="">&nbsp; </span>It
must be measured every second of every day.<span style="">&nbsp;
</span>The data must be logged over long periods to determine individual
service frailty.<span style="">&nbsp; </span>For massively scalable
systems, this data must be reviewed daily with alarms going off anytime a
system falls out of specification.<span style="">&nbsp; </span>The
following is a high level dashboard of one of our system monitors at OCLC.&nbsp; Failures must be evaluated for corrective action.&nbsp; It's just not optional.<br /></p>

<span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="Availability.jpg" src="http://community.oclc.org/engineering/Availability.jpg" class="mt-image-none" style="" width="504" height="332" /></span>

<p class="MsoNormal"><b style=""><br /></b></p>

<p class="MsoNormal"><b style="">The numbers:</b><span style=""> </span>What does it mean... system managers slang is "Two nines" or "Four
nines".<span style="">&nbsp; </span>99% available is "2 nines",
99.99% is four.<span style="">&nbsp; </span>Simple enough right?<span style="">&nbsp;&nbsp; </span>While it seems mathematically simple, this
area tends to be often misunderstood.<span style="">&nbsp; </span>We
all tend to relate statements on reliability to personal devices and machines
that are very local and singular in nature.<span style="">&nbsp;
</span>A single machine at 99.99% is down for 52 minutes a year.</p><p class="MsoNormal" style="margin-bottom: 0.0001pt;">Summary: </p>

<p class="MsoNormal" style="margin-bottom: 0.0001pt;"><span style="color: black;">99% - 3.65 days outage per year<o:p></o:p></span></p>

<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: black;">99.9% - 8.76 hours outage per year<o:p></o:p></span></p>

<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: black;">99.99% - 52.56 minutes outage per year<o:p></o:p></span></p>

<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: black;">99.999% - 5.256 minutes outage per year<o:p></o:p></span></p>

<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: black;">99.9999% - 31.536 seconds outage per year<o:p></o:p></span></p>

<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="color: black;">99.99999% - 3.1536 seconds outage per year<o:p></o:p></span></p>



<p class="MsoNormal"><br /></p>

<p class="MsoNormal">Now the bad news:<span style="">&nbsp; </span>A service actually drops to 99.98 available when it is dependent on just two 99.99% lower level services (105 minutes per year).<span style="">&nbsp; </span>This can be called series availability.&nbsp; The more services you chain together the worse your reliability gets.<span style=""></span></p><p class="MsoNormal"><span style=""></span>2 services in series: 365 *
24 * 60 * <b>.9999 * .9999 </b>= 105 minutes annually.</p><p class="MsoNormal">3 services in series: <span style=""></span>365 *
24 * 60 * <b>.9999 * .9999 * .9999 </b>= 157 minutes annually.</p>

<p class="MsoNormal">As you might guess, our current Web 2.0 mashup world is
generating reliability issues as services are very typically series based...
metasearch -&gt; webui<span style="">&nbsp; </span>-&gt;<span style="">&nbsp; </span>SRU -&gt; database -&gt; data just as a
common example.<span style="">&nbsp; </span><span style="">&nbsp;&nbsp;</span><br style="" />
<!--[if !supportLineBreakNewLine]--><br style="" />
<!--[endif]--></p>

<p class="MsoNormal">Don't despair, there is good news!&nbsp; This good news actually supports a service architecture environment instead of detracts.<span style="">&nbsp; </span>There are ways to improve availability with a SOA model.<span style="">&nbsp; </span>The first, and most expensive way is to buy
and manage very highly reliable individual systems.<span style="">&nbsp; </span>This is the path the big iron of the 80's
took... and it got very, very expensive.<span style="">&nbsp;&nbsp; </span>In
modern highly available environments, this issue is addressed by parallelizing the
workload. <span style="">&nbsp;</span>Simply double up each service
so that both must be down for the entire system to be down and you are back to
52 minutes with 99.99% on each machine.</p>

<p class="MsoNormal"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Availability
= 1 - (1-MachineAvail)**2<span style="">&nbsp; </span></p>

<p class="MsoNormal">Given that, we have even better news, if you double 99% available machines you get 99.99% availability, triple and you get 99.9999%!<span style="">&nbsp; </span>This is why the massively
scalable architectures now can use commodity hardware instead of paying for it
in the individual machines.</p>

<p class="MsoNormal">In real life examples however it is never "simply double..."<span style="">&nbsp;&nbsp; </span>There are issues in software design, data integrity
issues, transaction routing, load balancing, fail-over, etc.<span style="">&nbsp;
</span>These all contribute a significant cost to obtaining highly reliable
systems.&nbsp; In other words, we moved some expense from hardware to software.&nbsp; This is good news again since software copies scale less expensively than hardware.<br /></p>

<p class="MsoNormal" style="margin-bottom: 0.0001pt;"><b style="">Planned verses Unplanned:</b><span style="">&nbsp; </span>How many of our services have an outage
notification page or warning page of pending outage or a current outage?<span style="">&nbsp; </span>Historically we have struggled over the words
to use as I am sure everyone has.<span style="">&nbsp; </span>We carefully
craft messages and explanations.<span style="">&nbsp; </span>But
realize this... NOBODY READS THEM!<span style="">&nbsp; </span>We
might feel a little better when we find the notice after we see a service has
failed but the vast majority of users of our systems just see a failure and
move on to an alternate.</p>

<p class="MsoNormal" style="margin-bottom: 0.0001pt;"><br />
Another false comfort is that somehow planned and unplanned outages are
different.<span style="">&nbsp; </span>Outages for
upgrades are really not tolerated by users.<span style="">&nbsp;
</span>Major internet services figured this out from the beginning.<span style="">&nbsp; </span>The service must be on at all times.<span style="">&nbsp; </span>Software installs must be done on a rolling
basis while user transactions are serviced.<span style="">&nbsp;
</span>Hardware additions or replacements must be the same.<span style="">&nbsp; </span>Always on is now the default end-user
expectation.</p><p class="MsoNormal" style="margin-bottom: 0.0001pt;"><br /></p><p class="MsoNormal" style="margin-bottom: 0.0001pt;">A positive byproduct of the scaling across commodity hardware for reliability is that there are now many options for rolling installs across an environment.&nbsp; It can be done in parallel data centers, farms within data centers, individual machines or even virtual machines on a single host.&nbsp; Again, it takes software design and configuration management design, but it is quite practical in today's environments.</p><p class="MsoNormal" style="margin-bottom: 0.0001pt;"><br /></p><p class="MsoNormal" style="margin-bottom: 0.0001pt;"><b>OCLC</b>:&nbsp; Focusing on just one service platform, worldcat.org is comprised of 150 servers.&nbsp; These servers are divided into farms by function... 65 database servers, 75 application servers, and 10 servers supporting harvesting and bots.&nbsp; We continually add hardware and rebalance the environment with demand.&nbsp; We have two data centers today and will likely have more in the future as we grow and balance load geographically.<br /></p>


 ]]>
        
    </content>
</entry>

<entry>
    <title>What is Web-Scale?</title>
    <link rel="alternate" type="text/html" href="http://community.oclc.org/engineering/2009/05/what-is-web-scale.html" />
    <id>tag:community.oclc.org,2009:/engineering//1.2</id>

    <published>2009-05-07T10:01:05Z</published>
    <updated>2009-05-07T22:01:53Z</updated>

    <summary>The inaugural post for this blog will dive right into the core technology that OCLC is making available... Web Scale systems for libraries.The recent OCLC press release about Worldcat Local &quot;Quick Start&quot; and network management environment used the term &quot;Web-Scale&quot;...</summary>
    <author>
        <name>Mike Teets</name>
        
    </author>
    
    <category term="ondemandinfrastructure" label="on demand infrastructure" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="paas" label="PaaS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="platformasaservice" label="platform as a service" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="saas" label="SaaS" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="softwareasaservice" label="software as a service" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="utilitycomputing" label="utility computing" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="webscale" label="web scale" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="webscale" label="web-scale" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en-US" xml:base="http://community.oclc.org/engineering/">
        <![CDATA[The inaugural post for this blog will dive right into the core technology that OCLC is making available... Web Scale systems for libraries.<br /><br />The recent OCLC press release about Worldcat Local "Quick Start" and
network management environment used the term "Web-Scale" 12 times <a href="http://www.oclc.org/us/en/news/releases/200927.htm">(Press Release)</a>.&nbsp; Many assumptions can be made about what this means, but let me
outline what this means to us in deploying technology.&nbsp;&nbsp; Our use of the term within OCLC describes both a technical architecture and the impact the services have within the community they serve.&nbsp; The following
is a brief outline focused on the technology aspects.&nbsp; Over the next several weeks I will provide a
detailed post on each of these topics.<br /><br /><p><b>What is Web Scale? </b> A system which is Highly Available, Reliable, Transparent, High Performance, Scalable, Accessible, Secure, Usable, and Inexpensive </p><p>There
are alternate phrases, some of which are true alternatives and some of
which have different meanings.&nbsp; These include: "utility computing",
"web-scale computing", "on-demand infrastructure", "cloud computing",
"Software as a Service (SaaS)" and "Platform as a Service (PaaS)".</p><p><b>Available</b> <b>and Reliable:</b> 99.9 or 99.99% Availability (24x7x365, not against an
advertised availability)
Always On: No down time, planned or otherwise. The site must always be
available. <br /></p><p><b>Transparent</b>: Transaction level redirection without user knowledge. Any service within the
infrastructure should fail over quietly and reliably to an
alternate service with little to no disruption to the user. There
should be no degradation when services go down
</p><p><b>High Performance</b>: Fast response time. Sub-second response time on
every transaction type at the internal service level. We should be clearly faster than
anything implemented locally.&nbsp; Network latency should be the only performance concern.
</p><p><b>Scalable</b>: Three-dimensional scaling. The environment must allow us to add users
with decreasing costs per user, add servers with decreasing cost per server, and add services with decreasing
costs per service.
</p><p><b>Accessible:&nbsp; </b>Allow access to all that the web has to offer. It must
allow external services to integrate in many different ways convenient
to them, and must integrate to external services in commonly used
standard ways.&nbsp; It must integrate into the web where the current and new users spend time.
</p><p><b>Secure:</b>
Must provide identity management, service protection, data protection while insuring personal as well as institutional privacy. <br /></p><p><b>Usable</b>:&nbsp; The system must be usable by a massively diverse community.&nbsp; For us this means professionals as well as general internet users; publics, academics and special libraries; novice system users as well as experienced.&nbsp; Decisions concerning UI design, workflow and usability must be based on sound evidence not opinions.<br /></p><p><b>Inexpensive: </b>Must do ALL of the above at a lower price than the
local environment can do SOME of the things above. The value
proposition must be simple and clear.&nbsp;</p><p>Detail about these will come in later posts.&nbsp; Feel free to comment!&nbsp; I welcome your feedback.<br /></p><p></p>]]>
        
    </content>
</entry>

</feed>
