Pros and cons of cloud computing
The popularity of cloud computing is driven by its numerous benefits, including improved economics, simplified IT management, scalability, flexibility, improved utilization, and a reduced carbon footprint. The following video discusses these benefits.
Benefits of the cloud
Let's consider the benefits of cloud computing individually:
- Economic model: Organizations typically estimate their IT requirements for a period of 1 to 5 years in advance in a process called capacity planning. Capacity planning leads organizations to estimate IT investments for peak loads, which could lead to either excess capacity at times (underutilized resources) or deficient capacity when loads exceed projections (which could lead to service degradation). With the pay-as-you-go economic model, organizations pay for the resources that they need. Organizations no longer have to pay upfront costs or invest in and procure expensive computing infrastructure, nor do they have to pay recurring costs to manage their infrastructure. This is particularly important for startups because by leasing compute resources, they benefit from reduced upfront costs and reduced time to market when creating and making their offerings available to the general public.
- Simplified IT management: Users of cloud services need not allocate time and resources to set up, operate, and maintain their IT resources. The cloud provider, however, competes for clients and hence invests significant resources to manage and maintain its offerings with high reliability.
- Scalability: In a traditional, in-house computing environment, organizations can take anywhere from a few days to several months to procure, set up, and operate IT infrastructure. Cloud service providers provision rented computing resources for their clients in a matter of hours or even minutes. Clients not only can scale up resources on demand but can scale them down during lull periods to save money. Therefore, clouds enable the important property of elasticity, wherein resources can be both provisioned and deprovisioned in a dynamic or programmatic manner to adapt to workload changes. In order to support elasticity, many cloud service providers make automated scaling solutions available to dynamically alter resource provisioning as demand fluctuates.
- Flexibility: For certain cloud services, providers offer their users the flexibility to configure any software platform to run on any available operating system as a virtualized image on custom-provisioned, rented infrastructure. The cloud offers a shift from an organization's inflexible IT design decisions (that are tied to specific development platforms and infrastructure) to more flexible, elastic, and modular choices.
- Improved utilization: Resource utilization is significantly improved with cloud computing because physical resources are shared across users (multitenancy). Through virtualization, servers are now consolidated as operating system images that are sharing the same system resources. Hence, utilization is improved, which leads to overall savings in power and cooling and reduces the carbon footprint.
- Rapid and global deployment: By employing the services of cloud service providers that also have a global datacenter presence, startups can compete with established players by rapidly rolling out applications and services across a global audience. This is particularly important for social media startups, which may see viral growth trends as services become popular across multiple countries/regions.
Risks of cloud computing
By embracing cloud services, users and organizations can take advantage of the above benefits. However, using these services introduces several risks, such as:
- Vendor lock-in: Cloud computing is slowly becoming standardized. OpenStack is an open-source cloud computing platform that aims to standardize the cloud computing software stack but is not fully compatible with all public clouds. Lack of standardization can lead to the situation of vendor lock-in, such as when a client signs up for a nonstandard cloud service, develops applications, and deploys data on it. The lack of standardization makes it unlikely for the client to move to another vendor seamlessly. The client often requires a third-party cloud migration specialist or an additional service to move the application to a different platform.
- Security risks: Because cloud computing with public clouds can result in an organization's data being shipped beyond its four walls, security becomes a primary risk and concern. For certain domains, it is simply unacceptable for users or organizations to do so, in which case they may have to resort to building a private cloud or own resources with restricted access to meet their needs. However, certain markets that have tight security requirements have niche solutions. An example is Azure's hybrid cloud capabilities, which allows you to run hybrid applications across on-premises and the cloud, keeping sensitive data isolated.
- Privacy risks: The use of the cloud also raises many privacy-related concerns. Depending on the laws under which a cloud service provider operates, governments may have the power to search and seize data from the provider without the client's explicit consent or notification. Furthermore, clients cannot be fully assured of data confidentiality when using public clouds. We discuss some of security risks associated with cloud computing later in this module.
- Reliability risks: Clouds also suffer from reliability issues. Public clouds do all they can to maximize uptime and reliability, but nevertheless, outages do happen. Clients must design for failures and use features such as multiple availability zones, in which clients can set up failover and redundant infrastructures to take over in case of failure. These features come at a price, of course. Cloud users attempt to mitigate the cloud reliability risk by signing service level agreements (SLAs) that enable compensation when exposed to such events. Since cloud services can only be accessed over the network, any disruption of connectivity will cause the application to fail, leading to a loss of reputation and/or revenue.
Some of these risks are not specific to cloud computing but are typical for any service provider, like one that offers banking or health services. As with any other service, cloud service providers must carefully consider the implications of these risks and design solutions to mitigate them because their credibility and reputation directly impact their rate of adoption. Cloud adopters who offer their own services must also safeguard their reputation against these risks.
Challenges in cloud computing
Along with the benefits and risks, there are several challenges associated with the adoption of cloud computing:
- Application engineering and development: A cloud inherently offers the promise of on-demand, dynamically scalable infrastructure. Programming a cloud, however, is more complex than writing code for a single machine. New programming paradigms (such as MapReduce, Spark, or GraphLab), coupled with provider APIs to manage infrastructure, help developers manage complexity but still present a steep learning curve. In addition, skilled developers with cloud experience are rare, and both costs and time for application development increase substantially with clouds. Finally, these new cloud programming models and APIs are continually evolving, which may add to recurring engineering and development costs.
- Movement of data: Use of public clouds typically requires connecting to the cloud over the internet. Because of this requirement, movement of data to and from the cloud is significantly slower than in an organization's local area network (LAN). Although the cloud allows applications to target large amounts of data (big data), data movement can become a limiting factor for cloud adoption.
- Quality of service (QoS): As mentioned earlier, cloud infrastructure is typically shared among many users. This sharing presents a challenge for cloud providers to offer QoS assurances to their clients. This challenge could disallow certain performance-sensitive applications from being migrated to the cloud. QoS in clouds is an important area in cloud research. For example, regulating I/O bandwidth to specific virtual machines could offer predictable performance for critical applications. I/O virtualization is covered in a later module.