<?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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>VentureBeat &#187; scaling</title>
	<atom:link href="http://venturebeat.com/tag/scaling/feed/" rel="self" type="application/rss+xml" />
	<link>http://venturebeat.com</link>
	<description>News About Tech, Money and Innovation</description>
	<lastBuildDate>Fri, 24 May 2013 05:37:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='venturebeat.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/c6d8c27ffa1c5a7f106f97e434437baf?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>VentureBeat &#187; scaling</title>
		<link>http://venturebeat.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://venturebeat.com/osd.xml" title="VentureBeat" />
	<atom:link rel='hub' href='http://venturebeat.com/?pushpress=hub'/>
<copyright>Copyright 2013, VentureBeat</copyright>		<item>
		<title>Don&#8217;t panic! Here&#8217;s how to quickly scale your mobile apps</title>
		<link>http://venturebeat.com/2013/04/06/dont-panic-heres-how-to-quickly-scale-your-mobile-apps/</link>
		<comments>http://venturebeat.com/2013/04/06/dont-panic-heres-how-to-quickly-scale-your-mobile-apps/#comments</comments>
		<pubDate>Sat, 06 Apr 2013 15:00:52 +0000</pubDate>
		<dc:creator>Mike Maelzer</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[featured]]></category>
		<category><![CDATA[mobile apps]]></category>
		<category><![CDATA[Nerd Day]]></category>
		<category><![CDATA[node]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[scaling]]></category>

		<guid isPermaLink="false">http://venturebeat.com/?p=711843</guid>
		<description><![CDATA[<p><span class="post-label guest-post">Guest Post</span> This is a document of how we screwed up. And then how we fixed our screw-ups. Please learn from&#160;us.</p>
<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=venturebeat.com&#038;blog=342986&#038;post=711843&#038;subd=venturebeat&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img src="http://venturebeat.files.wordpress.com/2012/08/lastguardiandontpanic.jpg?w=640&#038;h=480" alt="The Last Guardian -- Don&#039;t Panic!" width="640" height="480" class="alignnone size-full wp-image-506504" /></p>
<p>We dubbed it “our Christmas,” the day when all our good engineering deeds would pay off and we’d be rewarded with a bounty of happy active users for our mobile app, <a href="https://avocado.io/" target="_blank" target="_blank">Avocado</a>. </p>
<p>Up until this point we’d enjoyed steady and predictable growth, but with only two weeks&#8217; notice we realized a few big, coinciding promotions would bring us a 30x increase in traffic and a membership boom for which we weren’t yet prepared.</p>
<p>Scaling for a “Christmas” moment is scary; it forces you to confront all the design decisions you may have made earlier when bootstrapping your app. No matter what the hidden weaknesses are, a massive group of new users will find them. </p>
<p>With only two weeks, how could we scale our infrastructure to meet demand and not fall over?</p>
<h3>Preparing for scale</h3>
<p>This is a document of how we screwed up. And then how we fixed our screw-ups. Please learn from us.</p>
<p>At first, we thought we knew where our weak points were. Well, until we ran some tests and found our problems were in a completely different place.</p>
<p>We’ve been using Amazon’s Web Services. Here’s the initial configuration of our deployment:</p>
<blockquote><p>1 frontend server (stored: API, web presence, socket.io, HAProxy, stunnel/SSL encryption)<br />
1 Redis server<br />
1 MySQL server<br />
1 batch server (running miscellaneous daemons)
</p></blockquote>
<p>Our API server was using Node.js since it’s lightweight, fast, easy to code for, and has a large community with some solid libraries we use (and some we have written and shared).</p>
<p>Given the results of early tests and under limited resources and time, we understood where we needed to focus: new user signups &#8212; clearly our most complex process. We put our energies into finding the pain points and where the system would die if we had a sudden influx. This was an important business decision: You can let a few normal day-to-day activities fail, but you don’t want new user creation to fail.</p>
<h3>Better testing</h3>
<p>Smart scaling required us, as a wise man once said, to check ourselves before we irreparably wrecked ourselves. In other words, we tested, tested, and tested some more.</p>
<p>Early tests weren’t good enough so we created a replica environment: entire duplicates of our database and existing server and partitioned them off so nothing would affect our production environment. We ran through some common use cases like account creation as well as messaging and uploading images. We saw where Avocado failed and at what rates.</p>
<p><strong>Pro Tip #1:</strong> We used much smaller EC2 instances in our test environment than in production. Not only does that provide limited resources all-around to more easily find problems, but it&#8217;s considerably cheaper as you pay for the amount of hardware you use on AWS.</p>
<p><strong>Pro Tip #2:</strong> We built test scripts as well as used a tool called jmeter to simulate tens of thousands of user signups per minute.</p>
<p>Our testing process: Run the scripts, find weak points, re-run the scripts. We then experimented to see what would happen if, for instance, we added a second server or if we took advantage of all the CPUs on a given server.</p>
<p>We started to see things immediately. Any time we had thousands of users signing up at one time, things would grind to a halt and connections to Avocado would take ~30 seconds to complete.</p>
<p>What we discovered: Any time Node.js spawned off a separate process, the system would take a hit. At the time, we were spawning off a Python process to send verification emails and another for image resizes (required when a user uploads a photo to their activity stream). When that happened, we’d see a big ol’ CPU spike. We realized it was those processes that were slowing everything down.</p>
<p>Well, it was the processes. And the fact that we had everything on just one box.</p>
<p>We also noticed slow database query response times. We saw in the test environment that a handful of MySQL queries were showing up in MySQL&#8217;s slow query log (for instance, if we queried to see if a certain email address had received an invitation to join their “boo” on Avocado).</p>
<p><strong>Pro Tip #3:</strong> MySQL query optimization can be something of a dark art but speeding up queries can be as easy as adding additional indexes to a couple tables.</p>
<p>One last thing: SSL encryption/decryption was a major load on the CPU as well, but we didn’t know to what degree it would impact the system under heavy user traffic in production.</p>
<h3>What we changed after testing</h3>
<p>Our first fix was to rewrite the email system, previously in Python, in Node.js so it wouldn’t need to call up another process. Moving to a node.js mailing library meant we could send 3x to 5x the number of emails in a period of time as it would take to call the external python program.</p>
<p>Next, we put stunnel (SSL encryption handler) and HAProxy onto their own EC2 server so we wouldn’t overload our core services.</p>
<p>We had a few possible solutions for the image resizing problem found in testing where spawning ImageMagick processes from node.js proved to be a huge resources hog. We explored the option of leveraging <a href="https://github.com/mash/node-imagemagick-native" target="_blank" target="_blank">some faster libraries</a> and third-party <a href="http://www.imgix.com/" target="_blank" target="_blank">image resizing services</a>.</p>
<p>But we ended up not rewriting any code or using any services. Either may have worked, but we didn’t want to do last minute code changes a day before our big promotion. So instead, we deployed four new EC2 instances whose sole purpose was image resizing. We took these down after the promotion.</p>
<p>Currently we&#8217;re back to just resizing images on our normal frontend servers (the servers that serve the API and Web page/client). For the future, we&#8217;d like to leverage a service that we can upload images to and request whatever size we want as we need them, thereby offloading the hardware intensive operation of image manipulation to someone else.</p>
<h3>During “Christmas”</h3>
<p>On the second day after “Christmas” began, we were woken up early in the morning by a notification that our server response times had slowed to a crawl due to traffic. The frontend server&#8217;s resources were maxed out. This, admittedly, was not our favorite way to start the weekend. #startuplife</p>
<p>We deployed a second frontend server and routed half the traffic to that server.</p>
<p>To review: At this point, we now had:</p>
<blockquote><p>2 frontend servers<br />
1 HAProxy/stunnel server<br />
1 Redis server<br />
1 MySQL server<br />
1 batch server (running miscellaneous daemons)<br />
4 image resizing servers</p></blockquote>
<p>From that point onward, we kept an eye on servers and rolled out new EC2 instances as traffic increased.  (We maxed out at 15 EC2 instances.)</p>
<p>Prior to adding all those servers, we came across another issue in testing that we waited to fix until we actually needed it: We realized that the larger EC2 instances had multiple CPUs available that would go mostly unused on our API servers due to the fact that node.js is single threaded. The HAProxy server was only pointed at one instance per box. We waited to deploy a fix because the solution was somewhat experimental &#8212; we didn’t want a “guess&#8221; to go to production. Yeah, it turns out we should’ve gambled on that guess.</p>
<p>All the while, whenever we would update the HAProxy configuration to handle our latest scaling solution, Avocado would go down for 1 to 2 seconds as our HAProxy restarted, thus loading the new config. Our next task was to create a redundant HAProxy server to prevent any down time.</p>
<p>In response, we used the Elastic Load Balancer to route traffic to the two HAProxy servers. The Elastic Load Balancer also handled the SSL encryption which took a huge load off of the proxy boxes. This allowed us to downsize the proxy boxes considerably, thus saving money in EC2 instance costs.</p>
<p>Everything seemed good. For, like, five minutes. Then there was socket.io.</p>
<p>We discovered our socket.io servers began to seriously eat up resources. Up to this point, we had a single socket.io server instance running on one of our two frontend servers. Which meant if we ever needed to update the frontend server, even if it had nothing to do with socket.io, our socket.io server would go down. It would only be a blip, but it’d still result in downtime. Downtime = sad users.</p>
<p>Scaling socket.io to multiple servers is tricky because if a user is connected to one socket.io server, they need to stay connected to that same one for the entire session &#8211; another socket.io server won’t have their credentials if they’re suddenly moved. So, we used something called <a href="http://blog.davidmisshula.com/blog/2013/02/04/configure-haproxy-to-scale-multiple-nodes-with-stickiness-and-ssl/" target="_blank" target="_blank">“sticky sessions”</a> to keep users connected to the same server for the life of their session. (When you home screen the app, we close the socket.io connection, and when you open the app again, we create another socket.io connection for the user.) Sticky sessions sets a cookie for the life of the session so it knows what socket.io server to send you to every single time. HAProxy will see that cookie and send you to the right socket.io server.</p>
<p>On that note, we’d like to say that while WebSockets are the new hotness (and while socket.io takes advantage of it), mobile apps should be warned, Websockets will not work on some cellular networks worldwide.</p>
<p>Instead, we had to use XHR-polling with socket.io, which uses HTTP requests to simulate a real-time connection. Furthermore, Amazon&#8217;s Elastic Load Balancer didn’t support WebSockets, so we had to use XHR-polling regardless.</p>
<p>Once that issue was resolved, we scaled out to two socket.io servers. After this initial scaling, we moved the socket.io server to its own box &#8211; inside of that we could have 8 socket.io servers (one per CPU), so we had a total of 16 instances of socket.io servers.</p>
<p>I&#8217;m sure at this point you&#8217;re saying, &#8220;16 socket.io servers?! You&#8217;re doing something wrong.&#8221; And in thinking that, you&#8217;d be right. So, we changed something else to improve our performance: database connection pooling.</p>
<p>Prior to this we had one connection to the database per server instance. Any time a process wanted to talk to our database it had to get in line. The process happened so quickly that the line wasn’t very long, but since we only had a single connection per server instance we ended up using a lot more resources than necessary.</p>
<p>For example, our socket.io servers were eating up 60 percent of the box’s CPUs across all 8 cores because of only having one connection to the database per socket.io server instance. When we added the connection pooling, we added anywhere from 2 to 10 connections to the database per server instance.</p>
<p>We didn’t do this connection pooling before mostly due to lack of time and because we didn’t want to make major changes to our database code with only three days before the promotion. The connection pooling meant that usage went from 60 percent of CPU to 3 percent. Response times were dramatically improved all around.</p>
<h3>Going international</h3>
<p>Our “Christmas” event took us global. And we hadn’t adequately prepared for that. Users in other parts of the world were connecting to our servers all the way in NorCal. And that meant sloooow connections. We have since launched servers throughout the world, relying on Amazon to route traffic based on latency.</p>
<p>And that’s all part of our&#8230;</p>
<h3>Post-Christmas planning</h3>
<p>We’re still in the afterglow of this growth and while things are slightly less hectic, we also have quite a few other big events planned, and each of those mean more scaling.</p>
<p>We expect to be using auto-deployment strategies. For example, Amazon will deploy new boxes automatically based on certain metrics, letting us deploy new servers when their average CPU usage exceeds a certain percentage.</p>
<p>One concern we’re talking about though: if you do auto-scaling wrong you might accidentally deploy 100 boxes&#8230; and then you’re paying for 100 boxes. So we’re cautiously proceeding here.</p>
<p>Biggest lesson learned: It would have been great to start the scaling process much earlier. Due to time pressure we had to make compromises –like dropping four of our media resizer boxes. While throwing more hardware at some scaling problems does work, it’s less than ideal.</p>
<p>Generally, it’s hard to know in advance what you’re going to need unless you know exactly what growth to expect. So plan for the worst, hope for the best, and good luck out there.</p>
<p><strong>TL;DR:</strong> Plan ahead. Test your servers until they fall to pieces. Eat your veggies.</p>
<p>P.S. We’re hosting an <a href="http://androidnight.eventbrite.com/" target="_blank" target="_blank">Android Hack Night</a> during Google IO this year; come by and chat us up if you want to learn more about what we did. </p>
<br />Filed under: <a href='http://venturebeat.com/category/dev/'>Dev</a>, <a href='http://venturebeat.com/category/mobile/'>Mobile</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=venturebeat.com&#038;blog=342986&#038;post=711843&#038;subd=venturebeat&#038;ref=&#038;feed=1" width="1" height="1" /><div class="post-meta-blurb post-meta-after blurb-cat-dev"><hr />

<a href="http://spr.ly/SAPStartups" data-vb-ga-outbound="SAPboilerplate"><img class="alignleft  wp-image-733023" alt="SAP Startup Focus" src="http://venturebeat.files.wordpress.com/2011/05/sap-sfp-vert11.png" width="135" height="88" /></a>Big Data and Predictive/Real-time Analytics startups: Are you looking to jumpstart development &amp; accelerate market traction? Sign up for the SAP Startup Focus program to receive technology, support, resources and community to help you develop new applications on SAP HANA, a cutting edge database platform. <a href="http://spr.ly/SAPStartups" data-vb-ga-outbound="SAPboilerplate">Get started here</a>, and enter promo code “VB2013″ on the form.

<hr /></div><style type="text/css">.blurb-cat-dev hr {
margin: 10px 0 10px 0;
}</style>]]></content:encoded>
			<wfw:commentRss>http://venturebeat.com/2013/04/06/dont-panic-heres-how-to-quickly-scale-your-mobile-apps/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<enclosure url="http://venturebeat.files.wordpress.com/2012/08/lastguardiandontpanic.jpg" /><source url="http://venturebeat.com/2013/04/06/dont-panic-heres-how-to-quickly-scale-your-mobile-apps/">Don&#8217;t panic! Here&#8217;s how to quickly scale your mobile apps</source>
		<media:content url="http://0.gravatar.com/avatar/f0c16a1fc7463e62363a4b09b345437c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Jolie</media:title>
		</media:content>

		<media:content url="http://venturebeat.files.wordpress.com/2012/08/lastguardiandontpanic.jpg" medium="image">
			<media:title type="html">The Last Guardian -- Don&#039;t Panic!</media:title>
		</media:content>
	</item>
		<item>
		<title>Scale don’t fail: 3 proven fixes for your company’s growing pains</title>
		<link>http://venturebeat.com/2013/02/27/scale-dont-fail-3-proven-fixes-for-your-companys-growing-pains/</link>
		<comments>http://venturebeat.com/2013/02/27/scale-dont-fail-3-proven-fixes-for-your-companys-growing-pains/#comments</comments>
		<pubDate>Thu, 28 Feb 2013 00:46:55 +0000</pubDate>
		<dc:creator>Farhan Thawar</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Entrepreneur]]></category>
		<category><![CDATA[Small Biz]]></category>
		<category><![CDATA[company]]></category>
		<category><![CDATA[fast growth]]></category>
		<category><![CDATA[featured]]></category>
		<category><![CDATA[firing]]></category>
		<category><![CDATA[growing]]></category>
		<category><![CDATA[growing pains]]></category>
		<category><![CDATA[growth]]></category>
		<category><![CDATA[hiring]]></category>
		<category><![CDATA[scaling]]></category>

		<guid isPermaLink="false">http://venturebeat.com/?p=629317</guid>
		<description><![CDATA[<p><span class="post-label guest-post">Guest Post</span> When scaling a company, it’s the easy things that become most difficult. Bigger teams often mean bigger&#160;headaches.</p>
<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=venturebeat.com&#038;blog=342986&#038;post=629317&#038;subd=venturebeat&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><i><a href="http://venturebeat.com/2013/02/27/scale-dont-fail-3-proven-fixes-for-your-companys-growing-pains/jack-giant-killer/" rel="attachment wp-att-630267"><img class="aligncenter size-full wp-image-630267" alt="jack-giant-killer" src="http://venturebeat.files.wordpress.com/2013/02/jack-giant-killer.jpg?w=755&#038;h=570" width="755" height="570" /></a>By Farhan Thawar, VP of Engineering, </i><a href="http://www.xtremelabs.com/" target="_blank" target="_blank"><i>Xtreme Labs</i></a></p>
<p>When scaling a company, it’s the easy things that become most difficult. Whether you’re bringing on new employees, organizing team workloads, or simply trying to keep open lines of communication, bigger teams often mean bigger headaches.</p>
<p>In five years, Xtreme Labs has grown from an office of eight to a staff of 250.</p>
<p>While many companies stumble at this point, our business goals for 2013 require us to bring on 100 more people by year’s end. How did we reach this point and what will allow us to meet the growth required for 2013, you ask?</p>
<p>Here are three tips that every growing software company needs to consider in order to grow consistently, efficiently and effectively.</p>
<h3>Hire fast, fire faster</h3>
<p>This mantra comes from <a href="http://www.bothsidesofthetable.com/2011/05/26/startup-mantra-hire-fast-fire-fast/" target="_blank" target="_blank">entrepreneur-turned-VC Mark Suster</a>.</p>
<p>Interviews are a terrible predictor of performance. Candidates often test as false positives and false negatives. For example, a candidate could have the ideal skill-set for the position, but may not have put her best foot forward in a two-hour interview. When software companies ask coding questions, expect answers on whiteboards, and disqualify for giving the wrong answer, they are forgetting that most people don’t write code on whiteboards.</p>
<p>This scenario sets the candidate up to fail because it forces her to use a method that few engineers use in their regular workday.</p>
<p>The opposite may also happen: she may have mastered the interview, but is an incompatible fit in skills or culture. How do you counteract these scenarios?</p>
<p>Don’t drop the concept of a defined interview process altogether. Instead, recognize that interviews aren’t perfect. Ask challenging questions that try to establish how the candidate thinks, and don’t disqualify someone for giving the wrong answer.</p>
<p>Organize your work environment to be a good indicator of whether or not an individual is a good fit relatively quickly. This is a better predictor of performance because it uses real in-work data instead of interview data. Instead of trying to create questions that elicit a symptom of fit, build performance indicators directly into the culture and work experience. A lot of companies follow a “hire slow, fire fast” mentality, which involves an extremely rigorous interview process but often results in throwing the baby out with the bathwater.</p>
<p>Instead of using the interview as the proxy for performance, use an internship or a few months of work experience, for valid, real-world data. Recognize that “<a href="http://en.wikipedia.org/wiki/The_map_is_not_the_territory" target="_blank" target="_blank">the map is not the territory</a>;” a great interviewee is not equivalent to a great employee.</p>
<h3>Monotasking = efficiency</h3>
<p>Over the past few years, it has become normal for people to do many things at the same time. <a href="http://www.thenewatlantis.com/publications/the-myth-of-multitasking" target="_blank" target="_blank">Now, we&#8217;re starting to go overboard with it.</a></p>
<p>In multitasking, the time it takes to switch between tasks, also known as the context switch, becomes extremely expensive as more and more tasks are attempted simultaneously. When you examine context switching costs in aggregate, it’s clear that multitasking wastes a lot of time.</p>
<p>People often think the end-goal is to be the most efficient multitasker possible. They take joy and relief, in catching up on their e-mails during a meeting. However, multitasking often leads to messing two things up simultaneously. Should we be rewarding employees for this behavior?</p>
<p>Emphasize the idea of monotasking—doing one thing at a time.</p>
<p>Implement processes like pair programming that allow your engineers to monotask. Teams of two that are accountable to each other are less likely to get distracted by e-mail, the Internet and social networks. Consider organizing an open, agile team room where everyone can see what others are up to.</p>
<h3>Don’t let the calendar dictate when to meet</h3>
<p>It’s extremely difficult to have an effective one-on-one meeting.</p>
<p>People are busy and often don’t prepare properly. An effective one-on-one requires both sides to be in the right mindset and to queue up topics, requiring regular bookkeeping. However, these necessities usually don’t coincide in the real world, and the reason why is simple: A career reflection moment is unlikely to happen during a scheduled one-on-one.</p>
<p>When an issue arises, come together and fix it right away. Being available to host an impromptu meeting allows employees to grab you for a chat while the topic and context are fresh. It’s also possible to combine the merits of an unscheduled one-on-one with a 15 or 20-minute lag time in order for both sides to prepare properly.</p>
<p>As companies grow in size, coordination costs increase. As headcount increases so does the overall communication. A potential alternative to unscheduled one-on-ones is to host scheduled meetings, and cancel them if neither side needs it. At the end of the day, everyone has their own management style, and it important for managers to remain flexible when communicating with their team.</p>
<p>Filtering out candidates post-hire, monotasking, and impromptu meetings, are just a few of the principles we’ve used at Xtreme Labs to guide our growth while protecting our company culture.</p>
<p>If you’re managing a fast-growing company, we hope they come in handy for you too.</p>
<div>
<p><i>Named one of “</i><a href="http://bit.ly/emD8WA" target="_blank" target="_blank"><i>Toronto’s Top 25 Most Powerful People</i></a><i>,</i><i>”</i><i> </i><i>Farhan Thawar is a well-known and respected figure in</i><i> </i><i>the Canadian tech community. Before joining the </i><a href="http://www.xtremelabs.com/" target="_blank" target="_blank"><i>Xtreme</i></a><i> team, Farhan held</i><i> </i><i>positions of Chief Software Architect at I Love Rewards, the Head of Search &amp; MSN Platform for Microsoft Canada and Technical Lead at Trilogy Software. In addition to being a programming and engineering</i><i> </i><i>guru for Xtreme Labs, Farhan also uses his wealth of industry and</i><i> </i><i>mobile expertise to mentor aspiring mobile and tech startups.</i></p>
<p><em>Image credit: <a href="http://www.imdb.com/title/tt1351685/" target="_blank">Jack the Giant Slayer</a></em></p>
</div>
<br />Filed under: <a href='http://venturebeat.com/category/business/'>Business</a>, <a href='http://venturebeat.com/category/entrepreneur/'>Entrepreneur</a>, <a href='http://venturebeat.com/category/small-biz/'>Small Biz</a>  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=venturebeat.com&#038;blog=342986&#038;post=629317&#038;subd=venturebeat&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://venturebeat.com/2013/02/27/scale-dont-fail-3-proven-fixes-for-your-companys-growing-pains/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<enclosure url="http://venturebeat.files.wordpress.com/2013/02/jack-giant-killer.jpg?w=160" /><source url="http://venturebeat.com/2013/02/27/scale-dont-fail-3-proven-fixes-for-your-companys-growing-pains/">Scale don’t fail: 3 proven fixes for your company’s growing pains</source>
		<media:thumbnail url="http://venturebeat.files.wordpress.com/2013/02/jack-giant-killer.jpg?w=160" />
		<media:content url="http://venturebeat.files.wordpress.com/2013/02/jack-giant-killer.jpg?w=160" medium="image">
			<media:title type="html">jack-giant-killer</media:title>
		</media:content>

		<media:content url="http://0.gravatar.com/avatar/96de24a390ab255391a5fa371c4f939e?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">momarshall</media:title>
		</media:content>

		<media:content url="http://venturebeat.files.wordpress.com/2013/02/jack-giant-killer.jpg" medium="image">
			<media:title type="html">jack-giant-killer</media:title>
		</media:content>
	</item>
	</channel>
</rss>
