IaaS
Infrastructure as a Service (IaaS) allows consumers to use processing, storage, networking, and various basic computing resources to deploy and run operating systems, applications, and other software. Clients do not need to purchase servers, software, or other network equipment — they can arbitrarily deploy and run processing, storage, network, and other basic computing resources. They cannot manage or control the underlying infrastructure but can control operating systems, storage devices, deployed applications, and sometimes have limited control over specific network components such as host firewalls.
PaaS
Platform as a Service (PaaS) is a cloud computing service providing computing platforms and solution services. In the typical cloud computing hierarchy, PaaS sits between Software as a Service (SaaS) and Infrastructure as a Service (IaaS).
PaaS allows users to deploy cloud infrastructure for client creation, or to access programming languages, libraries, and services through it. Users do not need to manage or control the cloud infrastructure (including networks, servers, operating systems, or storage), but they do need to control the upper-layer application deployment and hosted environment.
PaaS delivers the software development platform as a service, provided to users in the SaaS model. Therefore, PaaS is also a form of SaaS. However, the emergence of PaaS can accelerate SaaS development, especially the speed of SaaS application development.
SaaS
Software as a Service (SaaS; pronounced /sæs/ or /sɑs/), sometimes referred to as “on-demand software,” is a software delivery model. In this model, software and related data are centrally hosted in the cloud, and software is accessed via the internet without requiring installation. Users typically access SaaS through a thin client, such as a web browser.
For many business applications, SaaS has become a common delivery model. These include accounting systems, collaborative software, customer relationship management (CRM), management information systems, enterprise resource planning (ERP), invoicing systems, human resource management, content management, and service desk management. SaaS has been incorporated into the strategies of all leading enterprise software companies. One of their biggest selling points is reducing IT costs by outsourcing hardware and software maintenance and support to SaaS providers.
According to Gartner Group, SaaS sales reached $10 billion in 2010 and were projected to reach $12.1 billion in 2011, a 20.7% increase. Gartner estimated that by 2015, SaaS revenue would exceed double its 2010 figure and reach an estimated $21.3 billion. CRM systems continue to be the largest SaaS market. SaaS in the CRM market was predicted to rise from $3.2 billion in 2010 to $3.8 billion in 2011.
The term “Software as a Service” (SaaS) is considered part of cloud computing nomenclature, along with IaaS, PaaS, and Desktop as a Service (DaaS), all considered academic names within cloud computing.
Microservices
Microservices is a software architecture style based on small functional blocks that focus on single responsibilities and functions, using modular approaches to compose complex large-scale applications. Each functional block communicates using language-independent (Language-Independent/Language agnostic) API sets.
The origin of microservices began with Dr. Peter Rodgers’ proposal of Micro-Web-Service at the 2005 Cloud Computing Expo. Juval Löwy had a similar pioneering idea of turning classes into granular services as Microsoft’s next-generation software architecture. The core idea is that services are accessed in a manner similar to Unix pipes, and complex services expose their interfaces through simple URIs — any service, at any granularity, can be exposed. This design was implemented at HP Labs, demonstrating powerful capabilities for transforming complex software systems.
In 2014, Martin Fowler and James Lewis jointly proposed the concept of microservices, defining them as small services composed of single applications, each having its own process and lightweight processing. Services are designed around business functionality, deployed in a fully automated manner, and communicate with other services using HTTP APIs. At the same time, services use the smallest possible centralized management (such as Docker) and can be implemented using different programming languages, databases, and other components.