Using the Cloud

Paul Farr

Olympic College

June 4th 2018

The first half of 2017 cloud services market grew 28.6% with a revenue totaling $63.2 billion. The benefits of the cloud have been demonstrated and allow for rapid adoption of new technologies (Shirer, 2017). The market share was broken up in 4 main chunks in 2017, 47.1% was dominated by Amazon Web Services, Microsoft’s Azure has 10%, Google Cloud Platform and IBM’s Softlayer held 3.95% and 2.77% respectively (Coles, 2018). Glassdoor’s average base pay for “Cloud Engineers” is $95,000 a year (Glassdoor, 2018). Obviously, cloud computing is the way of the future, and anyone who wants a lucrative job should investigate jobs for the cloud.

I want to make sure that I’m as employable as possible by having the most needed skills in the job market; that is why I chose this as my topic for this research paper.

Being that the cloud is huge in scope, I will be staying with Amazon Web Services for most of the paper and because they have the largest market share at 47.1% with the next largest at 10%.

With that being said, my research question is “How do we use the cloud?”. I also broke down my research question into smaller questions; “How much does the cloud cost?”, “How are internal networks set up on the cloud?”, “How are APIs used on the cloud?”, “How do you use storage solutions on the cloud?”, “How to use machine learning on the cloud?” and “How does the cloud protect against a hug of death?”.

“How much does the cloud cost?”

The cost and organization needed for running a data center are massive. A data center needs floor space, HVAC, power, bandwidth, hardware, and employees to maintain the whole thing. Then if the business needs multiple regions, the cost times the number of data centers they operate.

By using the cloud, a business only pays for what they use. During peek hours the number of servers could be one hundred. At night when the traffic dies down the number of needed servers could, in theory, be one (It is recommended that an individual always have more than one server, however). The business doesn’t need to worry about HVAC, bandwidth, power and the employees can take a vacation when the cloud is being employed.

The cloud is cheaper because of the principle of Economies of Scale. The definition is “The characteristics of a production process in which an increase in the scale of the firm causes a decrease in the long run average cost of each unit” (Investopedia, 2016). This means it is cheaper to run one huge data center than to run a bunch of smaller data centers.

For the actual cost-per-month for AWS depends on what services one is using. An EC2 is an on-demand instance of a server. The basic instance option cost $0.0116 per hour or $0.29 a day. The most expensive instance available is the memory intensive instances with 128 vCPUs and 3904 GB of memory. That instance runs at $26.688 an hour or $640.51 for one day. There are also spot instances that are available during down times that are up to 90% off from the listed prices. The downside is they could be terminated at any time to allow for higher paying customers to run their EC2 instances. (AWS, 2018)

AWS also has S3 buckets which are places to store files for quick access on the internet. They are theoretically infinite in size, but one’s wallet is not. The cost per GB per month is $0.023. So, if one had 100 GB of data stored on an S3 bucket, it will cost $2.30. However, one must pay for the data that is leaving an S3 bucket also. That cost is at $0.01 per GB. For 100 GB sent from an S3 bucket, it will cost $1. An S3 bucket is a great way of retrieve any amount of data from anywhere but for a cost. (AWS, 2018)

“How are internal networks set up on the cloud?”

In order to have a virtual data center in the cloud, that cloud needs to have a network. AWS’s network is called Virtual Private Cloud or VPC. VPC allows cloud engineers to create virtual networks that have gateways, load balancers, public and private subnets and even VPN connections to connect local networks directly into the VPC network. Engineers can also secure the VPCs, scale them up and down as traffic demands changes.

VPCs allow for secure networks. They do this by having public and private subnets. Public subnets have a publicly facing IP address with a gateway; where private subnets do not. The two can talk with each other. This is logically just like a DMZ on a physical network. One would place webservers on the public section of the network and sensitive servers on the private network like databases. One can even go as far to place routers or EC2 instance acting as a firewall to moderate traffic between the public and private subnets. There are also extra services called GuardDuty and AWS Firewall Manager that protects the VPCs.

