# Cloud Computing

<p style="padding: 5px; border-top: 1px solid lightgrey; border-bottom: 1px solid lightgrey;"><b>Author:</b> Tomos Leggett <span style="color: lightgrey; margin-left: 5px; margin-right: 5px;">•</span> <b>Student Code:</b> 1901852 <span style="color: lightgrey; margin-left: 5px; margin-right: 5px;">•</span> <b>Module code:</b>

[toc]


## What is Cloud Computing?

*Cloud Computing* also referred as *on-demand computing* or *software-as-a-service* is a relatively new concept in modern computing. It takes the principle of computational power, and converts it into an on-demand service where powerful computers, commonly referred to as 'servers' do most of the computational work and the data is often stored or executed via these servers on 'the cloud'. Cloud computing is already being used in many different ways, such as Google Docs, the online web document composer that stores documents in Google's cloud servers. The end user does not need to store their data physically, as data is stored automatically, sometimes freely, on the cloud, which means in theory, any computer with an internet connection can access the end user's data, albeit with correct authentication. [1]

Cloud computing has drastically impacted the IT industry by completely changing the logistics of modern computing; instead of purchasing expensive computer infrastructure and providing constant funding and maintenance to servers and networking infrastructure, businesses can instead 'rent' cloud software as a service, making the process more accessible and attractive, especially to small scale developers. Said developers can also save money on the cost of hiring employees to maintain server infrastructure as cloud computers are often hosted by massive data companies with reliable infrastructure and security to minimise downtime. [2]

There are 3 main cloud based service models:

- Software as a Service (Saas)
- Platform as a Service (PaaS)
- Infrastructure as a Service (IaaS)

### Software as a Service (SaaS)

Software as a Service is a software delivery model that focuses on delivering their services through the internet via the cloud in various forms such as web pages to give employees of businesses the ability to access business functionality remotely as opposed to using localised technology and paying for a license to use a piece of software. Often, SaaS software will be delivered at a monthly subscription, which bundles the cost of the maintenance and infrastructure, along with the right to use the software together. Sometimes this software might be charged as a per-use subscription instead of a monthly subscription, depending on the logistics of the software. Because this method is effective in increasing better Return On Investment (ROI) for a business, software as a service is currently dominating most of the well known application areas, for example, Google Workspace, Dropbox and Salesforce are all examples of major Software as a Service platforms. [3]

SaaS software is typically accessed via either a thin client interface, such as a web browser or a piece of software that can register and communicate with the service. The infrastructure that SaaS software runs on is often maintained and configured by the company that hosts it and consumers are often not permitted to manage or control the infrastructure, including storage, operating system and software which is all pre-determined by the hosting company. [4]

### Platform as a Service (PaaS)

Platform as a Service is another model of cloud computing, but this time, the infrastructure itself is the service, rather than the software. *Platform as a Service* services are often pay per-use services and typically aim for simplicity and convenience in their services. Platform as a Service typically delivers hardware and software tools through the internet, these tools are then used by software developers when building software and services themselves; this means developers can essentially run or develop an application without having to worry about building and maintaining in-house infrastructure. Businesses are often drawn to Platform as a Service products as they carry potential cost savings for the business in the long run. [5]

Businesses often appreciate Platform as a Service when building a development framework, with integrated features such as scalability and high-availability included, PaaS allows developers to also build applications using software components, which greatly reduces the time, cost and effort of programming.

### Infrastructure as a Service (IaaS)

Infrastructure as a Service is a different type of cloud service, there are only 3 elements of the infrastructure, which includes the network (usually with security), the computational power and the servers themselves. Cloud Infrastructure is designed to replace actual data centre infrastructure in businesses, by migrating all these elements of the infrastructure to the cloud, businesses can reduce maintenance of their data centres and in return, save money by cutting resources required to maintain said data centre. IaaS also helps businesses save money on costs on hardware itself, as all hardware is maintained and supplied by the cloud service. Operating systems are usually not included and require users install the operating system and deploy the software and middleware manually. [6]

