Many of the Cloud Solutions today are based on the use of Virtual Machines as a part of the Solution. Implementations vary, but as Platform as a Service (PaaS) and Software as a Service (SaaS) offering is growing rapidly, the need for using Virtual Machines for the same purposes, is declining. The following figure regarding Software, Platform, Infrastructure (SPI) Model and the separation of responsibilities captures quite well, why companies should want to shift from using IaaS towards PaaS and even SaaS where possible.
The reasons behind this shift are the same as they were a couple of years ago when companies started to use IaaS Cloud Services instead of building everything On-Premise:
- Time to Market is lower
- Total Cost of Ownership is lower
In addition, Cloud Services generally include:
- High Availability
- Audited Security
for the layers managed by the Cloud Service Provider.
In short, the less your company has to do, the better. This makes a lot of sense also from another point of view. In the end, you are interested in adding business value while minimizing use of resources required to develop, install or maintain any software or hardware. Thus, I see a trend to move towards PaaS and SaaS in near future as Cloud Services become more and more mature. Customers are no longer asking how do they move to the Cloud. Instead, they want to make sure they have optimized their investment as well as their risk exposure. In the context of this blog post, it is done by using PaaS and SaaS instead of building everything on top of IaaS.
Case Example: Cloud Analytics
A rather common business requirement is to collect for example Marketing and Customer related data through various API interfaces such as Google Analytics, Facebook or Zendesk. Collected data needs then to be aggregated and joined with other data sources to provide insightful information.
Today, the solutions for data collection are often run on VMs that require a lot of unnecessary maintenance and development work (keeping all the software up-to-date, implementing error handling and reliability related functionality and so on). However, reusing tested code lies in the core of efficient software development. And that is exactly why developers should use existing services rather than to implement everything from scratch. This cuts down the time to market and frees up organization's resources.
The following diagram depicts the next generation cloud architecture. It is assumed that you have written your current implementation using .NET, Python, PHP, NodeJS, Java, or Bash and looking for reusing that code rather than rewriting all the interfaces using PowerShell. If you have previously implemented everything using PowerShell or are writing new interfaces from scratch, you could have even easier architecture than depicted as follows.
It is worthwhile to mention that this architecture can be provisioned automatically within minutes using a PowerShell script. This comes in very handy when, for example, setting up separate test, development and production environments as well as for Disaster Recovery. Today, Azure Resource Manager templates include most, but not all of the required functionality for the purpose. However, Rest API calls can be used for the few missing steps.
The field of Cloud Services is still at an early stage of its life cycle. New services are introduced constantly and they’re are making it faster, cheaper and easier than ever to build solutions on Cloud. Cloud Service Providers are doing it by introducing more and more mature services offering their customers a Platform (as a Service) or ideally even a Software (as a Service) to fulfill their business requirements while minimizing the resources (developer time and investment funds) required. Infrastructure (as a Service) will still have its place in the architecture as long as there are no PaaS or SaaS services that can fulfill the business requirements.