Site Migration to Mosso Part 2: Why and How

Aug
21
2008
migration
Creative Commons License photo credit: izarbeltza

There were a few questions on yesterday's post about migrating this site to Mosso's hosting. I thought I'd write up a quick explanation of what led to this migration and how it went as well as my take on Mosso as a service.

For several years now, Wynia.org has been hosted alongside a batch of other sites that I own or was co-owner of on a series of dedicated servers. At first, I took care of the administration myself. Unfortunately, busy life got in the way and an unpatched vulnerability led to one of the servers getting hacked.

When it was done getting completely scrubbed and we went to set back up, we hired a company that provided both the dedicated server and the administrator to keep things patched and do things like compile new PHP modules for us. That combined service was something that we thought well worth the $229 it cost.

Over the last year or so, that arrangement has lost much of its luster. The server's stability has been horrible, with services like email and MySQL going down regularly and requiring restarting and frequent reboots to resolve the collapsing. Beyond that, the customer service and support has crumbled as well.

Then, early this year, my business partner and I split and he took the largest of the sites running on that server and I kept the server contract itself. That shift made me review the whole setup and consider my alternatives.

First was the fact that I still have multiple sites, some with some decent traffic (5000+ page views a day). While some of the cheap managed hosting companies allow multiple sites, most are horribly oversold for things like bandwidth and I've heard way too many stories of people getting shut off for "abusing" the service when they reach only half of the bandwidth advertised in a month.

I also know that I don't want to be the one managing the patches and upgrades. I don't have the time for it and don't particularly enjoy it. However, just getting another dedicated server with someone managing it didn't sound all that appealing either.

That's because, as your sites grow and consume more resources, you outgrow the server you're on. That has happened to me several times. Things start slowing down as you start hitting the ceiling of the server's capacity. All of the dedicated server companies I've dealt with take this opportunity to move you to another server.

Granted, they often will do so without any major cost, but having moved WAY too many sites from one server to another, that's something I don't want to do more often than necessary. I'd rather have a reasonably priced approach that lets the arrangement just grow over time.

That led me to look at the emerging clustered/cloud hosts. There are several of these companies that offer the "equivalent" of a dedicated server (i.e. real storage and bandwidth numbers) and a reasonable path for growth while taking care of the security and management of the servers by putting the whole works into a giant cluster.

I looked at Joyent and MediaTemple first, because of the amount of buzz around them. Neither one was a good fit for what I was looking for. While this site is powered by Wordpress (and thus PHP), I haven't been doing much of my new development in PHP for the last year or 2. I have been doing a lot more of my experimental code in C#.

Since my existing dedicated server was a Linux box (without Mono), I haven't had a good place to deploy much of my new code out on the web. However, I've been wanting to do just that. Unfortunately, neither Joyent nor MediaTemple supports .NET. Joyent specifically says "Ideal for PHP, Rails, Python & Java" and MediaTemple is really heavily targeted at PHP. I think if you're doing either Rails or PHP development, those are really good choices, but not if you're doing predominantly C# and PHP.

However, at the time I started looking, there was a newcomer called Mosso (though a subsidiary of an old timer, Rackspace). What was intriguing about their service was that their cluster was simultaneously a LAMP (Linux, Apache, MySQL, PHP) stack and a Windows .NET on IIS7 environment. A single domain can host both types of code.

Beyond that, the pricing makes a lot of sense. Storage, bandwidth and CPU cycles are what you are charged for, getting reasonable amounts of each for $99/month and one of the most straightforward "overage" pricing schemes I've ever seen. That kind of pricing means I can run all of the stuff on the existing server while lowering my initial costs and still be able to handle the future growth without going over my original budget for quite a while.

So, I set things up with Mosso.

Right about then, life got really hectic and getting the sites migrated kept getting put off. One of the biggest reasons is people's email accounts. It turns out that when you migrate a site from one server to another, the biggest problem isn't the site code or the databases, it's people's email. Moving those accounts over, keeping all of their email, dealing with the DNS propagation and where the emails end up, etc. is a HUGE pain.

Which is why I ended up bringing Google into the mix. With Google Apps for Domain, you point your MX records for your DNS at Google and they handle everything email.

I tested it on a small domain and, when everything worked out swimmingly, I made a decision. All of the sites are to move and if you want to use email on that domain, it gets moved over to Google. I'm not going to even mess with trying to keep email hosting working.

This makes migration far easier. You set up Google mail on the old server's DNS records and the new one, get it all working with the old one and then move the site over.

That said, it's still taken me most of the first half of this year to tackle this site's migration. The email's been moved over for months, but the database and code migration wasn't something I was willing to take on in the midst of the chaos.

I wish it wasn't so, but that delay has both cost me quite a bit of money in doubled-up hosting fees and has stunted my list of improvements and fixes to this site. See, when you have a big task you "should" be doing and you sit down to do a "less important" task in the same area, that work ethic guilt kicks in. However, since you still aren't ready to tackle the bigger task, you instead abandon all of them and go and do something else.

Thus, things like hiding the advertisements if you've posted a comment here have lingered on my TODO list for a long time.

Actually migrating went as smoothly as can be expected. Given that my Wordpress install had 4+ years of incremental upgrades from the original install, I took the opportunity to do a fresh, clean install. The data was a bit trickier because of how Mosso does their MySQL setup. Depending on when you create a database, it might sit on a different server, so every database gets it's own user and needs a different connection string.

At this point, I've been running a couple of smaller sites on Mosso for a few months and this site for a couple of days. Overall, my impressions are quite positive. Nearly everything I have wanted to be able to do I could. For the other stuff (like SVN-driven deployments), it's not like anything other than a completely dedicated server would either.