With Infrastructure as a Service, employees can access cloud computers through a WAN such as the internet, where they'll be able to remote into machines via a virtual machine, through the virtual machine, employees can install and configure the operating system of the machine and the software, databases etc. IaaS services also often include additional services, often used to track business costs and monitor performance of the infrastructure. IaaS is typically cheaper than its counterparts and in turn, more limiting. However, a business may use IaaS for testing and developing software before migrating it to a different infrastructure, such as an in-house infrastructure for more control. [7]

### Disaster Recovery as a Service (DRaaS)

Disaster Recovery as a Service is a cloud service model that focuses on managing disaster recovery. It allows businesses and users to back up their data and infrastructure over the cloud. DRaaS services act a lot like SaaS services for backup but focus on helping businesses recover from a disaster more efficiently as this service often handles disaster recovery entirely.

Server-side disasters occur randomly, and there's always a chance of one happening. A disaster may include natural disasters such as flooding, heavy thunderstorms, earthquakes; issues with equipment or electricity such as an outage or hardware failure and most importantly, cyber-attacks. [8]

Because of the DRaaS pay-as-you-go model of pricing, organisations are finding it easier to rely on DRaaS services compared to using in-house backup solutions which can be costly and hard to configure or maintain. t.ly/NYTY

## What are the benefits?

### Low cost solutions

One good example of the benefits of cloud computing is more opportunity for low cost solutions. Many schools have been able to benefit from cloud computing with affordable computer technology for classroom environments. Because laptops like chromebooks run software that relies almost solely on the cloud with web apps. Chromebooks are much cheaper than regular laptops because they don't require much processing power, all of that is managed by the cloud, and because of the cloud's infrastructure, teachers can remotely view student papers even if they're in a different room, and can leave comments and suggestions. [9]

### Flexibility

For businesses, cloud computing has drastically improved the flexibility of the workspace. Thanks to cloud computing, resources are widely available remotely anytime so long as the employee has an internet connection, that includes agendas, calendar events and schedules, files and paperwork and also emails and work resources. Thanks to cloud computing, employees have more flexibility in how they handle the work demand with services that can even be accessed with a mobile phone. Employees can access resources simultaneously and be in completely different locations, even working at home is a possibility for some employees thanks to cloud computing. [10]

### Security

Cloud infrastructure is usually maintained and run by software giants who must reach regulatory compliance, this means data security and privacy isn't just a concern of the consumer but also the vendor of the cloud services. The top cloud providers will maintain enhanced security features for all their infrastructure, which guarantees that your data is in safer hands than if the data was merely self hosted. Because vendors care about security, privacy and integrity; scalability becomes a major benefit of cloud based security solutions, as cloud computing isn't hosted by the consumer, cloud based companies can adjust their infrastructure when the demand for greater security is increased, which saves employers a lot of hassle and money. [11]

As cloud computers are technically 'always-on', security features are highly available with the cloud, such as real time support and live monitoring. Live monitoring is almost a necessity for businesses these days, as they track on-coming attacks without the need to constantly monitor everything. Because of the constant live monitoring, cloud solutions can adapt network traffic automatically which prevents DDoS attacks by using content delivery networks (CDN) to balance requests and divert dangerous amounts of traffic. [12]

### Mobility

Cloud computing has the added advantage of making resources accessible by almost every device with an internet connection - this means resources are delivered and updated through the internet, which makes resources conveniently mobile, so long as the user has an internet connection.

Because of the mobility of resources, organisations can adapt a workspace cloud environment for their files and software, which will allow users to connect to the internet and access their organisation's resources and software without having to actually travel to their workspace.

Mobile phones can also access cloud services with mobile data; employees can edit files, add calendar events and more on the go without having to even use a PC. This gives a major advantage to employees of an organisation that requires their employees travel a lot, need contracted workers or employ users from home. [13]

## What are the drawbacks?

### Downtime

One major drawback of cloud computing has to be **downtime**. The concept of cloud computing is delivering resources and services via the internet, but if there's a problem with internet infrastructure, such as server downtime or electrical issues, cloud based services will inevitably experience service outages from time to time.

An over reliance on the internet's usual reliability can cost businesses major losses, as their services rely on cloud infrastructure, a simple 3 hour outage could cost your business in resource losses. Take for example Amazon Web Services (AWS) in 2017, an outage cost public trading companies a massive $150,000,000 in US dollars. [14]