There are several other features that can be added to a VPC. They can have multiple IP addresses and gateways, internal and external load balancers, DHCP, NAT routers and VPN only connections. The VPN only connection is interesting because it is a publicly facing connection that will only accept one predetermined connection from a known IP address. This is used for corporate networks that have resources on the cloud. (AWS, 2018)

A vital tool for a VPC is the Elastic Load Balancer. The Elastic Load Balancer increases the availability of a web application. Traditional load balancers distribute requests such as HTTP requests to several servers evenly. AWS’s Elastic Load Balancer checks the health of the server and adds and removes servers as the come on and offline. When the server has a bad health check elastic Load Balancer stops sending requests to that server. If no other servers are available, then a new EC2 server is started up to take more requests. When the number of requests is under a certain point, and all the servers are in good health, then Elastic Load Balancer will decrease the number of EC2 servers.

“How are APIs used on the cloud?”

APIs are managed by IAM users. IAM stands for Identity and Access Management. When an IAM user is created it has very granular defined access to AWS’s APIs. These APIs can do anything in AWS. They can create new EC2 instances, make new subnets and the best part is that it can be programmatically done. Also, access to S3 buckets is done through IAM users. Using the IAM user accounts is a safe way of having using API’s because the IAM use a username, access key ID and secret access key once an EC2 instance has the correct credentials that instance can use APIs in the console or in a programming language.

