Cloud Computing- Part I

This is a two-part series:

Part 1: Cloud Computing: An Overview
Part 2: Cloud Computing: Testing in the Cloud

Cloud Computing: An Overview

Cloud Computing has opened up new avenues for the testing world, especially when business applications are growing in complexity, making it no longer feasible to build and maintain capital intensive in-house testing facilities that can mimic real-time environments.

Cloud Computing offers companies to utilize applications and other resources stored on high-end server computers and networks managed by third party vendors. The services offered are capable of handling almost any business demand from varied testing and development environments to full-scale enterprise platforms at a reasonable cost with on-demand flexibility, enhanced collaboration, higher efficiency, and an optimized approach.

In this part, we’ll discuss some of the main types of delivery models or components of Cloud that offer “as a service” capabilities:

Infrastructure as a Service (IaaS)

IaaS constitutes the basic layer of Cloud. Customers are offered pre-installed and configured hardware and software through a virtualized interface. Pay-per-usage is the normal approach, typically by the hour, week or month.

Computing infrastructure resources offered include server resources, network resources, and storage capabilities ensuring persistent data storage. IaaS providers host users’ applications and manage system maintenance, data center management, backup, and resiliency planning.

Overall, the benefits of IaaS model may be summarized as:

  • Offers access to enterprise grade IT resources and infrastructure
  • Saves ownership cost and capital expenditures
  • Reduces cost through Pay-per-usage
  • Offers flexibility of scaling infrastructure up and down as per demand
  • Reduces time to market the product
  • Offers better security

However, users shall be required to monitor their IaaS environments carefully for being charged unfairly or for unauthorized access. Also, users are responsible for all aspects of VM management. Additionally, the services must be checked for efficiency and reliability before finalizing the deal, as users’ workloads may be highly affected if the IaaS provider experiences downtime quite frequently.

Platform as a Service (PaaS)

In addition to infrastructure, PaaS service providers offer a computing platform and solution stack as a service. It includes middleware, development tools, BI services and more. The entire web app life cycle is supported with PaaS- from building, testing, deploying and managing to updating.

A development framework is offered to create cloud based apps using built-in software components. Scalability and multi-tenant capability features are included to reduce the coding requirements. And additionally, BI tools are offered along with workflow, directory, scheduling and security services.

Overall, the benefits of PaaS model may be summarized as:

  • Saves ownership cost and capital expenditures
  • Offers the combination of both- infrastructure and application
  • Reduces costs by paying only for what you use
  • Handles all upgrades, patches and routine software maintenance
  • Maintains testing and deployment infrastructure
  • Provides capabilities to efficiently manage the entire application lifecycle.
  • Offers better Security

The major area of concern with PaaS is vendor/platform-lock-in, especially when data-driven PaaS systems are used. This means that apps will be required to be completely rewritten to migrate to another PaaS or non PaaS environment. Besides, PaaS systems are not a preferred choice for high volume, low latency transactional apps or for developers in highly regulated industries.

Function as a Service (FaaS)

FaaS provides a platform to develop, run, and manage app functionalities without the complexity of building and maintaining the infrastructure. FaaS moves the server side code from long running components to ephemeral function instances. The key difference between FaaS and PaaS is scaling. Whereas with PaaS, you need to give a thought about scaling, but with a FaaS app scaling is entirely transparent.

With FaaS, you do not need to worry about managing your own server systems or your own server applications. Simply write a piece of code to be executed whenever a certain event takes place. And FaaS provider will take care of where the code will run, and will scale up when needed. The user is charged only for the resources consumed when the code is run, and at the end of code execution, containers utilized to run the code are withdrawn.

Overall, the benefits of FaaS model may be summarized as:

  • Needs no server apps to run deployment
  • Requires payment only for the compute you need
  • Gears up to bring entire app up and down for every request
  • Enables horizontal scaling to be completely automatic, elastic and managed by the provider.
  • Offers event-driven instantaneously scalable services
  • Reduces packaging and deployment complexity

Despite the above benefits, FaaS functions have significant restrictions when it comes to local machine/instance state because for any given invocation of a function, none of the host state created will be available to any subsequent invocation. Moreover, FaaS functions are restricted in how long each invocation is allowed to run. Further, these services are not suitable for low latency trading apps; and debugging, app bundling, configuration and monitoring are matters of concern.

Software as a Service (SaaS)

SaaS is a fully-functional software licensing and delivery model that hosts apps over the internet-as a service- on demand basis. It allows users to connect to, and use cloud-based apps over the internet. All the required infrastructure, middleware, app software, maintenance, support, update or backups are managed by SaaS providers.

The services are available on pay-as -you-go model, and are generally paid for by subscription or by use.  SaaS allows users to get quickly up and running with their app at minimal upfront costs.

Overall, the benefits of SaaS model may be summarized as:

  • Enables access to sophisticated enterprise grade apps at affordable prices
  • Reduces costs by paying only for what you use
  • Offers high scalability and easy customization
  • Enables access to app data from anywhere
  • Ensures better data security

The major drawback of this model is dealing with the risk of the vendor going out of business, which simply infers that consumers need to ensure that their SLA allows them to export data from their provider in such a case. Moreover, compatibility of the devices can be a cause of concern. And there may be hidden costs involved in the process, which can cause customers to end up paying more than they should.

Apart from these delivery models, the other popular models include SECaaS (Security as a Service) and DaaS (Disaster Recovery as a Service)

SECaaS offers agility in securing workloads irrespective if they are moving to different physical hardware, different data centers or changing numbers. It further offers segmentation, anti-virus,  threat identification, and compliance checking, and is charged based on usage. A recent survey indicates that SECaaS is coming up as a leading cloud computing model being adopted by companies followed by IaaS and DRaaS (Disaster Recovery as a Service).

DRaaS, as the name suggests, is reliance on a remotely hosted disaster recovery services to ensure the reliability of your data and apps by avoiding any data loss. With a variety of security threats and cyber-crime instances, DRaaS providers usually support subscription based recovery services, managed hosting, and managed back-up services. The aim is continuous replication of critical apps, infrastructure, data and systems for quick recovery after an IT outrage or downtime. As per Gartner, the size of DRaaS market is approximately $1.7 billion with a compound annual growth rate of 25%.

Cloud Computing is definitely increasing at a rapid pace, and companies are becoming less and less hesitant to use these services. They are looking for better ways to make cloud work for them. These enhanced consumer needs have lead to the evolution in the Anything as a Service (XaaS) market. XaaS collectively describes a range of services related to cloud computing and remote access offering obvious benefits in the form of enhanced efficiency and reduced costs.

But there are certain things to consider before signing an agreement to avail these services. The services must be chosen based on need analysis, priorities, areas of specialization, and business processes. SLA’s must be carefully read and understood beforehand. And once this is done, you are ready to use Cloud computing, and accrue the benefits offered.

In the next blog, ‘Cloud Computing: Testing in the Cloud’, we will find out how these cloud computing environments can be used for software testing purposes simulating the real-world environments and devices, and the challenges they pose.

2 comments to "Cloud Computing- Part I"

  1. Pingback: Cloud Computing- Part II - Astegic Inc.

Leave a Comment

Your email address will not be published. Required fields are marked *