Technology changes at a blistering space, and software architects understand that change is inevitable. Assumptions and requirements will change. Users evolve, and usage patterns change. Business goals and market needs change. What may be considered the best solution to a problem, will become outdated. Architecting systems for the long term means creating modular systems, where system components can be adapted over time without impacting the entire system.
The NIST definition helped move forward our collective understanding of cloud computing. However, the cloud offerings and related technologies have evolved significantly since its publication, especially in the platform space.
"The popular wisdom that cloud computing comes in three flavors - software-as-a-service (SaaS), infrastructure-as-a-service (IaaS), and platform-as-a-service (PaaS) - no longer describes reality." -- The Forrester WaveTM: Enterprise Public Cloud Platforms, Q4 2014
Initial PaaS solutions, like Heroku, were designed for 3-tiered Web applications. The platform provided choices for databases, front-end Web services, and other common services required to deploy and operate web applications. With PaaS, developers could now simply focused on their application tier.
The early platform solutions attempted to shield developers from the complexities of cloud infrastructure by fully abstracting and managing the underlying resources. The solutions provided ways to declare and ingest application code, and after building and staging, would run the code in custom containers on a pool of virtual machines managed by the platform. For example, Cloud Foundry deploys code in a Linux container called Warden (recently renamed to Garden).
While the PaaS vendors set out to solve important problems, initial implementations addressed these by limiting choices for developers and operators. Standardization has its merits, but the lack of control and visibility with the initial platform solutions can quickly become a limitation.
Infrastructure services and software services like databases and messaging continue to evolve rapidly making it difficult for any structured platform solution to remain relevant. Application architectures have also evolved, from the monolithic tiered applications that early PaaS solutions were designed for to microservices style architectures where an application is composed of several independent but cooperating services. Microservices require different backing services, like service registration and discovery, which the PaaS solutions built for 3-tier applications do not offer.
Most PaaS solutions use containers to define an application unit, and to isolate and manage application runtimes. However, in a traditional PaaS the application containers are kept hidden from users and controlled by the platform. A PaaS vendor called dotCloud recognized that user interest in their container technology was outpacing interest for their platform offering. In 2013, dotCloud released that container technology as Docker, abandoned their PaaS product, and became Docker, Inc.
Sign up for CIO Asia eNewsletters.