When we refer to develop cloud applications We have to specify how we are going to do it, since within the cloud concept there are different ways of doing it that allow us greater flexibility or simplicity when deploying or maintaining our applications. Among these different forms the cloud can take are: Software-as-a-Service (SaaS), Platform-as-a-Service (PaaS) Y Infrastructure-as-a-Service (IaaS).
The concept of SaaS It has been around for a long time, but perhaps in recent years we have clearly defined what we mean. Basically it is any web-based service. We have clear examples such as Gmail’s Webmail, the CRM online. In this type of service we normally access through the browser without attending to the software. All development, maintenance, updates, backups are the responsibility of the provider.
In this case we have little control, we are at the top of the service layer. If the service goes down it is the provider’s responsibility to get it back on track.
Popular examples of Saas are Google Docs, Salesforce, Dropbox, Gmail …
PaaS it is the point where developers begin to touch and develop our own applications that run in the cloud. In this case, our only concern is the construction of our application, since the infrastructure is provided by the platform.
It is a model that greatly reduces the complexity when it comes to deploying and maintaining applications since PaaS solutions automatically manage scalability using more resources if necessary. Developers still have to worry that their applications are as optimized as possible to consume the least possible resources (number of requests, disk writes, required space, process time, etc.) But all this without entering the machine level .
Popular examples are Google App Engine that allows you to develop applications in Java or Python by deploying them on the infrastructure provided by Google, which Heroku also does with Rails and Django.
For developers who are ignorant of the infrastructure they need to build and just want to worry about writing software, this is the alternative to go.
In this case with IaaS we will have much more control than with PaaS, although in exchange for that we will have to take care of infrastructure management,
The perfect example is the one provided by Amazon Web Service (AWS) that does not provide a series of services such as EC2 that allows us to manage virtual machines in the cloud or S3 to use as storage. We can choose what type of instances we want to use LInux or Windows, as well as the memory or processor capacity of each of our machines. The hardware for us is transparent, everything we handle is virtual.
The main difference is that we take care of scaling our applications according to our needs, in addition to preparing the entire environment on the machines (although there are images of instances prepared with the most common configurations).
In addition to AWS we find examples such as Rackspace Cloud or VMWare vCloud.