According to a report from insurance market Lloyd's, a major cloud outage, that is one that lasts between 3-5 days, would cause losses estimated at 15 billion USD. This type of outage would affect small businesses the most with 63% of that loss applying to them. as Fortune 1000 companies are often lucky enough to have good cyber insurance and their own infrastructure, whilst small businesses rely on the cloud's uptime, cloud downtime can be more drastic financially than a major natural disaster. [15]

### Vendor lock-in

Because of the very liberal standardisation policies the cloud has, vendor lock-in is becoming a major disadvantage in the drive to using cloud services. A study found that 2 of the biggest drawbacks of cloud computing according to the UK market are both security and vendor lock-in. Vendor lock-in is caused by the lack of standardisation throughout the cloud computing market, meaning a lot of features of cloud based software is exclusive to customers of a particular vendor, where the format of cloud applications are often proprietary to a format the vendors decide on themselves, along with the functionality of the software, as they own the cloud infrastructure. A major lack of open APIs and standard interfaces are key focus points according to previous studies along with a lack of open standards for virtual machines (VMware, Virtualbox etc.), service deployment interfaces along with a major lack in open data interchange formats. Because of these issues, developers and businesses find it difficult to exchange data between applications when both applications are hosted on different cloud platforms or even locally stored programs on legacy systems. Vendor lock-in may ensure customers stick to certain eco-systems, but consequentially, vendor lock-in makes it extremely challenging for businesses to integrate data between different cloud providers. A subscription to other cloud providers is required if a certain resource is only compatible with that vendor's proprietary standards, which makes cloud computing suddenly appear more expensive. [16]

### Vulnerability

One major increasing problem with cloud computing is data breaches, and they're not going away any time soon. Data breaches occur when a hacker or a group of hackers gain access to a cloud datacentre, in which all data, including customer data like credit card numbers, email addresses and home addresses are either leaked by the hacker or used maliciously. Data breaches are also costly for businesses and organisations, both financially and in terms of the organisation's public image. A data breach signifies that your organisation's security is poor and untrustworthy, so customers are less likely to trust you with their data. According to IBM's 2016 cost of data breach study, a data breach costs an organisation 4 million USD. Surprisingly, 43% of corporate data leaks are caused accidentally internally by employees who disclose sensitive data by mistake or even on purpose, say in an act of corporate espionage or to sell the leaks for money. [17]

### Security & Privacy issues

One of the biggest concerns of adapting cloud services that many organisations have is with security & privacy. Security & privacy is a major concern for a lot of businesses, because customer data often contains private information that if leaked, could be disastrous for both the business in legal fees, and the customer, especially when payment information, private photos/videos or addresses are leaked. Compliance with data protection regulations is required by law in countries like the United Kingdom, with disastrous legal consequences when businesses don't comply to strict data protection laws. The concept of data security becomes more complicated when it comes to cloud solutions, as data is often stored and distributed between multiple servers across the globe. Vendors will need to make an effort to earn the trust of businesses when it comes to handling data and respecting user privacy. [18]

## Examples of Cloud Based Computing

### Saas: Salesforce

Salesforce is the leading cloud based customer relationship management (CRM) service. Before platforms like Salesforce, customer relationship management services needed to be hosted by company infrastructure and integrated appropriately, which often costs a business time, resources and money to set up and maintain. Salesforce takes customer relationship management services and hosts it on the cloud instead, delivering services via a web browser. The success of Salesforce due to the convenience of hosting a CRM service on the cloud meant that Salesforce became the fifth largest software company in the world. [19]

### IaaS: DigitalOcean

DigitalOcean is a popular IaaS cloud service that rubs shoulders with giants like AWS and Google Cloud, particularly with the Open Source community. IaaS offers different virtual machine configurations (referred to as 'droplets') with different monthly prices. These virtual machines can be accessed via the DigitalOcean website or via an SSH connection from a remote source. Developers can pick between 9 different configurations for VMs, where the smallest starts with 512mb of RAM, 1 CPU and 20GB and the largest is has 64GB of RAM, 20 CPUs and 640GB of storage. [20]

