Have you planned for
Scalability in your website? Business?
I see the term "Scalability"
used quite a bit but I am not sure anyone really understands what
that means.
When you buy a building to
start your business, how do you plan for scalability? What
happens when you grow, need to hire more people or want to
increase manufacturing capacity.
Since most start ups are on a
tight budget they buy the cheapest space. So Getting something
bigger requires a complete move and starting over again.
If you were smart, you bough a
small building on a 2 acre lot and when you grow, you can add
onto the existing building. But that would have been more
expensive to get started.
The same principle applies to
software design and websites. If you want to have them scalable
so you can grow, you have to plan for that on day one. Or you
might be starting all over again.
I see tons of software
packages that are offered online for websites that claim to be
scalable and offer unlimited products. But that is almost never
true, simply because they were not built to work that way.
So let stalk about
some different reasons you might need scalability.
The first is that you simply
have more traffic. You need the website to handle more sales and
more customers browsing your products.
This can be handled in many
cases by adding more servers. If one server can handle 250 people
then 2 can handle 500. Easy right?
Wrong!
If you have a static website,
lets say like The Huffington Post, where users read what you have,
then scalability is as easy as adding servers. Need more, add
more. Content is duplicated, load balancing is used to manage
traffic between servers and everything is fine.
But what about shopping sites?
This can be more complex if
you have limited inventory levels. In those cases, each server
will need to use one centralized database to insure you don't
sell more than you have.
That means the programming
needs to be built in such a manner that multiple servers are used
right from the beginning. Obviously, this is more complex, cost
more to program and run. So most companies don't do that from the
beginning, but it also means they can scale for more traffic.
You might have a business that
gets seasonal bursts of traffic. In that case, you only need more
resources during the busy season. But you can't just turn on and
off programming, it needs to be in place to be used, so you are
stuck with a little bigger solution so when that busy season
comes, you can stay online.
We all know the stories of the
companies that ran Super Bowl commercials and then their websites
crashed. The just were not prepared for the traffic.
And while most people think
the solution is a simple phone call to your "IT Guy" so
he can turn up the capacity, that is just not the case.
Having the correct structure
is critical in a scalable enviornment.
It is not likely you will find
a solution for $100 that installed in a shared hosting account
that will be scalable to hundreds of servers.
Let say you start with 100
products, grow to 1000, then 1,000,000. Do you have a database in
place to handle it?
When you get to those numbers
and require searches, data lists for browsing, then you need
programs and indexes that smaller shopping systems just don't
have.
There is no problem running a
store with 1000 products on a system that supports 1,000,000
products, but you will never be able to do the opposite.
You also have to consider the
system resources needed to run that store at 1000 products. Do
you need 5 servers? Do you want to pay for 5 servers?
As you consider scalability
you have to look at the time that a system will run. If you need
something small for 3 years, then don't build a huge system until
you know you need it.
Yes, you will be moving the
store, starting over, but in the long term, it makes more sense
and gives you more working capital to grow.
Planning for scalability in
website design may be critical to your business in the future. If
it grows faster than expected, how long will it take to scale?
If you never grow, how much
did you waste by having the scalability in case you did grow?
All of these question need to
be explored as you figure out what solution will be best for your
business.
Lets say you just want to add
more, maybe video, tutorials and such and your ecommerce site is
maxed out.
That is not a problem because
it is static content, it can be run on a different server and
delivered to your website or other websites. You can add as many
servers as we mentioned and load balancing to manage the traffic.
It is when you have
programming at the core of your website. That is the real problem.
Lets say you have a 2
car garage, but you now have 4 cars. What do you do?
You can rent a garage
someplace else, but then the cars are not accessible. You
have to drive to the other garage and trade one car for the
other.
If you need one of the
cars in the other garage, you have to go get it. It is just
not convenient. It takes time and resources.
If you run a half of a store
on one server and then the other half on another server users
will have to check out 2 times to buy what they need. Again, not
at all convenient.
So you need programming that
can bring that all together so the user never realizes that were
on 2 separate servers.
This is usually planned for in
the initial programming. And no system is fully scalable,
you can't make a fully dynamic system that can grow to the moon
just by plugging in new modules. All systems have limits and big
companies have massive systems in place.
I am sure ebay would love it
if they could just plug in new servers when they need more
capacity, but it is not that simple. They can't go out and buy a
$100 ebay script online and just scale it up to what they have
now.
There is a reason why
companies spend $100 million to build a website and then go out
of business. Because it is expensive to build something
that can scale and even then, it can only scale to what they
originally planned for.
As I said, some business
models do allow for full scalability. Sites like CNN.com who
deliver static content can scale in minutes if they add more
servers. That gives them the ability to bring up new banks of
servers during big new periods like wars and elections while
keeping servers offline for low traffic periods.
And even with limited
applications, if one user is on each content server send messages,
post items of uses forms, they will communicate with a back end
that was designed to manage all of those requests.
But sites like ebay, can't do
that because they have millions of unique products, so they need
servers online all the time to manage the diversity of pages they
deliver.
System like ebay can load
balance because they have people looking at different products.
You can be bidding on one product and not be on the same server
as someone bidding on another.
Again, it is all based on the
business and the planning that was done as the software was
created.
Unfortunately, too many people
think this is all easy. They post ads on craigslist asking for an
expert that can build a scalable website like ebay for $200.
The worst part is they get
people that offer to do it.
Then everyone believes they
have a scalable website.
It really comes down
to a few simple facts.
CPUs can
process limited data
Hard drives
can deliver limited data
Memory can
store limited data
Webservers
have limited connections
Everything comes with a limit.
If you have a 1 Ton
pickup truck you can mover 1 ton of bricks, 2 trucks can mover 2
tons and so on. But if you have 1 guy loading the bricks, it wont
matter how many trucks you have, the bricks are being loaded one
at a time with 20 trucks waiting in line to be loaded.
This is a basic principle to
understand. To make it work, you need a warehouse, forklifts and
drivers to make those trucks more efficient. You need support
staff, accountants and managers too keep it all running.
When you plan your website,
you have to consider the same problems. One hard drive can only
deliver so much data. So if you need to share data how do you do
that? How do you get all of these servers to work together to
make your website run efficiently?
Take a good look at your plan
before starting. Talk to some experts, and not the student you
hired on craigslist. Learn what your actual scalability is and
what it will cost to grow.
Do it now and not when you
actually realize you need it, by then it might be too late.
|