Understanding Cloud Computing Architecture - Part I
“I don’t need a hard disk in my computer if I can get to the server faster… carrying around these non-connected computers is byzantine by comparison.” ~ Steve Jobs, Co-founder, CEO, and Chairman of Apple Inc.
Cloud computing is a natural extension of many of the design principles, protocols, plumbing and systems that have been developed over the past 20 years. Utility-oriented data centers are the first outcome of Cloud-computing and they serve as the infrastructure through which the services are implemented and delivered.
Cloud computing requires some standard protocols with which different layers of hardware, software and clients can communicate with one another. The cloud-computing paradigm emerged as a result of the convergence of various existing models, technologies, and concepts, which changed the way we deliver and use IT services. A broad definition of the phenomenon could then be as follows:
Cloud computing is a utility-oriented and Internet-centric way of delivering IT services on demand. These services cover the entire computing stack: from the hardware infrastructure packaged as a set of virtual machines to software services such as development platforms and distributed applications.
This definition captures the most important and fundamental aspects of Cloud computing. The most commonly used set of protocols uses XML as the messaging format, the Simple Object Access Protocol(SOAP) protocol as the object model and a set of discovery and description protocols based on the Web Services Description Language(WSDL) to manage transactions.
Cloud Reference Model
Cloud resources are harnessed to offer "computing/horsepower" required for providing services. Often, this layer is implemented by using a datacenter in which hundreds and thousands of nodes are stacked together. Cloud infrastructure can be in heterogeneous nature as a variety of resources such as clusters and even networked PCs can be used to build it. Moreover, database systems and storage services can also be part of the infrastructure.
Cloud services from different providers can be composed together to provide a completely integrated solution covering all the computing stack of a system. Infrastructure-as-a-Service (IaaS) providers can offer the bare metal in terms of virtual machines where Platform-as-a-Service (PaaS) solutions are deployed. When there is no need for a PaaS-layer, it is possible to directly customize the virtual Web farms: a distributed system composed by Web Servers, database servers, and load.
Infrastructure/Hardware as a Service
Infrastructure and Hardware as Service solutions are the most popular and developed market segment of Cloud computing. They deliver customizable infrastructure on demand. The available options within the IaaS-offering umbrella range from single servers to entire infrastructures including network devices, load balancers, database, and Web servers.
IaaS/HaaS solutions bring all the benefits of hardware virtualization: workload partitioning, application isolation, sandboxing and hardware tuning. From the perspective of the service provider, it allows better exploitation of the IT infrastructure and provides a more secure environment for executing third-party applications. from the perspective of the customer, it reduces the administration and maintenance cost as well as the capital costs allowed to purchase hardware. At the same time, users can take advantage of the full customization offered by virtualization to deploy their infrastructure in the Cloud.
Platform as a Service (PaaS)
Platform as a service (PaaS) is a cloud computing model in which a third-party provider delivers hardware and software tools -- usually those needed for application development -- to users over the internet. A PaaS provider hosts the hardware and software on its own infrastructure. As a result, PaaS frees developers from having to install in-house hardware and software to develop or run a new application.
PaaS does not typically replace a business's entire IT infrastructure. Instead, it tends to incorporate various underlying cloud infrastructure components, such as operating systems, servers, databases, middleware, networking equipment and storage services. Each of these functions is owned, operated, configured and maintained by the service provider. PaaS also provides additional resources, including database management systems, programming languages, libraries and various development tools.
A PaaS provider builds and supplies a resilient and optimized environment on which users can install applications and data sets. Users can focus on creating and running applications rather than constructing and maintaining the underlying infrastructure and services.
OpenShift is an on-premises containerization PaaS software.
2) Google App Engine
Google App Engine allows developers to build and host web applications in cloud-based data centers that Google manages.
Software as a Service (SaaS)
Software-as-a-Service (SaaS) is a software delivery model providing access to applications through the Internet as a Web-based service. It provides a means to free users from complex hardware and software management by offloading such tasks to third parties, who build applications accessible to multiple users through a Web browser.
In the software as a service model, the application, or service, is deployed from a centralized data center across a network- Internet, Intranet, LAN, or VPN - providing access and use on a recurring fee basis.
Software-as-a-Service applications can serve different needs. CRM, ERP, and social networking applications are the most popular ones. SalesForce.com is probably the most successful and popular example of CRM service.
Amazon Relational Database Service (RDS)
Amazon Relational Database Service (Amazon RDS) makes it easy to set up, operate, and scale a relational database in the cloud. It provides cost-efficient and resizable capacity while automating time-consuming administration tasks such as hardware provisioning, database setup, patching and backups. It frees you to focus on your applications so you can give them the fast performance, high availability, security and compatibility they need.
Amazon RDS is available on several database instance types - optimized for memory, performance or I/O - and provides you with six familiar database engines to choose from, including Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle Database, and SQL Server. You can use the AWS Database Migration Service to easily migrate or replicate your existing databases to Amazon RDS.
1) Lower Administration Burden
Easy to use, automatic software patching, best practice recommendations.
You can use the AWS Management Console, or simple API calls to access the capabilities of a production-ready relational database in minutes.
Amazon RDS database instances are pre-configured with parameters and settings appropriate for the engine and class you have selected.
Amazon RDS will make sure that the relational database software powering your deployment stays up-to-date with the latest patches. You can exert