I’m increasingly becoming the “Cloud Guy” or more specifically the “Azure Guy” in my development community and workplace. There’s nothing wrong with that, I actually love it. I attended PDC 2008 where Microsoft launched Azure and have been playing and using it ever since.
The discussions usually center around using the cloud to replace their infrastructure, servers, storage arrays, network equipment, etc. Cloud providers offer excellent Infrastructure to augment or replace your own.
Should you replace or augment your own infrastructure with a cloud providers? Ask yourself a simple question.
“Are you in the business of selling your infrastructure to customers or does it provide a strategic advantage for your core product or service?”
If you answer no to the above going to the cloud is a really good option for you. I was a ‘hardware guy’ for the first six years of my career, at the height I helped build and run multi-million dollar network’s. You have to deal with hardware refresh cycles, endless patching, updates and upgrades so so much more for what is the IT world equivalent of your building’s water and power service.
For the vast majority of companies out there it doesn’t make sense to build and manage that. But if you plan is to replace your physical in-house servers with cloud based VM’s you may be going about it all wrong.
The next question I usually ask is:
“Do you have custom built software is that vital to you business that you are looking to put on the cloud?”
If the answer is no then usually a IaaS solution is best or choosing a completely managed service like Office 365, which Resgrid has been using for over a year to great success.
If your answer is yes then the benefit of the cloud to your software stack isn’t on the IaaS (Infrastructure as a Service) side but the PaaS (Platform as a Service) side.
When you transition to the cloud with an IaaS mindset, you will probably mimic your existing hardware with cloud VM’s. For example a couple VM’s for your website (behind a load balancer that needs to be configured) then some application server VM’s and finally a database VM. In addition there is storage (for your data and your VM’s disks) and probably VLAN configurations to setup. So for a normal n-Tier application you have at least 5 pieces to setup and maintain. Your cloud VM’s still need updates and maintenance but the hardware maintenance is abstracted for you.
But if you go a level higher and migrate your applications utilizing a PaaS mindset you forget about the underlying VM’s. Instead you can leverage the agnostic nature of the cloud and take advantage of automatic load balancing and elastic scaling. Your management also becomes much simpler, I can scale a PaaS app with a couple a mouse clicks, but an IaaS app requires more effort.
Software designed against an in-house network and infrastructure are usually poorly suited to take advantage of PaaS offerings and even to an extent IaaS solutions. The concerns for software development are different in the the cloud then in the LAN.
Transient Fault Handling, Async and Eventing are just a small sampling of things you may need to implement into your application’s code. Even your application’s architecture will change when you design for the cloud first.
Moving to the cloud when you have custom software should be a lot less about the hardware, VM’s, networks and more about application architecture and patterns to best leverage the PaaS offerings that a cloud provider like Azure offers you.
Resgrid is a SaaS product utilizing Microsoft Azure, providing logistics, management and communication tools to first responder organizations like volunteer fire departments, career fire departments, EMS, search and rescue, CERT, public safety, disaster relief organizations, etc. It was founded in late 2012 by myself and Jason Jarrett (staxmanade).