Summer of Tech

View Original

Introduction to Cloud Computing with AWS

Amazon Web Services (AWS) is the world's most comprehensive and broadly adopted cloud platform. 

The first part of the bootcamp was presented by the AWS team:

  • Jimmy Morgan - Senior Cloud Architect

  • Ruskin Dantra - Solutions Architect

  • Vishwanatha Nayak - Solutions Architect

A big thanks to this amazing team of mentors; Ruskin Dantra, Vishwanatha Nayak, Seb Kruger, Richard Weerasinghe, Maryam Murray, Imran Sadiq, Giovanni Vigorelli, Nicolle Loh, Viral Shah and Sam Kommunuri.

Cloud Computing 101 - What is cloud computing?

  • Cloud computing is the delivery of different services through the Internet, including storage, servers, databases, networking, and software. Cloud-based storage makes it possible to save files remotely and retrieve them on demand (Cloud Computing definition).

  • In this bootcamp, Jimmy started off by explaining the pizza concept: There are many different ways to make the pizza: you can make the pizza yourself in your home so that you supply your own oven, ingredients and electricity/power. There are also kitchen services where you can hire a kitchen so that the oven, electricity and infrastructure is already provided for you, you just need to bring the ingredients. Finally, there is takeaway pizza where everything is already completely made for you. 

  • Cloud computing service model explained:

    • Just like making your own pizza, there are computing services that provide many different ways to start up your work. You have the “traditional data-centre deployment” option where you set up everything yourself in order for your software to run. You provide the power, the data centre, your server, an operating system and you’ll need to do your own software deployment. 

    • There is “Infrastructure as a service (IaaS)”, which is a service that offers the infrastructure and provides power/electricity and data centres so you just need to set up your operating system and software deployment. 

    • There is also Platform as-a-service (PaaS): where you don’t need to manage the hardware or operating systems, you just need to worry about deploying your software on it. 

    • Then you have software-as-a-service (Saas), where everything is done for you and all you need to do is log into it. For example, Github, Facebook, Twitter, this is just logging into a system that someone else is running and upgrading. Software as a service is now more common than ever.

  • Some history behind the progression of the cloud computing services:

    • The traditional server and racks cost up to $25k+, first you had to build it and then maintain it. There are issues with this as sometimes you can get wastage if you’re not using all the hardware. If there are multiple users, their demands may overpower the capability and capacity that the computer can work at.

    • Cloud computing is elastic, you only have to pay for what you use and don’t need to pay $25k+ for a server and still get the same outcome. This is cloud computing; it’s the delivery of services through the internet so you can scale to meet demand and only pay for the services you’re using.

    • The target for cloud computing is to have scalable and elastic infrastructure so that it lowers the cost of failure and the overall cost of running and allows you to run more experiments.

Diving into some cloud services:

  • AWS (Amazon Web Services) offers services for running code, managing data, and integrating applications, all without managing servers. Serverless technologies feature automatic scaling, built-in high availability, and a pay-for-use billing model to increase agility and optimise costs. AWS is the world’s most comprehensive and broadly adopted cloud platform.

  • Elastic Cloud Computing is a service they provide too: this is infrastructure-as-a-service. It’s a virtual machine, you control your systems and can deploy it in any AWS region. Resizable capacity: change how big  your server needs to be at any time. You can start and stop the server anytime you want. 

  • Simple Storage Service - a serverless storage service which you can use to store and retrieve any amount of data that you create from anywhere.

Jimmy led us through a demo of infrastructure as a service approach on AWS (Demo 1 S3 storage and launching an EC2 instance) to demonstrate the ease of creating a cloud virtual machine.

  • He showed us how you can use the infrastructure-as-a-service approach to build your own virtual machine. It essentially works just like using another desktop. There are options to choose your own infrastructure, you can choose a CPU, your own storage in GB, IP address and even your own firewall for your machine. It’s basically building a virtual machine that you can access from your own device. 

  • AWS has a global infrastructure and can be deployed across any region globally. In a region, there are multiple Availability Zones that makeup one region so that if one part fails, you can still run and deploy and you won’t notice it as it’s secure

  • Shared Responsibility Model. AWS handles a certain amount of security such as the physical locations of data centres, internet connections, software, power and physical hardware. As consumers, we are responsible for managing our side of security. E.g. configure the service so that it is secure, choose the privacy method if it’s sensitive data, and public if it needs to be accessed by others.

  • AWS Lambda service:

    • There are other platforms and services where you don’t actually need to run servers or operating systems like AWS Lambda.

    • AWS Lambda is a Platform-as-a-service. There are multiple coding languages supported that you can use to write code and upload it to this service. All you need to do is write the code and upload it as a code package to the service and the AWS Lambda will handle all the infrastructure for you. AWS will also handle the scaling so if demand for your software increases, it’ll be scaled so that it can handle the higher demand. You can also deploy your software in any region globally. You only need to pay for the CPU and RAM function uses, so when your function is out of use or waiting to be used, you don’t need to pay for that, you only need to pay for it when the functions are actually being executed. 

    • There were also other amazing platform-as-a-service approaches that Jimmy explained; such as Amazon API Gateway is a Platform-as-a-service, used for system to system communication and Amazon Rekognition Platform-as-a-service, for images.

Creating the code for these amazing services

  • Due to the cloud, everything is deployable through code and templates, you can save time by not having to worry about setting up your machinery or any extra hassles.

  • It’s about trying something, destroying it and trying it again.

  • There is also a framework to help build these applications called the AWS Chalice: a framework for writing serverless apps in Python, hosted on Github.

  • Infrastructure as code: AWS has CloudFormation, it’s a way to templateise your infrastructure and build and deploy using templates. The cloud development kit is also an easy way to build infrastructure. 

How to get started on AWS

Building a Serverless Web Application with AWS LAB

  • AWS delivered the second part of this bootcamp in which we were put into breakout rooms of teams of 4 to complete a lab. The amazing AWS mentors helped us apply our knowledge from the previous bootcamp and showed us the ease to get started on AWS and building a serverless web application. 

  • A serverless application is a combination of Lambda functions, event sources, and other resources that work together to perform tasks.

  • In this lab, we followed an AWS tutorial.

  • There were five modules overall which led us through the stages of building a serverless web application, making changes to it and then terminating our resources after. 

  • The first module taught us the steps of creating a base for the serverless application on AWS. We used the AWS Amplify Console which provides a git-based workflow for continuous deployment. All of the static web content such as the HTML, CSS and Javascript content is managed by AWS Amplify Console. 

  • In the second module, we started adding functionality to our serverless web application to manage users. We used Amazon Cognito to create a user pool in order to manage users’ accounts so that users could register as a new user, verify their email address and sign into the site.

  • Module three was all about working on the serverless service backend and implementing the AWS Lambda to build a backend process for handling requests on the web application.

  • In module four we used the Amazon API Gateway to expose the Lambda function we built in module three to create an API that is accessible by the public on the internet. The Amazon API Gateway is the gateway between front-end to back-end systems. Once we got this working, we were able to statically host our website into a dynamic web application.

  • In the final module, we did some resource cleanup and terminated all the resources that we created in the lab. It is a good practice to delete resources you’re no longer using to avoid unwanted changes.

  • The overall lab was easy to follow along and it was an amazing and educating experience to work alongside others and Amazon AWS experts to create serverless web applications through Amazon AWS.

Links for Building a Serverless Web Application with AWS LAB:

https://aws.amazon.com/getting-started/hands-on/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/ - What we did in the second part of this series.

https://aws.amazon.com/console/ - AWS Management Console where you integrate majority of the lab into.