<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>PatHelland's WebLog : Architectural</title><link>http://blogs.msdn.com/pathelland/archive/tags/Architectural/default.aspx</link><description>Tags: Architectural</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>The Emissary Design Pattern and RIAs (Rich Internet Applications)</title><link>http://blogs.msdn.com/pathelland/archive/2008/08/10/the-emissary-design-pattern-and-rias-rich-internet-applications.aspx</link><pubDate>Sun, 10 Aug 2008 18:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8846730</guid><dc:creator>PatHelland</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/pathelland/comments/8846730.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pathelland/commentrss.aspx?PostID=8846730</wfw:commentRss><description>&lt;P&gt;Here is a first draft of a new presentation.&amp;nbsp;&amp;nbsp; I gave it a couple of months ago just after TechEd and thought I would share it as I try to write up some of my thoughts on RIAs.&amp;nbsp; I plan to rework this a bit more and present it again at TechEd Europe.&amp;nbsp;&amp;nbsp; The talk is titled: "The Emissary Design Pattern and RIAs (Rich Internet Applications)"&lt;/P&gt;
&lt;P&gt;Abstract:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;The Emissary design pattern was first described in 1999 in the old "Fiefdoms and Emissaries" talk.&amp;nbsp; The concept of a "fiefdom" is very similar to what we today call a service in a Service Oriented Architecture.&amp;nbsp; The fiefdom is a separate trust sphere and transactional boundary.&amp;nbsp;&amp;nbsp; An emissary is a prescriptive pattern for interacting with a service (or fiefdom) which leverages reference data and a deep understanding of the service to prepare requests for service and maximize the chance those requests will comply with the requirements of the service.&amp;nbsp;&amp;nbsp; An emissary may be richly interactive and anticipate the validation requirements of the service.&lt;/P&gt;
&lt;P&gt;The emerging world of RIAs (Rich Internet Applications) is a fascinating blend of a classic smart client and a browser-based web application.&amp;nbsp;&amp;nbsp; In a RIA app, client code runs in the browser but still must comply with the browser enforced sand-boxing and not cause harm to the host client machine.&amp;nbsp; Navigation, naming, linking, and much more are being defined in a fashion drawing from both the web style and the client style.&amp;nbsp; Many of the design issues with RIAs are under discussion today as this support for these applications is emerging.&lt;/P&gt;
&lt;P&gt;This talk examines both the emissary design pattern and the nascent space of Rich Internet Applications.&amp;nbsp; It motivates how one can look to the workflow patterns contained in our parents' use of paper forms for workflow to understand the possibilities of implementing user-centric workflow as shared replicated data.&amp;nbsp; The talk concludes with some preliminary concepts of a shared and declarative definition of the "paper form" model and its constraints and how these may someday be used in the automatic generation of emissary-based RIA clients.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;More RIA stuff soon!&lt;/P&gt;
&lt;P&gt;- Pat&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8846730" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/pathelland/attachment/8846730.ashx" length="1085585" type="application/vnd.openxmlformats-officedocument.pres" /><category domain="http://blogs.msdn.com/pathelland/archive/tags/Architectural/default.aspx">Architectural</category></item><item><title>Controllers and Doers</title><link>http://blogs.msdn.com/pathelland/archive/2008/07/06/controllers-and-doers.aspx</link><pubDate>Sun, 06 Jul 2008 22:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8697944</guid><dc:creator>PatHelland</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pathelland/comments/8697944.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pathelland/commentrss.aspx?PostID=8697944</wfw:commentRss><description>&lt;P&gt;First of all, I've put off writing this for a while since I wanted a term for "controllers" that does not feel pejorative.&amp;nbsp;&amp;nbsp; I really mean this characteristic in a healthy and natural fashion!&lt;/P&gt;
&lt;P&gt;So, it's my belief that the people working in IT fall into two broad categories (with&amp;nbsp;occasional cross-over and hybrids).&amp;nbsp;&amp;nbsp; Folks generally are either:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Controllers&lt;/U&gt;&lt;/STRONG&gt; -- These people struggle every day with the overwhelming number of applications, data sets, schemas, projects, and the chaotic interaction between them.&amp;nbsp; They strive to bring order to the chaos and rationalize how all this crap can work together.&amp;nbsp; They are fervently backing the enterprise-wide schema rationalization and struggling to get the architecture team to be successful in its attempt to unify many different aspects of the application install base.&amp;nbsp; Part of this effort is to unify the logging, monitoring, and management of all the applications within the enterprise.&amp;nbsp; As a first step in that, they support the ongoing project to create an accurate inventory of the various applications within the enterprise.&amp;nbsp;&amp;nbsp; It is always a work in progress!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Doers&lt;/U&gt;&lt;/STRONG&gt; -- These folks see an important business imperative that requires application support.&amp;nbsp; They WANT to work within the framework advocated by the Controllers but it seems very challenging to meet their business constraints while dealing with all the overhead (and apparent confusion) of doing things compliant with the Controllers' constraints.&amp;nbsp; Sometimes, they comply.&amp;nbsp; Other times, they say "Screw It" and just do their application changes the way they want to do them.&lt;/P&gt;
&lt;P&gt;So, this dichotomy seems stable just like the American Two-Party System of Politics seems to be stable.&amp;nbsp; The Democrats and Republicans always seem to squabble and that clarifies the argument.&amp;nbsp; Over time, the center viewpoint migrates (and American political views are surprisingly homogeneous -- just ask any non-American).&amp;nbsp; The existence of the debate (and the tension it causes) drives the system towards a new balance over time.&amp;nbsp; Similarly, the Controllers and the Doers move the center of gravity for the IT organization -- in both its centralized capacity and its per-department capacity.&amp;nbsp; The proclivity of the Controllers adds some small sense of consistency (which is of tremendous value) while the business demands of the Doers keeps a spark under the IT organization's butt.&lt;/P&gt;
&lt;P&gt;Some observations:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;When I was a kid, the Controllers had great big mainframes and multi-year waiting lists for application development.&amp;nbsp;&amp;nbsp; The Doers bought mini-computers using their departmental budget and really annoyed the Controllers.&lt;/LI&gt;
&lt;LI&gt;Later, the Controllers were using minicomputers (usually running Unix) and the Doers were building PC applications!&amp;nbsp;&amp;nbsp; Some of these were even built in Excel and met the business needs just fine (even if the data wasn't properly "Controlled" which did pose challenges).&lt;/LI&gt;
&lt;LI&gt;Now, the PC is "The Man" and has moved into the mainstream of the world of the Controller.&amp;nbsp;&amp;nbsp; The Doers are using lots of different tools including mash-ups!&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;So, when I look around Microsoft and other vendors, I always ask myself&amp;nbsp; "Is this product for the Controllers or for the Doers?"&amp;nbsp; Different divisions and groups within the various vendors build stuff targeting the two constituencies.&amp;nbsp;&amp;nbsp; Neither is wrong and neither is right.&amp;nbsp;&amp;nbsp; The tension and the balance seems to be stable while the manifestations of each groups efforts evolves forward relentlessly.&amp;nbsp;&amp;nbsp; What a hoot!&lt;/P&gt;
&lt;P&gt;- Pat&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8697944" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pathelland/archive/tags/Architectural/default.aspx">Architectural</category></item><item><title>PDF version of the slides for "The Irresistible Forces Meet the Movable Objects"</title><link>http://blogs.msdn.com/pathelland/archive/2008/01/11/pdf-version-of-the-slides-for-the-irresistible-forces-meet-the-movable-objects.aspx</link><pubDate>Sat, 12 Jan 2008 04:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7082107</guid><dc:creator>PatHelland</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pathelland/comments/7082107.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pathelland/commentrss.aspx?PostID=7082107</wfw:commentRss><description>&lt;P&gt;Some friends of mine told me that they don't have Powerpoint 2007 (gasp!) and so it was impossible for them to see this talk.&lt;/P&gt;
&lt;P&gt;The original blog entry (with PPTX file and abstract) is &lt;A class="" title=here href="http://blogs.msdn.com/pathelland/archive/2007/11/25/the-irresistible-forces-meet-the-movable-objects-closing-general-session-at-teched-emea-in-barcelona.aspx" mce_href="http://blogs.msdn.com/pathelland/archive/2007/11/25/the-irresistible-forces-meet-the-movable-objects-closing-general-session-at-teched-emea-in-barcelona.aspx"&gt;http://blogs.msdn.com/pathelland/archive/2007/11/25/the-irresistible-forces-meet-the-movable-objects-closing-general-session-at-teched-emea-in-barcelona.aspx&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;I took the presentation and made some modifications to allow it to be legible as a PDF (some animations are spread over a few slides; one complex animation that can't animate as a PDF has a description attached).&lt;/P&gt;
&lt;P&gt;Hope this makes this more accessible.&lt;/P&gt;
&lt;P&gt;- Pat&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7082107" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/pathelland/attachment/7082107.ashx" length="3000836" type="application/pdf" /><category domain="http://blogs.msdn.com/pathelland/archive/tags/Architectural/default.aspx">Architectural</category></item><item><title>Durability Is in the Eye of the Beholder</title><link>http://blogs.msdn.com/pathelland/archive/2007/12/27/durability-is-in-the-eye-of-the-beholder.aspx</link><pubDate>Thu, 27 Dec 2007 23:47:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6879905</guid><dc:creator>PatHelland</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/pathelland/comments/6879905.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pathelland/commentrss.aspx?PostID=6879905</wfw:commentRss><description>&lt;p&gt;So, I occasionally ponder the D in ACID transactions and wonder what it REALLY means.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Observation #1: Committed Subject To...&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;When I was working at Tandem in the 1980s, we had a complex (and fascinating) multiprocessor system with dual-ported disk drives, dual-ported IO controllers, multiple (2 to 16) processors connected via a message-passing bus and it was fault tolerant.&amp;nbsp;&amp;nbsp; I'm very proud of that part of my career when I worked on &lt;a href="http://www.hpl.hp.com/techreports/tandem/TR-89.3.pdf"&gt;TMF (Transaction Monitoring Facility)&lt;/a&gt; which implemented the transaction logging and recovery spread across the &lt;a href="http://en.wikipedia.org/wiki/NonStop"&gt;Tandem Computer's&amp;nbsp; NonStop system&lt;/a&gt;.&amp;nbsp; While working there, I first realized the spectrum of commitment that happens over time.&amp;nbsp;&amp;nbsp; When a transaction would commit on TMF, it would get progressively more committed over time:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;u&gt;Committed &lt;em&gt;&lt;strong&gt;subject to&lt;/strong&gt; &lt;/em&gt;App process failure&lt;/u&gt;.&amp;nbsp; When the call from the application processor to the OS on the local processor (one of the 2 to 16 in the multi-processor) is made, the application process can then fail and the transaction will still commit.  &lt;li&gt;&lt;u&gt;Committed &lt;strong&gt;&lt;em&gt;subject to&lt;/em&gt;&lt;/strong&gt; processor failure&lt;/u&gt;.&amp;nbsp; One of the first things TMF does when processing a commit is to send a packet to its next neighbor indicating the intention to commit the transaction in question.&amp;nbsp; Once that packet is received by the neighboring processor, the failure of the application's original processor would no longer result in the transaction being aborted.  &lt;li&gt;&lt;u&gt;&lt;strong&gt;&lt;em&gt;Maybe&lt;/em&gt;&lt;/strong&gt; committed &lt;strong&gt;&lt;em&gt;subject to&lt;/em&gt;&lt;/strong&gt; system (multi-processor) failure&lt;/u&gt;.&amp;nbsp; When the commit record is written to the tail of the log, the mirrored writes are (or were back in my day) always done sequentially to ensure that the rewrite of the last block did not lose the previous contents of the last block.&amp;nbsp;&amp;nbsp; So, you went from neither mirror having the commit record to one mirror having the commit record...&amp;nbsp; we haven't yet written the second mirror.&amp;nbsp;&amp;nbsp; A crash at this point would result in an attempt to read the tail of the log after restart.&amp;nbsp;&amp;nbsp; It was the luck of the dice as to which mirror was read but whichever tail was read, that was rewritten onto the other mirror to ensure a consistent opinion of the tail of the log.&amp;nbsp;&amp;nbsp; Hence, we've entered a window in which the transaction has a 50% chance of being committed if the entire system crashes and restarts.&amp;nbsp;&amp;nbsp; Is this transaction durable???  &lt;li&gt;&lt;u&gt;Committed &lt;strong&gt;&lt;em&gt;subject to&lt;/em&gt;&lt;/strong&gt; system (multi-processor) failure&lt;/u&gt;.&amp;nbsp; When the commit record is written to the tail of the log on the second mirror, you had a (close to) 100% chance of having the transaction remain committed in the face of a system crash and restart.  &lt;li&gt;&lt;u&gt;Committed &lt;strong&gt;&lt;em&gt;subject to&lt;/em&gt;&lt;/strong&gt; the destruction of the data-center&lt;/u&gt;.&amp;nbsp;&amp;nbsp; This would occur when the log was shipped offsite either via tape or by squirreling it across the network to a backup site.  &lt;li&gt;&lt;u&gt;Committed &lt;strong&gt;&lt;em&gt;subject to&lt;/em&gt;&lt;/strong&gt; thermo-nuclear exchange&lt;/u&gt;.&amp;nbsp;&amp;nbsp; Now, THIS one was a tough one.&amp;nbsp;&amp;nbsp; You have to send the backup tape to sit under some mountain to ensure the transaction is REALLY committed if this happens...&amp;nbsp; I'm not sure we achieved this...&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;So, when is the transaction durable?&amp;nbsp; What about a transaction whose commitment is recorded on multiple machines but only in volatile memory (but with enough of them to have as many nines availability as you want)?&amp;nbsp;&amp;nbsp; Hmmm... this durable stuff is annoying (just like all the letters in ACID).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Observation #2: Commit Dependencies and the Event Horizon&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;I am reminded of &lt;a href="http://en.wikipedia.org/wiki/Information_Management_System"&gt;IMS (IBM's Information Management System)&lt;/a&gt; and its special version called &lt;a href="http://www.redbooks.ibm.com/abstracts/sg244301.html"&gt;IMS Fast Path&lt;/a&gt;.&amp;nbsp; What I'm about to say may be apocryphal but this is how I think it works based on occasional conversations with transactional old-farts...&lt;/p&gt; &lt;p&gt;As I understand it, there was this cool optimization called "internal commit".&amp;nbsp; &lt;/p&gt; &lt;p&gt;IMS worked as a database management system integrated with &lt;a href="http://en.wikipedia.org/wiki/IBM_3270"&gt;3270 block mode terminals&lt;/a&gt;.&amp;nbsp;&amp;nbsp; Work happened in three steps:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;The user filled out the screen and pushed "enter" which caused the image of the changed fields to be sent to a terminal controller.&amp;nbsp; The terminal controller interacted with IMS to ensure the input image of the screen was transactionally recorded.&amp;nbsp;&amp;nbsp; Only after the input was logged would the work of the transaction against the database be performed.  &lt;li&gt;The incoming data was dequeued, the work of the transaction was performed (which likely modified data in the database), and the output screen image was enqueued.  &lt;li&gt;The output screen image was flashed up for the user to see and a transaction performed to delete the output screen.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;This has the characteristic that it is IMPOSSIBLE to see the contents of the database other then by looking at the effects of a committed transaction.&amp;nbsp;&amp;nbsp; Unlike most DBMS systems today, you could not begin a transaction, examine record-X, and display the results without committing the transaction that LOOKED at Record-X.&amp;nbsp;&amp;nbsp; Just the act of reading required a commitment to see the effects outside the system.&lt;/p&gt; &lt;p&gt;So, now what the heck is an internal commit?&amp;nbsp;&amp;nbsp; The idea is to count on the single log buffer in this mainframe based system.&amp;nbsp;&amp;nbsp; If transaction-T1 is committed and its updates placed into the transaction log in memory (but not flushed to disk), and transaction-T2 comes along while the system is still running, T2 cannot commit unless T1 commits.&amp;nbsp;&amp;nbsp; T1 will commit if the system remains alive long enough to flush the transaction log to disk.&amp;nbsp; T2 is running on the same system and can only commit using the SAME log and assuming the system stays up long enough for T2 to get its changes written to the log on disk.&amp;nbsp;&amp;nbsp; If T2 succeeds in doing that, T1 most definitely will have committed!&amp;nbsp;&amp;nbsp; This is called a &lt;u&gt;&lt;em&gt;commit dependency&lt;/em&gt;&lt;/u&gt; --&amp;gt; T2 has a commit dependency on T1.&lt;/p&gt; &lt;p&gt;Leveraging these two concepts (the commit dependency and the fact you can't see any effects outside the system other than through a transaction commit), IMS-FastPath would play this cute trick. Say transaction-T1 modifies record-X and is on its way to committing.&amp;nbsp; Once the commit record is &lt;u&gt;&lt;em&gt;in the log buffer in memory&lt;/em&gt;&lt;/u&gt;, then Record-X could be unlocked.&amp;nbsp;&amp;nbsp; This would be heretical in most systems because a crash might cause the loss of the new value for Record-X (remember, transaction-T1 is &lt;u&gt;&lt;em&gt;not yet durable when it is unlocked&lt;/em&gt;&lt;/u&gt;).&amp;nbsp;&amp;nbsp; This worked without anomalies because of what I call the event horizon.&lt;/p&gt; &lt;p&gt;An &lt;strong&gt;&lt;u&gt;event horizon&lt;/u&gt;&lt;/strong&gt; (my terminology) refers to the ever increasing scope of knowledge and our ability to leverage knowledge with some assumptions about its propagation.&amp;nbsp; It is OK for transaction-T1's changes to record-X to be unlocked because &lt;u&gt;&lt;em&gt;no one can tell the difference&lt;/em&gt;&lt;/u&gt;!&amp;nbsp; If you see the new value for record-X, you fate is lashed to the success of transaction-T1.&amp;nbsp;&amp;nbsp; You have a commit dependency on transaction-T1 (either because of the design constraints defined above OR because transaction-T1 is actually committed and durable on disk).&lt;/p&gt; &lt;p&gt;So, for transaction-T2 which is looking at transaction-T1, it appears durable when the changes are in the buffer in main memory due to the event horizon effect.&amp;nbsp;&amp;nbsp; It's like that spy movie: "I could tell you but then I'd have to kill you..."&amp;nbsp;&amp;nbsp; The knowledge doesn't matter if all the impacts of its use are eliminated from the system.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Observation #3: Dialog Semantics and Visibility of Failures&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;I spent a couple of years working on a feature of SQL Server (shipped in &lt;a href="http://www.microsoft.com/sql/default.mspx"&gt;MS SQL Server 2005&lt;/a&gt;) called SQL Service Broker.&amp;nbsp; Service Broker defined a notion of a dialog which implements transactionally-consistent, exactly-once, in-order messaging between to "services" which are reified by their state in the database.&amp;nbsp; The notion of dialogs was that the messages would be delivered transactionally, exact-once, in-the-order-sent, within a timeout window OR a dialog-failure was delivered to the service.&amp;nbsp;&amp;nbsp; SQL Service Broker ONLY provides services whose state was represented in a SQL database and, hence, counted on the durability guarantees of SQL Server.&lt;/p&gt; &lt;p&gt;As you try to understand the semantics of message delivery guarantees, it is essential to think about WHO is being provided with the guarantee and what THEIR durability is.&amp;nbsp; The more we thought about this, the more it was clear that the dialog failed precisely when it LOOKED like it failed.&amp;nbsp; Consider Service-A in a dialog with Service-B.&amp;nbsp;&amp;nbsp; The dialog has a timeout.&amp;nbsp;&amp;nbsp; If Service-A cannot receive a message before the timeout, the Service Broker must give it a Dialog-Failure message.&amp;nbsp;&amp;nbsp; The guarantee of delivery of this message is null and void if Service-A is not around to receive the dialog failure...&lt;/p&gt; &lt;p&gt;While in Service Broker within MS SQ Server 2005 only fully durable services are supported, it is meaningful to support more permutations.&amp;nbsp; Consider Service-A and Service-B, each of which may be either durable or in-memory.&amp;nbsp;&amp;nbsp; The durable flavor means that receiving and/or sending a message occurs only when the change to the service happens on disk in the database (just like changing a record in SQL Server).&amp;nbsp; The in-memory flavor means that the state is just kept in memory, a system failure wipes out the state.&lt;/p&gt; &lt;p&gt;Consider four permutations:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Durable-Service-A has a dialog with Durable-Service-B.&amp;nbsp;&amp;nbsp; In this case, we don't have to worry about one end surviving and the other not [well... more discussion below].  &lt;li&gt;Durable-Service-A has a dialog with In-Memory-Service-B.&amp;nbsp;&amp;nbsp; Now, if Service-B crashes, the dialog will time-out, causing a dialog failure delivered to Service-A.&amp;nbsp; Service-A knows that the flaky In-Memory-Service-B hasn't communicated within the time-out window and it was do the appropriate thing based on the death on Service-B.  &lt;li&gt;In-Memory-Service-A has a dialog with Durable-Service-B.&amp;nbsp;&amp;nbsp; Symmetric with case 2 above...  &lt;li&gt;Both Service-A and Service-B are In-Memory and are connected with a dialog.&amp;nbsp;&amp;nbsp; Here, we have two interesting sub-cases.&amp;nbsp; First, if Service-A and Service-B are both in the same failure unit, a failure which wipes out BOTH of them has no end-point visible semantics.&amp;nbsp; Neither of them are around to see the damage!&amp;nbsp; Second, if one is on Computer-A and the other on Computer-B, it is entirely possible that one lives and one dies...&amp;nbsp; The time-out on the dialog provides the semantics of failure (and is delivered as a "dialog-failure" message transactionally delivered to the survivor(s) ).&amp;nbsp;&amp;nbsp; Indeed, the notion of transactionally delivering to an in-memory service is fascinating.&amp;nbsp;&amp;nbsp; Really, we mean delivered with a durability as great as the durability of the observer!&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Wow... so this leads us to an interesting observation.&amp;nbsp;&amp;nbsp; In case-1 (durable-to-durable), what if one of the two services is in a triple-data-center redundant high-availability site and the other is on a laptop?&amp;nbsp;&amp;nbsp; It is possible (actually easy) to lose the laptop and have the fact that it is durable on disk be irrelevant.&amp;nbsp; So, what are the semantics of the dialog?&amp;nbsp;&amp;nbsp; What you know is that the partner service (on the other side of the dialog) either responds in time or doesn't.&amp;nbsp; If the partner DOES respond and complete its part of the work (and finish the dialog), the partner may be blown to smithereens and you think you have done some cooperative work.&amp;nbsp; Yet, the partner (and its part of the work) are gone!&amp;nbsp;&amp;nbsp; In case-4 (both in-memory), also has the dilemma that you don't know ANYTHING about the partner except if has sent you the correct messages.&amp;nbsp;&amp;nbsp; Basically, the only thing you know in ALL the cases is if the partner responded in a timely fashion.&amp;nbsp; Once the work is completed, you have no REAL guarantee that it has stuck and won't be blown up.&lt;/p&gt; &lt;p&gt;During the dialog, you have a relationship that can detect the failure and amnesia via the time-out and dialog-failure.&amp;nbsp; After the dialog successfully completes, you are disconnected and cannot tell if the partner's state (and work) are lost in a failure.&amp;nbsp;&amp;nbsp; This is intractable and is really a spectrum of durability (from in-memory to "committed subject to thermo-nuclear exchange").&amp;nbsp; You have a programmatically visible relationship and then you don't!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Durability Is in the Eye of the Beholder&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;So, let's consider this proposition that "durability is in the eye of the beholder".&amp;nbsp; Who cares if a transaction is durable??&amp;nbsp; Remember, I am not (in &lt;u&gt;this&lt;/u&gt; blog entry) questioning Atomicity, Consistency, or Isolation.&amp;nbsp; If you see ANY effect of the transaction, you see ALL the effects of the transaction.&amp;nbsp;&amp;nbsp; Why did we have this D thing in ACID, anyway??&lt;/p&gt; &lt;p&gt;Well, it turns out the old-farts (including me) doing the old-time transaction systems just kinda' assumed a special case for interacting with the human.&amp;nbsp; We knew that we needed to tell the person using the system "OK... We did it!" but we didn't talk a lot about this being an example of a messaging relationship in which the human is one participant in a two-party messaging pattern.&amp;nbsp; Also, as I am about to discuss joint failure and the destruction of state at both ends of the messaging relationship, it is slightly uncomfortable to talk about the human being obliterated in the same way as I am about to discuss the annihilation of a communicating service.&amp;nbsp; I'm really nicer than that...&lt;/p&gt; &lt;p&gt;If we assume atomicity and/or a long-running relationship like a dialog, there is a window of time during which you can programmatically tell if the remote work is lost in a failure.&amp;nbsp;&amp;nbsp; Once you exit that window, your make assumptions about the remote work persisting (being durable) even when you are NOT keeping tabs on it.&amp;nbsp;&amp;nbsp; There are cases in which the loss of the remote work only occurs when YOU are wiped out... those are convenient because you aren't around to notice the problem.&amp;nbsp;&amp;nbsp; There are other cases in which we just ASSUME that the probability of loss of the remote work is low enough that we ignore the dilemma.&lt;/p&gt; &lt;p&gt;Basically, big, complex, and distributed system are big, complex, and distributed.&amp;nbsp; We can't get perfect behavior out of them.&amp;nbsp;&amp;nbsp; Something needs to be durable only if I, the partner, am still around to &lt;strong&gt;&lt;u&gt;notice&lt;/u&gt;&lt;/strong&gt; the need for it to durable!&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;- Pat&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6879905" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pathelland/archive/tags/Architectural/default.aspx">Architectural</category></item><item><title>"The Irresistible Forces Meet the Movable Objects" -- Closing General Session at TechEd EMEA in Barcelona</title><link>http://blogs.msdn.com/pathelland/archive/2007/11/25/the-irresistible-forces-meet-the-movable-objects-closing-general-session-at-teched-emea-in-barcelona.aspx</link><pubDate>Mon, 26 Nov 2007 03:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6523760</guid><dc:creator>PatHelland</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/pathelland/comments/6523760.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pathelland/commentrss.aspx?PostID=6523760</wfw:commentRss><description>&lt;P&gt;The big presentation for me at TechEd was the closing general session.&amp;nbsp;&amp;nbsp; I did an entirely new talk called "&lt;STRONG&gt;The Irresistible Forces Meet the Movable Objects&lt;/STRONG&gt;".&lt;/P&gt;
&lt;P&gt;This talk was a LOT of work and a LOT of fun!!!&amp;nbsp;&amp;nbsp; I had prepared a 30 minute version for the &lt;A href="http://www.hpts.ws/"&gt;HPTS workshop&lt;/A&gt; and enjoyed the practice that this gave me.&amp;nbsp;&amp;nbsp; The closing general session for TechEd (for an estimated 3000 people) was planned as a 75 minute talk with no questions.&amp;nbsp; That left a lot of material to develop to forge a full presentation.&amp;nbsp; Tracking down how to explain the reasons why processor frequencies are not increasing much (due to power constraints) took me some part time effort over the coarse of a week or ten days... Finally, I was happy with the two slide progression summarizing the drive towards many-core.&amp;nbsp; Content from Jim Gray, James Hamilton, Dave Patterson, Jan Gray, Dileep Bhandarkar, and Norm Jouppi helped tremendously as I tried to distill the forces bearing down on us in our development of software.&amp;nbsp; It seemed like the couple of weeks before the conference were hectic with me working late on talk content while working mostly on the new project during work hours.&amp;nbsp;&amp;nbsp; I gave a dry run to my team at Redmond a few days before getting on the plane and that helped a lot when there were a few points of confusion that needed some extra slides to clarify.&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;About 20 minutes into the talk I ran a 3 minute video which shows a vision of "Software and Services".&amp;nbsp;&amp;nbsp; In this video, a construction contractor named Mike uses multiple devices to access his work and his data as he moves from his home to his car to his worksite.&amp;nbsp; My favorite portion of the video shows his tablet-like PC being destroyed by accident and yet he seamlessly borrows someone else's device and gets at his data in the cloud.&lt;/P&gt;
&lt;P&gt;The abstract and video are attached...&amp;nbsp; It is SO great to be back presenting again!!!&amp;nbsp;&amp;nbsp; I want to thank the TechEd EMEA folks for trusting me with such a cool opportunity to present! &lt;/P&gt;
&lt;P&gt;--- Pat&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;ABSTRACT&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN id=ctl00_ContentBody_SessionSearch1_GridView1_ctl06_Label4&gt;There&amp;nbsp;are a vast array of economic forces being unleashed on our industry today that mean we need to change how we create applications. From many core processors, low end datacenters through to the rise of ‘Pervasive Intermittent Connectivity’ and the re-definition of the Client, this session provides a unique perspective of the changing landscape and asks the question... &lt;BR&gt;&lt;BR&gt;How we can create applications that are approachable to implementers, compose-able in their deployments, and responsive to these economic and technical forces bearing down on us? &lt;BR&gt;&lt;BR&gt;This talk is about a vision and not about any kind of product announcements...&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6523760" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/pathelland/attachment/6523760.ashx" length="3720647" type="application/vnd.openxmlformats-officedocument.pres" /><category domain="http://blogs.msdn.com/pathelland/archive/tags/Architectural/default.aspx">Architectural</category></item><item><title>Presentation of &amp;quot;Data on the Inside versus Data on the Outside&amp;quot; at TechEd EMEA at Barcelona</title><link>http://blogs.msdn.com/pathelland/archive/2007/11/25/presentation-of-data-on-the-inside-versus-data-on-the-outside-at-teched-emea-at-barcelona.aspx</link><pubDate>Mon, 26 Nov 2007 03:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6523646</guid><dc:creator>PatHelland</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pathelland/comments/6523646.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pathelland/commentrss.aspx?PostID=6523646</wfw:commentRss><description>&lt;P&gt;&lt;SPAN id=ctl00_ContentBody_SessionSearch1_GridView1_ctl05_Label4&gt;&amp;nbsp;On Wednesday, November 7th, I presented "&lt;STRONG&gt;Data on the Inside versus Data on the Outside&lt;/STRONG&gt;" at TechEd.&amp;nbsp; While this talk is now over two years old, it is still one of my favorites in spite of the fact that I have crammed too many slides into the session (80 slides into a 75 minute talk).&amp;nbsp;&amp;nbsp; It was a lot of work to finish on time but I think the content was clear and people seemed to like it.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I sure did miss presenting and had a blast at TechEd!!!&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;--- Pat&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;&lt;U&gt;ABSTRACT&lt;/U&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Recently, a lot of interest has been shown in SOA (Service Oriented Architectures). In these systems, there are multiple services each with its own code and data, and ability to operate independently of its partners. In particular, atomic transactions with two-phase commit do not occur across multiple services because this necessitates holding locks while another service decides the outcome of the transaction. This talk proposes there are a number of seminal differences between data inside a service and data sent into the space outside of the service boundary. The act of unlocking data as a copy of it is sent in the message means the interpretation of the received message must include the understanding that this data in unlocked. This changes how the data can be used. &lt;BR&gt;&lt;BR&gt;We then consider objects, SQL, and XML as different representations of data. Each of these models has strengths and weaknesses when applied to the inside and outside of the service boundary. The talk concludes that the strength of each of these models in one area is derived from essential characteristics underlying its weakness in the other area.&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6523646" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/pathelland/attachment/6523646.ashx" length="1331989" type="application/vnd.openxmlformats-officedocument.pres" /><category domain="http://blogs.msdn.com/pathelland/archive/tags/Architectural/default.aspx">Architectural</category></item><item><title>Presentation of "Life Beyond Distributed Transactions: an Apostate's Opinion" at TechEd EMEA at Barcelona.</title><link>http://blogs.msdn.com/pathelland/archive/2007/11/25/presentation-of-life-beyond-distributed-transactions-an-apostate-s-opinion-at-teched-emea-at-barcelona.aspx</link><pubDate>Mon, 26 Nov 2007 03:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6523469</guid><dc:creator>PatHelland</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pathelland/comments/6523469.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pathelland/commentrss.aspx?PostID=6523469</wfw:commentRss><description>&lt;P&gt;&lt;SPAN id=ctl00_ContentBody_SessionSearch1_GridView1_ctl04_Label4&gt;On Tuesday, November 6th, I presented&amp;nbsp;"&lt;STRONG&gt;Life Beyond Distributed Transactions: an Apostate's Opinion&lt;/STRONG&gt;" at TechEd EMEA&amp;nbsp;at Barcelona.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Unlike most of my presentations, this one had only 45 slides for a 75 minute session and so I went slower and we had time for some Q&amp;amp;A at the end.&amp;nbsp;&amp;nbsp; Perhaps, I should take a lesson from how enjoyable that was and not quite stuff a slide-per-minute everytime.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The abstract and slides are attached.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;&lt;U&gt;ABSTRACT&amp;nbsp;&lt;/U&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Many decades of work have been invested in the area of distributed transactions including protocols such as Two-Phase Commit, Paxos, and various approaches to quorum. These protocols provide the application programmer a façade of global serializability. Personally, I have invested a non-trivial portion of my career as a strong advocate for the implementation and use of platforms providing guarantees of global serializability. &lt;BR&gt;&lt;BR&gt;My experience over the last decade has led me to liken these platforms to the Maginot Line. [The Maginot Line was a huge fortress that ran the length of the Franco-German border and was constructed at great expense between World War I and World War II. It successfully kept the German army from directly crossing the border between France and Germany. It was quickly bypassed by the Germans in 1940 who invaded through Belgium. &lt;BR&gt;&lt;BR&gt;In general, application developers simply do not implement large scalable applications assuming distributed transactions. When they attempt to use distributed transactions, the projects founder because the performance costs and fragility make them impractical. Natural selection kicks in...Instead, applications are built using different techniques which do not provide the same transactional guarantees but still meet the needs of their businesses. &lt;BR&gt;&lt;BR&gt;This talk explores and names some of the practical approaches used in the implementations of large-scale mission-critical applications in a world which rejects distributed transactions. We discuss the management of fine-grained pieces of application data which may be repartitioned over time as the application grows. We also discuss the design patterns used in sending messages between these repartitionable pieces of data. The talk is intended to provoke a different way of thinking about the direction of applications in a wildly-scalable world.&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6523469" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/pathelland/attachment/6523469.ashx" length="1186366" type="application/vnd.openxmlformats-officedocument.pres" /><category domain="http://blogs.msdn.com/pathelland/archive/tags/Architectural/default.aspx">Architectural</category></item><item><title>Presentation of "Metropolis: Interchangeability of Operations" at TechEd EMEA in Barcelona</title><link>http://blogs.msdn.com/pathelland/archive/2007/11/25/presentation-of-metropolis-interchangeability-of-operations-at-teched-emea-in-barcelona.aspx</link><pubDate>Mon, 26 Nov 2007 02:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6523350</guid><dc:creator>PatHelland</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pathelland/comments/6523350.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pathelland/commentrss.aspx?PostID=6523350</wfw:commentRss><description>&lt;TABLE class="" width="97%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" style="FONT-WEIGHT: bold" vAlign=top align=left&gt;
&lt;P&gt;&lt;SPAN class=sessionTitle&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=speaker vAlign=top align=left class="speaker"&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top align=left&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;On Monday, November 5th, I presented a talk I had written before leaving Microsoft.&amp;nbsp; The first session ARC201 was entitled "&lt;STRONG&gt;Metropolis:Interchangeability of Operations&lt;/STRONG&gt;" and the abstract and powerpoint deck are attached.&amp;nbsp;&amp;nbsp; Three more talks coming!&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;It was a LOT of fun and I enjoyed the crowd immensely.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;- Pat&lt;/P&gt;
&lt;P&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;&lt;U&gt;ABSTRACT&lt;/U&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Through the 19th century, manufacturers invested in making machines to make the creation of machine parts faster and easier. In a separate effort largely by the armories producing small arms for the US War Department, significant investment was made to make parts so identical that they may be interchanged across two different guns. This work was surprisingly challenging over a forty year period. Simple machine tools created parts that were so inaccurate that they still required manual fitting and adjusting to make a working machine. It was only through the combination of machine tools and interchangeability that we arrived at the mass production techniques of manufacturing that have so changed our world. &lt;BR&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN&gt;If you consider the interaction of services as they send request for operational functions, we see the same challenges of interchangeability. Distrusting services won’t support classic distributed transactions and this necessitates the use of operational requests that may be subsequently canceled. For the service providing the functions, this is only practical to the extent that the tentative operations are interchangeable. Just as most people in the 19th century thought precision interchangeability of manufactured parts was a silly endeavor compared to fitting by highly skilled craftsmen, most programmers don’t recognize the importance of operations that are so equivalent that some may be canceled later without causing duress.&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;!-- Rooms and Times --&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6523350" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/pathelland/attachment/6523350.ashx" length="3182864" type="application/vnd.openxmlformats-officedocument.pres" /><category domain="http://blogs.msdn.com/pathelland/archive/tags/Architectural/default.aspx">Architectural</category></item><item><title>HPTS - High Performance Transaction Systems Workshop</title><link>http://blogs.msdn.com/pathelland/archive/2007/11/22/hpts-high-performance-transaction-systems-workshop.aspx</link><pubDate>Thu, 22 Nov 2007 12:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6468006</guid><dc:creator>PatHelland</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pathelland/comments/6468006.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pathelland/commentrss.aspx?PostID=6468006</wfw:commentRss><description>&lt;P&gt;Every two years since 1985, I have gone to the &lt;A href="http://www.visitasilomar.com/" mce_href="http://www.visitasilomar.com/"&gt;Asilomar Conference Center&lt;/A&gt; in Pacific Grove, California for a very special three day gathering.&amp;nbsp;&amp;nbsp; The &lt;A href="http://www.hpts.ws/" mce_href="http://www.hpts.ws/"&gt;HPTS Workshop&lt;/A&gt; was started by a number of old-time transaction processing folks including Dieter Gawlick, Andreas Reuter, and Jim Gray.&amp;nbsp;&amp;nbsp; In 1985, I was a wet behind the ears 29 year old kid who had been working at Tandem Computers for three years.&amp;nbsp;&amp;nbsp; My friend &lt;A href="http://research.microsoft.com/~Gray/" mce_href="http://research.microsoft.com/~Gray/"&gt;Jim Gray&lt;/A&gt; invited me to attend and this workshop has changed my life in very many ways.&lt;/P&gt;
&lt;P&gt;HPTS is an invitation-only gathering comprising the leading workers in the field of Transaction Processing systems.&amp;nbsp; These are primarily the implementers of large scale systems in industry with the occasional academic thrown into the mix.&amp;nbsp; Sometimes, the owners of large applications are invited.&amp;nbsp; Back in the 1980s, the big challenge was to take a huge mainframe and accomplish 1000 transactions per second.&amp;nbsp;&amp;nbsp; Through the years, this evolved into distributed systems, the Internet, large scale web solutions, high availability, workflow, and service oriented architectures.&amp;nbsp;&amp;nbsp; Basically, the workshop focuses on how to get huge amounts of work done flowing through computer systems and all the different aspects of making this happen.&amp;nbsp;&amp;nbsp; The companies involved has changed through the years starting out beginning with IBM, Tandem, and Amdahl dominating the event.&amp;nbsp; This evolved to include DEC and then Microsoft.&amp;nbsp;&amp;nbsp; In the late 1990s, the web companies, Amazon, eBay, and others started to be represented.&amp;nbsp;&amp;nbsp; I was privileged to be chairman of the conference in 1989 and this last year, I was general chairman and was a major contributor to driving the agenda.&amp;nbsp;&amp;nbsp; The workshop ran from October 7th through 10th and, in addition to the work in .NET starting a new project, this kept me VERY busy in July, August, and September.&lt;/P&gt;
&lt;P&gt;This workshop is VERY special to me.&amp;nbsp; All of my job changes since the 1980s and many of the interesting connections I have made in the industry have been from this workshop.&amp;nbsp; The spark behind HPTS has always been my friend and mentor, Jim Gray.&amp;nbsp;&amp;nbsp; I have attended every one of the 12 workshops.&amp;nbsp;&amp;nbsp; By waiting for two years between them, it is always a shock to see how much the industry has changed.&amp;nbsp;&amp;nbsp; It is always an invigorating and rejuvenating process for me.&amp;nbsp;&amp;nbsp; The &lt;A href="http://www.wired.com/techbiz/people/magazine/15-08/ff_jimgray" mce_href="http://www.wired.com/techbiz/people/magazine/15-08/ff_jimgray"&gt;disappearance of Jim at sea last January&lt;/A&gt; made this gathering especially poignant for so many of us who consider Jim a dear friend.&lt;/P&gt;
&lt;P&gt;The HPTS workshop has left a broad impact on the industry and on me.&amp;nbsp; It was the progenitor of an internal Microsoft event called WHIPS (which I helped start) and, in turn, at least three other internal Microsoft events.&amp;nbsp; I used it when at Amazon as a foundation for an Amazon internal conference.&amp;nbsp;&amp;nbsp; The database community used HPTS as a basis for the &lt;A href="http://www-db.cs.wisc.edu/cidr/cidr2007/index.html" mce_href="http://www-db.cs.wisc.edu/cidr/cidr2007/index.html"&gt;CIDR (Conference on Innovative Database Research)&lt;/A&gt; which meets every two years at the same venue, Asilomar in January of the odd-numbered years.&amp;nbsp;&amp;nbsp; Indeed, it was at CIDR hanging out with Jim just three weeks before his disappearance that I really became determined to return to the public eye and to Microsoft.&amp;nbsp; Again, my life directly impacted by HPTS and the wake it has left.&lt;/P&gt;
&lt;P&gt;The event always runs from Sunday dinner through Wednesday lunch.&amp;nbsp; We had a number of sessions on scalable platforms, service-based application platforms, and operational issues with wildly scalable environments.&amp;nbsp;&amp;nbsp; Tuesday, we shifted into database challenges, Rich Internet Applications (RIAs), and some miscellaneous fun talks like SecondLife, Erlang, and Millecomputing.&amp;nbsp;&amp;nbsp; Wednesday, we heard about the implications of Many-Core computers on our software platforms and wrapped up with some sessions on Service Oriented Architectures.&amp;nbsp;&amp;nbsp; I gave a shortened first try of my planned talk for TechEd Barcelona due on November 9th (I've given it by the time I'm blogging this but I will explain more about that in a subsequent blog -- trying to catch up on what's happened!).&lt;/P&gt;
&lt;P&gt;Traditionally, on Monday nights we have poster sessions with 10 minute talks on whatever the speaker wants to cover.&amp;nbsp;&amp;nbsp; As usual, I tried to make mine silly and fun.&amp;nbsp; Normally, Tuesday evening is dedicated to some raucous entertainment (with our colleagues providing the fun) but this year was different.&amp;nbsp; We decided to hold a Tribute to Jim Gray and I had the responsibility and honor of hosting that event.&amp;nbsp;&amp;nbsp; This was a special honor and I have written an entire blog entry on the &lt;A href="http://blogs.msdn.com/pathelland/archive/2007/11/22/tribute-to-jim-gray-at-hpts.aspx" mce_href="http://blogs.msdn.com/pathelland/archive/2007/11/22/tribute-to-jim-gray-at-hpts.aspx"&gt;Tribute to Jim Gray at HPTS&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Jim has always taken the job of Local Arrangements Chair and "Nagging Conscience" for HPTS.&amp;nbsp;&amp;nbsp; We missed his support this year a LOT and, indeed, it was a learning experience for me (helped by my friend Shel Finkelstein now of SAP and Peter Gassner of Verticals on Demand) as we pushed forward to ensure the continuity of this important gathering.&amp;nbsp; At the end of the gathering, my friends gave me the honor of attempting to follow in Jim's footsteps and assume this role.&amp;nbsp;&amp;nbsp; For the 2009 HPTS workshop, we have James Hamilton as General Chairman and Margo Seltzer of Harvard and Oracle as the Program Chair.&amp;nbsp;&amp;nbsp; This is assigned to a new pair of people each event but the Local Arrangements has been maintained by Jim and now that will be my responsibility.&lt;/P&gt;
&lt;P&gt;The buildup to HPTS was a TON of work, especially while maintaining a day job starting up a project in .NET.&amp;nbsp;&amp;nbsp; This has been the reason I have not been blogging as much over the summer.&amp;nbsp;&amp;nbsp; The event was, in my opinion, very successful and very rewarding.&amp;nbsp;&amp;nbsp; I miss my friend and mentor, Jim, and am committed to continuing this workshop that he has always loved so much and that I love so much.&lt;/P&gt;
&lt;P&gt;-- Pat&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6468006" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/pathelland/attachment/6468006.ashx" length="626075" type="application/pdf" /><category domain="http://blogs.msdn.com/pathelland/archive/tags/Architectural/default.aspx">Architectural</category></item><item><title>Every Noun Can Be Verbed...</title><link>http://blogs.msdn.com/pathelland/archive/2007/06/12/every-noun-can-be-verbed.aspx</link><pubDate>Wed, 13 Jun 2007 04:33:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3259757</guid><dc:creator>PatHelland</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/pathelland/comments/3259757.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pathelland/commentrss.aspx?PostID=3259757</wfw:commentRss><description>&lt;P&gt;As I watch the REST versus non-REST discussion, it occurs to me that there are a number of aspects to the debate.&amp;nbsp; While I am not attempting to address all of these aspects,&amp;nbsp;I think&amp;nbsp;that part of the discussion revolves around DATA versus BEHAVIOR.&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;When people talk about CRUD (Create, Read, Update, and Delete) interfaces, on the surface, they are manipulating data.&amp;nbsp; Sometimes, this implicitly causes behavior.&amp;nbsp; This is a long-standing pattern that I certainly know has gone on for decades... &lt;/P&gt;
&lt;P&gt;So, let's apply some nomenclature:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;U&gt;Nouns&lt;/U&gt;:&amp;nbsp; These are data items which get manipulated via CRUD (or equivalent) interfaces. 
&lt;LI&gt;&lt;U&gt;Verbs&lt;/U&gt;:&amp;nbsp; This is behavior which is implemented with a method call or some equivalent.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Now, of course, method calls get marshaled...&amp;nbsp; Hmm...&amp;nbsp; Is the marshaled method call a noun or&amp;nbsp;a verb?&lt;/P&gt;
&lt;P&gt;OK, let's speak about the programmatic abstraction visible to the caller... Is it a method call or is it a CRUD operation?&amp;nbsp; What about the methods "Set" and "Get"?&amp;nbsp;&amp;nbsp; Those are obviously method calls.&amp;nbsp; But their soul is to set and get property values and, hence, are really pretty CRUDdy!&amp;nbsp; Gee, verbs can be nouned!&amp;nbsp; &lt;/P&gt;
&lt;P&gt;But let's look at verbing the nouns (rather than nouning the verbs).&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Example-1 of Verbing a Noun: the Multi-Master Behavior-Turd&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;A common pattern I have seen when using multi-master database replication across occasionally connected systems is a hub-and-spoke model.&amp;nbsp;&amp;nbsp; The spoke systems will write a record in the database with a unique key (typically based on the spoke's system identity to ensure uniqueness).&amp;nbsp; The semantic meaning of this little record (the "behavior-turd") is a request to perform work at the hub and ship down the answer in the replicated database.&lt;/P&gt;
&lt;P&gt;The&amp;nbsp;behavior-turd&amp;nbsp;remains in the offline database until the system can reconnect.&amp;nbsp; When the systems connect, the behavior-turd is replicated to the hub which fires a trigger.&amp;nbsp; Work is done on the hub and the results of this work replicate their way back to the spoke (and all of the other spokes, too).&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Important to this approach is the separation of the location in the database for the behavior-turds (basically the messaging mechanism) from the other data updated by the hub and read by the spokes.&amp;nbsp;&amp;nbsp; So the behavior-turds are nouns which act as verbs.&amp;nbsp; Definitely a case of verbing a noun.&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Example-2 of Verbing a Noun: CRUDing on the Purchase-Order&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;So, let's consider a purchase-order data structure.&amp;nbsp;&amp;nbsp; As the purchaser (or software representing the purchaser) adds line-items to the purchase-order, that will cause behavior in the back-end system.&amp;nbsp;&amp;nbsp; Is the purchase-order (or even the line-item) a noun or a verb?&amp;nbsp; I would argue is it syntactically a noun but semantically a verb.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/pathelland/WindowsLiveWriter/EveryNounCanBeVerbed_82AD/image.png" mce_href="http://blogs.msdn.com/blogfiles/pathelland/WindowsLiveWriter/EveryNounCanBeVerbed_82AD/image.png" atomicselection="true"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=301 alt=image src="http://blogs.msdn.com/blogfiles/pathelland/WindowsLiveWriter/EveryNounCanBeVerbed_82AD/image_thumb.png" width=829 border=0 mce_src="http://blogs.msdn.com/blogfiles/pathelland/WindowsLiveWriter/EveryNounCanBeVerbed_82AD/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;This happens ALL the time.&amp;nbsp; A form is filled out and that implies work to do...&amp;nbsp; Seems like behavior to me even if the localized action of the invoker is to manipulate some data!&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Private (and Encapsulated) Data versus Public (Interfacey) Data&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;It is important to look at the purpose and use of the "data".&amp;nbsp;&amp;nbsp; When we abstract all data as being equivalent, we miss out on a lot of underlying complexity.&amp;nbsp;&amp;nbsp; The internal inventory balance (which may change every few seconds) is certainly not updatable by outside services.&amp;nbsp;&amp;nbsp; We can't assume that CRUD across boundaries carries the evil of CRUD (at a distance) over internal (i.e. private and encapsulated) data.&lt;/P&gt;
&lt;P&gt;It has always been my inclination to model the encapsulated behavior as, well, behavior.&amp;nbsp; There's a lot of evidence of successful applications that model the invocation of their behavior as CRUDdy manipulation of some externally updatable data.&amp;nbsp;&amp;nbsp; This is just the same as paper forms in the (before computers) normal business models.&amp;nbsp; Fill out the piece of paper and hand it to the person behind the desk.&amp;nbsp; Filling out the piece of paper is a CRUD operation on the data of the paper.&amp;nbsp; Handing over the piece of paper causes the semantic invocation of some behavior provided by the business.&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Natural Selection and Usage of Primitives&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;There seems to be a gravitation towards simple primitives even if the usage of these simple primitives creates a lot of complexity over time.&amp;nbsp; OK... I can dig that.&amp;nbsp; Back in the mid-90s, I was heavily arguing for early binding (as manifested in COM).&amp;nbsp; The use of early binding drove crisp and clear semantics; goodness, light, and moral rectitude.&amp;nbsp;&amp;nbsp; IDispatch was clearly too fuzzy in its semantics for grown ups...&lt;/P&gt;
&lt;P&gt;Well...&amp;nbsp; I admit I was wrong!&amp;nbsp; The ability to use late binding and tooling to adaptively "do the right thing" dominated the lack of crispness in the semantics.&amp;nbsp; Indeed, the crispness wasn't really crispness but it was brittleness.&amp;nbsp; People LIKED the late binding of IDispatch and made it work.&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;So, in my new state of late-life Zen, I'm not about to fuss about the use of NOUNS rather than VERBS...&amp;nbsp; Just make sure you interpret the durn' things with the correct semantics and I'll loosen up over the syntax of your invocation.&lt;/P&gt;
&lt;P&gt;In fact, I'll go so far as to say that the usage of data (NOUNS) to invoke distant behavior (VERBS) might just be a dandy thing.&amp;nbsp; It may be easier to do transformations, filtering, and other mashup-esque whacking on the intended behavior.&lt;/P&gt;
&lt;P&gt;It occurs to me that we are seeing both:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The natural selection of mechanisms used to knit together our services (or apps or systems), AND &lt;/LI&gt;
&lt;LI&gt;The natural selection of the implementers who either:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;adapt to the new world order with its rampant flexibility and composability, OR&lt;/LI&gt;
&lt;LI&gt;retreat into a self-consistent and increasingly irrelevant view of the world.&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P&gt;In both cases, the forces of natural selection are driving towards malleability and "making it work" (even if the answer is approximate).&amp;nbsp; This parallels the loosening of consistency I &lt;A href="http://blogs.msdn.com/pathelland/archive/2007/05/20/soa-and-newton-s-universe.aspx" mce_href="http://blogs.msdn.com/pathelland/archive/2007/05/20/soa-and-newton-s-universe.aspx"&gt;pointed out when discussing the CAP-conjecture&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;It's a great time to be alive!&amp;nbsp; I can't WAIT to see what else I am completely wrong about...&lt;/P&gt;
&lt;P&gt;-- Pat&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3259757" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pathelland/archive/tags/Architectural/default.aspx">Architectural</category></item><item><title>SOA and Newton's Universe</title><link>http://blogs.msdn.com/pathelland/archive/2007/05/20/soa-and-newton-s-universe.aspx</link><pubDate>Sun, 20 May 2007 17:42:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2751524</guid><dc:creator>PatHelland</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/pathelland/comments/2751524.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pathelland/commentrss.aspx?PostID=2751524</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://www.dehora.net/journal/"&gt;Bill de hOra&lt;/a&gt;&amp;nbsp;and my old friend (from our Amazon days)&amp;nbsp;&lt;a href="http://korrespondence.blogspot.com/"&gt;Mike Dierken&lt;/a&gt;&amp;nbsp; &lt;a href="http://www.dehora.net/journal/2007/05/time_passes.html"&gt;commented&lt;/a&gt;&amp;nbsp; on my use of SOA versus "distributed systems".&amp;nbsp; There was also an interest in my perspective on the &lt;a href="http://citeseer.ist.psu.edu/544596.html"&gt;CAP Conjecture&lt;/a&gt;.&amp;nbsp;&amp;nbsp; Let me spew forth some thoughts...&lt;/p&gt; &lt;p&gt;It may be a bit unusual, but my way of thinking of "distributed systems" was the 30+ year (and still continuing) effort to make many systems look like one. Distributed transactions, quorum algorithms, RPC, synchronous request-response, tightly-coupled schema, and similar efforts all try to mask the existence of independence from the application developer and from the user.&amp;nbsp; In other words, make it look to the application like many systems are one system.&amp;nbsp; While I have invested a significant portion of my career working in this effort, I have repented and believe that we are evolving away from this approach.&lt;/p&gt; &lt;p&gt;I wrote a paper for &lt;a href="http://www-db.cs.wisc.edu/cidr/cidr2005/index.html"&gt;CIDR 2005&lt;/a&gt;&amp;nbsp;called "Data on the Outside versus Data on the Inside".&amp;nbsp; In that paper, I explore the difference in the semantics of data when it is unlocked.&amp;nbsp; Inside of a database, the meaning of the data can be interpreted with a clear and crisp sense of "now" provided by the current transaction.&amp;nbsp; Nothing moves when you are in a transaction unless the currently running application that began the transaction changes the data.&amp;nbsp;&amp;nbsp; There is a strong sense of stillness and of now.&amp;nbsp; Inside data is very much what we have historically programmed to.&lt;/p&gt; &lt;p&gt;In "distributed computing" (in my unusual usage... not in the commonly accepted vernacular), we are trying to extend this notion across multiple machine.&lt;/p&gt; &lt;p&gt;In SOA (again, how I think of it), we are acknowledging the existence of independent machines.&amp;nbsp; This affects the transactional scope (we end up with different chunks of data which cannot be updated by the same transaction) and we end up with independently evolving schema and operations for the different systems.&amp;nbsp; This is a seminally different concept than distributed systems (at least in the way I think of them).&lt;/p&gt; &lt;p&gt;If you try to impose a global ordering to the transactions across a LOT of systems, it is very much like the way Newton thought of the Universe with time marching forward uniformly everywhere.&amp;nbsp; This is why I say that "distributed systems" are like Newton's Universe.&lt;/p&gt; &lt;p&gt;Now, let's consider SOA with independent scopes of serializability (i.e. the collection of computers has some different groups of data which are independent in their transactions... you cannot do a transaction across these different chunks of data).&amp;nbsp; These are broken into independent systems (typically independent applications) which encapsulate their own data and communicate via messaging.&amp;nbsp; When System-A sends a message to System-B, the data contained in the message will be unlocked before sending it.&amp;nbsp;&amp;nbsp; That means that the data is a historic artifact.&amp;nbsp; System-B can only see what some of System-A's data &lt;u&gt;&lt;em&gt;used to look like&lt;/em&gt;&lt;/u&gt;.&amp;nbsp;&amp;nbsp; This is an essential aspect of these independent systems which do not share transactions.&amp;nbsp;&amp;nbsp; Because of this, I think of each system living in its on temporal domain.&amp;nbsp; It is aware of its internal state and is aware of a subset of its partner's older state.&amp;nbsp; This is just like looking into the night sky and seeing light from neighboring stars emitted years earlier.&amp;nbsp; Each of these systems lives in its own time and has an independent view of time.&amp;nbsp; To me this is like Einstein's Universe where time marches forward &lt;u&gt;&lt;em&gt;based on the perspective of the viewer&lt;/em&gt;&lt;/u&gt;.&lt;/p&gt; &lt;p&gt;So, the move from distributed systems (one transactional scope --&amp;gt; one notion of time) to SOA (independent transactional scopes --&amp;gt; time based on the perspective of the user) is like moving from Newton's Universe to Einstein's Universe.&lt;/p&gt; &lt;p&gt;-----&amp;gt; Now, let's rant for a while about the CAP Conjecture...&lt;/p&gt; &lt;p&gt;First, let's summarize what Eric Brewer said in 2000 in an invited keynote at the Principals of Distributed Computing.&amp;nbsp; While I am not super familiar with all the literature on this, I believe I understand it well enough to spew forth.&amp;nbsp; Eric said that if you consider CAP - Consistency, Availability, and Partition-tolerance, he offered a conjecture that it is impossible to achieve all three.&amp;nbsp;&amp;nbsp; I totally believe in this conjecture but want to offer some twists in how to think about it.&lt;/p&gt; &lt;p&gt;First, I noticed a long time ago that there is an intrinsic conflict between consistency and availability in the face of partitions.&amp;nbsp; This has led to me growing to increasingly dislike distributed transactions (see &lt;a href="http://www-db.cs.wisc.edu/cidr/cidr2007/papers/cidr07p15.pdf"&gt;"Life Beyond Distributed Transactions: an Apostate's Opinion"&lt;/a&gt;).&amp;nbsp; The two-phase commit protocol (which I've spent big portions of my career working on) will ensure perfect consistency given infinite time.&amp;nbsp; I say that because it will wait and wait and wait until the transaction is resolved and then provide perfect consistency.&amp;nbsp;&amp;nbsp; Of course, while partitioned and waiting, arbitrary swaths of the application's database may be locked up rendering the application unusable.&amp;nbsp; For this reason, I've frequently referred to the two phase commit protocol as the "Anti-Availability Protocol".&amp;nbsp; It is increasingly clear to me that this protocol is best used sparingly.&lt;/p&gt; &lt;p&gt;What I think is interesting is how real world applications modify the definition of Consistency and Availability to provide Partition-tolerance.&amp;nbsp;&amp;nbsp; Note that my observations about this &lt;u&gt;do not&lt;/u&gt; invalidate the CAP conjecture (which I think is correct) but show how the pain is dramatically reduced by loosing up some age-old assumptions about distributed systems.&lt;/p&gt; &lt;p&gt;Classic database/transaction approaches to Consistency choose to emphasize read-write semantics.&amp;nbsp; To preserve Read-Write-Consistency, you lock the data.&amp;nbsp; We've been at this for over 30 years.&amp;nbsp; What I see happening in loosely-coupled systems is identical to how businesses operated 150-200 years ago when messages were sent with couriers running across the city between businesses.&amp;nbsp; You allocated (i.e. reserved) the ability to perform an operation and then later on you would take the confirming step to ensure the completion of the work.&amp;nbsp; Today, you make a reservation at a hotel and then later on you show up to complete the operation.&amp;nbsp; What is the definition of consistency in this world?&amp;nbsp; It is the successful remembering of the reservation and then keeping a room for you.&amp;nbsp; The reserved room count is &lt;u&gt;&lt;em&gt;not locked&lt;/em&gt;&lt;/u&gt; waiting for you to decide if you want the reservation, waiting for you to cancel, nor while waiting to see if you show up.&amp;nbsp; The definition of consistency evolves to one that is explicitly including independence and loose-coupling. &lt;/p&gt; &lt;p&gt;A really good paper on this concept is: &lt;a href="http://www-db.cs.wisc.edu/cidr/cidr2007/papers/cidr07p36.pdf"&gt;Isolation Support for Service-based Applications&lt;/a&gt;.&amp;nbsp;&amp;nbsp; In this paper, Paul Greenfield et al argue that predicates are the best expression of the isolation required while performing long-running work that spans loosely-coupled (SOA) systems.&amp;nbsp; For example,&amp;nbsp;my work may&amp;nbsp;allocate $200 from your bank account because it is supposed to be mine if the cooperative work we are doing commits.&amp;nbsp; Your bank account balance does not get locked, just $200 of it is encumbered pending the outcome of our cooperative work.&lt;/p&gt; &lt;p&gt;This bends the definition of both Consistency and Availability.&amp;nbsp;&amp;nbsp; Usually, they are considered as providing Read-Write semantics and so they are implemented with locking.&amp;nbsp; If you provide operation semantics, this just changes the form of locking and changes the form of consistency and isolation.&amp;nbsp; I first saw this from Pat O'Neil in &lt;a href="http://portal.acm.org/citation.cfm?doid=7239.7265"&gt;The Escrow Transaction Method&lt;/a&gt;&amp;nbsp;published in 1986.&amp;nbsp; In this paper, Pat observes that the use of operations, and operation-logging can increase concurrency.&amp;nbsp; At Tandem, we did this in the late 1980s to allow addition and subtraction to have special behavior to improve our TPC-B benchmark numbers.&amp;nbsp; What we did was detect when a SQL operation was an addition or subtraction to a field of a record.&amp;nbsp; We would log a "+30" or "-50" as the operation in the transaction's log.&amp;nbsp; We would also keep a worst-case lower-bound and a worst-case upper-bound for the field's value based on it's committed value combined with the pending (not yet committed nor aborted) transactions.&amp;nbsp; We would manage that the field would remain within the accepted bounds.&amp;nbsp;&amp;nbsp; If you performed a "+30" and then later on aborted the transaction, the act of aborting the operation would subtract 30.&amp;nbsp;&amp;nbsp; In this way, all the transactions would correctly perform their operations but we could run MANY transactions concurrently against a very hot-spot value.&amp;nbsp; Of course, an attempt to read the value would shut everything down, wait for the pending transactions to settle, show the underlying result, and then let the chaos resume.&amp;nbsp; This was a very successful technique for coping with highly-concurrent &lt;u&gt;&lt;em&gt;commutative&lt;/em&gt;&lt;/u&gt; operations (in this case addition and subtraction) against a hot-spot value.&lt;/p&gt; &lt;p&gt;Nowadays, we see this same technique applied at a different granularity.&amp;nbsp; If you move&amp;nbsp;away from thinking about locking data at distance and move towards ensuring the ability to perform a reserved operation, you think about this differently.&amp;nbsp; This is why you can reserve a king-sized non-smoking room but not (typically) reserve room 301.&amp;nbsp; What is being promised is a member of a fungible category of rooms.&amp;nbsp; It is a different promise of consistency.&lt;/p&gt; &lt;p&gt;My recent post &lt;a href="http://blogs.msdn.com/pathelland/archive/2007/05/15/memories-guesses-and-apologies.aspx"&gt;"Memories, Guesses, and Apologies"&lt;/a&gt;&amp;nbsp;plays off of what I see happening in an increasing fashion.&amp;nbsp; More and more, I see businesses being willing to loosen Consistency even more than what I was describing above.&amp;nbsp; They are willing to occasionally give the wrong answer because it is more cost-effective.&lt;/p&gt; &lt;p&gt;In the presence of imperfect availability of knowledge, a business is forced to choose between closing down service (reducing availability of the service), over-booking, or over-provisioning.&amp;nbsp; Indeed, if multiple systems (or humans) are extending commitments independently, they &lt;u&gt;&lt;em&gt;must&lt;/em&gt;&lt;/u&gt; choose between over-booking, over-provisioning, or some unknown balance between them.&amp;nbsp;&amp;nbsp; If I have 10,000 widgets to sell and 100 salespeople, I could allocate 100 to each sales-person and &lt;u&gt;know&lt;/u&gt; that I have not over-booked if they go out and independently sell the widgets.&amp;nbsp; To do this, though, I am almost certain to need extra inventory for the sales-people that don't sell all 100 of their widgets.&amp;nbsp; Indeed, for most businesses, this is a ridiculously expensive proposition.&amp;nbsp; So, an analysis is done on the statistics, a cost of over-booking is calculated, and allocations are given based on the expectations of selling the 100,000 widgets.&amp;nbsp; The loosely-coupled algorithm explicitly allows for a probability of over-booking based on its cost-benefit.&amp;nbsp; This is a relaxation of the definition of Consistency to cope with the realities of the CAP Conjecture.&lt;/p&gt; &lt;p&gt;It is essential to approach computing as a means to support business, not a religious fervor.&amp;nbsp; I don't think that it is "wrong" to relax consistency, I think it is important to understand the business trade-offs and apply the technology realities to support the business effectively.&lt;/p&gt; &lt;p&gt;- Pat&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2751524" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pathelland/archive/tags/Architectural/default.aspx">Architectural</category></item><item><title>Link to &amp;quot;Life Beyond Distributed Transactions: an Apostate's Opinion</title><link>http://blogs.msdn.com/pathelland/archive/2007/05/16/link-to-life-beyond-distributed-transactions-an-apostate-s-opinion.aspx</link><pubDate>Wed, 16 May 2007 20:35:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2677108</guid><dc:creator>PatHelland</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/pathelland/comments/2677108.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pathelland/commentrss.aspx?PostID=2677108</wfw:commentRss><description>&lt;p&gt;My friend &lt;a href="http://devhawk.net/"&gt;Harry Pierson&lt;/a&gt;&amp;nbsp;points out that I am blogging-challenged and didn't include the links to my paper and talk.&lt;/p&gt; &lt;p&gt;This &lt;a href="http://www-db.cs.wisc.edu/cidr/cidr2007/slides/p15-helland.ppt"&gt;talk&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="http://www-db.cs.wisc.edu/cidr/cidr2007/papers/cidr07p15.pdf"&gt;paper&lt;/a&gt; were given at&amp;nbsp;CIDR (Conference on Innovative Database Research) on Jan 8th, 2007.&lt;/p&gt; &lt;p&gt;Thanks, Harry!&lt;/p&gt; &lt;p&gt;- Pat&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2677108" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pathelland/archive/tags/Architectural/default.aspx">Architectural</category></item><item><title>Memories, Guesses, and Apologies</title><link>http://blogs.msdn.com/pathelland/archive/2007/05/15/memories-guesses-and-apologies.aspx</link><pubDate>Wed, 16 May 2007 03:56:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2660737</guid><dc:creator>PatHelland</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/pathelland/comments/2660737.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pathelland/commentrss.aspx?PostID=2660737</wfw:commentRss><description>&lt;p&gt;Well, here I am blogging on the bus with my newly installed Windows Live Writer!!!&lt;/p&gt; &lt;p&gt;This blog is a text version of a five minute "Gong Show" presentation I did at CIDR (Conference on Innovative Database Research) on Jan 8,2007.&lt;/p&gt; &lt;p&gt;All computing can be considered as: "Memories, Guesses, and Apologies".&amp;nbsp; This is a personal opinion about how computers suck.&amp;nbsp; Furthermore, it offers additional opinions about how we can take advantage of their sucki-ness. Lets dig into this...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Newton and Einstein&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;It used to be that we thought of computing as one big-ass mainframe.&amp;nbsp; The database folks only thought about &lt;u&gt;the&lt;/u&gt; database.&amp;nbsp; Transactions (and transactional serializability) offered a crisp and clear perspective of how time marches forward uniformly.&amp;nbsp; When working on transaction T(i), any other transaction T(j) can be perceived as occurring before T(i) or&amp;nbsp;after T(i).&amp;nbsp;&amp;nbsp; If T(i) and T(j) are concurrently processed, the transaction system ensures that either order is correct without modifying the semantics.&amp;nbsp; This offers a crisp and clear perspective of &lt;u&gt;now&lt;/u&gt;.&amp;nbsp; Time marches forward like a clock exactly as Newton envisaged his universe.&lt;/p&gt; &lt;p&gt;Nowadays, we have lots and lots of computers.&amp;nbsp; Big ones, small ones, connected, disconnected, occasionally connected, etc.&amp;nbsp;&amp;nbsp; These computers &lt;u&gt;each&lt;/u&gt; have their own perspective of time.&amp;nbsp; When you see data, it is unlocked and an artifact of the past.&amp;nbsp; &lt;u&gt;&lt;em&gt;Time is subjective&lt;/em&gt;&lt;/u&gt; with many different notions of &lt;u&gt;now&lt;/u&gt;.&amp;nbsp; This is very much the way Einstein revamped our understanding of the universe.&lt;/p&gt; &lt;p&gt;Moving to SOA is like moving from Newton's Universe to Einstein's Universe.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Inventory and Forklifts&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Even is your computer system is perfectly accurate, the data contained withe in it may be incorrect.&amp;nbsp; Data is entered by people and/or sensors.&amp;nbsp;&amp;nbsp; You have the challenge of garbage-in-garbage-out.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Based on the knowledge contained with the computer, decisions are made.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#804040"&gt;"Jim wants to buy a widget."&lt;br&gt;"Hey, we have one in the warehouse in New York!"&lt;br&gt;"Ship it to Jim, should be there on Tuesday!"&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Now this is just great... Then the forklift runs over the only widget you have in stock and you won't get any more widgets for a month!&lt;/p&gt; &lt;p&gt;Even if the computer is perfect, it is disconnected from the real world!!!&amp;nbsp; Decisions made by the computer may not be possible to implement!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Guessing and Partial Knowledge&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Computers always have partial knowledge for a couple of reasons.&amp;nbsp; First, they &lt;u&gt;will&lt;/u&gt; always be separated from the real world.&amp;nbsp; Stuff that happens in the real world will, at best, be reflected after the fact in the computer system.&amp;nbsp;&amp;nbsp; Second, a computer system &lt;u&gt;may&lt;/u&gt; have other replicas from which it is separated.&amp;nbsp;&amp;nbsp; A computer's knowledge of the world will be partial.&lt;/p&gt; &lt;p&gt;Computers do not make decisions... They &lt;u&gt;try&lt;/u&gt; to make decisions.&lt;/p&gt; &lt;p&gt;The best a computer can do is make a guess.&amp;nbsp; It might be a good guess.&amp;nbsp; It might be a bad guess.&amp;nbsp; Either way, there is no certainty, only guesses.&lt;/p&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;&lt;strong&gt;&lt;u&gt;Memories and Sharing&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;It is really nice to remember your guesses...&amp;nbsp; It makes it easier when you guessed correctly.&amp;nbsp;&amp;nbsp; It makes it easier to clean up the mess when you've guessed wrong.&amp;nbsp; Usually, computers remember what they've guessed.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;Furthermore, it is nice to share with other replicas.&amp;nbsp; You get all the coolness of replicas,disaster protection, etc.&amp;nbsp; Replication definitely helps with memories.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;Increased fidelity of memories implies increased cost!&amp;nbsp; The more money you spend on mirroring, replicas, disaster backup, and so forth, the better your memory.&amp;nbsp; The more you spend on increased latencies while you ensure the replicas are in sync before proceeding, the more you reduce the chance of forgetfulness.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;It is a business decision how much money, latency, and energy should be spent on reducing forgetfulness.&amp;nbsp; To make this decision, the costs of the increased probability of remembering should be weighed against the costs of occasionally forgetting stuff.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;&lt;strong&gt;&lt;u&gt;Screw-Ups and Apologies&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;Consider the following slide from this mini-presentation:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/pathelland/WindowsLiveWriter/MemoriesGuessesandApologies_8C85/Apologies_3.jpg" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="359" alt="Apologies" src="http://blogs.msdn.com/blogfiles/pathelland/WindowsLiveWriter/MemoriesGuessesandApologies_8C85/Apologies_thumb_3.jpg" width="640" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;#1 - The application has only a single replica and makes a "decision" to ship the widget on Wednesday.&amp;nbsp; This "decision" is sent to the user.&lt;/p&gt; &lt;p&gt;#2 - The forklift pummels the widget to smithereens. &lt;/p&gt; &lt;p&gt;#3 - The application has no recourse but to apologize, informing the customer they can have another widget in one month (after the incoming shipment arrives).&lt;/p&gt; &lt;p&gt;#4 - Consider an alternate example with two replicas working independently.&amp;nbsp; Replica-1 "decides" to ship the widget and sends that "decision" to User-1.&lt;/p&gt; &lt;p&gt;#5 - Independently, Replica-2 makes a "decision" to ship the last remaining widget to User-2.&lt;/p&gt; &lt;p&gt;#6 - Replica-2 informs Replica-1 of its "decision" to ship the last remaining widget to User-2.&lt;/p&gt; &lt;p&gt;#7 - Replica-1 realizes that they are in trouble...&amp;nbsp; Bummer.&lt;/p&gt; &lt;p&gt;#8 - Replica-1 tells User-1 that he guessed wrong.&lt;/p&gt; &lt;p&gt;#9 - Note that the behavior experienced by the user in the first example is indistinguishable from the experience of user-1 in the second example.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Eventual Consistency and Crappy Computers&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Business realities force apologies.&amp;nbsp; To cope with these difficult realities, we need code and, frequently, we need human beings to apologize.&amp;nbsp; It is essential that businesses have both code and people to manage these apologies.&lt;/p&gt; &lt;p&gt;Replication can force apologies.&amp;nbsp; This is the same crap we have to deal with when the physical realities are out&amp;nbsp;of sync with the computer's knowledge,&amp;nbsp; [Please note: I am NOT saying that all replication errors are identical to the business realities.&amp;nbsp;&amp;nbsp; I AM saying that when you replicate business operations (rather than the back-end state of your internal database), the shape of being out-of-sync does, indeed, mimic the business realities.]&lt;/p&gt; &lt;p&gt;We try too hard as an industry.&amp;nbsp; Frequently, we build big and expensive datacenters and deploy big and expensive computers.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p&gt;In many cases, comparable behavior can be achieved with a lot of crappy machines which cost less than the big expensive one.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#0000ff"&gt;Consider the cost/benefit of building big-ass and expensive machines!&amp;nbsp; Careful design of a collection of replicas may fill the business need at a better value!&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;Just a thought for the day...&lt;/p&gt; &lt;p&gt;- Pat&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2660737" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pathelland/archive/tags/Architectural/default.aspx">Architectural</category></item><item><title>Why I hate the phrase "Long Running Transactions"...</title><link>http://blogs.msdn.com/pathelland/archive/2004/08/12/213552.aspx</link><pubDate>Thu, 12 Aug 2004 18:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:213552</guid><dc:creator>PatHelland</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/pathelland/comments/213552.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pathelland/commentrss.aspx?PostID=213552</wfw:commentRss><description>&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;I always talk about "Long Running Work" and steadfastly avoid "Long Running Transactions"...&amp;nbsp; My preference is to use the word "transaction" to mean an atomic operation that occurs at a single service within a second or so.&amp;nbsp; I mean the ACID (&lt;u&gt;A&lt;/u&gt;tomic &lt;u&gt;C&lt;/u&gt;onsistent &lt;u&gt;I&lt;/u&gt;solated &lt;u&gt;D&lt;/u&gt;urable) transactions that usually involve holding locks and that we transaction theorists love.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Whenever I hear about a "Long Running Transaction", I wonder about where it ends.&amp;nbsp; Let's consider the following example:&lt;br /&gt;&lt;/font&gt;&lt;font face="Tahoma" size="2"&gt;1) I decide to take a trip to Europe so I book some airline and hotel reservations.&lt;br /&gt;&lt;/font&gt;&lt;font face="Tahoma" size="2"&gt;2) The hotel in London hits a threshold of occupancy and decides to increase staffing and food for the restaurant.&lt;br /&gt;&lt;/font&gt;&lt;font face="Tahoma" size="2"&gt;3) The hotel orders more food from the Green Grocer.&lt;br /&gt;&lt;/font&gt;&lt;font face="Tahoma" size="2"&gt;4) The Green Grocer hits a threshold and orders another delivery from its shipper.&lt;br /&gt;&lt;/font&gt;&lt;font face="Tahoma" size="2"&gt;5) The shipping company hits a thresold and orders more diesel fuel for its trucks...&lt;br /&gt;&lt;/font&gt;&lt;font face="Tahoma" size="2"&gt;6) Two weeks later, I cancel my trip.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;So, if I believe in long-running-transactions, the shipping company doesn't need any more diesel fuel!&amp;nbsp; I don't think so!&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;The long-running-transaction approach assumes that there is a cohesive set of work across loosely-coupled and independent systems that is atomic.&amp;nbsp; Notice it is not ACID in that Isolation is clearly different and Consistency is clearly different.&amp;nbsp; Hence, you would consider these "long-running-transactions" to exhibit Atomicity and Durability.&amp;nbsp; I am arguing that Atomicity is not a property that flows across multiple services as the semantics of interaction across these services is not tightly associated.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;My preference is to talk about "long-running-work" across two services.&amp;nbsp; I can examine the semantic interaction of two services across a set of messages.&amp;nbsp; This leads to the notions of reliable messaging (and multi-message dialogs) which is one of my favorite topics and something I will be posting more work to my website (&lt;/font&gt;&lt;a href="http://www.pathelland.com"&gt;&lt;font face="Tahoma" size="2"&gt;www.pathelland.com&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt;) soon.&amp;nbsp; It also leads to the notion of a contract across the messages that flow between two services.&amp;nbsp; I love these concepts.&amp;nbsp; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Another concept that I am strongly in favor of is the concept of a service being in the midst of multiple related dialogs.&amp;nbsp; My attempt to book travel arrangements puts me in multiple interactions with different airlines and hotels.&amp;nbsp; These interactions involve multiple messages and continue at least until the date of my travel (unless I cancel).&amp;nbsp; When my incoming reservation causes the hotel to increase its food requirements, the hotel will use business logic to control the relationship between my incoming messages and the restaurant related messages.&amp;nbsp; This allows it to consider the wisdom of canceling the food order when I cancel my reservation... very different than mindlessly assuming some coordinator associates these into a long-running-transaction.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Work flows across services and businesses in ways that do not magically "undo" even if you do master the use of compensations rather than the classic "undo" of replacing the before values.&amp;nbsp; The behavior of our interconnected systems is more an integration of lots of disparate work into summaries.&amp;nbsp; When I through a rock into the ocean by San Francisco, that can and does impact the waves that hit Tokyo but only in conjunction with countless other stimuli.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;This is why I like to talk about long-running-work inside a single service or across exactly two services using a multi-message dialog.&amp;nbsp; The phrase long-running-transaction is a chimera and leads to a false hope of simplicity.&amp;nbsp; The reality is much richer and more complex.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Love, Pat&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=213552" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pathelland/archive/tags/Architectural/default.aspx">Architectural</category></item><item><title>Upcoming talks at TechEd EMEA in Amsterdam...</title><link>http://blogs.msdn.com/pathelland/archive/2004/06/18/159345.aspx</link><pubDate>Fri, 18 Jun 2004 18:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:159345</guid><dc:creator>PatHelland</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/pathelland/comments/159345.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pathelland/commentrss.aspx?PostID=159345</wfw:commentRss><description>&lt;P&gt;Sorry about the long delay in blogging...&lt;/P&gt;
&lt;P&gt;I was supposed to present at TechEd SanDiego a few weeks ago but my mother passed away on May 19th...&amp;nbsp; We will all miss her, especially my 84 year old father who is quite lonely now...&lt;/P&gt;
&lt;P&gt;I wanted to tell everyone that I am working on getting a website going that will contain all the ongoing (and much of the past) work that I am involved with.&amp;nbsp; I have set a target of the beginning of July to get this going.&amp;nbsp; Many of the topics I've wanted to blog on required so much context from my presentations and papers that I've been reticent to blog them.&amp;nbsp; Hopefully, having the ability to link to this content will create a better dynamic.&lt;/P&gt;
&lt;P&gt;I am committed to six sessions at TechEd EMEA starting on June 29th.&amp;nbsp; I am VERY exceited about this but have a ton of powerpoint work!&amp;nbsp; Some of these are done and others are still a mess.&amp;nbsp; Here's the abstracts of what's coming!&amp;nbsp; Hope you can join us in Amsterdam!&lt;/P&gt;
&lt;P&gt;More blogging soon...&lt;/P&gt;
&lt;P&gt;Love,&lt;BR&gt;Pat&lt;/P&gt;
&lt;P&gt;---------------------------&lt;/P&gt;
&lt;P class=Abstract style="MARGIN: 0in 0in 6pt"&gt;&lt;STRONG&gt;&lt;U&gt;&lt;FONT size=5&gt;GNLARC &amp;#8211; Metropolis: Independent and Interconnected&lt;/FONT&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=Abstract style="MARGIN: 0in 0in 6pt"&gt;This is general session for the Architecture Track at TechEd EMEA.&lt;/P&gt;
&lt;P class=Abstract style="MARGIN: 0in 0in 6pt"&gt;In this talk, we examine the parallels between urban development and the development of IT shops.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In the 1800s, railroads connected independent cities and stimulated changes in manufacturing, retail, and standardization.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;We argue that this very much like what is happening today as independent IT shops are connected by the Internet. &lt;/P&gt;
&lt;P class=Abstract style="MARGIN: 0in 0in 6pt"&gt;The forces let loose by this interconnection lead us to service orientation just as our economy has developed independent companies offering manufacturing and retail which work together.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The metropolitan analogy offers some surprising predictions for the future of IT.&lt;/P&gt;
&lt;P class=Abstract style="MARGIN: 0in 0in 6pt"&gt;At the end of this presentation, I am excited that &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:PersonName w:st="on"&gt;Don Box&lt;/st1:PersonName&gt; and &lt;st1:PersonName w:st="on"&gt;David Chappell&lt;/st1:PersonName&gt; are going to help me with a surprise!&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It promises to be a lot of fun and very, very memorable.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;For those of you that can&amp;#8217;t see it live, we will get the video up on the web by early July!&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Tons of work in this one!&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Planning, rehearsing&amp;#8230; lots of work!&lt;/P&gt;
&lt;P class=Doc-Name style="MARGIN: 0in 0in 0pt"&gt;&lt;STRONG&gt;&lt;U&gt;&lt;FONT size=5&gt;ARC302 &amp;#8211; Metropolis: Building Applications in a Service Oriented Architecture&lt;/FONT&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=Abstract style="MARGIN: 0in 0in 6pt"&gt;Some buildings adapt to change and continually renew themselves to take on a new life as their environment evolves.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;An examination of buildings shows that there are certain design characteristics that make buildings more adaptable.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In the last few decades, there has been an increasing trend towards the creation of buildings which fit within a framework of use and all for many adaptations and reuse.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Examples of this include strip malls for retail and industrial parks for light manufacturing and many other uses.&lt;/P&gt;
&lt;P class=Abstract style="MARGIN: 0in 0in 6pt"&gt;These trends can be seen in applications and how they are or are not designed to cope with a changing environment.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This talk examines the parallels between buildings and applications and shows the re-emergence of these patterns in the virtualization of systems and the creation of service oriented architectures.&lt;/P&gt;
&lt;P class=Doc-Name style="MARGIN: 0in 0in 0pt"&gt;&lt;STRONG&gt;&lt;U&gt;&lt;FONT size=5&gt;ARC 303 &amp;#8211; Metropolis: Using Interchangeability&lt;/FONT&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=Abstract style="MARGIN: 0in 0in 6pt"&gt;Through the 19&lt;SUP&gt;th&lt;/SUP&gt; century, manufacturers invested in making machines to make the creation of machine parts faster and easier.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In a separate effort largely by the armories producing small arms for the US War Department, significant effort was made to make parts so identical that they may be interchanged across two different guns.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This effort was surprisingly difficult over a forty year period.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Simple machine tools created parts that were so inaccurate that they still required manual fitting and adjusting to make a working machine.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It was only through the combination of machine tools and interchangeability that we arrived at the mass production techniques of manufacturing that have so changed our world.&lt;/P&gt;
&lt;P class=Abstract style="MARGIN: 0in 0in 6pt"&gt;If you consider the interaction of services as they send request for operational functions, we see the same challenges of interchangeability.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Distrusting services won&amp;#8217;t support classic distributed transactions and this necessitates the use of operational requests that may be subsequently canceled.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;For the service providing the functions, this is only practical to the extent that the tentative operations are interchangeable.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Just as most people in the 19&lt;SUP&gt;th&lt;/SUP&gt; century thought precision interchangeability of manufactured parts was a silly endeavor compared to fitting by highly skilled craftsmen, most programmers don&amp;#8217;t recognize the importance of operations that are so equivalent that some may be canceled later without causing duress. &lt;/P&gt;
&lt;P class=Abstract style="MARGIN: 0in 0in 6pt"&gt;This talk explores the history of manufacturing and highlights some of the important challenges we have in creating collections of interoperating services.&lt;/P&gt;
&lt;P class=Doc-Name style="MARGIN: 0in 0in 0pt"&gt;&lt;STRONG&gt;&lt;U&gt;&lt;FONT size=5&gt;ARC402-- Thoughts on Data in Service Oriented Architecture&lt;/FONT&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=Abstract style="MARGIN: 0in 0in 6pt"&gt;Services provide a formal boundary of computing.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Inside a service we typically find data that is needed for the operation of the service.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;In between services, we see the flow of operational requests and the transmission of data. This talk explores the difference between &lt;I style="mso-bidi-font-style: normal"&gt;&lt;U&gt;data on the outside&lt;/U&gt;&lt;/I&gt; that flows between services and &lt;I style="mso-bidi-font-style: normal"&gt;&lt;U&gt;data on the inside&lt;/U&gt;&lt;/I&gt; that is maintained for the internal use of the service.&lt;/P&gt;
&lt;P class=Abstract style="MARGIN: 0in 0in 6pt"&gt;As data is transmitted between services, we need to recognize that it is immutable and, once it is written, can only be changed by creating a new version for transmission.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Schema definition and extensibility take on new importance in the world outside of services.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This talk explores these design issues with an emphasis on pragmatic design choices made in the architecting of services and the interaction between them.&lt;/P&gt;
&lt;P class=Abstract style="MARGIN: 0in 0in 6pt"&gt;Finally, we examine the characteristic of SQL, Objects, and XML.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Each has its strengths and weaknesses.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;We observe that the characteristics that make SQL wonderful for representing internal data, Objects wonderful for software engineering, and XML wonderful for communicating across services are exactly the characteristics that are challenges in other usages.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;U&gt;For SQL, Objects, and XML, their amazing strengths in one use are the essence of their weakness in another use.&lt;/U&gt;&lt;/I&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;We need all three but we need each in its place of strength.&lt;/P&gt;
&lt;P class=Doc-Name style="MARGIN: 0in 0in 0pt"&gt;&lt;STRONG&gt;&lt;U&gt;&lt;FONT size=5&gt;PLN005 &amp;#8211; Metropolis: Implementation Advice for the Service-Oriented &lt;st1:City w:st="on"&gt;&lt;st1:place w:st="on"&gt;Enterprise&lt;/st1:place&gt;&lt;/st1:City&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=Abstract style="MARGIN: 0in 0in 6pt"&gt;This is a panel discussion with: Pat Helland, &lt;st1:PersonName w:st="on"&gt;Arvindra Sehmi&lt;/st1:PersonName&gt;, &lt;st1:PersonName w:st="on"&gt;David Hill&lt;/st1:PersonName&gt;, &lt;st1:PersonName w:st="on"&gt;&lt;SPAN style="COLOR: black"&gt;Maarten Mullender&lt;/SPAN&gt;&lt;/st1:PersonName&gt;&lt;SPAN style="COLOR: black"&gt;, and Steve Cook.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=Doc-Name style="MARGIN: 0in 0in 0pt"&gt;&lt;STRONG&gt;&lt;U&gt;&lt;FONT size=5&gt;ARC230 &amp;#8211; The Nerd, the Suit, and the Fortune Teller&lt;/FONT&gt;&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=Abstract style="MARGIN: 0in 0in 6pt"&gt;This is a skit and presentation working with Clemens Vasters and Rafal Lukawiecki.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I am really excited about this session as we hope to motivate the perspectives of the Suit (the businessman), the Nerd (the technologist), and the Fortune Teller (the architectural visionary).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I get to play the Fortune Teller!!&lt;/P&gt;
&lt;P class=Abstract style="MARGIN: 0in 0in 6pt"&gt;This promises to be a fun way to end the TechEd week by providing some thought provoking perspectives on the trends towards SOA.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=159345" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pathelland/archive/tags/Architectural/default.aspx">Architectural</category></item></channel></rss>