Blog Moved

My blog has moved!

Friday, February 27, 2015

Diving Platform! A Description of Platform as a Service in Microsoft Azure

I've talked about Microsoft Azure before on this blog.  Mainly from the perspective of startups.  For those who haven't read the previous posts, I recommend you do (of course I do right).  But for just a quick high level 1000 foot view.  Azure is a cloud platform provided by Microsoft, to provide affordable and stable cloud hosting and services to clients.  

So as a developer the question is, "Why do you care?"  And the short answer is a simple one "because its the future".  Now I know that there's a very bold / poetic statement.  And many of you are probably thinking this is where the sales pitch comes in.  But honestly, cloud technologies have been growing since their inception.  Honestly, how many people do you know who used to carry a thumb drive,  and now use DropBox, Google Drive, or OneDrive.  Apple, Amazon, and Google have all debuted their own cloud platforms.  So it doesn't take a genius to see this all happening and know that the future of Software Development involves considerations for the Cloud, as much as it does the mobile space or event IoT.  

So what makes Microsoft Cloud Platform so attractive.  Why would we consider it over say Amazon, Google, or Apple's clouds.  Honestly what should really make it attractive from the .net perspective is the integration with Visual Studio, and the current Microsoft Stack.  But that being said Microsoft has made an effort to make several advancements in not only Microsoft Stack cloud services, but other options like Linux, Node.js, etc.  

Now when most people approach the idea of Cloud services they think of Virtualization.  The idea of creating Virtual Machines in some monster data center.  From there we as developers remote into the machine, configure it however we want, and build an environment to host our applications.  This all fairly standard, and honestly not that different from working on premise.  

There are some great benefits to using this approach, which Microsoft has dubbed "Infrastructure" as a service.  For example, you have the ability to spin up, and down servers at a whim.  And additionally can stand up whole networks in the cloud to utilize.  All while Microsoft manages server uptime.  What could be better?

That being said, its not without its drawbacks, given that Microsoft has handed over the VM completely to use as Developers.  It means its our job to install updates, our job to handle backups, and our job to support the machine, and possibly configure load balancing.  

Now what many aren't aware of is that "Infrastructure as a Service" is not the only option with regard to Microsoft's cloud platform.  Instead they provide the alternative of "Platform as a Service".  "Platform as a Service" provides additional cloud based services to Developers to make better use of all things the cloud has to offer outside of just "Virtual Machines".  Now these two options are not mutually exclusive and you are free to mix and match them as you see fit, and Microsoft offers a "Pay as you go" option that lets you pay for only the services you need.

So after some thought, I decided I wanted to kick off a series of blog posts dealing with Microsoft Azure Services.  With the intent of going through several of the most common services and doing more of a deep dive on them.  

The plan for this series is the following;
  1. Azure Websites - The ability to host sites within the azure platform and abstract away the headaches of managing the VM.  
  2. SQL Azure - A database hosting platform for the Cloud, letting you get down to working with SQL without having to manage the overhead of a VM.
  3. Blob Storage - A cloud based file storage option to support resources for your applications.  
  4. Table Storage - A simplistic storage mechanism to support message and passing data between platforms.  
  5. Mobile Services - Push notifications and other services designed to work with mobile devices.  
  6. Media Services - 
  7. Service Bus - A message broker platform to leverage communication between multiple end points.  
  8. Visual Studio Online - A cloud based source control and ALM tools.
So more to come, next post will be a deep dive on "Azure Websites".