In the 1980s and 1990s, with the rise of PCs, the shrinking costs of networking and computing infrastructure, and a need for more agility, client/server provided the ability to split the application tier away from the server tier. This was done to support distributed clients running richer user interfaces and also to reduce costs by offloading the user handling, application workloads off monolithic servers. These larger servers remained to address massive batch processing and scientific workloads.
In the 2000’s, as data centers started to fill out, and power, space and cooling became more and more expensive, concepts such as commodity grid computing and virtualization started to become established. Cloud computing takes these concepts further by allowing self-service, metered usage and more automated dynamic resource and workload management practices. As services became more and more distributed, SOA emerged as a methodology to integrate and orchestrate distributed business services. This need exists today, as customers require integration between public, private, and in-house services.
In some ways, the cloud has become the distributed virtualized mainframe of an era past! It’s funny how the same concepts change their clothes but remain constant throughout the evolution of computing. In many cases, today’s Cloud was based on foundational concepts that addressed an early need to best leverage computing resources almost 40 years ago. A large monolithic server was easy to secure relative to a virtualized resource on the Cloud. Security is still the number one concern of many customers who want to leverage public Cloud services today.
To deliver a future state architecture that captures the promise of Cloud Computing, architects need to understand the primary benefits of Cloud computing:
Decoupling and separation of the business service from the infrastructure needed to run it (virtualization)
Flexibility to choose multiple vendors that provide reliable and scalable business services, development environments, and infrastructure that can be leveraged out of the box and billed on a metered basis—with no long term contracts
Elastic nature of the infrastructure to rapidly allocate and de-allocate massively scalable resources to business services on a demand basis
Cost allocation flexibility for customers wanting to move CapEx into OpEx
Reduced costs due to operational efficiencies, and more rapid deployment of new business services
The building blocks of cloud computing are rooted in hardware and software architectures that enable innovative infrastructure scaling and virtualization. Many data centers deploy these capabilities today. However, the next infrastructure innovations are around more dynamic provisioning and management in larger clusters both within and external to the conventional corporate data center. The diagram below illustrates some common architectural components:
Virtualized Infrastructure provides the abstraction necessary to ensure that an application or business service is not directly tied to the underlying hardware infrastructure such as servers, storage, or networks.Virtualized Applications
Virtualized applications decouple the application from the underlying hardware, operating system, storage, and network to enable flexibility in deployment. Virtualized Application servers that can take advantage of grid execution coupled with Service Oriented Architectures and enable the greatest degree of scalability to meet the business requirements.Enterprise Management
Enterprise management provides top-down, end-to-end management of the virtualized infrastructure and applications for business solutions.Security and Identity Management
Clouds must leverage a unified identity and security infrastructure to enable flexible provisioning, yet enforce security policies throughout the cloud.Development tools
Next generation development tools can leverage cloud’s distributed computing capabilities.
Cloud computing is typically divided into three levels of service offerings. These levels support virtualization and management of differing levels of the solution stack.
All of the architectural and organizational considerations mentioned thus far generally apply to all implementations of a cloud infrastructure. As we focus on building the cloud, a number of models have been developed for deploying a cloud infrastructure.Private Clouds
In a private cloud, the infrastructure for implementing the cloud is controlled completely by the enterprise. Typically, private clouds are implemented in the enterprise’s data center and managed by internal resources.Public Clouds
In a public cloud, external organizations provide the infrastructure and management required to implement the cloud. Public clouds dramatically simplify implementation and are typically billed based on usage.Hybrid Clouds
To meet the benefits of both approaches, newer execution models have been developed to combine public and private clouds into a unified solution.