I haven't seen any MySQL issues, which stands in stark contrast to the number of issues I had with it on my dedicated server. However, I'll still be aggressively using things like the Wordpress plugin WP Super Cache to minimize needless hits against the database. Wordpress without that plugin is really WAY too hard on the database compared with what it needs to be.

The support has been top notch. Some of that is probably due to it being in startup mode, where the first few people who get in get extra attention. I know that when I complained on Twitter about not being able to figure out how to get ASP.NET MVC apps to run, one of the founders replied. That was great, but I would be VERY surprised if that continues over the next couple of years for new customers.

Regardless, the tickets I've had to put in were fairly technical (like setting a particular directory to integrated pipeline mode for IIS7), and were handled professionally and I wasn't treated like somebody fumbling around with their first PHP script.

I have, indeed, been able to run both PHP and C# on the same domain and both worked well. The control panel is a little spartan if you're coming from dedicated hosting with either Ensim or Cpanel, but definitely capable. They're steadily improving it and have told me that things like the integrated pipeline change (which is what you need to do to get ASP.NET MVC apps to do the nice routing without the .mvc extension on paths) are coming.

I keep monitors running against all of my sites and haven't seen any outages. Granted, I'm only checking every half hour or so, so it's possible I just missed one, but that still beats waking up to find out that the server crashed at 12:30 last night.

To sum up (and if ever something needed summing up, this article does), I think Mosso is a great solution to the outgrown-shared-hosting-but-don't-want-the-hassle-of-dedicated problem. With extra bandwidth at $0.25/GB and extra storage at $0.50/GB, expansion is much more straightforward than having to go from the "basic" server to the "deluxe" server and migrate all of your sites.

It's stable in my experience, well-supported and runs the code I want it to. Now I just have to get the rest of the sites moved over.

 

Comments on this post

Feedback is always welcome. Read some from other folks or leave your own below. Just keep things civil and remember that what you post lives on in public. Forever.

Thanks,
J

3 Responses to “Site Migration to Mosso Part 2: Why and How”

  1. saneyuki Says:

    fabulously done writeup!
    –though, it seems to be a WHOLE lot of work!

    im curious, was the lure of being on a "cloud" a big factor of moving to mosso? was the perception of 'perpetual scaling' one of the motivators of choosing Mosso over a much more traditional implementation? (i.e. dedicated or VPS)

    did you feel that the 'cloud' can address spurts in traffic and growth of your site(s) better than dedicateds?

    did you look at DreamHosts PS?

    would you have considered a farmed model? for example:
    1 dedicated box for www (apache or whatever)
    1 DB box (mysql)
    1 mail server..

    anyway.. im just really curious.. what your though process was when making the choice.

    it would've been really cool if you just moved your mysqlDump on to the new server and copied the files over from your wordpress install…

    thanks!

  2. J Wynia Says:

    I've been interested in cloud and clustered computing for a while. The perpetual scaling was the biggest factor for going with one of these vendors. I've run VPS servers and dedicated servers in the past and universally hit the ceiling at some point. It's clear that migration is WAY too much work to be doing it regularly. Finding a cloud host that works well would eliminate that (though I'm not saying Mosso will be the final choice).

    I do think that spikes are better handled in these environments as well, especially when combined with appropriate configuration to cache relatively static content. So far, the ratios are clearly showing that CPU cycles are disproportionately large compared to bandwidth and disk space. That's where I'm quite likely to easily go over.

    On Dreamhost, I didn't look at them (they might have still been in private beta when I gathered my original list), but did just now. For the record, I actually do use Dreamhost shared hosting for Subversion repository hosting and project management tools and am quite happy with it for that purpose.

    Dreamhost VPS wouldn't work for my situation in particular because of my desire to run .NET apps. Dreamhost's setup is oriented, like the others in this space, toward Rails/Python/PHP/Java. I could probably get Mono running on the virtual server, but that's a lot of work when Mosso does it out of the box.

    I'm also concerned that their dedicated server runs $395 while the VPS is WAY cheaper. That's an indication that they're doing more of the overselling that they do on the shared hosting over on the VPS as well.

    I've got several projects in the works that quite likely will need their own arrangements. For those, the dream platform to scale for the hopeful jackpot of huge traffic would, indeed be a farmed model on Amazon's EC2. I'm really liking the combination of .NET and MySQL for web apps. EC2 if you target Mono for your .NET would let you do all kinds of crazy clustering, master/slave db, load balancing, etc. with dynamic spawning of additional nodes.

    That said, I think that in many many cases, even a successful version of your product or service fails to reach levels of traffic that make it matter.

    For every Twitter that struggles under the load, there are dozens or hundreds of services set up on 5 node database clusters and matching web server build-out only to stagnate at ten thousand visitors a day.

    The trick is to build your app so that it doesn't preclude moving to a clustered environment, but don't actually implement it until you need it.

    I'd have loved to just load things up on the new site, but every hosting service I've ever used goes with an entirely different database setup, requiring changing connection strings, often creating new db users, and sometimes putting db's that used to be on the same server name in the past onto different server names. We've got a long way to go in order to make it drag-n-drop easy.

  3. Dale Says:

    Does anyone have any idea how Mosso handles database scaling? - assuming your app needs it eventually.

    Thanks

  4. Max Says:

    How did you get the MVC app to run? This is all I need to figure out to finalize my switch to Mosso

Leave Your Own Comment

By submitting a comment, you agree to license it under the terms of the Creative Commons Attribution license.

People who post comments get the added benefit of visiting the site without advertising.

© 2003-2009 J Wynia. All original content is licensed under the terms of the Creative Commons Attribution license unless otherwise noted. Content from other sources is licensed under its original terms.