In my previous blog, I provided an overview on Microsoft Azure and some of its unique capabilities. In this post, I will be talking about the execution models of Azure and on what basis the decision between either of them need to be made.
Software as a Service
Software as a Service (SaaS) is a software delivery business model in which a provider or third party hosts an application and makes it available to customers on a subscription basis. SaaS customers use the software running on the provider’s infrastructure on a pay-as-you-go basis. In short, SaaS is also referred as software delivered over the web.
Azure Web Sites and O365 serve as a SaaS offering. It is the easiest, cheapest, and fastest methods of getting your application on cloud, the reason being it gives least configuration control over the application which works out well for simple web apps without requiring much of scaling and data processing.
Multiple IDE’s are supported for deploying the application like Git, GitHub, Codeplex, TFS, DropBox, etc. Azure Management Portal also allows to include a MySQL or SQL Server Database while provisioning an Azure Web site. Some of the other public cloud providers who offer SaaS are Google Apps, Salesforce, Workday, Basecamp, etc.
Above is the pictorial representation of the 3 categories. Essentially, SaaS is a subset of PaaS, which in turn is a subset of IaaS.
Platform as a Service
PaaS is analogous to SaaS except that, it is a platform for the creation of software, delivered over the web. While SaaS seems to be the right choice, it might not be possible to find a SaaS service always for every LoB applications matching the legacy technology and business domain.
Platform as a Service (PaaS) fills the needs of those who want to build and run custom applications as services. It offers hosted application servers which are scalable (close to infinity) along with supporting services like storage, security, infrastructure and development tools to make it a complete platform.
Azure Cloud Services serves the PaaS role. You will require the application files comprising the source code and DLL’s along with the configuration files.
Commonly, there are 2 roles which execute the application in cloud services viz., Web Role and Worker Role. Azure will take care of everything related to maintaining the Operating System and details, while you need to only worry about the application for users.
Quickly touching upon the roles, Web role is the Azure VM pre-configured as a Web Server. It will load the application and create a public endpoint for your application. The worker role is the computing services which supports the application and accepts the actions from web role to process in a queued fashion. The number of web and worker roles allocated to the application can be pre-configured auto-scaled depending upon the demand. Some of the other public cloud providers who offer PaaS apart from Microsoft Azure are Amazon WS, Google Cloud Platform, SalesForce, etc.
Infrastructure as a Service
Infrastructure as a Service (IaaS) is what is literally called as “Server in the cloud”. It’s a way of delivering Cloud Computing Infrastructure – servers, storage, network and operating system as an on-demand service. It gives a VM on which you have a complete control. It turns out to be very similar to traditional hosting, where a business will use the hosted environment as a logical extension of the on-premises datacenter.
The servers (physical and virtual) are rented on an as-needed basis, and the IT professionals who manage the infrastructure have full control of the software configuration. With Azure VM, you would be responsible for managing everything from Operating System to keeping the application up and running. Some providers may even allow flexibility in hardware configuration, which makes the service more expensive when compared to an equivalent PaaS offering. Some of the other public cloud providers who offer IaaS apart from Microsoft Azure are Amazon WS, Google Cloud Platform, OpenStack, etc.
Below is the tabular representation explaining the difference between each of these in various scenarios.
Yet another way of looking at these models are based on the below factors, which helps in taking the decision.
a. Control
b. Support for legacy apps
c. Ease of Management
d. Agility
To summarize, one should go by SaaS if you are looking for fast deployment and do not want to get into the hassle of maintaining the environment w.r.t setting up the startup tasks and wouldn’t require to remote into the server for configuring or managing the application.
Deployment and Management will be well integrated into the platform and the sites can scale to handle high traffic loads with built-in load balancing and traffic manager. While there is a major differentiation between SaaS and the other two, most of the confusion lies around PaaS and IaaS. While the first pick in everyone’s mind would be PaaS as one need not worry about the worldly OS maintenance, versions, Security, patches etc., I think the envision should be from a longer and broader perspective. With IaaS, you would always have the full control and the privilege to run the software and configure them based on your needs.
Happy Cloud Computing!!