AZ-900 Cloud Concepts - Why Cloud Services-2
Tags: azure, cloud, cloudskills
Published: 2020-10-31 23:31:52

Highlights from Module https://docs.microsoft.com/en-us/learn/modules/discuss-why-cloud-services/

Quick refresh before taking exam.

**Discuss why cloud services**
* **Cloud Computing**  is the delivery of computing services—servers, storage, databases, networking, software, analytics, intelligence and more—over the internet (the cloud), enabling faster innovation, flexible resources, and economies of scale. You typically pay only for cloud services you use, helping lower your operating costs, run your infrastructure more efficiently, and scale as your business needs change.
* The company providing these services is referred to as a **cloud provider**. Ex: Microsoft Azure, Amazon Web Services (AWS), and the Google Cloud Platform (GCP). The cloud provider is responsible for the physical hardware required to execute your work, in addition to keeping it up to date.
* Cloud computing providers offer a wide range of services. Typically, these services include:

  * **Compute power** - such as Linux servers or web applications.
  * **Storage** - such as files and databases.
  * **Networking** - such as secure connections between the cloud  
   provider and your company.
  * **Analytics** - such as visualizing telemetry and performance data. 
* **Compute power**:
   * **A VM is an emulation of a computer** - just like your desktop or laptop you're using now. Each VM includes an operating system and hardware that appears to the user like a physical computer running Windows or Linux. You can then install whatever software you need to do the tasks you want to run in the cloud.
  * VMs aren't the only computing choice - there are two other popular options: **containers** and **serverless computing**.
  * **Containers** provide a consistent, isolated execution environment for applications. They're similar to VMs except they don't require a guest operating system. Instead, the application and all its dependencies is packaged into a "container" and then a standard runtime environment is used to execute the app. This allows the container to start up in just a few seconds, because there's no OS to boot and initialize. You only need the app to launch.
 * The open-source project, **Docker**, is one of the leading platforms for managing containers. Docker containers provide an efficient, lightweight approach to application deployment because they allow different components of the application to be deployed independently into different containers. Multiple containers can be run on a single machine, and containers can be moved between machines. The portability of the container makes it easy for applications to be deployed in multiple environments, either on-premises or in the cloud, often with no changes to the application.

  * **Serverless** computing lets you run application code without creating, configuring, or maintaining a server. The core idea is that your application is broken into separate functions that run when triggered by some action. This is ideal for automated tasks - for example, you can build a serverless process that automatically sends an email confirmation after a customer makes an online purchase.

  * The serverless model differs from VMs and containers in which you only pay for the processing time used by each function as it executes. VMs and containers are charged while they're running - even if the applications on them are idle. This architecture doesn't work for every app - but when the app logic can be separated to independent units, you can test them separately, update them separately, and launch them in microseconds, making this approach the fastest option for deployment.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/19jck1ddjn31r4voq5hi.PNG)

* **Storage**
  * The advantage to using cloud-based data storage is you can scale to meet your needs. In some cases, the storage can even expand and contract automatically - so you pay for exactly what you need at any given point in time.

