<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>kellabyte</title>
	
	<link>http://kellabyte.com</link>
	<description>One day you will have kellabyte capacity, until then you're just a floppy drive</description>
	<lastBuildDate>Fri, 10 May 2013 13:55:10 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/kellabyte" /><feedburner:info uri="kellabyte" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Configuration is bad but what about operational flexibility?</title>
		<link>http://feedproxy.google.com/~r/kellabyte/~3/3T4ugsiBV7A/</link>
		<comments>http://kellabyte.com/2013/05/10/configuration-is-bad-but-what-about-operational-flexibility/#comments</comments>
		<pubDate>Fri, 10 May 2013 13:52:32 +0000</pubDate>
		<dc:creator>kellabyte</dc:creator>
				<category><![CDATA[Firehose]]></category>

		<guid isPermaLink="false">http://kellabyte.com/?p=1421</guid>
		<description><![CDATA[I wasn&#8217;t around during the days where services and applications had big heavy configuration files that configured things like messaging middleware, IoC containers, web frameworks, and many more. But I can definitely feel that there is a large sense of negativity around configuration driven frameworks and that the community has shifted the pendulum away from<a class="rmore" href="http://kellabyte.com/2013/05/10/configuration-is-bad-but-what-about-operational-flexibility/">&#160;&#160; Read More ...</a>]]></description>
				<content:encoded><![CDATA[<p>I wasn&#8217;t around during the days where services and applications had big heavy configuration files that configured things like messaging middleware, IoC containers, web frameworks, and many more. But I can definitely feel that there is a large sense of negativity around configuration driven frameworks and that the community has shifted the pendulum away from these approaches.</p>

<p>I think at the end of the day, programmers will usually always have a bias to doing things in their programming language oppose to outside. We see this shift happening in some databases and how all these frameworks have tried to eliminate as much configuration as possible.</p>

<p>Nobody likes a gigantic XML document of configuration that describes how a WCF service wires up or some messaging middleware routing is configured.</p>

<p>There&#8217;s a huge problem though when all of this is eliminated. Operational flexibility is missing.</p>

<p>A few days ago I wrote about how a <a href="http://kellabyte.com/2013/05/06/version-tolerance-and-accidental-operation-complexity/">tightly coupled situation increased operation complexity</a>. That situation was multiplied in difficulty due to the lack of ability to dynamically re-configure these systems.</p>

<p>One option and a really good idea for services is to provide a command set that you can use to tell the service to do things you need like re-configure routing. This becomes really useful for operation teams against production systems.</p>

<p>In some cases the changes you make will need to be persisted so that if the service restarts it doesn&#8217;t revert back to the old behavior.</p>

<p>But haven&#8217;t we just made a really complicated glorified configuration file?</p>

<p>It seems our industry bounces from one extreme to another all the time but we never quite settle in a middle-ground which means we lose some value that can be extremely important.</p>

<p>If you are still dead against configuration files, at least provide the operational flexibility in some fashion.</p>

<p>I hate configuration files too but I value my system availability and operational flexibility much higher than my personal preferences and inconveniences.</p>
<img src="http://feeds.feedburner.com/~r/kellabyte/~4/3T4ugsiBV7A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kellabyte.com/2013/05/10/configuration-is-bad-but-what-about-operational-flexibility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kellabyte.com/2013/05/10/configuration-is-bad-but-what-about-operational-flexibility/</feedburner:origLink></item>
		<item>
		<title>An alternative to Paxos, the RAFT consensus algorithm</title>
		<link>http://feedproxy.google.com/~r/kellabyte/~3/oj9Jr3SIJr8/</link>
		<comments>http://kellabyte.com/2013/05/09/an-alternative-to-paxos-the-raft-consensus-algorithm/#comments</comments>
		<pubDate>Thu, 09 May 2013 14:07:28 +0000</pubDate>
		<dc:creator>kellabyte</dc:creator>
				<category><![CDATA[Firehose]]></category>

		<guid isPermaLink="false">http://kellabyte.com/?p=1419</guid>
		<description><![CDATA[Hoop Somuah pointed me at the new RAFT consensus algorithm a couple days ago. The paper is titled "In Search of an Understandable Consensus Algorithm" which I think is a fitting name. The paper points out that the literature on Paxos has been known to be hard to understand and difficult to apply in actual<a class="rmore" href="http://kellabyte.com/2013/05/09/an-alternative-to-paxos-the-raft-consensus-algorithm/">&#160;&#160; Read More ...</a>]]></description>
				<content:encoded><![CDATA[<p><a href="https://twitter.com/hoopsomuah">Hoop Somuah</a> pointed me at the new <a href="https://ramcloud.stanford.edu/wiki/download/attachments/11370504/raft.pdf">RAFT consensus algorithm</a> a couple days ago. The paper is titled <code>"In Search of an Understandable Consensus Algorithm"</code> which I think is a fitting name.</p>

<p>The paper points out that the literature on Paxos has been known to be hard to understand and difficult to apply in actual code. There are a lot of Paxos implementations in the wild but it&#8217;s hard to gauge what the quality and reliability of these are. It seems the goal with RAFT was to design an alternative that was easier to describe and in turn easier to understand and implement.</p>

<p>I&#8217;ve read the Paxos papers several times and after reading the RAFT paper once I feel I understand more after my first reading than I did in my first reading of Paxos.</p>

<p>I plan to give this paper a few more reads.</p>
<img src="http://feeds.feedburner.com/~r/kellabyte/~4/oj9Jr3SIJr8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kellabyte.com/2013/05/09/an-alternative-to-paxos-the-raft-consensus-algorithm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kellabyte.com/2013/05/09/an-alternative-to-paxos-the-raft-consensus-algorithm/</feedburner:origLink></item>
		<item>
		<title>Version tolerance and accidental operation complexity</title>
		<link>http://feedproxy.google.com/~r/kellabyte/~3/O1DE2Fw-lXI/</link>
		<comments>http://kellabyte.com/2013/05/06/version-tolerance-and-accidental-operation-complexity/#comments</comments>
		<pubDate>Mon, 06 May 2013 19:41:22 +0000</pubDate>
		<dc:creator>kellabyte</dc:creator>
				<category><![CDATA[Firehose]]></category>

		<guid isPermaLink="false">http://kellabyte.com/?p=1395</guid>
		<description><![CDATA[Previously I wrote about how serialization is a lossy operation and how this can affect down stream systems. It&#8217;s hard to plan ahead to accommodate changes that come in the future because it&#8217;s hard to predict what these changes will be. In one case I saw a v2 of a message contract get introduced that<a class="rmore" href="http://kellabyte.com/2013/05/06/version-tolerance-and-accidental-operation-complexity/">&#160;&#160; Read More ...</a>]]></description>
				<content:encoded><![CDATA[<p>Previously I wrote about how <a href="http://kellabyte.com/2013/05/02/serialization-is-lossy/">serialization is a lossy operation</a> and how this can affect down stream systems. It&#8217;s hard to plan ahead to accommodate changes that come in the future because it&#8217;s hard to predict what these changes will be.</p>

<p>In one case I saw a v2 of a message contract get introduced that was designed well and did not introduce any breaking changes. From an outside point of view, v1 services should be capable of processing the v2 message and down stream systems that may be in the chain who if upgraded to v2 should function as expected.</p>

<p>Unfortunately the private implementation wasn&#8217;t so tolerant. The v1 service was being lossy (as explained in the blog post above) and down stream systems were broken.</p>

<h2>Accidental operation complexity</h2>

<p>Thought out strategy can work around this tight coupling but it becomes increasingly complex and sometimes extremely expensive to do so. This tight coupling created a lot of operation complexity.</p>

<p>We had to put in place an elaborate strategy that upgraded specific parts in sequence and do message routing to ensure no v2 messages went to v1 servers. In the process we had to grow our cluster size temporarily to accommodate the production load while deprecating these v1 services.</p>

<p>Since the message should not have broken anything if the v1 service wasn&#8217;t being lossy during the serialization process, upgrading the cluster would have been extremely simple and much less expensive. It would have been a rolling upgrade where any v1 service could still handle any published v2 message.</p>

<p>The life cycle of a piece of software isn&#8217;t how long it takes to ship v1. Although using serialization saved some development time, it&#8217;s foolish to track the development cost of v1 bound to its deployment. The cost of v1 trickles into v2 and the operation cost of moving from v1 to v2.</p>

<p>Yes the complicated strategy did work, it was expensive and it required a lot of planning, and frankly none of that should have been necessary.</p>

<h2>Version tolerance</h2>

<p>Creating loosely coupled systems that only couple to required data and don&#8217;t discard data they should be ignorant about make them more version tolerant.</p>

<p>Version tolerant systems introduce less accidental operation complexity. These systems are easier to upgrade and can evolve quicker and more frequently.</p>
<img src="http://feeds.feedburner.com/~r/kellabyte/~4/O1DE2Fw-lXI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kellabyte.com/2013/05/06/version-tolerance-and-accidental-operation-complexity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kellabyte.com/2013/05/06/version-tolerance-and-accidental-operation-complexity/</feedburner:origLink></item>
		<item>
		<title>Hardware configurations can introduce tight coupling and increase failure foot print</title>
		<link>http://feedproxy.google.com/~r/kellabyte/~3/WKN_xz1hszs/</link>
		<comments>http://kellabyte.com/2013/05/06/hardware-configurations-can-introduce-tight-coupling-and-increase-failure-foot-print/#comments</comments>
		<pubDate>Mon, 06 May 2013 15:28:08 +0000</pubDate>
		<dc:creator>kellabyte</dc:creator>
				<category><![CDATA[Firehose]]></category>

		<guid isPermaLink="false">http://kellabyte.com/?p=1407</guid>
		<description><![CDATA[Just like coupling in software can make code brittle and make a larger scope of failure, the same can happen with hardware. A cluster I was using was configured in a way that all the virtual machines were using a pool of resources and when that pool experienced a resource failure affecting a fraction of<a class="rmore" href="http://kellabyte.com/2013/05/06/hardware-configurations-can-introduce-tight-coupling-and-increase-failure-foot-print/">&#160;&#160; Read More ...</a>]]></description>
				<content:encoded><![CDATA[<p>Just like coupling in software can make code brittle and make a larger scope of failure, the same can happen with hardware.</p>

<p>A cluster I was using was configured in a way that all the virtual machines were using a pool of resources and when that pool experienced a resource failure affecting a fraction of the pool, all the nodes on that physical machine crashed.</p>

<p>They all crashed because they were all sharing the same pool and when something failed they all experienced the failure.</p>

<p>In distributed systems it is important that we accept that failures will happen but its also good to try and reduce coupling at the software and hardware level to reduce the failure foot print.</p>

<p>1 failed node is better than 32 failed nodes.</p>
<img src="http://feeds.feedburner.com/~r/kellabyte/~4/WKN_xz1hszs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kellabyte.com/2013/05/06/hardware-configurations-can-introduce-tight-coupling-and-increase-failure-foot-print/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kellabyte.com/2013/05/06/hardware-configurations-can-introduce-tight-coupling-and-increase-failure-foot-print/</feedburner:origLink></item>
		<item>
		<title>Problem analysis</title>
		<link>http://feedproxy.google.com/~r/kellabyte/~3/cVuCIWkOqpI/</link>
		<comments>http://kellabyte.com/2013/05/03/problem-analysis/#comments</comments>
		<pubDate>Fri, 03 May 2013 21:10:04 +0000</pubDate>
		<dc:creator>kellabyte</dc:creator>
				<category><![CDATA[Firehose]]></category>

		<guid isPermaLink="false">http://kellabyte.com/?p=1402</guid>
		<description><![CDATA[In my short time in the industry so far, it feels like we hop from one fad to another. Each one has its merits and associated pros and cons, it probably wouldn&#8217;t be popular if it didn&#8217;t provide any value. I can&#8217;t think of a quicker path to failure than thinking about the solution before<a class="rmore" href="http://kellabyte.com/2013/05/03/problem-analysis/">&#160;&#160; Read More ...</a>]]></description>
				<content:encoded><![CDATA[<p>In my short time in the industry so far, it feels like we hop from one fad to another. Each one has its merits and associated pros and cons, it probably wouldn&#8217;t be popular if it didn&#8217;t provide any value.</p>

<p>I can&#8217;t think of a quicker path to failure than thinking about the solution before the problem. I&#8217;m not great at problem analysis yet but it&#8217;s something I&#8217;m constantly reminding myself to do.</p>

<p>I consider problem analysis a fairly creative process. I try to brainstorm with my team (and invite other team members in for diverse opinions). Sometimes we spike some research to gain more understanding (time boxed). We write down the problems challenges and prioritize the areas with the most risk. We write down all possible options and try to identify their strengths and weaknesses and eliminate potential options that don&#8217;t align well with the problem. The obvious ones to eliminate are the ones where the risk collides with the weaknesses.</p>

<p>I think it&#8217;s crazy town to try and twist a problem into a potentially wrong solution. It&#8217;s my belief that if you keep choosing the same option every time, you&#8217;re guaranteed to be wrong some of the time.</p>

<p>Why would I do that?</p>
<img src="http://feeds.feedburner.com/~r/kellabyte/~4/cVuCIWkOqpI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kellabyte.com/2013/05/03/problem-analysis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kellabyte.com/2013/05/03/problem-analysis/</feedburner:origLink></item>
		<item>
		<title>Highly available transactions</title>
		<link>http://feedproxy.google.com/~r/kellabyte/~3/kOPPeo7rThg/</link>
		<comments>http://kellabyte.com/2013/05/02/highly-available-transactions/#comments</comments>
		<pubDate>Fri, 03 May 2013 03:38:13 +0000</pubDate>
		<dc:creator>kellabyte</dc:creator>
				<category><![CDATA[Firehose]]></category>

		<guid isPermaLink="false">http://kellabyte.com/?p=1391</guid>
		<description><![CDATA[I&#8217;m a big fan of any material that comes from Peter Bailis. He and his crew are tackling some really interesting topics in distributed systems and trying to redefine new ways to solve these problems. He wrote about HAT, not CAP: Introducing Highly Available Transactions where he describes the concept of highly available transactions and how<a class="rmore" href="http://kellabyte.com/2013/05/02/highly-available-transactions/">&#160;&#160; Read More ...</a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m a big fan of any material that comes from Peter Bailis. He and his crew are tackling some really interesting topics in distributed systems and trying to redefine new ways to solve these problems.</p>
<p>He wrote about <a href="http://www.bailis.org/blog/hat-not-cap-introducing-highly-available-transactions/" target="_blank">HAT, not CAP: Introducing Highly Available Transactions</a> where he describes the concept of highly available transactions and how traditional database designs don&#8217;t perform well in the event of a network partition.</p>
<p>Highly available transactions provide strong guarantees (not quite as strong as ACID) while providing higher availability than ACID can under partitioned conditions. Peter suggests HAT&#8217;s provide the strongest set of guarantees with high availability.</p>
<p>HAT&#8217;s are a masterless design.</p>
<p>HAT&#8217;s cannot provide Serializable Isolation (the strictest of the isolation levels in ACID). Peter previously posted an article titled &#8220;<a href="http://www.bailis.org/blog/when-is-acid-acid-rarely/" target="_blank">When is &#8216;ACID&#8217; ACID? Rarely&#8221;</a> that reported the state of ACID in many existing databases which points out how most do not come with strong ACID guarantees out of the box because many don&#8217;t ship with serializable isolation enabled. Some of the databases don&#8217;t even have serializable isolation as an option.</p>
<p>This is really interesting because it points out HAT&#8217;s are aligned quite well with how people generally use databases today but using new algorithms to provide higher availability.</p>
<p>I highly suggest keeping an eye on any material coming out of Peter. Amazing stuff.</p>
<img src="http://feeds.feedburner.com/~r/kellabyte/~4/kOPPeo7rThg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kellabyte.com/2013/05/02/highly-available-transactions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kellabyte.com/2013/05/02/highly-available-transactions/</feedburner:origLink></item>
		<item>
		<title>Myths about banking and ACID transactions and the differences between relational view and system view</title>
		<link>http://feedproxy.google.com/~r/kellabyte/~3/Xn0qSEzesF8/</link>
		<comments>http://kellabyte.com/2013/05/02/myths-about-banking-and-acid-transactions-and-the-differences-between-relational-view-and-system-view/#comments</comments>
		<pubDate>Thu, 02 May 2013 21:14:18 +0000</pubDate>
		<dc:creator>kellabyte</dc:creator>
				<category><![CDATA[Firehose]]></category>

		<guid isPermaLink="false">http://kellabyte.com/?p=1388</guid>
		<description><![CDATA[Eric Brewer father of CAP Theorem (if you haven&#8217;t yet, go learn it!) had a great talk about &#8220;NoSQL: Past, Present, Future&#8221;. I highly recommend watching this talk. Eric&#8217;s very knowledgeable in database  internals and his talks are usually top notch stuff. Charles Bachman in 1973 won a Turing Award for building a &#8220;NoSQL&#8221; database in the<a class="rmore" href="http://kellabyte.com/2013/05/02/myths-about-banking-and-acid-transactions-and-the-differences-between-relational-view-and-system-view/">&#160;&#160; Read More ...</a>]]></description>
				<content:encoded><![CDATA[<p>Eric Brewer father of <a href="http://en.wikipedia.org/wiki/CAP_theorem" target="_blank">CAP Theorem</a> (if you haven&#8217;t yet, go learn it!) had a great talk about <a href="http://www.infoq.com/presentations/NoSQL-History" target="_blank">&#8220;NoSQL: Past, Present, Future&#8221;</a>. I highly recommend watching this talk. Eric&#8217;s very knowledgeable in database  internals and his talks are usually top notch stuff.</p>
<p>Charles Bachman in 1973 won a Turing Award for building a &#8220;NoSQL&#8221; database in the 1960&#8242;s called the Integrated Datastore (IDS) and this was what is called a Navigational Database. One of the pains is it was very hard to evolve.</p>
<p>In the 1970&#8242;s relational databases came along and provided a high level model which allowed the databases to encapsulate the internals.</p>
<p>Also in the 1970&#8242;s Unix came along. &#8220;The most important job of UNIX is to provide a file system&#8221; &#8211; original 1974 Unix paper. This is interesting because both databases and operating systems had similar goals but using different approaches.</p>
<p>I&#8217;ve always found in database debates there&#8217;s a tension between different views and I couldn&#8217;t really put my finger on it but Eric put it into great context by describing Relational View vs System View. Once I saw it described in that way I thought &#8220;that&#8217;s it!&#8221;. Some key points I got out of this are below.</p>
<p>Relational View</p>
<ul>
<li>Data outlasts any particular implementation (the model doesn&#8217;t change)</li>
<li>A top-down world view</li>
</ul>
<p>System View</p>
<ul>
<li><span style="line-height: 13px;">Bottom-up world view</span></li>
<li>Layers and composition</li>
</ul>
<p>Also great point is that BASE doesn&#8217;t necessarily mean &#8220;always inconsistent&#8221;. It can mean only inconsistent during partitions.</p>
<p>Eric also describes how during a partition there needs to be a mechanism for compensating for bad actions. This is where I think <a href="http://kellabyte.com/2012/05/30/clarifying-the-saga-pattern/" target="_blank">Saga&#8217;s</a> can come into play and it is mostly an ignored area for research. I think there&#8217;s a lot of growth still to be made on this topic.</p>
<p>Eric explains the myth about the most common supporting argument of ACID being the canonical banking &#8220;but money!&#8221; examples. He describes things like ATM&#8217;s not using ACID transactions but using auditing instead and how ATM&#8217;s have &#8220;partition mode&#8221; and how they use commutative operations so that balances end up correct and compensations occur if something goes wrong.</p>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/kellabyte/~4/Xn0qSEzesF8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kellabyte.com/2013/05/02/myths-about-banking-and-acid-transactions-and-the-differences-between-relational-view-and-system-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kellabyte.com/2013/05/02/myths-about-banking-and-acid-transactions-and-the-differences-between-relational-view-and-system-view/</feedburner:origLink></item>
		<item>
		<title>Serialization is lossy</title>
		<link>http://feedproxy.google.com/~r/kellabyte/~3/iVlsfp9hwlw/</link>
		<comments>http://kellabyte.com/2013/05/02/serialization-is-lossy/#comments</comments>
		<pubDate>Thu, 02 May 2013 16:52:17 +0000</pubDate>
		<dc:creator>kellabyte</dc:creator>
				<category><![CDATA[Firehose]]></category>

		<guid isPermaLink="false">http://kellabyte.com/?p=1384</guid>
		<description><![CDATA[The other day I had a long conversation about serialization on Twitter about how I&#8217;ve changed my stance. In the beginning I loved the convenience of serializing data from various formats like XML or JSON into classes (that more resemble structs actually). I got into many debates where I held this opinion strongly. But later<a class="rmore" href="http://kellabyte.com/2013/05/02/serialization-is-lossy/">&#160;&#160; Read More ...</a>]]></description>
				<content:encoded><![CDATA[<p>The other day I had a long conversation about serialization on Twitter about how I&#8217;ve changed my stance. </p>
<p>In the beginning I loved the convenience of serializing data from various formats like XML or JSON into classes (that more resemble structs actually). </p>
<p>I got into many debates where I held this opinion strongly. </p>
<p>But later on I built a system that you could not shut off to deploy updates. Availability was important and the system was large enough that an upgrade had to be a rolling operation where there would be multiple versions of the system online in production until the system reached consensus on a single version. </p>
<p>During these operations I witnessed something that completely changed my opinion on serialization (I can hear Darrel Miller saying &#8220;I told you so!&#8221;). </p>
<p>The components that used serialization were more brittle than the ones that did not. </p>
<p>When a v1 service gets a v2 message and then deserializes it into a struct it has lost the v2 data. If that service then decides to do something that then ends up on another v2 service, the v2 context isn&#8217;t available. </p>
<p>Some messaging frameworks or document databases make serialization very convenient and make lossless more difficult and you may not find out until it hits production because it may not be super obvious up front you&#8217;re making this trade-off.</p>
<p>Serialization is a lossy copy operation. It doesn&#8217;t matter if its for messaging or a database. If you try to deserialize v2 into v1 struct and then serialize you end up with v1. It doesn&#8217;t matter if you use formats like protobuf etc. If you serialize from the struct which is a lossy copy of the original data it doesn&#8217;t matter how flexible the format is if you&#8217;ve left it behind. </p>
<p>During that experience the systems that didn&#8217;t rely on serialization experienced no problems during the upgrades because instead of doing a lossy copy of data, they were interpreting the data and only coupling to the data they knew how to interpret but without losing the data they were ignorant existed.</p>
<img src="http://feeds.feedburner.com/~r/kellabyte/~4/iVlsfp9hwlw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kellabyte.com/2013/05/02/serialization-is-lossy/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://kellabyte.com/2013/05/02/serialization-is-lossy/</feedburner:origLink></item>
		<item>
		<title>Espresso</title>
		<link>http://feedproxy.google.com/~r/kellabyte/~3/6UnaKjzw2aw/</link>
		<comments>http://kellabyte.com/2013/05/02/espresso/#comments</comments>
		<pubDate>Thu, 02 May 2013 15:25:04 +0000</pubDate>
		<dc:creator>kellabyte</dc:creator>
				<category><![CDATA[Firehose]]></category>

		<guid isPermaLink="false">http://kellabyte.com/?p=1381</guid>
		<description><![CDATA[Espresso is an open source document database built by LinkedIn. LinkedIn created Espresso due to demands on their RDBMS based single source-of-truth reaching its limitations. Espresso provides consistency, lookups on secondary fields, full text search, limited transaction support. Espresso uses MySQL/InnoDB as storage and secondary indexing. Espresso uses Lucene for full text search. Espresso uses<a class="rmore" href="http://kellabyte.com/2013/05/02/espresso/">&#160;&#160; Read More ...</a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://data.linkedin.com/projects/espresso" target="_blank">Espresso </a>is an open source document database built by LinkedIn. LinkedIn created Espresso due to demands on their RDBMS based single source-of-truth reaching its limitations.</p>
<p>Espresso provides consistency, lookups on secondary fields, full text search, limited transaction support.</p>
<p>Espresso uses MySQL/InnoDB as storage and secondary indexing.</p>
<p>Espresso uses Lucene for full text search.</p>
<p>Espresso uses <a href="http://kellabyte.com/2013/05/02/databus/" target="_blank">Databus </a>for replication.</p>
<p>Espresso uses <a href="http://data.linkedin.com/opensource/helix" target="_blank">Helix </a>for cluster management.</p>
<p>While some people may be surprised to see a document database using MySQL as a storage engine, it&#8217;s not terribly uncommon and mature databases often have very capable database internals.</p>
<img src="http://feeds.feedburner.com/~r/kellabyte/~4/6UnaKjzw2aw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kellabyte.com/2013/05/02/espresso/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kellabyte.com/2013/05/02/espresso/</feedburner:origLink></item>
		<item>
		<title>Databus</title>
		<link>http://feedproxy.google.com/~r/kellabyte/~3/iFXEYsz8LIA/</link>
		<comments>http://kellabyte.com/2013/05/02/databus/#comments</comments>
		<pubDate>Thu, 02 May 2013 14:25:30 +0000</pubDate>
		<dc:creator>kellabyte</dc:creator>
				<category><![CDATA[Firehose]]></category>

		<guid isPermaLink="false">http://kellabyte.com/?p=1376</guid>
		<description><![CDATA[Databus is an open source project created by LinkedIn to tackle tracking changed in one database and propagating them into another. In large systems and with the diversity in the database industry these days one of the challenges people face is moving data from one database to another database so that they can leverage the data<a class="rmore" href="http://kellabyte.com/2013/05/02/databus/">&#160;&#160; Read More ...</a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://data.linkedin.com/projects/databus" target="_blank">Databus</a> is an open source project created by LinkedIn to tackle tracking changed in one database and propagating them into another.</p>
<p>In large systems and with the diversity in the database industry these days one of the challenges people face is moving data from one database to another database so that they can leverage the data in multiple ways.</p>
<img src="http://feeds.feedburner.com/~r/kellabyte/~4/iFXEYsz8LIA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kellabyte.com/2013/05/02/databus/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://kellabyte.com/2013/05/02/databus/</feedburner:origLink></item>
	</channel>
</rss>
