On Thu, Oct 7, 2010 at 2:52 PM, Atom Powers <atom.pow...@gmail.com> wrote:

> One of the COs in my company keeps asking "why don't we put it all in
> the cloud"? I'm running out of good answers.
>
> Situation:
> We have four locations (US-West, Singapore, Korea, Spain) and two
> datacenters (US-West, Singapore). We have a database-driven
> application (Content Management System) that is mission-critical to
> all locations and all potential customers all over the world.
> Currently that entire system (MySQL database and Apache web servers)
> are all located in the US; performance in Asia and Spain is dismal.
>
> My boss, having no idea what "the cloud" actually is, wants to move
> the entire system into "the cloud". After some investigation, we have
> determine that some aspects of the system can be hosted on Amazon AWS
> or similar. But we have big doubts about database performance, big
> doubts.
>
> Question:
> What are your experiences with cloud-based (or cloud-capable) content
> management systems?
> What options are there for putting a database-driven application in "the
> cloud"?
>

Having recently done (part of) this analysis, I have some opinions.

First, your main problem is that the manager doesn't know what "cloud" is.
"Cloud" as you are discussing is infrastructure as as service (IaaS), as
opposed to Software as a Service (SaaS), etc.  IaaS is usually no more than
outsourcing hardware resources. You are still responsible for *everything*,
and yet you have less control.  You have no control or visibility into the
network, for example.  A reasonably accessible overview of "cloud" and its
flavors is in this guide from the Cloud Security Alliance, especially the
first 20 pages or so.

http://www.cloudsecurityalliance.org/csaguide.pdf

Second, your problem is really  performance of your application over
high-latency links.  Specifically, your US-based app is slow as perceived
from Span and Asia.  Moving to the cloud won't solve this problem. The
servers still have to live somewhere.  Granted, you could move the
application to some other continent, but that doesn't require cloud.  You
could go into managed hosting (or the "cloud") in Europe or Asia, but then
performance would likely still be bad for the US and whichever region didn't
have the app locally.  You will need to address the app's network
performance no matter how or where you host it.  Cloud isn't going to solve
this.  You might need to do more caching, or optimize page loading, for
example.  Re-writing the app to make a single database call (stored
procedures perhaps) per page as opposed to making dozens of separate calls
(from the client)  per page will give you an amazing performance boost.
Caching may help as well, but definitely look at how many DB calls it takes
to fill a page, especially if this is an Ajax-y app where the DB calls are
made from the client or an intermediate web sever.

For example, if your web server front end was located in Spain to be near
the client, but is 113ms from the DB server in the US, then the page load
time will be the number of DB calls from the web server * the network
latency.   For 20 DB calls per page, this is over 2.25 seconds to load the
page.  (I see 76ms from east coast to .EU and 151ms from west coast to EU,
average is 113ms.)

Third, database applications can be I/O ntensive.  An attached EBS volume
(for AWS EC2) will likely perform more like a faster IDE drive than a RAID
array.  See (
http://af-design.com/blog/2009/02/27/amazon-ec2-disk-performance ).  Don't
forget that you also pay for each I/O that you read/write to the EBS.  It's
a $0.10 per million I/Os, but that might add up over time.  If your app
already wants high-speed SAN, or has a big fast RAID, then benchmark
carefully.

Fourth, depending on the size of the instance, it may be more or less
expensive than your own hardware.  Cloud vendors always show the price of
their smallest instances but those are completely unsuitable for a database
of any size.  Look at this page for the pricing model:
http://aws.amazon.com/ec2/pricing/

Now, what are your costs.  Let's assume that you are running your own
hardware, in your own datacenter, using UNIX.

Typical DB server for us is 4 cores, 12 GB RAM and a few drives.  HW RAID
usually.  Here's a possible config:
http://h10010.www1.hp.com/wwpc/us/en/sm/WF25a/15351-15351-3328412-241644-241475-4091408.html#model-diff
It's $2200 plus drives, so call it $3.5K max for the server.  Depreciate
that over 36 months and you get $97.22/month.  That's $0.144/hour (4 week,
28 day month).  Now look at the AWS pricing...  There is no usable instance
that beats that price.  As long as your other operational costs aren't too
high, you are cheaper....

That said, you will get quite a few operational features from running MySQL
in the cloud, such as quick snapshots, ability to move your DB servers, etc.

Short answer:  Going to cloud is very unlikely to solve your problem :-)
_______________________________________________
Tech mailing list
Tech@lopsa.org
http://lopsa.org/cgi-bin/mailman/listinfo/tech
This list provided by the League of Professional System Administrators
 http://lopsa.org/

Reply via email to