May 15, 2016

My experiences moving from a shared host environment to a virtual cloud server.

I'm not sure that I have ever embarked on a more stressful and difficult project than I did when I broke up with my shared host in favor of my own private linux server.  If I made a mistake, there was NO ONE to turn to.  There were no fallbacks.  Just me and my Linode account (and Linode documentation) (and stack overflow searches) (and general Google searches).  

Okay, okay so... maybe I was totally alone on a desert island but still, a Front Ender, taking on his own DevOps.  Okay.  Ha.  Good luck with that.  But I did it!  Proof?  You are looking at it.  This is a Drupal site.  It runs pretty efficiently if you ask me.

But where my server really shines is mastodonshc.com.  This is a stats site for my recreational hockey team.  It is large and complex.  There is a lot going on in the background with this.  And with that site, I officially outgrew shared hosting.

Where It All Began

I took a web development class at Dominican University, while earning my Master's Degree, and of course, it was expected for us to purchase a domain and hosting service.  Through the advice of our Professor, we purchased our domains through GoDaddy and opted to use WebHostingPad as our hosting service.  I found out rather quickly though that having my domains and webhosting services separate was a problem.  GoDaddy seemed to "park" my domain almost daily.  It was starting to interfere with my school work.  Eventually I transfered my Domains to WebHostingPad, although, in retrospect, I wish I had transfered my hosting service to GoDaddy.  At the time, however, I understand why I chose WebHostingPad.

Starting out was fine.  I was only running simple HTML sites.  Later on I had one Drupal project, but it was a Drupal 6 site and it was rather simple so no noticable issues.  The price for yearly shared hosting was also okay, especially while I was a full time student and my wife was the only one earning an income.

Where It All Went Wrong

I was on a shared host account from 2009 to early 2016.  I own four domains.  All of these sites where pretty much only running simple HTML or PHP based sites but nothing as intensive as a CMS.  Early on I had some dev sites running Drupal 6 and Drupal 7 sites but they were very simple.  Nothing intensive, nothing complex.  They weren't super fast, but they worked.

During the summer of 2015, I decided I wanted to embark on a really ambitious project.  I wanted to architect a Hockey stats site for my rec team.  I tried a couple of times before with no success.  I was having trouble putting the pieces together in my head of how it would work.  But I finally did it.  I built a site locally.  When I tried to launch a dev version for testing, it failed on me.  I just didn't have enough PHP memory to handle the complexities of the site.  The use of field collections and lots of entity references killed it.  I could barely create game nodes, which the whole site revolved around.  After adding more than 5 or 6 field collection items or entity references, I would get AJAX errors.  I had to use Feed Importers to update pretty much anything on a game node.  I also had some stats views that would crash the site.  WebHostingPad was only giving 128 MB of PHP memory.  I asked for more.  I had done this previously and they said no.  They said I'd have to upgrade to a much, much more expensive service.  I asked this time and they gave me 256 MB.  Okay so views didn't crash quite as much but would still on certain occasions.  Now I could add 10 to 12 entity references before getting AJAX errors.  There were definitely other elements at play here than just a PHP memory issue.  This host just wasn't built for a CMS, or at least a CMS being anything more than simple landing pages or a blog.

The Final Straw

So what was the final straw for me?  Git and SSH actually.  I've had my sites in a code repository for a while now.  It was also pretty easy to move edited files back and forth between my localhost and FTP client up to my shared host.  After all, it was easy to keep track of.  I was editing one or two files at a time.  Drupal is a whole different beast.  You should try to make ANY Drupal updates via FTP.  You will go crazy very quickly.  

I found out that WebHostingPad offered SSH access, for a one time fee of course.  Okay well that's lame but I need it so I guess I'll bite.  I added it and jumped into the server.  I noticed Git wasn't available.  Well that's weird but whatever, I'll just install it right.  Nope.  WebHostingPad doesn't allow Git.  I was able to get a refund on SSH access.  I guess I just wasn't aware that this was fairly common practice among shared hosts.  GoDaddy lets you add Git, which is why I mentioned earlier that I kind of wished that I had stuck with them.

Where Do I Go From Here?

This meant that I had some very tough decisions to make.  I had invested too much time into my hockey Drupal site to just abandon but I knew that keeping it on shared hosting just wasn't a long term solution.  I also had plans of turning my portfolio (the very one you are looking at now!) into a Drupal site as well.  This final straw occurred in October of 2015.  I spent the better part of the next 3 months researching, talking about, and stressing over a move to some sort of VPS.  WebHostingPad offered one but I was so upset with them by this point that I really didn't want to give them any more money other than when I needed to renew my domains.  Plus it was more expensive that it should have been for the services offered.  

I tried out the developer account with Pantheon, but quickly learned that I could only host one site there and that I'd still need my email hosted somewhere.  I looked at Acquia but they are definitely not for independent developers.

I think I landed on Linode, through a co-workers recommendation, pretty quickly.  But that's where that three month gap comes into to play.  I chose Linode within a week of deciding to move on from shared hosting.  It took me three months to finally act on it.  I mean, quite honestly, I was scared.  I'm a front end developer and I'm about to set up my own linux server and run my own sites and email servers.  So many questions: Can I really do this? What if I can't do it?  What If I make a mistake? What if I totally biff this?  It was overwhelming.  It was stressful. 

The Story Continues ...

Stay tuned for my next blog where I discuss moving my sites (and email) to a Linode server.