I've been building web sites since the 90's, and it's always taken quite a few steps. Set up a server, install web host software, configure, publish, deal with configuration issues for an hour or so, then finally, have a web site up and running. Of course it is always followed by systems maintenance, security patches, networking issues, data backups, and on and on.
That was the process, and it took time.
So what if you could cut out 90% of that process?
The process hasn't changed much, especially for most companies. Nowadays, the "cloud" is nothing new, and this post isn't going to delve into the details of what it is or the criticisms of it as an environment, but I am going to share my latest experience with Google's AppEngine platform.
Last year I dived into Google's cloud platform head-first, coming from Microsoft Azure I was looking for a more cohesive experience. So I spun up some virtual machines, installed web host software, etc. etc. just like I've always done... and it worked. However, there was a nagging feeling at the back of my mind telling me, "isn't there a better way?".
Enter Google AppEngine, the application hosting solution that strips away the need for a "traditional" server setup. You take your application code, throw it out to AppEngine and it spins up resources automatically. It auto-scales when under load, and traffic can even be split to different versions if you need to roll-out or roll-back. There's no need to buy and deal with load balancers, or setting up 8 different servers hosting the same app (then the god awful task of keeping them synced) - AppEngine deals with that transparently and gracefully.
Imaging your app is looking for a house. The first house it reviews is a standard home built in the 1950s. It has one power outlet per room, and a decently sized windows, but it is expensive (not counting the cost of repairing that leaking basement you don't know about yet). This is the traditional hosting setup. The next home built is modern and has large windows, and, even though appears smaller on the surface, is still much cheaper than the older home. It has 5 power outlets per room, with integrated USB charging and networking built in. It's 100% green and solar powered. The home automatically adjusts heat and tints the windows when sunny. Voice controls let you turn on the TV or listen to music. There's no leaky basement, instead your app discovers the basement is actually a multi-level mansion beneath the ground. It's the house of the future. This is AppEngine.
Where do you think your app wants to live?
My favorite feature is the versioning - it alone is very powerful. You can roll out a new version, and only have it exposed on a particular URL. Your test group can go out to that URL and make sure it's OK. When you're ready, set it as your "active" version and gradually transition users over using traffic splitting. Noticed a critical issue? Click a button and push all traffic back to the previous version, it's that simple.
Negativity holds companies back
So why do some companies avoid the Cloud? Why do they prefer to spend $100's of thousands or even millions a year doing work that they don't need to do?
There are those established in the IT community that are afraid that by letting automation take over the more mundane tasks, that they'll lose "control". In many ways, fear is well-justified. If your job is to maintain hardware and software and you're looking at the prospect of not having to spend your days resolving a bad video card or networking issue, then it's understandable you'd be worried. My general argument is that there is still plenty to do. The cloud makes one aspect of IT less aggravating, so one has more time to assist users, plan more elaborate architectures, and implement better policy controls.
My advice, begin thinking with a modern "distributed" mindset, instead of a "isolated" mindset. The cloud isn't closing opportunities, it's opening them. You'll be amazed at what can be achieved.