<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PaaS Talk &#187; Fault Tolerance</title>
	<atom:link href="http://paastalk.com/tag/fault-tolerance/feed/" rel="self" type="application/rss+xml" />
	<link>http://paastalk.com</link>
	<description>A blog for ISVs on Platform as a Service (PaaS)</description>
	<lastBuildDate>Sat, 04 Feb 2012 17:59:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Hiding by abstraction: Not enough for SaaS applications</title>
		<link>http://paastalk.com/no-hiding-behind-abstraction-for-saas/</link>
		<comments>http://paastalk.com/no-hiding-behind-abstraction-for-saas/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 06:04:05 +0000</pubDate>
		<dc:creator>Andrew Biss</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Abstraction]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Fault Tolerance]]></category>
		<category><![CDATA[ISV]]></category>
		<category><![CDATA[PaaS]]></category>
		<category><![CDATA[SaaS]]></category>
		<category><![CDATA[Services]]></category>

		<guid isPermaLink="false">http://paastalk.com/no-hiding-behind-abstraction-for-saas/</guid>
		<description><![CDATA[Building reliable SaaS applications from non-reliable services demands fault-tolerance. Abstraction just doesn't cut it any more.]]></description>
			<content:encoded><![CDATA[<p><strong>Building reliable SaaS applications from non-reliable services demands fault-tolerance. Abstraction just doesn&#8217;t cut it any more.</strong></p>
<p class="figure"> <img width="302" height="192" src="http://paastalk.com/wordpress/wp-content/uploads/hiding-abstraction.jpg" alt="Man hiding behind sofa" title="Hiding abstraction" /> <br /><br /><span class="figcaption"><em>Image: ISVs have long used abstraction to isolate applications from technical implementation details. SaaS is based on services that can, and will, disappear just when you need them. Fault tolerance is no longer nice-to-have.</em></span></p>
<p>Whether using frameworks, cross-platform toolkits or even application generators, abstraction has worked well for the different combinations of OS, database, networking and user interfaces that confront on-premise developers.</p>
<p>As an SaaS ISV you only have one platform&#8211;what technology doubts could you possibly have to worry about?</p>
<p><span id="more-29"></span></p>
<h2>For SaaS it&#8217;s services, all the way down&#8230;</h2>
<p>SaaS applications are large portfolios of services that extend over the complete hardware and software stacks, including:</p>
<ul>
<li>Utility computing services for hardware, data storage and networking</li>
<li>Common system features, such as billing, subscription management, analytics and service management</li>
<li>Common application features, including charting, mapping, search and many others</li>
</ul>
<p>Your customers do not count your technology as a benefit to them. They will not accept premium pricing. As a result, you will only ever have time and money to invest in building services that are core features for your vertical niche.</p>
<p>It makes financial sense to buy-in most of your services; keeping your running costs strictly under control. Your service portfolio can, and should, change in the future as you look for opportunities to swap to something cheaper.</p>
<p>As an SaaS ISV you now have total independence to choose the services you need for your application&#8211;where are the technical doubt and implementation differences you need to hide with abstraction?</p>
<h2>My service was there a minute ago!</h2>
<p>Technical doubt for on-premise products could usually by fully resolved at build-time. Once the customer had installed the product the IT setup changed slowly, if at all.</p>
<p>When a 3rd party supplier disappeared, or dropped support for their product, there was no short or medium term impact on any of the installed applications. These continued to run as before&#8211;often for many years. There was enough time to consider replacements <em>(and you abstracted the </em><em>interfaces </em><em>anyway)</em>.</p>
<p>The services world of SaaS is different&#8211;the services you carefully selected can (and will) disappear at run-time! This could simply be from a temporary network outage. More seriously, a provider might close and stop offering their <em>(probably in perpetual-beta)</em> service with little or no warning.</p>
<p>Service outages can impact all of your SaaS customers&#8211;and quickly. The buffer that exists in the on-premise world between off-line development and build, and on-line deployment has disappeared.</p>
<p>If a service is unavailable you need to have a <em>plan B</em> in place. You cannot wait and develop a replacement solution in days, weeks or perhaps even months. Your customers have already noticed and they are waiting&#8230;</p>
<p>Without your having had any choice in the matter, SaaS throws you head first into the real-time world. You have to build a reliable SaaS application based on a large portfolio of (assumed to be) unreliable services. This is not easy.</p>
<h2>Fault tolerance&#8211;here comes SaaS, ready or not</h2>
<p>You SaaS application must degrade gracefully as services come and go. No matter what happens, you must always deliver the best possible customer experience. How it degrades depends on the missing service or services. An unavailable charting or mapping service clearly has a different impact than a missing database or networking service.</p>
<p>Your SaaS application must handle missing and unavailable services well, and tell your customers what is going on. It cannot just <em>fail</em> because a service is unavailable&#8211;even if it is something critical such as your login or security service.</p>
<p>All SaaS outages have an all-too real potential to blow up into a PR disaster. Bad press is not healthy for your reputation or keeping customer trust&#8211;both of which are essential for success in the SaaS market.</p>
<p>This time your main technical doubt is not the easy API differences between implementations&#8211;the main issue is the concern that any of your chosen services will <em>actually</em> be available from one transaction to the next.</p>
<p>Hiding behind abstraction will not work. You need a more flexible approach that handles unreliable services and guarantees an excellent user experience&#8211;no matter what service fails or disappears.</p>
<h2>Coming up&#8230;</h2>
<p>Are you forced to develop this supporting service infrastructure yourself, or are there standard solutions you can use? That is what I will look at in my next post on <cite>PaaS Talk</cite>: <a href="http://paastalk.com/amazon-ec2-saas-profit-squeeze-for-isvs/">Might Amazon EC2 cloud platform squeeze the profits from SaaS apps?</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://paastalk.com/no-hiding-behind-abstraction-for-saas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

