Table of Contents
Cloud Computing has been a buzz word in industry and academia since a recognizable time now. The topic has been quite popular among students to delve into a new technology, among scholars as a trending research topic, among industry to leverage upon the power of their IT infrastructure for enhancing their service-based business.
While surfing about the keyword “cloud computing”, a lot of stuff is available to read about the topic. The top results highlight the positive aspects of cloud computing, however, down the line, it can be seen that there are few terms found in the search results which highlights the negative aspects of Cloud Computing as well. While exploring further it appeared that in spite of huge worldwide popularity of the technology there still exists a community which believes that the technology is overrated.
While initial exploration it appears that the negative aspect results broadly termed the ‘cloud computing’ technology buzzword a hype and not such a turning point innovation as is claimed. Also, it appeared that due to such wide spread negativity about the technology, many organizations are a bit reluctant to adopt the technology instantly.
The cloud computing technology has a number of advantages such as high computing capability, resource elasticity, etc. over the legacy dedicated server technology which serves as the major factor for adoption of the technology worldwide despite of a long list of bottlenecks of the technology. The technology could be straightaway adopted where availability and performance are of higher importance than financial implications.
B. Cloud Services
Cloud Computing has become quite popular to utilize services from infrastructure owning entities instead of creating own on-premises infrastructure. These services could broadly be categorized as following three services:
B.1. Software as a Service (SaaS)
To utilize the computing resources, we need a layer of software over the available hardware. For e.g. if a certificate is required to be printed then a designing or a word processing software is required to be installed over the hardware (laptop or desktop). For this purpose, the software would have to be purchased from a software vendor. The software could be available as a package with a license to use by a particular number of users. A software license is required for accessing a software to ensure legitimate use and avoid piracy. A software with a perpetual license may not be available due to business perspective by the offering organization, thus, preventing use by multiple users. For multiple users, multiple license may be required which may result in too high costings and repeated expenditure to buy updated versions of the same software.
The SaaS model offers hosted software applications on IT infrastructure of a cloud service provider. The hosted application can be accessed by a user over internet. The user would be required to pay a fee based on the use. The use may be defined as the total time the application was used by the user and could be billed accordingly. The user would not be required to purchase or install the software and re-purchase whenever a new version of the software is launched. He would always be accessing the latest version of the software and paying a regular timely bill instead of spending upfront and on new releases of the software.
Example: Webmail, Google Apps, Paychex Payroll Management System.
B.2. Platform as a Service (PaaS)
A software developer requires a computing platform for development of software applications. This platform consists of a set of tools (both hardware and software) to design, code, test and deploy a software application.
An application developer would require to install and configure an Operating System on a workstation, Desktop or Laptop followed by installation and configuration of various programming languages, environment variables and other required supporting software such as Database Management System (DBMS) and drivers to connect with such external software. He may even setup some Integrated Development Environment (IDE) software for ease of coding, but still would require to create and manage configuration files to interconnect such components.
Once an application developer is ready with his code, he would need a staging environment for deployment of his coded application. For the purpose, he would need to install and configure Server Operating System and Server Applications (Web Server, Application Server, Database Server). Once completing the setup and configuration of these servers and applications, the network connectivity is also required to be establishes and tested for communication between the server machine where the application is hosted and client machine where the application is executed.
It appears, a software developer has to deal and learn a lot of system and network administration before he could really focus on his development work.
The PaaS model offers an Application developer with the platform and tools for development, testing and deployment of applications without requiring any direct interaction with the underlying infrastructure. If required, there exists option to adopt more high level application services from the service provider such as web service integration, database integration, security, storage, etc.
Example: Google App Engine, Amazon Web Services (AWS), Microsoft Azure.
B.3. Infrastructure as a Service (IaaS)
In present scenario, Information Technology has become a part of each and every organization irrespective of size and nature of business. IT tools have become a necessity to manage, promote and grow their business. To achieve this, the organization would need some ERP software for management of the organization workflows and resources. They would also need website to make an online presence. Such website may be informative website providing information about the organization’s business activity or it may provide advance features such as carts for online purchase if it’s an e-commerce organization selling products online.
To achieve this, every organization needs to establish their IT infrastructure for hosting their websites, or web applications. Before executing their main business, they need to be prepared with a huge IT Infrastructure to utilize the huge power of IT. They would be required to purchase large number of IT infrastructure such as servers, storage, CPU, network devices, racks, cabling, etc. These purchased items would need to be installed and configured and maintained by System or network administrators. Thus, the organization, whatever, business portfolio it runs would require to have an IT team mandatory. Further, the IT infrastructure would become obsolete with time and would be required to re-purchase the infrastructure elements in turns or at once.
This repetitive exercise would diverge the focus of an organization from its core business.
The IaaS model of cloud services provides the raw infrastructure as a service to the client. The client could access the infrastructure through web enabled interface to manage. The user can expand or shrink the infrastructure as per his requirement. The user is charged for the actual use of the infrastructure. The big relief for the user here comes as an advantage of accessing up to date infrastructure at any point of time. The up-gradation of real physical infrastructure lies with the service provider. The user could accept any of the available packages provided by the service provider. This provides a flexibility to the user, who can start small and gradually expand the infrastructure service size as his requirements grow. Thus, preventing huge investments, energy and efforts at initial level and focusing only on its core business rather than managing IT Infrastructure and IT Team.
Example: Amazon Elastic Cloud Compute (EC2), Google Cloud Compute, FlexiScale, GoGrid.
C. Cloud Platform User Experience
In order to have a hands-on experience of the cloud platform, the following two approaches can be adopted:
C.1. As an end user
C.2. As a cloud provider
C.1. End User:
As an end user, the services of the following well established cloud providers were used:
C.1.1. Amazon Web Services (AWS)
C.1.2. Google Cloud Platform (GCP)
Both of the above are deliberated in detail as following:
C.1.1. Amazon Web Services (AWS)
The AWS cloud platform provides a number of services under the categories of Compute, Developer Tools, Analytics, Customer Engagement, Storage, Database, Network & Content Delivery, AR & VR, etc. Two of the services, Amazon Elastic Compute Cloud (EC2) and Amazon Relational Database Service (RDS) were used to deploy existing app and database on the cloud.
Figure 1: EC2 Dashboard of an instance
The above figure shows an EC2 dashboard with an instance deployed. The instance is a virtual machine with 64-bit Red Hat Enterprise Linux version 7.5 (HVM) Operating System, Elastic Block Storage (EBS) General Purpose (SSD) Volume Type, 1 virtual CPU of 2.5 GHz Intel Xeon Family, 1 GB Memory. The instance can be securely accessed with public IP of the instance using SSH protocol like any other physical server.
Figure 2: RDS Dashboard with MariaDB
The above figure shows an RDS dashboard with a database on MariaDB Engine. The database could be accessed and operated with user name, password and public IP of the RDS from any database client by enabling the public IP access for the database in AWS RDS security settings.
The user can connect to RDS using endpoint ID, port, username and password setup in RDS cloud service through any SQL client. The user must save the username, password and the external IP address from which the user will connect with the RDS cloud within the RDS settings.
Figure 3: Connecting Amazon RDS from HeidiSQL Client
Figure 4: Database accessed at Amazon RDS from HeidiSQL Client
The above figures illustrate the process of connecting to Amazon RDS using HeidiSQL client software from a windows laptop using credentials saved in RDS settings.
C.1.2. Google Cloud Platform (GCP)
The GCP cloud platform provides a number of services under the categories of Compute, Storage, Networking, Big Data, Artificial Intelligence, etc. Two of the services Compute Engine and SQL were used to deploy existing app and database on the cloud.
Google Compute Engine:
Figure 5: Google Cloud Compute Dashboard
The above figure shows a Compute Engine dashboard with an instance deployed. The instance is a virtual machine with 64-bit CentOS 7 Operating System, 1 virtual CPU Intel Xeon Family, 3.75 GB Memory. The instance can be securely accessed with public IP of the instance using SSH protocol like any other physical server.
Figure 6: Accessing Google Cloud Compute using SSH Platform provided in dashboard
The compute engine instance can be accessed using SSH protocol like any other physical server. The above figure illustrates working on the compute engine centos operating system platform.
Figure 7: Google SQL dashboard with MySQL
The above figure shows a Google SQL dashboard with a database on MySQL Engine. The database could be accessed and operated with user name, password and public IP of the Google SQL from any database client by enabling the public IP access for the database in Google SQL security settings.
The user can connect to Google SQL using public IP address, port, username and password setup in Google SQL service through any SQL client. The user must save the username, password and the external IP address from which the user will connect with the Google SQL cloud within the security settings.
Figure 8: Connecting Google SQL from HeidiSQL Client
Figure 9: Database accessed at Google SQL from HeidiSQL Client
The above figures illustrate the process of connecting to Google SQL using HeidiSQL client software from a windows laptop using credentials saved in Google SQL settings.
C.2. Cloud Provider:
As a cloud provider an open source cloud platform “Eucalyptus” was deployed on local infrastructure. The platform could be deployed as per following steps:
- Download Centos 7 minimal ISO image from http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1804.iso
- Burn the ISO file to DVD
- Insert the DVD in the machine on which eucalyptus is planned to be setup.
- Install Centos 7 minimal setup on a local server machine with latest configuration and ensuring 100 GB free space in var folder.
- Once Centos 7 is installed reboot and login to the system with credentials defined during setup.
- NetworkManager package comes by default in CentOS 7 minimal setup. NetworkManager conflicts with eucalyptus installation. For smooth installation please remove the package using following command:
$ sudo yum remove NetworkManager
- Start installing eucalyptus with a faststart install by running the following command:
$ bash <(curl -Ls https://eucalyptus.cloud/install)
- Follow the instruction during the setup. Choose all options with default parameters. Provide a range of IP addresses from the same series as is configured in your network. Eucalyptus will automatically divide the series in private and public IP addresses.
- Ensure there is no power or network failure during the process otherwise the setup would be required to restart from beginning.
- Once the setup is successfully completed, you can access the Cloud Controller dashboard with https://Local-IP-address-of-the-physical-machine in any browser on the same network.
The following figure illustrates the method of accessing eucalyptus cloud controller with the help of local IP address and browser on the same network:
Figure 10: Eucalyptus Management Console Login Page
Figure 11: Eucalyptus Management Console Dashboard-a
Figure 12: Eucalyptus Management Console Dashboard-b
D. Advantages of Cloud Computing
D.1. No CapEx Cost
As an end user, one do not require setting up any capital infrastructure. To utilize the power of cloud computing one just need a machine with a web browser and an internet connection and can straight away start using the powerful IT infrastructure (servers, storage, platforms, software, etc). The user need purchase any hardware, facilities, space, etc. There is no need to maintain any IT Infrastructure and any IT Infrastructure Management team. One can just focus on its core business activities rather putting in time and resources on IT even if the user organization may be non-IT organization.
D.2. Updated Software
While utilizing the Software as a Service (SaaS) a user will always have latest version of software with all the latest functions and features of the latest version, thus, getting him rid of purchasing and installing software every time a new version of a software is launched featuring latest functions and features.
D.3. Scalability and Flexibility
There may be times when one needs more resources to perform their business tasks and at sometimes it may be required that the available resources may need to be used. Cloud computing provides one with the flexibility to scale their IT resources upwards (in case when more resources are required) and downwards (when less resources are required). This can be understood as a concept of pay-as-you-use. If you are utilizing more resources you pay more if you use less resources you pay less. This is an advantage over traditional approach where if one need to scale upward, it needs to purchase and maintain new IT equipment and resources, however, when the utility is less, then also the maintenance costs are involved irrespective of use.
While performing critical operations, downtime of IT facility may prove to be disastrous. It may even result in huge losses economically and may even cause irreversible damage to reputation of an organization. While utilizing cloud services the availability is always High since the cloud is always On since it rides upon the huge IT infrastructure lying below the virtualization layer of cloud computing. While it may appear to the user that he is accessing a very small amount or a single resource as per his requirement, however, he has a plethora of resource pool ready for use in case of a single resource failure and switching over to another available resource without interrupting the user.
In the cloud era, the user is always loaded with updated technology to avail the best performance. In order to be competitive, cloud providers constantly needs to update their servers, disks and other equipment to provide the users with lightning fast performance in comparison to legacy technology and in contrast with their competitors and as is always promised to user while promoting performance as a promised feature of cloud computing.
With the power of cloud, data resides at anywhere access location. One need not come to office or a particular location to access data, software or infrastructure in case he has adopted cloud computing. It gives one mobility to work from place of his choice while saving on commuting and increasing collaboration with distant team members. The team members can be anywhere in the world but can work together at any point of time.
E. Bottlenecks of Cloud Computing
E.1. Unpredicted costs:
Hosting an application on a dedicated server has a fixed CapEx expenditure and a near constant OpEx thereafter. For a new startup with normal operations the CapEx would include a server with CPUs, Memory and Storage. The OpEx would consist of bandwidth, a static IP and a domain name.
The user can have a clear-cut idea about the CapEx and OpEx and would stick to it for a reasonable time unless the hardware or software is expanded or upgraded.
However, with cloud computing the expenditure could be unpredicted and uncontrolled due to highly scalable infrastructure. User should set pre-defined budget limit on the billing criteria to contain unpredictable expenditure.
E.2. Loss of Control:
The user data and applications may be installed and stored on infrastructure outside the physical boundaries of an enterprise and even at locations where the owner himself is not aware of the locations of the physical infrastructure where the data is located. The same data if is stored on the infrastructure at owner or enterprise premises would be under direct control of the owner. In case of cloud computing the entire data is behind an invisible wall where the user has no direct control. The direct control and prevention of physical access of data may be very crucial in case of sensitive data such as data pertaining to government, citizen services or defense related activities. The loss of control over data may also result in invasion of data privacy.
Cloud Technology provides everything under its offer as a service to the client. Each service offered to the client may be a collection of a number of independent services. These independent services would in turn require a physical machine to be installed and executed upon. Since, cloud computing highly depend upon virtualization technology for optimizing on requirement of physical infrastructure the service provider may deploy the services on same physical machine which may result in allocation of reduced resources to each service and ultimately result in a performance bottleneck. In order to avoid such performance bottlenecks its highly recommended that each of the required service should be deployed on individual physical machines for best performance.
E.4. Dependency on internet:
Whatever, the underlying servers, storage and network interfaces may be deployed to provide cloud computing services, if the bandwidth availability at end user’s end is too poor then there would be no difference of service quality to the end user whether he is availing services through a dedicated infrastructure or from a cloud infrastructure.
The cloud computing infrastructure is highly complex and still continues to grow more complex. At the backend of providing the customer with highly available, reliable and stable service, there is an ongoing large-scale repairs, updates, upgrades, addition and removal of systems and components (a large volume as hot replacement while the services are still ongoing). The servers which may already be serving a high volume of users may even face intense workload during such scenarios. The intertwined cloud infrastructure which in turn depends on a large volume of virtual machines may highly impact the reliability of the cloud services if the fault prevention mechanism and countermeasures are not in place. The cloud services providers must ensure that proactive measures and mechanisms are in place to tackle the possible failures in the cloud systems.
E.6. Compatibility or Interoperability:
The user may avail PaaS for developing and IaaS for hosting of their applications and data from a particular cloud service provider of the available service providers. This means the computation and data both are at service provider’s end. While the services of the cloud service provider is satisfactory in terms of performance, availability, financials and other services of the cloud service provider there is no problem, but when a user faces issues with the service provider, it may be difficult to extract the data and programs from the service provider’s infrastructure, which may result in lock-in problems. The lock-ins may arise due to architecture offered by the service provider or the contract between the user and the service provider.
The user must ensure that he is not trapped in to using any proprietary technology of the service provider or under any clause of the contracts such as lock-in periods between the user and service provider. If user is trapped under these problems then there may arise an issue of migrating to a different service provider due to compatibility or interoperability issues.
The cloud infrastructure relies heavily on visualization technology over physical hardware. This virtualization allows a high resource sharing between various services. These services in turn may be utilized by different users. In this case, a physical hardware is in any ways shared by a number of entities at a time which could result in a major concern of security breaches.
Also, the cloud services highly depend the distributed resources connected through internet. Internet in itself lacks the security component in its basic architecture. The security concern of the internet has been taken care of in the form of patches over time. The additional layer of cloud computing over existing layers would result in summation of these security concerns at a more advanced level requiring more advanced security methods to contain any losses which may occur due to security lapses at hardware or network level or during storing, processing and communicating.
The security problems of cloud computing should be addressed in terms of confidentiality, integrity and availability of the data or system.
E.8. Integration Problems:
Despite of its bottlenecks, cloud technology has been showing rapid growth in offering its services. One of the ways is through developing and providing Application Program Interfaces (APIs). These APIs may be developed and provided by different providers at different layers of software, hardware or network. These APIs may also act as bridges between various models and frameworks of cloud computing. Thus, integration of such APIs across heterogenous environments and platforms may pose a serious challenge and appear to be a major bottleneck for advancements in cloud technology.
With availability of major players across the globe there is a need to develop a compatible and ecosystem with adoption of standardization to enable seamless integration of APIs to leverage upon the technology.
Cloud Computing is a paradigm providing IT infrastructure, software and platforms as a service while eliminating the need of physical infrastructure and resources to manage it. The technology rides upon the existing large-scale infrastructure by applying a virtualization layer on top of the physical layer of the infrastructure thereby abstracting the physical infrastructure completely from the user. The technology has a number of advantages such as flexibility, scalability, availability and performance in parallel to its demerits/ bottlenecks such as loss of control, unpredictable costs and complexity which are side-lined or avoided while migrating to or adopting the technology due to wide spread publicity of the technology. The technology could be adopted where its advantages prevail over its bottlenecks as per user requirements.
The user requirements should be clearly understood before arriving at a conclusion of adopting or migrating to the technology. One such scenario could be where availability and performance are of higher importance than financial implications.
A user must prefer dedicated server technology over cloud computing where there are considerable financial implications and data is highly crucial in comparison to the requirement of highly scalable services.
We hope the above information was useful for you. If you liked this article, click the Like button. If you find it useful, Share it with your friends. If you have suggestions for improvements, please leave your valuable feedback or suggestions as Comment.