A year ago I changed employers, and in turn moved from a classic bare metal hosting environment to a solely cloud environment. It was a huge change, and pretty intimidating at first, requiring me to re-learn a lot of the practices I was used to as well as learning all new methods and systems. While a lot of the same concepts in system administration are still valid, the flexibility of cloud hosting has taken a while to get used to — an old dog had to learn new tricks.
The migration is deceptive, it’s relatively easy to approach AWs (or at least EC2) the same way you’ve always approached your hosting. Figure out how to create an instance and you’ve got yourself the rough equivalent of having the physical server you’re used to. It can be controlled in much the same way, and at that basic level things are more just a matter of getting used to the differences in capabilties of what seem like similar CPU/RAM configurations to your old servers.
One of the breakthroughs in using AWS (again, I’m talking largely EC2 at this point) is the realisation that instances are disposable in a way a physical server has never been. In the past, a server represented a certain amount of blood, sweat and tears, and as such replacing or reinstalling was not something done on a whim. Arguments had to be made to justify the time involved, short term and smaller projects had to be bundled together on shared servers in order to maximize resource use and the cost of both labour and hardware/software had to be justified.
With cloud, so much of that effort and worry is gone. A week long project can be easiy given resources just for itself, allowing for segregation amongst projects where useful. A project requiring more resources can now be migrated to a higher powered instance, and the old instance terminated, no more ancient hardware cluttering a store room, or having to be re-used for projects with less importance associated with them. Likewise, hardware concerns are now virtually non-existent. So much is handled by Amazon that I no longer have to struggle to find an obscure (and dodgey) driver for an odd RAID or network adapter. With a standardized hardware stack I can count on everything just working; and if something about an instance does seem problematic (perhaps a hardware failure within AWS is causing an issue?), then I can just stop that instance and spin up a new one (most likely placing my instance on new hardware as a result). Did you just accidentally install something all over the OS instead of in its own isolated location, kill the instance and revert to your snapshot, getting up and back to the same spot in minutes. Minor annoyances, mis-judgements or mis-steps in structure can easily be addressed without the need for a major re-engineer. The hosting structure suddenly becomes much more dynamic and fluid than it has been.
Taking the worry of the data centre out of my job has been amazing, I am ecstatic to know that I will never have to make a run for a data centre in the middle of the night, to sit in a noisy, temperature extreme room for several hours while I diagnose a server error. I don’t have to try and make sure I’m always within X minutes of the data centre when on call — as long as I have an Internet connection I’m capable of doing everything and anything to do with our instances. I recognize that part of this could also be accomplished by moving to a managed hosting environment, but this lets me remain in control of each instance while freeing me up from the hardware level.
Just recently there have been a couple of great posts that cover a lot of what I’ve had to learn over the last year, as well as providing some new information and goals for the year ahead.
- AWS Tips I Wish I’d Known Before I Started: http://wblinks.com/notes/aws-tips-i-wish-id-known-before-i-started/
- AWS Tips, Tricks, and Techniques: https://launchbylunch.com/posts/2014/Jan/29/aws-tips/
It’s worth noting that is NOT a panacea, and it’s not for every company or situation. It does fit our organisation extremely well, and I think that the ecosystem is especially attractive to start-ups, empowering them with a variety of services that are both easily accessed and consumed. Another thing I’ve found is that there’s a real sense of community amongst the AWS client base. This may be true in other large hosting environments, but I know it’s not something I found at any of the colocation companies I hosted with in the past; people might identify with one another as clients of those hosts, but they didn’t tend to share knowledge and advice with the same freedom as I’ve found AWS clients to do.
The past year has been fantastic, it’s forced me to push myself to learn a lot of new stuff; being in AWS has given me the flexibility to test and iterate at a speed I wasn’t able to in a classic hosting environment. I’m really excited with how much our systems have progressed and improved, we’ve made a lot of fairly major changes and they’ve worked well for us. On top of it all, AWS has reduced costs for us a couple of times over the last year, making it so much easier for me to meet my budgets.
The next year is going to be just as exciting as this one just past, if not more so. I have a good base of knowledge within AWS, so it’ll be time to start pushing forward again into areas where I’m a little less certain of myself. Here goes!