CC Chapter 1 Unit 2
Chapter 1
Cloud Computing: An Introduction
Cloud computing is a transformative technology that allows for the storing, managing, and processing of data on a network of remote servers hosted on the Internet. This eliminates the need for local servers or personal computers for these tasks. The service providers of cloud computing, known as cloud providers, typically offer these services on a usage-based cost model. The foundation of cloud computing technology lies in grids and clusters, which are extensive networks of interconnected computers that work in concert to perform complex tasks.
Service Models in Cloud Computing
- Software as a Service (SaaS):
- Definition: SaaS provides users with access to applications hosted on a cloud infrastructure. These applications are usually accessible via web browsers, which makes them platform-independent and accessible from various client devices.
- Control: Users do not control the cloud infrastructure or individual application capabilities, barring some user-specific configuration settings.
- Examples: Google Apps (Gmail, Google Docs), Salesforce.com, EyeOS.
- Enabling Technology: SaaS heavily relies on Web Services and the concept of Web 2.0, which advocates the use of the web to its full collaborative potential.
- Accessibility: SaaS is characterized by its accessibility and portability, made possible through the Internet.
- Platform as a Service (PaaS):
- Definition: PaaS offers a cloud platform for application development without the complexity of building and maintaining the infrastructure. It's a service model that provides development tools, runtime environments, and deployment mechanisms.
- Use Case: It's ideal for those who want to build IT systems without dealing with resource management or infrastructure.
- Infrastructure as a Service (IaaS):
- Definition: IaaS provides virtualized computing resources over the Internet. It offers extensive control over the computing environment, akin to managing your own data center.
- Flexibility: Users can fully control the virtual infrastructure, providing a high degree of flexibility and customization.
- Anything/Everything as a Service (XaaS):
- Definition: XaaS refers to the ever-expanding list of services delivered over the Internet that was traditionally provided locally or on-site.
- Function as a Service (FaaS):
- Definition: FaaS is a cloud computing service that allows customers to execute code in response to events without the complex infrastructure typically associated with building and running applications.
Detailed Look at SaaS:
- Provision of Web-based Applications:
- Traditional applications are modified to work over the Internet, extending their reach and making them more flexible.
- Categories:
- General Applications: These are designed for general purposes, like office suites and multimedia tools.
- Business Applications: Tailored for business needs, such as ERP and CRM systems.
- Scientific Applications: Aimed at scientific research and simulations.
- Government Applications: Built for government-related services, such as healthcare systems.
- Web Portals:
- Web portals act as gateways to a wide array of services, including e-mail, news, and databases.
- Consistency: They offer a consistent interface and access control for multiple applications.
- Examples: Portals like iGoogle, MSNBC, and Yahoo! offer customized user experiences along with access to multiple services.
Why Cloud Computing?
Cloud computing offers several advantages over traditional computing paradigms, such as:
- Technological Edge: It leverages the latest advances in processor, storage, and networking technologies.
- Economic Impact: The pay-per-use model makes it economically viable for businesses, reducing the need for upfront capital investments in IT infrastructure.
- Simplified Infrastructure Management: Cloud environments are typically more homogeneous, simplifying resource management, security, and service quality assurance.
By utilizing cloud computing, businesses and individuals can enjoy the flexibility, scalability, and cost-efficiency that come with on-demand computing resources. Each service model (SaaS, PaaS, IaaS) provides different levels of control and abstraction, suitable for various use cases from running complete applications to developing new ones or managing infrastructure.
Platform as a Service (PaaS)
What is PaaS?
- PaaS is a cloud computing model that allows consumers to deploy their own applications, which are created with programming languages and tools supported by the provider, onto a cloud infrastructure.
- Users do not manage or control the underlying infrastructure (network, servers, operating systems, storage), but they do have control over the deployed applications and possibly configuration settings for the hosting environment.
Examples of PaaS:
- Microsoft Windows Azure
- Google App Engine
- Apache Hadoop
System Architecture of PaaS:
- Runtime Environment Design: The backbone of PaaS, comprising a suite of software services typically implemented by program libraries.
- Manageability and Interoperability: Ensures that systems can be managed efficiently and can work together seamlessly.
- Performance Optimization: Tweaks systems for optimal performance.
- Availability and Reliability: Ensures services are available when needed and can be relied upon.
- Scalability and Elasticity: Allows services to scale up or down according to demand without service interruption.
Services Offered by PaaS:
- Programming Integrated Development Environments (IDEs): IDEs on PaaS are integrated with the platform’s runtime environment, offering full functionalities and development tools like profilers and debuggers.
- Programming APIs: PaaS provides various APIs that may differ among cloud providers, but common functions for operation of computing resources, storage, and communication are standard.
- System Control Interface: This includes policy-based controls for making decisions based on set requirements and workflow controls that manage the setup and configuration of resources.
Infrastructure as a Service (IaaS)
Enabling Technique - Virtualization:
- Virtualization detaches logical resources from physical hardware, allowing multiple operating systems to share physical hardware.
- Virtualization technologies improve resource utilization, availability, security, and convenience.
Services Offered by IaaS:
- Resource Management Interface: Offers control over virtual machines, storage, and networks with operations like creation, suspension, and termination of resources.
- System Monitoring Interface: Monitors the state of virtual resources, such as CPU load, memory utilization, storage state, and network bandwidth.
Unified Communications as a Service (UCaaS) / Function as a Service (FaaS)
UCaaS:
- A delivery model that provides communication and collaboration applications and services.
- Features include messaging, online meetings, team collaboration, telephony, and video conferencing.
- UCaaS is popular for supporting distributed workforces and for disaster recovery.
FaaS:
- Also known as serverless computing, it abstracts server management away from the user, focusing on executing functions as needed.
- Supports a variety of programming languages and embodies data flow programming.
- Functions run in response to events, and the model is typically event-driven.
Advantages and Challenges of UCaaS/FaaS
Advantages:
- Scalability: Quickly scales to add or remove users.
- Disaster Recovery: Eliminates the need for multiple PBXs or UC platforms.
- Advanced Communications: Includes capabilities like mobility and text messaging.
- Productivity: Integrates with other business apps and enhances employee productivity.
Challenges:
- Loss of Control: Some enterprises may be reluctant to relinquish control.
- Carrier Coverage: Integration with BYOC environments can be complex.
- Interoperability: UCaaS platforms from different vendors may not integrate well.
- Cost Structure: Long-term licensing costs may be challenging.
- Security: Organizations lose some control over data security.
Serverless Computing
Advantages of Serverless Computing:
- Eliminates the need to manage infrastructure.
- Deployment is quick and can scale automatically.
- Developers can focus solely on code, as the cloud provider manages the rest.
Serverless/FaaS Architecture Example: AWS
- Demonstrates how services like AWS Lambda respond to events and trigger other AWS services without server management by the user.
- Events can come from various sources such as API calls or file uploads, and AWS manages the infrastructure to run these event-driven functions.
In summary, cloud computing services like PaaS, IaaS, and SaaS provide different levels of control and management, allowing businesses to choose the model that best fits their needs. PaaS focuses on application development ease, IaaS offers infrastructure control, and SaaS delivers complete software solutions. UCaaS and FaaS further simplify communication and function execution, respectively, enhancing business agility and efficiency.
Service-Oriented Architecture (SOA) and Cloud Computing
Understanding Service-Oriented Architecture (SOA):
SOA is an architectural pattern in software design where services are provided to the other components by application components, through a communication protocol over a network. The basic idea of SOA is to connect easily within and across organizations with manageable and reusable pieces. It's a way to make software components that are reusable via service interfaces, which use a common communication language over a network.
Key Components of SOA:
- Service Provider: Develops and offers the service. It can publish the services in a service registry with a formal definition or contract (e.g., WSDL).
- Service Consumer: Uses or invokes the service. It can find available services, bind to the service endpoint, and call the service's functionality as defined in the contract.
Roles in SOA:
- Service Provider: Responsible for publishing, or "exposing," a service to a network where it can be accessed by others.
- Service Consumer: A network-accessible endpoint that can request and use the functionalities provided by the service.
SOA in Cloud Computing:
In the cloud computing paradigm, SOA helps outline how services should be offered over the internet. It emphasizes the importance of service reusability, easy application maintenance, independence from vendors or platforms, and reliable and scalable architectures.
- Infrastructure-as-a-Service (IaaS): Provides the computing architecture and infrastructure; that is, the physical or virtual machines and other resources like virtual-machine disk image library, block and file-based storage, firewalls, load balancers, IP addresses, virtual local area networks, etc.
- Platform-as-a-Service (PaaS): Offers the runtime environment for applications, development and deployment tools, etc. For example, PaaS may provide hosting capabilities and also application development frameworks and tools that facilitate the creation of software products.
- Software-as-a-Service (SaaS): Delivers the applications themselves as services to the end-user. These are typically accessed through web browsers and are hosted in a cloud environment.
Benefits of SOA in Cloud Computing:
- Interoperability: Enables different platforms and systems to interact with one another within a common framework.
- Encapsulation: Services hide their internal logic from the consumer, providing a consistent interface that can be used without knowledge of the underlying complexity.
- Reusability: Promotes the development of reusable services that can be utilized in multiple application contexts, thereby reducing duplication and fostering efficiency.
- Scalability: Facilitates the development of scalable systems that can handle increasing workloads by adding resources to the service without affecting the service itself or the consumers of the service.
- Location Transparency: Services can be located anywhere on a network, provided they can be accessed over the network, allowing for the flexibility of service relocation and the abstraction from the consumer.
- Quality of Service (QoS): Enforces reliable and timely service delivery through contracts known as Service Level Agreements (SLAs), which outline the expected service performance and availability.
- Loose Coupling: Minimizes dependencies between service consumers and providers, which allows for easier system evolution and maintenance.
- Ease of Maintenance: Services can be individually maintained and updated without significant downtime or impact on the entire system.
Principles of SOA:
- Abstraction: Services should abstract the internal workings away from the consumer, only exposing operations that are valuable to the consumer.
- Standardized Service Contract: Services adhere to a standard communications agreement, typically defined using WSDL, which is understood by both providers and consumers.
- Autonomy: Services have control over the logic they encapsulate and from a service consumer's perspective, the implementation details are irrelevant.
- Discoverability: Services can be discovered through a registry that allows consumers to find them and understand their capabilities.
- Composability: Services can be assembled together to provide new, more complex services. This can involve both orchestration (defining an execution workflow for services) and choreography (describing the way services cooperate in a peer-to-peer fashion).
Challenges with SOA:
- Complexity: Managing and maintaining a large set of services and their interactions can become complex.
- Performance Overhead: The use of multiple fine-grained services can introduce performance overheads due to the increased communication and processing.
- Initial Investment: Transitioning to an SOA can require a significant upfront investment in terms of both time and capital.
Web Services and SOA:
- Web Services: Web services can be seen as an embodiment of SOA, offering a method for systems to communicate over the Internet. They allow different applications to communicate without complex custom coding, and are not tied to any one operating system or programming language.
- Web Service Protocols: Essential web service protocols include SOAP for message transmission, WSDL for describing the available services, and UDDI for listing and discovering services.
SOA vs. Microservices:
- SOA often entails integrating various services to form applications with a more monolithic structure, where services are often dependent on a shared state.
- Microservices architecture, while sharing some principles with SOA, typically structures an application as a collection of loosely coupled services. In microservices, each service is highly independent and is designed to perform a single function.
Practical Applications of SOA:
- SOA has been implemented in many industries including defense, healthcare, and gaming. It allows for the integration of diverse systems and promotes efficiency in the development and maintenance of applications.
- Many mobile applications also leverage SOA principles by using the device's built-in functions, like GPS or payment services, to offer enhanced functionality without reinventing the wheel.
By aligning with SOA, cloud computing can leverage its robust, agile, and flexible architecture to offer services that are highly reusable and maintainable, providing powerful and efficient business solutions.
Cloud Computing Architecture Overview:
Cloud computing architecture refers to the components and subcomponents required for cloud computing. These components typically consist of a front-end platform (the client or user side), a back-end platform (servers and storage), a cloud-based delivery model, and a network (typically the internet).
Key Components of Cloud Computing Architecture:
- Front-End Infrastructure: This is the user side of the cloud computing system. It comprises the interfaces and applications that are required to access the cloud computing platform.
- Back-End Infrastructure: The back-end is the 'cloud' part of the system. It consists of various computers, servers, and data storage systems that create the "cloud" of computing services.
- Cloud-Based Delivery: Instead of having local servers or personal devices handle the load, the cloud hosts applications and services.
- Network: The internet is the principal connectivity channel that binds the front end with the back end.
- Management and Security: These are integral to maintaining the cloud's integrity and functionality. They cover data management, resource management, and security protocols.
Features of Cloud Computing Architectures:
- On-Demand Self-Service: Users can autonomously provision computing capabilities without requiring human interaction, typically done through a management console.
- Broad Network Access: The services are available over the network, accessible through standard mechanisms and platforms such as mobile phones, tablets, and laptops.
- Resource Pooling: Provider resources are pooled to serve multiple consumers, with resources dynamically assigned and reassigned according to demand. This is often location-independent.
- Rapid Elasticity: Capabilities can be rapidly and elastically provisioned to scale out, and rapidly released to scale in. To the user, the capabilities available for provisioning often appear to be unlimited.
- Measured Service: Cloud systems automatically control and optimize resource use by leveraging a metering capability. This provides transparency for both the provider and consumer of the utilized service.
- Scalability: Users can scale services to fit their needs, customize applications, and access cloud services from anywhere with an internet connection.
- Fault Tolerance and Reliability: Designed to maintain high availability, data integrity, and business continuity through redundant systems and failover procedures.
- Security: Measures are in place to protect data, ensure data privacy, set authentication rules for users and devices, and more.
- Multi-Tenancy: Multiple customers can use the same hardware resources without interacting with or knowing about each other.
Cloud Deployment Models:
- Public Cloud: Services are delivered over the public internet and shared across organizations.
- Private Cloud: Services are maintained on a private network, and the hardware and software are dedicated solely to one organization.
- Hybrid Cloud: A combination of public and private clouds, bound together by technology that allows data and applications to be shared between them.
- Multi-Cloud: Using multiple cloud computing and storage services in a single heterogeneous architecture.
Cloud Programming and Management:
- Cloud applications benefit from cloud characteristics and provide scalable, on-demand applications.
- Cloud programming involves using environments and tools that support the development of scalable, reliable, and performant applications that can leverage the advantages of cloud infrastructure.
- Management in cloud computing encompasses tasks such as service level agreements, resource allocation, monitoring, and cost management.
The cloud computing architecture supports a range of services and applications, catering to numerous business needs and consumer preferences. With cloud computing, businesses can scale up as computing needs increase, and scale down as demands decrease. This flexibility in scaling allows businesses to control operational costs more efficiently.
Furthermore, the cloud enables organizations to benefit from the latest technologies without having to invest in expensive infrastructure or expertise. This is especially beneficial for small and medium-sized enterprises (SMEs) that may not have the resources to invest heavily in their IT infrastructure.
Cloud computing architectures are also designed with business continuity in mind. The replication of data across multiple redundant sites on the cloud provider's network ensures the data is always available, and the business operations can continue without any significant downtime.
In terms of management, cloud computing can be integrated with various automation and management tools that simplify provisioning, deployment, and scaling of resources. These tools, combined with the ability to monitor resource use and performance, allow organizations to make informed decisions about their IT needs.
Security within cloud computing is robust, incorporating multiple layers of controls, policies, and technologies to protect data, applications, and the associated infrastructure of cloud services. Cloud providers are typically responsible for securing the cloud infrastructure, and customers must secure their data and control which users have access to that data.
In conclusion, the cloud computing architecture is designed to deliver an efficient, scalable, flexible, and secure environment for businesses to host applications, store data, and deliver services. With its various service and deployment models, it offers a customizable platform that can suit a wide range of business requirements, allowing for technological advancement without the need for significant capital investment.