### PaaS: AWS

Amazon Web Services is one of the leading cloud services provided by Amazon, featuring a market in all major cloud services, including software as a service and infrastructure as a service. Amazon offers companies a variety of cloud tools, such as a content delivery network. Amazon is known as one of the first vendors to introduce a scalable pay-as-you-go model for their infrastructure and services, and to this day are the most popular PaaS service provider on the internet. AWS provides their services from different data centres around the world referred to by Amazon as "availability zones". These "availability zones" are then connected to each other via low latency direct connections, which means different "availability zones" in the same region are connected to each other via low latency solutions, which helps deliver performance and improves scalability. 

AWS features a proprietary command line interface, known as "The AWS Command Line Interface" which can be integrated into Microsoft Windows' Powershell to allow cloud management from the Windows Operating System.

AWS serverless application model also allows developers to test run a simulated AWS environment to test their applications. [21]

## Sources

[1] B. Hayes, ‘Cloud computing’, *Commun. ACM*, vol. 51, no. 7, pp. 9–11, Jul. 2008, doi: [10.1145/1364782.1364786](https://doi.org/10.1145/1364782.1364786).

[2] M. Armbrust *et al.*, ‘A view of cloud computing’, *Commun. ACM*, vol. 53, no. 4, pp. 50–58, Apr. 2010, doi: [10.1145/1721654.1721672](https://doi.org/10.1145/1721654.1721672).

[3] W. Sun, K. Zhang, S.-K. Chen, X. Zhang, and H. Liang, ‘Software as a Service: An Integration Perspective’, in *Service-Oriented Computing – ICSOC 2007*, vol. 4749, B. J. Krämer, K.-J. Lin, and P. Narasimhan, Eds. Berlin, Heidelberg: Springer Berlin Heidelberg, 2007, pp. 558–569. doi: [10.1007/978-3-540-74974-5_52](https://doi.org/10.1007/978-3-540-74974-5_52).

[4] P. Mell and T. Grance, ‘The NIST Definition of Cloud Computing’, p. 7. http://faculty.winthrop.edu/domanm/csci411/Handouts/NIST.pdf

[5] ‘What is PaaS? Platform as a Service Definition [Examples Included]’, *SearchCloudComputing*. https://searchcloudcomputing.techtarget.com/definition/Platform-as-a-Service-PaaS

[6] ‘What is IaaS? Infrastructure as a Service | Microsoft Azure’. https://azure.microsoft.com/en-us/overview/what-is-iaas/

[7] ‘What is IaaS? Infrastructure as a Service Definition’, *SearchCloudComputing*. https://searchcloudcomputing.techtarget.com/definition/Infrastructure-as-a-Service-IaaS

[8] ‘What is Disaster Recovery as a Service (DRaaS)? | VMware Glossary’, *VMware*. https://www.vmware.com/topics/glossary/content/disaster-recovery-service-draas.html 

[9] S. K. Mr. D. kasi Viswanath, ‘Cloud Computing Issues and Benefits Modern Education’, *Global Journal of Computer Science and Technology*, Jul. 2012, [Online]. Available: https://computerresearch.org/index.php/computer/article/view/508

[10] C. T. S. Xue and F. T. W. Xin, ‘Benefits and Challenges of the Adoption of Cloud Computing in Business’, *IJCCSA*, vol. 6, no. 6, pp. 01–15, Dec. 2016, doi: [10.5121/ijccsa.2016.6601](https://doi.org/10.5121/ijccsa.2016.6601).

[11] S. Walker, ‘5 Benefits of a Cloud Computing Security Solution’. https://blog.tbconsulting.com/5-benefits-of-a-cloud-computing-security-solution 

[12] ‘4 Biggest Cloud Security Benefits’, *CDNetworks*, Dec. 23, 2020. https://www.cdnetworks.com/cloud-security-blog/what-is-cloud-security-and-what-are-the-benefits/

[13] T. Duong, ‘3 More Benefits of the Public Cloud: Mobility, Scalability, Security’. https://blog.mycloudit.com/cloud-mobility-scalability-security

[14] ‘Disadvantages of Cloud Computing’, *Cloud Academy*, Aug. 07, 2019. https://cloudacademy.com/blog/disadvantages-of-cloud-computing/ 

[15] S. Ranger, ‘Cloud computing: Here’s how much a huge outage could cost you’, *ZDNet*. https://www.zdnet.com/article/cloud-computing-heres-how-much-a-huge-outage-could-cost-you/ 

[16] J. Opara-Martins, R. Sahandi, and F. Tian, ‘Critical analysis of vendor lock-in and its impact on cloud computing migration: a business perspective’, *J Cloud Comp*, vol. 5, no. 1, p. 4, Dec. 2016, doi: [10.1186/s13677-016-0054-z](https://doi.org/10.1186/s13677-016-0054-z).

[17] L. Cheng, F. Liu, and D. (Daphne) Yao, ‘Enterprise data breach: causes, challenges, prevention, and future directions’, *WIREs Data Mining and Knowledge Discovery*, vol. 7, no. 5, p. e1211, 2017, doi: [10.1002/widm.1211](https://doi.org/10.1002/widm.1211).

[18] Y. Sun, J. Zhang, Y. Xiong, and G. Zhu, ‘Data Security and Privacy in Cloud Computing’, *International Journal of Distributed Sensor Networks*, vol. 10, no. 7, p. 190903, Jul. 2014, doi: [10.1155/2014/190903](https://doi.org/10.1155/2014/190903).

[19] ‘What Is Salesforce? A Beginners Guide To Salesforce’, *Edureka*, Jan. 04, 2017. https://www.edureka.co/blog/what-is-salesforce/

[20] ‘What is DigitalOcean? - Definition from WhatIs.com’, *SearchCloudComputing*. https://searchcloudcomputing.techtarget.com/definition/DigitalOcean

[21] ‘What is AWS (Amazon Web Services) and How Does it Work?’, *SearchAWS*. https://searchaws.techtarget.com/definition/Amazon-Web-Services 

---

# Virtualisation and Containerisation

## Virtual Machines

## Docker

Docker is a tool for deploying lightweight micro-service based architectures in the form of *containers*. These *containers* are essentially lightweight resource friendly virtual machines that run a smaller version of an operating system specifically designed to run with your operating system without taxing too many system resources like a virtual machine would.

Virtual Machines aren't exactly small in terms of resource use, as virtual machines are essentially emulating the functionality of an entire computer within a computer. Running software on a Virtual Machine is essentially running a program through an operating system running on a virtual computer running on your hardware. As performance is a major element of application development, running multiple virtual machines on a computer poses major set-backs for the performance of your PC. Operating Systems often run graphical user interfaces and desktop environments, along with other services that in turn, waste resources such as storage, memory and network bandwidth. [1]

Deploying lightweight containers with docker solves a lot of problems for web developers. Before docker, software dependencies were a nightmare to manage, with modern applications often relying on dependencies from other services and applications. Dependencies can often conflict with each other, or web developers may want to test certain aspects of their web applications with different versions of say, for example, PHP. Thanks to docker. Docker also makes installing these applications in a new environment far easier, thanks to docker's method of 'packaging' dependencies and the applications into a container. Docker also fixes many issues with software compatibility, for example, software requiring a specific distribution of Linux can run in a lightweight container on Windows. [2]

## Sources

[1] ‘IEEE Xplore Full-Text PDF’: https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7093032

[2] D. Merkel, ‘Docker: Lightweight Linux Containers for Consistent Development and Deployment’, p. 5.

---

# Evaluate Development

![image-20220114194937223](C:/Users/Tomos/Desktop/Cloud%20Computing.assets/image-20220114194937223.png)

Docker is installed via Windows but also interacts with Ubuntu for WSL.

![image-20220114195423820](C:/Users/Tomos/Desktop/Cloud%20Computing.assets/image-20220114195423820.png)

Postgresql is installed on node.js

![image-20220114210814857](C:/Users/Tomos/Desktop/Cloud%20Computing.assets/image-20220114210814857.png)

Docker refuses to run, even after being uninstalled and re-installed.
