<?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>AKF Partners Blog</title>
	<atom:link href="http://akfpartners.com/techblog/feed/" rel="self" type="application/rss+xml" />
	<link>http://akfpartners.com/techblog</link>
	<description>The Scalability Blog</description>
	<lastBuildDate>Mon, 20 May 2013 18:15:10 +0000</lastBuildDate>
	<language></language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Common Cloud Misconceptions</title>
		<link>http://akfpartners.com/techblog/2013/05/20/common-cloud-misconceptions/</link>
		<comments>http://akfpartners.com/techblog/2013/05/20/common-cloud-misconceptions/#comments</comments>
		<pubDate>Mon, 20 May 2013 18:15:10 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Cloud infrastructure]]></category>
		<category><![CDATA[IaaS]]></category>

		<guid isPermaLink="false">http://akfpartners.com/techblog/?p=1839</guid>
		<description><![CDATA[Over the course of the last year, we have seen several of our clients either start exploring or make plans to move their SaaS products to the “Cloud” or an IaaS provider. We thought we would share some of the misconceptions we sometimes see and our advice. - I can finally focus on product development [...]]]></description>
			<content:encoded><![CDATA[<p>Over the course of the last year, we have seen several of our clients either start exploring or make plans to move their SaaS products to the “Cloud” or an IaaS provider. We thought we would share some of the misconceptions we sometimes see and our advice. </p>
<p><strong>- I can finally focus on product development and software engineering and not worry about this infrastructure stuff.</strong><br />
The notion that IaaS providers like Amazon have eliminated your worries about infrastructure is only partially true. You may not need to understand everything about designing an infrastructure with bare metal but you need to make sure you understand how your virtual configuration in the Cloud will affect your product. IaaS helps us to quickly deploy infrastructure for our products but it doesn’t eliminate the need for good high availability and fault tolerance design. There are several levers you can pull within an IaaS console and design decisions that will impact your products performance. To ensure good design and configuration, its ultra important that your SaaS product engineering team is made up of talent that has expertise in distributed application architecture design, infrastructure, security, and networking. Having this knowledge will help you design a high performing, fault isolated product for your business. </p>
<p><strong>- Going to the cloud pretty much guarantees me high availability because of auto scaling.</strong><br />
Going to the cloud will provide you with the ability to scale quickly as load increases but it will not provide you with high availability. For example, if you have a monolithic code base that you deployed and you are pushing to production on a regular basis, there is a pretty good chance you will introduce a defect at some point that impacts the availability of your entire service and business. We advise our clients to split their applications appropriately, deploy the services to separate instances, and, assuming you are using Amazon, configure them to run across multiple zones within a region at a minimum (preferably across regions). This allows you to focus dedicated teams to the individual services and reduce the likelihood of introducing a defect that takes down your system.</p>
<p><strong>- The Cloud will be cheaper than a collocation or managed hosting provider.</strong><br />
There are several factors that need to be considered before you can confirm that is cost effective. You should look closely at load on your servers. If your servers are not serving traffic around the clock, it may be better from a cost perspective for you to buy and maintain your own infrastructure in a collocation or in an existing data center you may have. The economics of this decision is changing rapidly as IaaS pricing is declining due to the competition in the industry. A simple spreadsheet exercise will help determine if the move to Cloud would be cost effective for your business.</p>
<p><strong>- The Cloud isn’t secure so we better not use it.</strong><br />
The cloud isn’t necessarily what makes or breaks security around your SaaS product. Many believe that public cloud services like Amazon’s EC2 service isn’t secure. First off, you are far more likely to experience a security breach because of an employee&#8217;s actions (either intentionally or unintentionally) than caused by an infrastructure provider. Secondly, Amazon likely has invested much more in security at various layers, including their physical data centers, than most companies we see who have their own data centers. Amazon has designed the infrastructure to isolate customer instances and you can also choose to take advantage of Amazon Virtual Private Cloud that can be configured to create an isolated network. There are various options for encrypting all of your data as well. This only touches the surface for security design options you have and they continue to be enhanced everyday. You can see why it’s important to staff your team with an engineer who has experience in this space. </p>
<p>If you are looking to move to Cloud, don’t rush into the decision. Do your homework and make sure it’s right for your business. Make sure you have the talent that has experience with the technology that will get you there and run your operations. Once you make the leap, you will have to live with it for a while. </p>
<p><a href='http://theartofscalability.com'>The Art of Scalability</a></p><p><a href='http://scalabilityrules.com'>Scalability Rules</a></p>]]></content:encoded>
			<wfw:commentRss>http://akfpartners.com/techblog/2013/05/20/common-cloud-misconceptions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>



		<item>
		<title>Enablement</title>
		<link>http://akfpartners.com/techblog/2013/05/13/enablement/</link>
		<comments>http://akfpartners.com/techblog/2013/05/13/enablement/#comments</comments>
		<pubDate>Mon, 13 May 2013 13:30:48 +0000</pubDate>
		<dc:creator>Mike Paylor</dc:creator>
				<category><![CDATA[CTO/CIO]]></category>
		<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Leadership and Management]]></category>

		<guid isPermaLink="false">http://akfpartners.com/techblog/?p=1832</guid>
		<description><![CDATA[One of the most important aspects of managing a successful technology organization is ensuring that you are practicing &#38; instilling the concept of enablement at all levels. This concept applies to both the product/service you are producing and for people. A good example for your organization is enabling decision-making at the lowest levels possible. I [...]]]></description>
			<content:encoded><![CDATA[<p>One of the most important aspects of managing a successful technology organization is ensuring that you are practicing &amp; instilling the concept of enablement at all levels. This concept applies to both the product/service you are producing and for people. A good example for your organization is enabling decision-making at the lowest levels possible. I have often seen this represented as &#8220;delegation&#8221; but I believe that enablement of decision-making is a more powerful concept than delegation which is driven from the top-down. I recently had the opportunity to lead a large infrastructure team and one of the first changes we made was breaking apart into reasonable sized <a title="PODs" href="http://akfpartners.com/techblog/2012/12/22/newsletter-pod-people/">PODs</a> with the primary purpose of ensuring that decisions for the product &amp; technology were driven from the bottom-up while guidance was flowing in from various stakeholders. Many teams practice a flavor of Agile but without enabling each POD to make the appropriate decisions you will run into organizational scalability problems.</p>
<p>The allure of IaaS &amp; PaaS is firmly rooted in the concept of enablement. Self-service is an amazing if you are a DBA, developer or even the end user of your product. The cloud may not be suitable for your needs but don&#8217;t let that stop your organization from thinking strategically about bringing those processes &amp; technologies &#8220;in-house&#8221; for scalability reasons. Implemented correctly, the infrastructure and platform you are building should enable the users and not hinder them, as is sometimes the case. Reducing the number of dependencies between technology teams for launching products is not only good for cycle time of product launches but also critical in scaling up.</p>
<p>Consider making enablement part of your technology team&#8217;s DNA and you will likely see that employee morale, productivity and other metrics like NPS will rise.</p>
<p><a href='http://theartofscalability.com'>The Art of Scalability</a></p><p><a href='http://scalabilityrules.com'>Scalability Rules</a></p>]]></content:encoded>
			<wfw:commentRss>http://akfpartners.com/techblog/2013/05/13/enablement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>



		<item>
		<title>Dilution</title>
		<link>http://akfpartners.com/techblog/2013/04/20/dilution/</link>
		<comments>http://akfpartners.com/techblog/2013/04/20/dilution/#comments</comments>
		<pubDate>Sat, 20 Apr 2013 20:28:01 +0000</pubDate>
		<dc:creator>Mike Paylor</dc:creator>
				<category><![CDATA[Career Advice]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://akfpartners.com/techblog/?p=1823</guid>
		<description><![CDATA[Last year I had the chance to hear early Facebook employee Chamath Palihapitiya speak about a broad range of topics. One of the more interesting subjects he touched on was the concept of dilution of culture. He described quite candidly how he viewed his role as a protector of facebook&#8217;s culture and that each new [...]]]></description>
			<content:encoded><![CDATA[<p>Last year I had the chance to hear early Facebook employee Chamath Palihapitiya speak about a broad range of topics. One of the more interesting subjects he touched on was the concept of dilution of culture. He described quite candidly how he viewed his role as a protector of facebook&#8217;s culture and that each new employee was a potential culture-diluter. Sure, most candidates were talented enough, but were they adding to the company culture or more likely to suck the life from it?</p>
<p>A great opportunity came for me in 2004 to join a still young PayPal. It was by no means a startup anymore but the entire engineering organization fit into the same medium sized room at that time. It was then that I first learned how important culture is and how vital it is to maintain it as you scale up. Over the course of 9 years I did my best to help hire many team members that would not only help the business achieve its&#8217; goals but maintain &amp; grow that unique culture.</p>
<p>As I embark on a new chapter in my career here at AKF Partners I&#8217;m excited to work with extremely talented people both at AKF and with the organizations we serve. I&#8217;m excited to learn about the people &amp; cultures that make these companies so successful and to help them scale.</p>
<p>However, priority #1 is clear enough: don&#8217;t dilute, add to it!</p>
<p><a href='http://theartofscalability.com'>The Art of Scalability</a></p><p><a href='http://scalabilityrules.com'>Scalability Rules</a></p>]]></content:encoded>
			<wfw:commentRss>http://akfpartners.com/techblog/2013/04/20/dilution/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>



		<item>
		<title>The Biggest Mistake with Agile</title>
		<link>http://akfpartners.com/techblog/2013/04/13/biggest-mistake-agile/</link>
		<comments>http://akfpartners.com/techblog/2013/04/13/biggest-mistake-agile/#comments</comments>
		<pubDate>Sat, 13 Apr 2013 20:00:30 +0000</pubDate>
		<dc:creator>fish</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[PDLC]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[SDLC]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://akfpartners.com/techblog/?p=1818</guid>
		<description><![CDATA[At least 75% of the dev shops that we see are using some form of Agile. Very few are following a pure form of any specific flavor i.e. Scrum, Extreme Programming, etc. but rather most are using some hybrid method. Some teams measure velocity while other don&#8217;t. Some teams have dedicated ScrumMasters while others have [...]]]></description>
			<content:encoded><![CDATA[<p>At least 75% of the dev shops that we see are using some form of Agile. Very few are following a pure form of any specific flavor i.e. Scrum, Extreme Programming, etc. but rather most are using some hybrid method. Some teams measure velocity while other don&#8217;t. Some teams have dedicated ScrumMasters while others have the engineering managers perform this role. While most team&#8217;s processes could be tweaked, none of these are the real problem. </p>
<p><img src="http://farm5.staticflickr.com/4064/4362714313_749b25ffe1_m.jpg" alt="Scrum team" /></p>
<p>The biggest mistake companies make implementing Agile and thus the cause of most of their problems is they don&#8217;t understand that Agile is a business process, not a software development methodology. Thus, the business owners or their delicates, product managers, must be involved at every step. </p>
<p>We&#8217;ve <a href="http://akfpartners.com/techblog/2012/10/04/agile-communication/">argued before</a> that Agile teams must sit together because communication degrades at a rate of square the distance. Not having product managers with the Agile team involved in the entire process and (if you&#8217;ve moved from a Waterfall methodology) not having detailed specifications, is the worst possible scenario. Developers either need someone siting beside them to help with product decisions (Agile) or a detailed spec to work from (Waterfall).</p>
<p>Agile is a business process which requires the business to be involved in the product development process. It does not mean you get to stop writing specs and not be involved.</p>
<p><a href='http://theartofscalability.com'>The Art of Scalability</a></p><p><a href='http://scalabilityrules.com'>Scalability Rules</a></p>]]></content:encoded>
			<wfw:commentRss>http://akfpartners.com/techblog/2013/04/13/biggest-mistake-agile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>



		<item>
		<title>Top 5 Posts</title>
		<link>http://akfpartners.com/techblog/2013/03/27/top-5-posts/</link>
		<comments>http://akfpartners.com/techblog/2013/03/27/top-5-posts/#comments</comments>
		<pubDate>Thu, 28 Mar 2013 03:43:07 +0000</pubDate>
		<dc:creator>fish</dc:creator>
				<category><![CDATA[Scalability Blogs and Reviews]]></category>
		<category><![CDATA[ARB]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[JAD]]></category>
		<category><![CDATA[leadership]]></category>
		<category><![CDATA[Scalability]]></category>
		<category><![CDATA[swim lane]]></category>

		<guid isPermaLink="false">http://akfpartners.com/techblog/?p=1809</guid>
		<description><![CDATA[We love data and think most things should be data-driven, as is evident from our newest book that reveals how successful companies learn from customer misbehavior. This isn&#8217;t done by asking customers what they want but rather by watching them through monitoring, logs, and alerting. This concept is summarized nicely in this article we published [...]]]></description>
			<content:encoded><![CDATA[<p>We love data and think most things should be data-driven, as is evident from our <a href="http://www.facebook.com/ThePowerOfCustomerMisbehavior">newest book</a> that reveals how successful companies learn from customer misbehavior. This isn&#8217;t done by asking customers what they want but rather by watching them through monitoring, logs, and alerting. This concept is summarized nicely in this <a href="http://gbr.pepperdine.edu/2013/02/moving-from-misuse-to-bricolage/">article we published last month</a>. In that vein, we keep track of how people read and use this blog. In this post we thought we&#8217;d share some of the most popular posts. Here are the top 5 posts that people have been reading:</p>
<ol>
<li><a href="http://akfpartners.com/techblog/2011/02/08/the-future-of-iaas-and-paas/">The Future of IaaS and Paas</a></li>
<li><a href="http://akfpartners.com/techblog/2008/07/03/joint-application-design-architecture-review-board/">JAD and ARB</a></li>
<li><a href="http://akfpartners.com/techblog/2013/01/10/dealing-shared-services/">Dealing With Shared Services</a></li>
<li><a href="http://akfpartners.com/techblog/2008/03/03/be-a-leader/">Be A Leader</a></li>
<li><a href="http://akfpartners.com/techblog/2008/05/30/fault-isolative-architectures-or-%e2%80%9cswimlaning%e2%80%9d/">Fault Isolation</a></li>
</ol>
<p>Not too surprising, our readers are interested in how to scale via clouds, better architectures, and improved processes. They are also interested in leadership, since without that scaling a great organization becomes impossible.</p>
<p>Let us know what your favorite post is. You can find a list of <a href="http://akfpartners.com/techblog/all_posts/">all our posts here</a>.</p>
<p><a href='http://theartofscalability.com'>The Art of Scalability</a></p><p><a href='http://scalabilityrules.com'>Scalability Rules</a></p>]]></content:encoded>
			<wfw:commentRss>http://akfpartners.com/techblog/2013/03/27/top-5-posts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>



		<item>
		<title>Driving Change</title>
		<link>http://akfpartners.com/techblog/2013/03/17/driving-change/</link>
		<comments>http://akfpartners.com/techblog/2013/03/17/driving-change/#comments</comments>
		<pubDate>Mon, 18 Mar 2013 00:08:18 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Leadership and Management]]></category>
		<category><![CDATA[change]]></category>
		<category><![CDATA[engineering manager]]></category>
		<category><![CDATA[leadership]]></category>
		<category><![CDATA[Management]]></category>

		<guid isPermaLink="false">http://akfpartners.com/techblog/?p=1804</guid>
		<description><![CDATA[Driving big changes can be difficult in an organization and it can be especially difficult for new managers. Change is necessary and we should never be happy with status quo as our competitors and the overall market is changing around us. The larger the organization, the harder change can be. We touched on this in [...]]]></description>
			<content:encoded><![CDATA[<p>Driving big changes can be difficult in an organization and it can be especially difficult for new managers. Change is necessary and we should never be happy with status quo as our competitors and the overall market is changing around us. The larger the organization, the harder change can be. We touched on this in an earlier blog titled <a href="http://akfpartners.com/techblog/2012/09/20/leadership-lessons-bosses/">Five Leadership Lessons From Former Bosses</a> but decided to dive into a little more detail this time. As a former manager of engineers and other talented technologists, I recall in my early days how I simply wanted to identify where we were headed with my team without giving them time to collaborate and provide input. On one occasion, we were in the midst of changing our PDLC to Agile. Agile was fairly new at the time so many didn’t understand the basis of it and in turn were resistant to using it. That problem is easily solved, right? I could just tell the team this is where we are going and this is how we are going to do it, now make sure you execute. And in a couple weeks time, poof, the change would be made and life would be good. After all, that would have been easy, right?  </p>
<p>Although I didn’t say the words “get onboard,” I might as well have. I can tell you this doesn’t work well. My team was zapped. At that point they were no longer empowered and didn’t have any ownership of the change and when that happens a team’s performance will be suboptimal. Yeah, I could use the excuse that my senior management dictated what they wanted and I could drum up a bunch of other excuses but the fact of the matter is I should have raised a flag with my leadership and encouraged better collaboration for input from the engineers, QA testers, product managers, and others. </p>
<p>There were two key learning points that I was able to take away from my experience. Technology leaders should ask themselves two simple questions before they start to drive change in their organizations.</p>
<p><strong>1) How do I make sure that my team has input and ownership of the change we are about to make? </strong></p>
<p>Sit down with the team and work with them on coming up with solutions and their recommended timing. Engineers love to problem solve and they are very good at it. Provide the team with the problem that needs solved and any constraints and let them determine the solution. For example, in the situation I described above, we needed to improve our time to market. Many products and features across the organization were being delivered late, payloads for deployments were too big, and the business was frustrated. As on overall company we decided that we would adopt Agile utilizing Scrum practices but there were still many problems that needed to be solved. Those included determining a branching strategy, determining a deployment strategy, identifying how to measure a sprints performance, and many others. By providing the context of why changes need to be made, the team will recognize the significance of their input and by allowing them to come up with solutions they will feel empowered and have ownership in the game. All of this will help you to create a higher performing engineering team.</p>
<p><strong>2) What do I need to do as a leader to establish guardrails in my organization and sustain the change as my company grows?</strong></p>
<p>Once the team has determined how to solve some of the problems, you will want to make sure that you sustain them in your organization. To do this, work with them to establish documented guardrails or principles that be used as the what. For example, the Agile Manifesto essentially identifies principles that you can use. One principle could be “Business people and developers must work together daily throughout the project.” This describes a behavior that’s needed but doesn’t identify how. The team can decide the specifics on how they will achieve the principle. We at AKF believe in establishing architectural and scaling principles that are essentially guardrails as well. (Visit our earlier blog on <a href="http://akfpartners.com/techblog/2010/07/05/evolving-architecture-and-software/">architectural principles</a> for more details.) For example, Rule Number 39 – Ensure You Can Wire on and Off Functions in our book <a href="http://scalabilityrules.com"><em>Scalability Rules</em></a> identifies the need to have a framework where you can quickly disable and enable features to minimize impact to customers when a failure occurs. You can solve this many ways and your engineers can determine what the solution should be. Once your principles are established you should monitor them to make sure they are being upheld and reward results.</p>
<p>If you ask yourself these two simple questions before diving into a big change your road to success will be much easier. Now that you have empowered your team to determine how to solve the problem and you have documented your principles and guardrails, the team should be able to operate within them and make decisions on their own. In turn, you will find that they feel empowered and you will have helped to create and maintain a higher performing team. </p>
<p><a href='http://theartofscalability.com'>The Art of Scalability</a></p><p><a href='http://scalabilityrules.com'>Scalability Rules</a></p>]]></content:encoded>
			<wfw:commentRss>http://akfpartners.com/techblog/2013/03/17/driving-change/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>



		<item>
		<title>The End of Scalability?</title>
		<link>http://akfpartners.com/techblog/2013/02/26/scalability/</link>
		<comments>http://akfpartners.com/techblog/2013/02/26/scalability/#comments</comments>
		<pubDate>Wed, 27 Feb 2013 03:44:56 +0000</pubDate>
		<dc:creator>fish</dc:creator>
				<category><![CDATA[CTO/CIO]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[Scalability]]></category>
		<category><![CDATA[SSD]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://akfpartners.com/techblog/?p=1789</guid>
		<description><![CDATA[If you received any sort of liberal arts education in the past twenty years you’ve probably read or at least had an assignment to read Francis Fukuyama’s 1989 essay &#8220;The End of History?”[1] If you haven’t read the article or the follow on book, Fukuyama argues that the advent of Western liberal democracy is the [...]]]></description>
			<content:encoded><![CDATA[<p>If you received any sort of liberal arts education in the past twenty years you’ve probably read or at least had an assignment to read Francis Fukuyama’s 1989 essay &#8220;The End of History?”[1] If you haven’t read the article or the follow on book, Fukuyama argues that the advent of Western liberal democracy is the final form of human government and therefore it is the end point of humanity&#8217;s sociocultural evolution. He isn’t arguing that events will stop happening in the future but rather that democracy will become more and more prevalent in the long term, despite possible setbacks such as totalitarian governments for periods of time.</p>
<p>I have been involved, in some form or another, in scaling technology systems for nearly two decades, which does not take into account the decade before when I was hacking on <a href="http://en.wikipedia.org/wiki/Commodore_PET ">Commodore PETs</a> and <a href="http://en.wikipedia.org/wiki/Apple_II_series ">Apple IIs</a> learning how to program. Over that time period there have been noticeable trends such as the centralization/decentralization cycle within both technology and organizations. With regards to technology, think about the transitions from mainframe (centralized) to client/server (decentralized) to web 1.0 (centralized) to web 2.0/Ajax (decentralized) as an example of the cycle. The trend that has lately attracted my attention is about scaling. I’m proposing that we’re approaching the end of scalability. </p>
<p>As a scalability consultant who travels almost every week to clients in order to help them scale their systems, I don’t make this end of scalability statement lightly. However, before we jump into my reasoning, we first need to define scalability. To some scalability means that a system needs to scale infinitely no matter what the load over any period of time. While certainly ideal, the challenge with this definition is that it doesn’t take into account the underlying business needs. Investing too much in scalability before its necessary isn’t a wise investment for a business when there are other great projects in which to invest such as more customer facing features. A definition that takes this into account defines scalability as “the ability of a system to maintain the satisfaction of its quality goals to levels that are acceptable to its stakeholders when characteristics of the application domain and the system design vary over expected operational ranges.” [2:119] </p>
<p>The most difficult problem with scaling a system is typically the database or persistent data storage. AKF Partners teaches general database and applications scale theory in terms of a three-dimensional cube where the X-axis of the cube represents replication of identical code or data, the Y-axis represents a split by dissimilar functions or services, and the Z-axis represents a split across similar transactions or data.[3] Having taught this scaling technique and seen it implemented in hundreds of systems, we know that by combining all three axes a system can scale infinitely. However, the cost of this scalability is increased complexity for development, deployment, and management of the system. But is this really the only option?</p>
<p><strong>NoSQL</strong><br />
The NoSQL and NewSQL movement has produced a host of new persistent storage solutions that attempt to solve the scalability challenges without increased complexity. Solutions such as MongoDB, a self-proclaimed “scalable, high-performance, open source NoSQL database”, attempt to solve scaling by combining replica data sets (X-axis splits) with sharded clusters (Y &#038; Z-axis splits) to provide high levels of redundancy for large data sets transparently for applications. Undoubtedly, these technologies have advanced many systems scalability and reduced the complexity of requiring developers to address replica sets and sharding.</p>
<p>But the problem is that hosting MongoDB or any other persistent storage solution requires keeping the hardware capacity on hand for any expected increase in traffic. The obvious solution to this is to host it in the cloud, where we can utilize someone else’s hardware capacity to satisfy our demand. Unless you are utilizing a hybrid-cloud with physical hardware you are not getting direct attached storage. The problem with this is that I/O in the cloud is very unpredictable, primarily because it requires traversing the network of the cloud provider. Enter Solid-State Drives (SSD).</p>
<p><strong>SSD</strong><br />
Chris Lalonde, CEO of <a href="http://www.objectrocket.com">ObjectRocket</a> a MongoDB cloud provider hosted entirely on SSDs, states that “Developers have been thinking that they need to keep their data set size the same size as memory because of poor I/O in the cloud and prior to 2.2.x MongoDB had a single lock, both making it unfeasible to go to disk in systems that require high performance. With SSDs the I/O performance gains are so large that it effectively negates this and people need to re-examine how their apps/platforms are architected.” </p>
<p>Lots of forward thinking technology organizations are moving towards SSDs. Facebook’s appetite for solid-state storage has made it the <a href="http://www.datacenterknowledge.com/archives/2011/03/10/facebooks-appetite-for-ssd-boosts-fusion-io/ ">largest customer for Fusion-io</a>, putting NAND Flash memory products in its new data centers in Oregon and North Carolina. Lalonde says “When I/O becomes cheap and fast it drastically changes how developers think about architecting their application e.g. a flat file might be just fine for storing some data types vs. the heavy over head of any kind of structured data.” ObjectRocket’s service offering also provides some other nice features such as “instant sharding” where through the click of a button provides an entire 3-node shard on demand.</p>
<p><strong>GAE</strong><br />
Besides the advances being made in leveraging NoSQL and SSDs to allow applications to scale using Infrastructure as a Service (IaaS), there are advances in Platform as a Service (PaaS) offerings such as Google App Engine (GAE) that are also helping systems scale with little to no burden on developers. GAE allows applications to take advantage of scalable technologies like BigTable that Google applications use, allowing them to <a href="https://developers.google.com/appengine/whyappengine">claim that</a>, “Automatic scaling is built in with App Engine, all you have to do is write your application code and we&#8217;ll do the rest. No matter how many users you have or how much data your application stores, App Engine can scale to meet your needs.” While GAE doesn’t have customers as large as Netflix who run exclusively on Amazon’s Web Services (AWS) their customers do include companies like the Khan Academy, which has over 3.8 million monthly unique visitors to their growing collection of over 2,000 videos. </p>
<p>So with solutions like ObjectRocket, GAE, and the myriad of others that make it easier to scale to significant numbers of users and customers without having to worry about data set replication (X-axis splits) or sharding (Y &#038; Z-axis splits), are we at the end of scalability? If we’re not there yet we soon will be. “But hold on” you say, “our systems are producing more and consuming more data…much more.” No doubt the amount of data that we process is rapidly expanding. In fact, according to the <a href="http://www.datacenterknowledge.com/archives/2009/05/19/digital-universe-now-487-billion-gigabytes/ ">EMC sponsored IDC study in 2009</a>, the amount of digital data in the world was almost 500 exabytes and doubling every 18 months. But when we combine the benefits we achieve from such advances as transistor density on circuits (Moore’s Law), NoSQL technologies, cheaper and faster storage (e.g. SSD), IaaS, and PaaS offerings, we are likely to see the end of the need for most applications developers to care about manually scaling their applications themselves. This will at some point in the future all be done for them in “the cloud”.</p>
<p><strong>So What?</strong><br />
Where does this leave us as experts in scalability? Do we close up shop and go home? Fortunately, no, there are still reasons that application developers or technologists need to be concerned with splitting data replica sets and sharding data across nodes. Two of these reasons are 1) reduce risk and 2) improve developer efficiency.</p>
<p><strong>Reducing Risk</strong><br />
As we’ve <a href="http://akfpartners.com/techblog/2012/07/29/reduce-risk/">written about before</a>, risk has several high-level components (probability of an incident, duration, and % of customers impacted). Google “GAE outages” or “AWS outages” or any other IaaS or PaaS provider and the word “outage” and see what you find. All hosting providers that I’m aware of have had outages in their not-so-distant past. GAE had a <a href="http://googleappengine.blogspot.com/2012/10/about-todays-app-engine-outage.html">major outage on October 26, 2012</a> for 4 hours. GAE proudly states at the bottom of their outage post “Since launching the <a href="http://googleappengine.blogspot.com/2011/01/announcing-high-replication-datastore.html">High Replication Datastore</a> in January 2011, App Engine has not experienced a widespread system outage.” Which sounds impressive until you do the math and realize that this one outage caused their availability to drop to 99.975% for the entire year and a half that the service has been available. Not to mention that they have much more frequent local outages or issues that affect some percentage of their customers. We have been at clients when they’ve experienced incidents caused by GAE.</p>
<p>The point here is not to call out GAE, trust me all other providers have the exact same issue. The point is that when you rely on a 3rd party for 100% of your availability you by definition have their availability as your ceiling. Now add on your availability issues because of maintenance, code releases, bugs in your code, etc. Why is this? Incidents are almost always have multiple root causes that include architecture, people, and process. Everything eventually fails including our people and processes. </p>
<p>Given that you cannot reduce the probability of an incident to 0%, no matter whether you run the datacenter or a 3rd party provider does, you must focus on the other risk factors (reduce the duration and reduce the % of customers impacted). The way you achieve this is by splitting services (Y-axis splits) and by separating customers (Z-axis splits). While leveraging AWS’s RDS or GAE’s HRD provides cross availability zone / datacenter redundancy, in order to have your application take advantage of these you still have to do the work to split it. And if you want even higher redundancy (across vendors) you definitely have to do the work to split applications or customers between IaaS or PaaS providers.</p>
<p><strong>Improving Efficiency</strong><br />
Let’s say you’re happy with <a href="https://developers.google.com/appengine/sla">GAE’s 99.95% SLA</a> which no doubt is pretty good especially when you don’t have to worry about scaling. But don’t throw away the AKF Scalability Cube just yet. One of the major reasons we get called in to clients is because their BOD or CEO aren’t happy with how the development team is delivering new products. They recall the days when there were 10 developers and features flew out of the door. Now that they have 100 developers, everything seems to take forever. The reason for this loss of efficiency is that with a monolithic code base (no splits for different services) all 100 developers trying to make changes and add functionality, they are stepping all over each other. There needs to be much more coordination, more communication, more integration, etc. By splitting the application in to separate services (Y-axis splits) with separate code bases the developers can split into <a href="http://akfpartners.com/techblog/2012/12/22/newsletter-pod-people/">independent teams or pods</a> that makes them much more efficient.</p>
<p><strong>Conclusion</strong><br />
We are likely to see continued improvement in IaaS and PaaS solutions that auto-scale and perform to such a degree that most applications will not need to worry about scaling because of user traffic. However, this does not obviate the need to consider scaling for greater availability / vendor independence or to improve a development teams efficiency. All great technologist, CTOs, or application developers will continue to care about scalability for these and other reasons. </p>
<p> <br />
<strong>REFERENCES</strong><br />
1. Francis, F., The End of History? The National Interest, 1989. 16(4).<br />
2. Duboc, L., E. Leiter, and D. Rosenblum, Systematic Elaboration of Scalability Requirements through Goal-Obstacle Analysis. 2012.<br />
3. Abbott, M.L. and M.T. Fisher, The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise. 2009: Addison-Wesley Professional.</p>
<p><a href='http://theartofscalability.com'>The Art of Scalability</a></p><p><a href='http://scalabilityrules.com'>Scalability Rules</a></p>]]></content:encoded>
			<wfw:commentRss>http://akfpartners.com/techblog/2013/02/26/scalability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>



		<item>
		<title>Signs That You May Be Disconnected From Your Business</title>
		<link>http://akfpartners.com/techblog/2013/02/13/signs-disconnected-business/</link>
		<comments>http://akfpartners.com/techblog/2013/02/13/signs-disconnected-business/#comments</comments>
		<pubDate>Wed, 13 Feb 2013 17:26:48 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[CTO/CIO]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[business metrics]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://akfpartners.com/techblog/?p=1776</guid>
		<description><![CDATA[We as engineers love to problem solve. In fact, we love to explore new technologies and debate with our colleagues as to what may be the best to use. Should we use Python? Should we use PHP? Should we use Java? Should we try Google’s App Engine and code in GO? Should we use Amazon [...]]]></description>
			<content:encoded><![CDATA[<p>We as engineers love to problem solve. In fact, we love to explore new technologies and debate with our colleagues as to what may be the best to use. Should we use Python? Should we use PHP? Should we use Java? Should we try Google’s App Engine and code in GO? Should we use Amazon Web Services exclusively for our product? What database technology should we use? All of these decisions are important and factors such as skillsets, security, performance, and cost should be considered. We love to code and see the product in action as it provides us with a sense of accomplishment. Once we are done with a project and its deployed in production we typically celebrate all of the hard work that went into the solution and we move on to the next project. Many times after diving deep into the technical aspect of the solution, for weeks and maybe even months, we wake up and we discover we are not in touch with the business like we should be. All of us have seen this in practice and many of our clients face this challenge. </p>
<p>What are some of the signs that you may not be aligned closely enough with the business and its performance and what should you do about it?</p>
<p><strong>1) Not understanding feature impact</strong> &#8211; New features are introduced into your product without an understanding of the business impact.</p>
<p>You should never introduce new features without understanding the impact it is supposed to have on your business. In other words, establish a business goal for new features. For example, a new feature that allows for one click purchase is expected to improve conversion rates by 15% within 2 months. Remember all goals should be SMART goals (per chapter 1 in <a href="http://theartofscalability.com" target="_blank">The Art of Scalability</a> – Specific, Measurable, Attainable, Realistic, and Time constrained).</p>
<p><strong>2) Celebrating launch and not success</strong> &#8211; Upon deployment of your product and confirmation that everything is working as expected, fireworks go off, confetti falls from the ceiling, and the gourmet lunch is ordered. </p>
<p>While recognizing your team for their efforts to launch a feature can be important, you really should celebrate when you have reached the business goal that is associated with that feature (see item #1 above). This might be achieving a revenue target, increasing the number of active accounts, or reaching a conversion target. If you deploy a feature or a product, and your business targets are not met as expected, you have more work to do. This should not be a surprise. Agile development’s basic premise is that we do not know what the final state of the feature and thus we must iterate.</p>
<p><strong>3) No business metric monitoring</strong> &#8211; Your DevOps team is alerted that something is wrong with one of your services but you rely on your customer support or service desk to tell you if customers are impacted.</p>
<p>This is something that many of our clients struggle with. We believe its critical to detect a problem before you customers have to tell you or you have to ask them. You should be able determine if your business is being impacted without asking your customers. </p>
<p>By monitoring real time business metrics and comparing the actual data to a historical curve you can more quickly detect if there is a problem and avoid sifting trough alerting and monitoring white noise that your systems will inevitability produce. For more details on our preferred strategy, visit one of <a href="http://akfpartners.com/techblog/2009/06/15/monitoring-strategies/" target="_blank">our earlier blogs</a>. You can also read more about the Design To Be Monitored principle in our book <a href="http://scalabilityrules.com" target="_blank">Scalability Rules</a>.
</li>
</ol>
<p>As you company grows, make sure that your product, your engineering team, and your technical operations are closely aligned with your business. We firmly believe that we as technologists must stay aligned with our business for success. In fact, we really are the business. Our solutions enable the company to earn revenue. </p>
<p><a href='http://theartofscalability.com'>The Art of Scalability</a></p><p><a href='http://scalabilityrules.com'>Scalability Rules</a></p>]]></content:encoded>
			<wfw:commentRss>http://akfpartners.com/techblog/2013/02/13/signs-disconnected-business/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>



		<item>
		<title>AKF Survey</title>
		<link>http://akfpartners.com/techblog/2013/02/06/akf-survey/</link>
		<comments>http://akfpartners.com/techblog/2013/02/06/akf-survey/#comments</comments>
		<pubDate>Wed, 06 Feb 2013 16:35:41 +0000</pubDate>
		<dc:creator>fish</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://akfpartners.com/techblog/?p=1771</guid>
		<description><![CDATA[If you have interacted with any of the AKF Partners over the past six years (engagements, due diligence, seminars, etc.), we&#8217;d love to hear from you. Please take a few minutes to fill out this completely anonymous, 15 question survey. Thanks!! The Art of ScalabilityScalability Rules]]></description>
			<content:encoded><![CDATA[<p>If you have interacted with any of the AKF Partners over the past six years (engagements, due diligence, seminars, etc.), we&#8217;d love to hear from you. Please take a few minutes to fill out this completely anonymous, <a href="https://cwru.qualtrics.com/SE/?SID=SV_a2WAD9ogQWpur1b">15 question survey</a>. Thanks!! </p>
<p><a href='http://theartofscalability.com'>The Art of Scalability</a></p><p><a href='http://scalabilityrules.com'>Scalability Rules</a></p>]]></content:encoded>
			<wfw:commentRss>http://akfpartners.com/techblog/2013/02/06/akf-survey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>



		<item>
		<title>What Makes You Successful?</title>
		<link>http://akfpartners.com/techblog/2013/01/23/successful/</link>
		<comments>http://akfpartners.com/techblog/2013/01/23/successful/#comments</comments>
		<pubDate>Wed, 23 Jan 2013 18:28:34 +0000</pubDate>
		<dc:creator>Wabb</dc:creator>
				<category><![CDATA[CEO]]></category>
		<category><![CDATA[Leadership and Management]]></category>

		<guid isPermaLink="false">http://akfpartners.com/techblog/?p=1767</guid>
		<description><![CDATA[It is difficult &#8211; research shows nearly impossible &#8211; for any of us to accurately answer the question of &#8220;What makes us successful?&#8221; At the intersection of cognitive biases (especially attribution bias) and the Dunning-Kruger effect lies this (to my knowledge unnamed) phenomenon that keeps all of us from understanding how our contributions might have [...]]]></description>
			<content:encoded><![CDATA[<p>It is difficult &#8211; research shows nearly impossible &#8211; for any of us to accurately answer the question of &#8220;What makes us successful?&#8221;</p>
<p>At the intersection of cognitive biases (especially <a href="http://en.wikipedia.org/wiki/Attribution_bias">attribution bias</a>) and the Dunning-Kruger effect lies this (to my knowledge unnamed) phenomenon that keeps all of us from understanding how our contributions might have resulted in a successful outcome.  <a href="http://en.wikipedia.org/wiki/Cognitive_bias">Cognitive biases</a> cause us to take far too much credit for successes, and incorrectly attribute the reasons for our success.   The Dunning-Kruger effect causes us overrate our abilities to achieve similar success in the future.   All of these work against us in trying to determine what allowed us to be successful.</p>
<p>Incorrectly attributing the causes for our success can be a huge problem.  Imagine that you decide that the reason your company achieved a particular successful outcome is because of your sales ability as a senior executive.  You might be inclined to believe, based on your personal analysis that your sales ability and sales execution will result in similar future successes.  There are two potential problems here.  The first is that we  incorrectly attributed the reason for success when the real reason was due to, for instance, the efficacy of our product.  The second is that we overrated our contribution and abilities when the real credit should go somewhere else.   Clearly both can lead to future disasters down the road.</p>
<p>You may be thinking that many people are successful time and time again by taking similar actions and by employing similar behaviors.  That is absolutely true.  The issue is not whether we can repeat our past successes – it’s that we can’t accurately identify (for ourselves) which actions or behaviors led to those successes.</p>
<p>Research suggests that we are much more likely, if we apply disciplined process, to learn from failures as compared to successes.  Even greater learning can be gleaned from comparing our <a href="http://michael-roberto.blogspot.com/2008/10/learning-from-success-and-failure.html">successes and failures</a>.   Furthermore, involving others helps us triangulate and either validate or invalidate our beliefs as to the causes of both successes and failures.  The key here is disciplined process coupled with introspection and outsider perspective to guard against cognitive bias and eliminate the Dunning-Kruger effect.</p>
<p>In summary:</p>
<p>1)      We are ill equipped to identify the causes of success without outside help.</p>
<p>2)      We are better equipped to identify the causes of failure.</p>
<p>3)      We are best equipped to compare successes and failures and draw conclusions.</p>
<p>4)      It is always best to involve multiple people in the identification of either success or failure.</p>
<p><a href='http://theartofscalability.com'>The Art of Scalability</a></p><p><a href='http://scalabilityrules.com'>Scalability Rules</a></p>]]></content:encoded>
			<wfw:commentRss>http://akfpartners.com/techblog/2013/01/23/successful/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>



	</channel>
</rss>
