Factoring over Scaling (was: Another server question (mixing node.js and LC))
ambassador at fourthworld.com
Fri Mar 2 07:13:59 CET 2018
It's easy to get excited about C10k problems, and I got caught up in it
myself. Geeks love this stuff. It's hard to resist.
But once the coffee wore off, I changed hats and reconsidered this
problem from the standpoint not of an implementer, but a business owner.
Here's the core of the business need, summarized from two posts:
> A given transaction involves processing a user request, making two
> or three requests to the database, and returning around 500 kB to
> the user.
> Basically, I am soon going to start pitching augmented tours (idea
> suggested by guys at a business incubator) to tourism companies, using
> Augmented Earth, and I don’t want to have the server crash if a large
> number of people are using it all at once.
Questions to consider, not for us but for your business planning:
- How many users will be an achievable maximum?
- How many users do you have today?
- What is your attrition rate?
- How long will it take you to get from your current
user base to that maximum?
- What marketing plan will be needed to acquire those
- How much will that marketing plan cost to execute
this year, next year, and the year after?
And Guy Kawasaki's favorite question:
- How will you be able to fulfill that marketing plan if you spend
all your money on infrastructure development and provisioning?
Grab your favorite after-dinner beverage, settle into your comfy chair,
and enjoy this talk by Guy, esp. Mistake #2:
Guy Kawasaki: The Top 10 Mistakes of Entrepreneurs
See Mistake #2: Scaling too soon (@10:57):
What we all want is one system that will handle anything we throw at it.
But what we truly need is just any system that will handle the customer
load we have today, with enough unused capacity for near-term growth.
When we run into capacity limits we have the most enviable business
problem: too many customers. :)
That problem is self-correcting in software, unlike other forms of
manufacturing that have a cost of physical goods per unit sold. We have
no supply chain, no fabrication, no inventory warehouse. In software,
the only raw materials needed are bandwidth and CPU time, both of which
are far easier to acquire than customers.
Ultimately every system will run into capacity constraints. If you get
as big as Google, you'll eventually outgrow literally every existing
system on earth and even need to invent your own file system. Most of
us don't get that big. And on one starts that big.
If you find yourself with that most enviable of business problems, you
can rest easy because:
- You're not the first person to need scaling.
- At that point you have income to invest in scaling.
Harder than scaling is launching, with marketing a close second. And
unless both of those happen, and are done with excellence, any
investment in scaling won't matter.
So with all that in mind, I would prioritize time-to-market first,
leaving as much time and money as you can for marketing.
To make the most of development time, use what you know.
It's not necessary to have large-scale capacity at the outset. You just
want to make sure you don't make future scaling efforts harder than they
need to be.
For where you are at the moment, factoring may be more valuable than
scaling. Use what you know and enjoy, and just make sure that your
system is set up with each element as discrete as it can practically be:
client, server logic, server storage. Separation of concerns, as they
If you set those up with well-defined APIs between them, you can change
out any one of them without affecting the other two.
Then you can turn your attention to the harder work, the marketing plan.
And when that pays off you'll be able to expand system components as
you need to.
And with any luck, you might even get so big that you'll need to invent
your own file system too. I hope you do. But along the way you'll be
able to consider scaling horizontally, or vertically, or both, as you
learn more about usage patterns as the actual needs become evident.
TL;DR: Relax about scaling, go cut some code. :)
Fourth World Systems
Software Design and Development for the Desktop, Mobile, and the Web
Ambassador at FourthWorld.com http://www.FourthWorld.com
More information about the use-livecode