Welcome to the Cloud Concepts module. By the end of this module, you should be able to describe key cloud concepts. The cloud and cloud computing concepts are explained here. Cloud refers to servers and resources that are accessed over the Internet. NIST defines cloud computing as a model for enabling ubiquitous convenient on-demand network access to a shared pool of configurable computing resources such as networks, servers, storage, applications, and services that can be rapidly provisioned and released with minimal management effort or service provider interaction. Cloud computing offers multiple benefits to organizations including elimination of capital expense to set up on-premises data centers to match peak and future demands. Ability to scale elastically right amount of resources as needed and from geographical location of choice. High performance computing hardware running in secure data centers across the world. Advanced security controls to protect your data, applications, and infrastructure. High reliability through data backups, disaster recovery, and business continuity. Increased IT productivity through quick on-demand and self-service resource provisioning, and access to data and resources any time from any location through the Internet. Key benefits of cloud computing include flexibility of location, independent deployment and anywhere access. Faster implementations of cloud systems and services. Resiliency of deployments through inbuilt design principles. Pay-as-you-go model or public cloud. Increased collaboration due to data sharing and instant availability. In-built security controls. Rapid development of applications in development and testing environments hosted in cloud systems. Scalability features to increase or decrease workload concentration on-demand. And, cost-efficient due to reduced CapEx and OpEx. The key characteristics that typically define cloud computing are explained here. On-demand and Self-service: Cloud computing services are provisioned, managed, and monitored by users on-demand, typically through a self-service portal and with no involvement of the service provider or administrator. Broad Network Access: Cloud is ubiquitous. A user can access or create data and resources in the cloud from any device and any geographical location through the Internet. Resource Pooling: The support for multitenancy means that cloud resources can be shared across multiple customer workloads without conflict or security concerns. Rapid Elasticity: Cloud resources can scale with demand, most often automatically and instantly. This means you get the right amount of resources at the right time and you pay for what you use. Measured Service: Cloud resource usage is monitored and reported through metering capabilities. This capability facilitates pay-per-use and promotes optimized usage. A typical cloud computing stack comprises networking, storage, servers, virtualization, operating system (or OS), middleware, runtime, data, and applications. There are three main service models for cloud computing that represent different sections of this stack. Infrastructure as a Service (or IaaS). This service model provides access to IT Infrastructure components such as networking, storage, servers, and virtualization in the cloud. Popular IaaS offerings include: Amazon Elastic Compute Cloud or (Amazon EC2) as your VMs, Google Compute Engine, and many more. Platform-as-a-Service (PaaS: This service model provides access to underlying hardware, OS, middleware, and runtime engines in the cloud. Organizations use these services to deploy and manage their applications, doing none of the heavy lifting tasks such as capacity planning, software maintenance, and patching or upfront resource procurement. Popular PaaS offerings include, AWS Elastic Beanstalk, Google App Engine, IBM Cloud Foundry, and many more. Software as a Service (or SaaS): This service model provides access to a packaged application that is run and managed by the service provider. Organizations use these services as an end user without worrying about the service maintenance, deployment, or the underlying infrastructure. Popular SaaS offerings include Microsoft Office 365, Salesforce, Workday, and many more. A cloud deployment strategy must take into account cost, security, and availability requirements of an application or service to be deployed. Multiple deployment models are available and each offers a unique business value. Public Cloud: This deployment model includes service offerings by a cloud service provider (or CSP) in an off-premise third-party multitenant environment. Organizations that need quick access to computing resources without large upfront effort and cost use public cloud offerings. You can choose from a broad spectrum of IaaS, PaaS, and SaaS offerings. Public Cloud provides scalability, ease of deployment, and pay-per-use subscription, resulting in faster time to market and deployment agility for your applications. However, public clouds may not be preferred for certain workloads such as legacy applications or if granular security and governance controls are required. Private Cloud: This deployment model includes single-tenant cloud environments hosted on-premises and maintained by your IT team. It provides most control over your resources and data. It can also deliver a lower total cost of ownership (or TCO) over long term but requires ongoing management and operational costs. This model is the best option for organizations that need granular governance and security controls. Hybrid Cloud: This deployment model enables data and applications to be shared across public and private cloud environments seamlessly. It helps control costs, increase security, improve performance, as well as use the benefits of public cloud. The multicloud deployment model enables you to use a combination of different cloud service providers and your own private cloud. This setup is useful since different workloads have their own unique requirements and organizations often need the flexibility of service offerings, capabilities, geographic locations, and subscription prices. However, multicloud often needs a management and orchestration platform to be used across clouds. A multitenant cloud computing architecture enables customers or tenants to share computing resources. Tenants could be different customers in a public cloud or different departments in a private cloud. Each tenant's entities are isolated and this isolation is implemented by segregating servers, network, and storage per tenant. It needs granular security controls to be implemented. As organizations progress through their journey of digital transformation, there is a growing need to adapt faster and flexible deployment and delivery models. The cloud native approach defines how to build and run applications in the modern cloud computing platforms. Such applications are loosely coupled to the underlying infrastructure components, scale with demand, embrace reusability, and support automation. A cloud native application typically includes: Microservices Architecture. It involves developing an application as a collection of small independent services. Each service runs a business capability, its own processes, and typically communicates by means of APIs or messaging. You can deploy, upgrade, or restart a microservice independent of others by using an automated system, thus facilitating frequent updates and rapid recovery in production with minimum impact. DevOps methodology: It enables collaboration between development and operations to rapidly, frequently, and consistently build, test, and release software. Continuous integration and continuous delivery pipelines are instrumental in adoption. Containers Infrastructure and Orchestration: Using containers infrastructure and orchestration isolated compute units can be created, modified, and destroyed with ease and efficiency. Typically managed with an orchestration engine such as Kubernetes, API-driven Communication: It provides a well-defined API interface for communication between services. APIs are created usually for a business use case and can be easily consumed by other services to meet business needs. Cloud native applications offer many benefits, such as continuous delivery of application features and fixes. Hardware decoupling and infrastructure abstraction using code. Rapid recovery from application and infrastructure failure. Reduced complexity of applications, development and deployment. Improved agility and scalability, and highly optimized and promotes collaboration through DevOps.