* **Explore key cloud concepts**
 Cloud services have characteristics and considerations, some of which are outlined and explained below:

 * **High availability**. The ability to keep services up and running for long periods of time, with very little downtime, depending on the service in question.

 * **Scalability**. The ability to increase or decrease resources for any given workload. You can add additional resources to service a workload (known as scaling out), or add additional capabilities to manage an increase in demand to the existing resource (known as scaling up). Scalability doesn't have to be done automatically.

 * **Elasticity**. The ability to automatically or dynamically increase or decrease resources as needed. Elastic resources match the current needs, and resources are added or removed automatically to meet future needs when it’s needed (and from the most advantageous geographic location). A distinction between scalability and elasticity is that elasticity is done automatically.

 * **Agility**. The ability to react quickly. Cloud services can allocate and deallocate resources quickly. They are provided on-demand via self-service, so vast amounts of computing resources can be provisioned in minutes. There is no manual intervention in provisioning or deprovisioning services.

 * **Fault tolerance**. The ability to remain up and running even in the event of a component (or service) no longer functioning. Typically, redundancy is built into cloud services architecture, so if one component fails, a backup component takes its place. This type of service is said to be tolerant of faults.

 * **Disaster recovery**. The ability to recover from an event which has taken down a cloud service. Cloud services disaster recovery can happen very quickly, with automation and services being readily available to use.

 * **Global reach**. The ability to reach audiences around the globe. Cloud services can have a presence in various regions across the globe, which you and your customer can access, giving you a presence in those regions even though you may not have any infrastructure in that region.

 * **Customer latency capabilities**. If customers are experiencing slowness with a particular cloud service, they are said to be experiencing some latency. Cloud services have the ability to deploy resources in datacenters around the globe, which addresses any customer latency issues.

 * **Predictive cost considerations**. The ability for users to predict the costs they will incur for a particular cloud service. Costs for individual services are made available, and tools are provided to allow you to predict the costs a service will incur. You can also perform analysis based on planned growth.

 * **Technical skill requirements and considerations**. Cloud services can provide and manage hardware and software for workloads. Getting a workload up and running with cloud services demands less technical resources than having IT teams build and maintain a physical infrastructure for handling the same workload. A user can be an expert in the application they want to run without requiring skills to build and maintain the underlying hardware and software infrastructure.

 * **Increased productivity**. On-site datacenters typically require a lot of hardware setup (otherwise known as racking and stacking), software patching, and other time-consuming IT management chores. Cloud computing eliminates the need for many of these tasks. This allows IT teams to spend time focusing on achieving more important business goals.

 * **Security**. Cloud providers offer a broad set of policies, technologies, controls, and expert technology skills that can provide better security than most organizations can otherwise achieve. The result is strengthened security, which helps to protect data, apps, and infrastructure from potential threats.

 * * The concept of **economies of scale** is the ability to reduce costs and gain efficiency when operating at a larger scale in comparison to operating at a smaller scale.
Cloud providers such as Microsoft, Google, and Amazon are large businesses, and are able to leverage the benefits of economies of scale, and then pass those benefits on to their customers.

* There are two approaches to investment, commonly referred to as:

 * **Capital Expenditure (CapEx)**: This is the up front spending of money on physical infrastructure, and then deducting that up front expense over time. The up front cost from CapEx has a value that reduces over time.

 * **Operational Expenditure (OpEx)**: This is spending money on services or products now and being billed for them now. You can deduct this expense in the same year you spend it. There is no up front cost, as you pay for a service or product as you use it.

* **CapEx computing costs**:
 * Server costs
 * Storage costs
 * Network costs
 * Backup and archive costs
 * Organization continuity and disaster recovery costs
 * Datacenter infrastructure costs
 * Technical personnel
* **OpEx cloud computing costs**
 * Leasing software and customized features
 * Scaling charges based on usage/demand instead of fixed hardware or capacity
 * Billing at the user or organization level
* **Benefits of CapEx**
 * With capital expenditures, you plan your expenses at the start of a project or budget period. Your costs are fixed, meaning you know exactly how much is being spent. This is appealing when you need to predict the expenses before a project starts due to a limited budget.
* **Benefits of OpEx**
 * Demand and growth can be unpredictable and can outpace expectation, which is a challenge for the CapEx model.
 * With the OpEx model, companies wanting to try a new product or service don't need to invest in equipment. Instead, they pay as much or as little for the infrastructure as required.
 * OpEx is particularly appealing if the demand fluctuates or is unknown. Cloud services are often said to be agile. Cloud agility is the ability to rapidly change an IT infrastructure to adapt to the evolving needs of the business. 

* **Define consumption-based models**
 * Cloud service providers operate on a consumption-based model, which means that end users only pay for the resources that they use. Whatever they use is what they pay for.

 * A consumption-based model has many benefits, including:

   * No upfront costs.
   * No need to purchase and manage costly infrastructure that they may or may not use to its fullest.
   * The ability to pay for additional resources when they are needed.
   * The ability to stop paying for resources that are no longer needed.

* Kinds of services you'll find on Azure:

 * **Compute services** such as VMs and containers that can run your applications
 * **Database** services that provide both relational and NoSQL choices
 * **Identity services** that help you authenticate and protect your users
 * **Networking** services that connect your datacenter to the cloud, provide high availability or host your DNS domain
Storage solutions that can accommodate massive amounts of both structured and unstructured data
 * **AI and machine-learning services** can analyze data, text, images, comprehend speech, and make predictions using data — changing the world of agriculture, healthcare, and much more.
And many more!