<?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/"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>microservices &#8211; Wade Tregaskis</title>
	<atom:link href="https://wadetregaskis.com/tags/microservices/feed/" rel="self" type="application/rss+xml" />
	<link>https://wadetregaskis.com</link>
	<description></description>
	<lastBuildDate>Wed, 09 Jun 2021 23:35:50 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://wadetregaskis.com/wp-content/uploads/2016/03/Stitch-512x512-1-256x256.png</url>
	<title>microservices &#8211; Wade Tregaskis</title>
	<link>https://wadetregaskis.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">226351702</site>	<item>
		<title>The Abstracted Unreliability Anti-pattern</title>
		<link>https://wadetregaskis.com/the-abstracted-unreliability-anti-pattern/</link>
					<comments>https://wadetregaskis.com/the-abstracted-unreliability-anti-pattern/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Wed, 09 Jun 2021 23:35:49 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[abstraction]]></category>
		<category><![CDATA[anti-pattern]]></category>
		<category><![CDATA[logic]]></category>
		<category><![CDATA[microservices]]></category>
		<category><![CDATA[reliability]]></category>
		<guid isPermaLink="false">https://blog.wadetregaskis.com/?p=4657</guid>

					<description><![CDATA[I don&#8217;t know if it&#8217;s genuinely on the uptick, or just coincidence, or merely runaway pattern recognition on my part, but I keep seeing the same logical fallacy applied over and over again: if I add more layers to a system it will become more reliable. A recent example: this set of services have poor&#8230; <a class="read-more-link" href="https://wadetregaskis.com/the-abstracted-unreliability-anti-pattern/" data-wpel-link="internal">Read more</a>]]></description>
										<content:encoded><![CDATA[
<p>I don&#8217;t know if it&#8217;s genuinely on the uptick, or just coincidence, or merely runaway pattern recognition on my part, but I keep seeing the same logical fallacy applied over and over again:  if I add more layers to a system it will become more reliable.</p>



<p>A recent example:  this set of services have poor uptime so we need to put <em>another</em> service in front of them, and this will &#8211; apparently, magically &#8211; make them have better uptime.</p>



<p>This <em>might</em> be true in specific cases.  If the abstraction layer utilises caching, for example, it&#8217;s conceivable it&#8217;ll be able to continue operating in at least some capacity while an underlying component is (briefly) unavailable.  Or maybe the reduced load to the downstream service(s) will alleviate pressure on racey code and dodgy GC.  But this is practically never a factor, in the real-world examples I see.  It really does seem to be &#8220;step 1, collect underpants  …  step 3, profit&#8221;.</p>



<p>The best you could say is that it <em>accidentally</em> arrives at a practical benefit, despite itself.</p>



<p>It&#8217;s important to separate the <em>actual</em> causes of improvement from the red herrings.  I can only assume that the confusion between the two is what has allowed this blatantly illogical practice to gain some ground.  &#8220;We implemented better input validation and an extra layer, and things got better&#8221;, and bafflingly nobody ever seems to question how &#8220;and an extra layer&#8221; contributed.</p>



<p>Now, adding an abstraction layer might have <em>other</em> direct benefits &#8211; e.g. the opportunity for use-case-specific APIs, better alignment with organisational structure, etc &#8211; but reliability is unlikely to be one of them.  Particularly if by &#8216;reliability&#8217; one largely means <em>availability</em>.  Again, it&#8217;s crucial to understand the <em>actual</em> causality involved, not miscategorise coincidence.</p>



<p>The <em>logical</em> thing to do in the face of an unreliable component is to simply make it reliable.  Anything else is just making the situation worse.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wadetregaskis.com/the-abstracted-unreliability-anti-pattern/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4657</post-id>	</item>
	</channel>
</rss>