Here is a list of languages that can use AWS’s APIs. (AWS, 2018)

  • Java
  • .NET (C#, #F, and Visual Basic)
  • Node.js
  • PHP
  • Python
  • Ruby
  • Go
  • C++

However, if a language has access to the system console, it can implement most of the APIs that way.

“How do you use storage solutions on the cloud?”

AWS also has S3 buckets which are places to store files for quick access on the internet. They are theoretically infinite in size but one’s wallet is not. S3 buckets are very useful for many roles. They can be used for taking the load off web servers, provide a backup and storage service and be a launching platform for patches and code deployment.

S3 buckets are secured in two ways. First is by only give specific IAM users access to a bucket when an IAM user have access and have permission to get signed URLs. That IAM user account can get a signed URL that it, in turn, passes on to a client. The client can now access that file for a limited time from that S3 bucket.

On the back end of an S3 bucket, there is a bucket name and a key to access files. The engineers at AWS didn’t want a bucket name and a file name because for the confusion with everything called name; so, the file name is the key. The only way to upload files, change files names, get signed URLs is through IAM users with the correct credentials.

“How to use machine learning on the cloud?”

Machine Learning is an incredible technology that combines pattern recognition and statistics. This is used for automating complex tasks like labeling objects in an image, voice recognition and even threat detection on a network. AWS and many other cloud providers have advance Machine Learning programs available to their customers.

AWS’s Rekognition is an easy to use image labeler and video analyzer. Rekognition is excellent for flagging explicit content. By automating the flagging of content, it greatly reduces the cost and time of looking for explicit content. It also makes for better user experience when explicit content is removed promptly. (AWS, 2017)

Figure 1-Image loaded into Rekognition (Farr, 2018)

Here I’ve uploaded an example image. The image has several labels, the number next to the label is the confidence level that the object is in the image. We can see the Rekognition says that there is a woman in the photo, but it is a very low confidence. It doesn’t get everything right.

Once again to use Rekognition on AWS one need to give IAM permission to an EC2 instance. The image or video is preferably loaded on an S3 bucket where AWS can easily reach it. It does cost $0.01 per 1000 images and $0.10 per minute of video.

With a predicted market of 1 Trillion dollars by 2020 and cloud engineers making on average $95,000 a year (Stamford, 2016) (Glassdoor, 2018) one would be ignorant to not look at getting a job in the cloud industry. But to get this job one must know “How do we use the cloud?”.

“How does the cloud protect against a hug of death?”

The “Hug of Death” is when a website is lucky enough to make it on to the spotlight of a large social media platform. This is both a curse and a blessing. In one hand your website is getting in front of many eyes where you could be selling more products, drawing attention to a cause or just entertain the public with your web games. The downside is your site crashes from hundreds of thousands of requests a second.

How do big websites not crash all the time from so many requests? They use load balancers that distribute the request a crossed many different servers. And now you can have your own load balancer when using a cloud platform.

Google Cloud Platform, Microsoft’s Azure and AWS all have load balancers as an integral part of their platforms. This allows website owners to automatically add more web servers on the fly to keep up with the demand. If a website using these tools had a “Hug of Death” event, the site would increase the number of web servers needed to keep the site running.

AWS makes setting up this website architecture very easy with Elastic Beanstalk. Its goal is to reduce management of complex tasks such as load balancing, scaling and health monitoring (AWS, 2018). The best part is you can go through and see all the infrastructure that was pre-packaged for your website.

To start using Elastic Beanstalk click on Elastic Beanstalk from the Services tap.

Click “Get started” where you can name your application, pick your programming language under “Platform” and upload your code. I’m going to name mine “WebGames”, choose PHP as my language and upload a ZIP folder with all my code.

Once that is done all that is left is to click “Create Application”. It will take some time to set everything up. When it finishes we are not done yet. At the moment our website is only running on one server and doesn’t have a load balancer either. Click on “Configuration” in the left-hand column, then “Modify” under capacity.

On this page the first thing, we need to do is change the “Environment type” to “Load balanced”. This will bring up new settings for a different environment. You can select the maximum number of EC2 instances and what triggers cause scaling. Personally, I would change the trigger metric from “NetworkOut” to “Latency”. This is so that new instances will be created when the servers slow down and not when they time out. Scroll to the bottom and click “Apply”. You will get a warning but click “Confirm”. Once again, we will wait for the system to set its self-up.

There is still more to do like set up a backend database and make an application that can use S3 buckets, but we have a website that will survive the “Hug of Death”.

Conclusion

With a predicted market of 1 Trillion dollars by 2020 and cloud engineers making on average $95,000 a year (Stamford, 2016) (Glassdoor, 2018) one would be ignorant to not look at getting a job in the cloud industry. But to get this job one must know “How do we use the cloud?”.

References

AWS. (2017, Apr 19). Detect explicit or suggestive adult content using Amazon Rekognition. Retrieved from AWS: https://aws.amazon.com/about-aws/whats-new/2017/04/detect-explicit-or-suggestive-adult-using-amazon-rekognition/

AWS. (2018). Amazon EC2 Pricing. Retrieved from AWS: https://aws.amazon.com/ec2/pricing/

AWS. (2018). Amazon S3 Pricing. Retrieved from AWS: https://aws.amazon.com/s3/pricing/

AWS. (2018). AWS Identity and Access Management Documentation. Retrieved from AWS: https://aws.amazon.com/documentation/iam/?id=docs_gateway

AWS. (2018). https://aws.amazon.com/documentation/vpc/?id=docs_gateway. Retrieved from AWS: https://aws.amazon.com/documentation/vpc/?id=docs_gateway

Coles, C. (2018). AWS vs Azure vs Google Cloud Market Share 2017. Retrieved from McAfee: https://www.skyhighnetworks.com/cloud-security-blog/microsoft-azure-closes-iaas-adoption-gap-with-amazon-aws/

Glassdoor. (2018, May 30). Cloud Engineer Salaries. Retrieved from glassdoor: https://www.glassdoor.com/Salaries/cloud-engineer-salary-SRCH_KO0,14.htm

Investopedia. (2016). Economies of Scale. Retrieved from Investopedia: https://www.investopedia.com/terms/e/economiesofscale.asp

Shirer, M. (2017, November 6). Worldwide Public Cloud Services Revenue Growth Remains Strong Through the First Half of 2017, According to IDC. Retrieved from Business Wire: https://www.businesswire.com/news/home/20171106005140/en/Worldwide-Public-Cloud-Services-Revenue-Growth-Remains

Stamford, C. (2016, July 20). Gartner Says by 2020 "Cloud Shift" Will Affect More Than $1 Trillion in IT Spending. Retrieved from Gartner: https://www.gartner.com/newsroom/id/3384720