-
Notifications
You must be signed in to change notification settings - Fork 0
Amazon Web Services
Amazon Web Services(AWS) is a comprehensive and widely used cloud computing platform provided by Amazon which offers a vast array of on-demand services that businesses and individuals can use to build and manage their applications and infrastructure in the cloud. AWS provides a scalable, flexible, and cost-effective solution for hosting websites, running applications, storing data, and more.
Cloud computing is a technology model that allows access to a shared pool of computing resources over the internet. Instead of owning and maintaining physical hardware and infrastructure, users can leverage cloud services to access computing power, storage, databases, networking, software, and other resources on a pay-as-you-go basis. The term "cloud" in cloud computing is a metaphor for the internet, and the services are often hosted on remote servers that are part of a vast network.
- On-Demand Self-Service: Users can provision and manage computing resources as needed without requiring human intervention from service providers.
- Broad Network Access: Cloud services are accessible over the internet from a variety of devices such as laptops, smartphones, and tablets.
- Resource Pooling: Cloud providers pool computing resources to serve multiple customers. Resources are dynamically allocated and reassigned based on demand.
- Rapid Elasticity: Cloud resources can be quickly scaled up or down to accommodate changes in workload. This flexibility allows users to pay only for the resources they consume.
- Measured Service: Cloud computing resources are metered, and users are billed based on their usage. This pay-as-you-go model offers cost efficiency and allows for better budget management.
Amazon EC2, otherwise known as Amazon Elastic Compute Cloud is one of their most well known services. What EC2 allows you to do Amazon provides a secure and resizable compute capacity in the cloud. This simply means that they will provide you with a virtual server/machine that would represent a physical server so that we may be able to deploy our applications. This is a great alternative to acquiring our own hardware and connecting to a network to create our server.
The diagram below shows the basic architecture of an AWS EC2 instance deployed within an Amazon Virtual Private Cloud (VPC). The EC2 instance, which is positioned in a specific Availability Zone within the Region, is safeguarded by a security group which acts as a virtual firewall that regulates incoming and outgoing traffic. Authentication is established using a key pair, in which a private key resides on the local computer, while the public key is stored within the EC2 instance. In this specific diagram, the instance is backed by an Amazon EBS volume, which is another service of AWS that acts as a virtual hard drive. The VPC here establishes connectivity with the internet through an internet gateway.
-
Cost-effective: Amazon EC2 allows a pay-as-you-go pricing model, which means you, the user, are in control of the costs on server resources.
-
Moldable: EC2 allows a variety of different instance types (Instance types comprise different combinations of CPU, memory, storage, and network capacity) and operating systems, meaning that it is almost fully customizable to fit your needs.
-
Scalable: EC2 is capable of adjusting computing resources as the website gains or diminishes in demand.
-
Security: EC2 provides different security features such as Virtual Private Cloud, which allows us to safely secure our website and data we receive.
-
Reliable: Because EC2 is under AWS, there is a huge reliability factor, and can reduce the risk of the server having downtime.
-
Complex: Having to set up and manage EC2 instances may be unfamiliar to us, and users have stated that the documentation isn’t always clear and can be quite confusing to understand.
-
Overhead: There could be a mismanagement of resources and optimization, which can lead to unnecessary costs.
-
Maintenance: There will need to be maintenance to ensure the security of our EC2 instances
With AWS free tier, you are given 750 hours of Linux and Windows t2.micro instances each month for up to one year. To stay within the free tier we must only use EC2 Micro instances.
T2 instances in particular are Burstable Performance Instances. This means that they provide a baseline level of CPU performance and have the ability to burst above said baseline. T2 instances can sustain high CPU performance for a long time and for most general-purpose workloads will be sufficient enough without any additional charges. If one would need to run at a higher CPU utilization it could do so but it comes with an additional charge of 5 cents per vCPU-hour. Ability to burst are governed using CPU Credits and increase depending on the instance of T2.
Instance | vCPU | CPU Credits / hour | Mem (GiB) | Storage | Network Performance |
---|---|---|---|---|---|
t2.nano | 1 | 3 | 0.5 | EBS-Only | Low |
t2.micro | 1 | 6 | 1 | EBS-Only | Low to Moderate |
t2.small | 1 | 12 | 2 | EBS-Only | Low to Moderate |
t2.medium | 2 | 24 | 4 | EBS-Only | Low to Moderate |
t2.large | 2 | 36 | 8 | EBS-Only | Low to Moderate |
t2.xlarge | 4 | 54 | 16 | EBS-Only | Moderate |
t2.2xlarge | 8 | 81 | 32 | EBS-Only | Moderate |
To setup an EC2 instance you must first create an AWS account or sign into an already existing one.
Once done you will enter the console home, from there you can search up and go to the EC2 page.
From there you should now be able be greeted to the EC2 Dashboard where you will lots of information that will be talked about later.
For now you should click Launch Instance (clearly highlighted in the Amazon orange color)
On the redirected page, first enter the name of the server, it could be whatever you want, for our project I will use the name SDP32.
Next option is to choose an AMI. AMI or Amazon Machine Image is a template that contains a certain software configuration that are commonplace in public use.
For the Instance type we will be using t2.micro for the reasons discussed earlier.
Next you are going to create a key pair. A key pair is a combination of a public key that is used to encrypt data, and a private key that is used to decrypt the same data.
Once you clicked "create a new key pair," give you key pair a name that will be downloaded later. Next you can choose either an RSA or ED25519 algorithm of encyrption. The use of the algorithm depends on your needs. ED25519 keys are much smaller than RSA keys which makes it more efficient authentification time and storage space and is more secure. However, RSA is well established and much more used around the tech world.
For the project I will be using RSA and saving it as a .pem instead of a .ptk file format as we will be using SSH to connect to the instance, not PuTTY.
There are multiple different settings for network.
Network: The Virtual Private Cloud (VPC) that you will be using. Subnet: A range of IP addresses in your VPC. Auto IP Adress: Automatically assign a public IP address to the primary network of the instance. Firewall (Security Group): Security group is a set of firewall rules to control traffic to and from the instance. There are Inbound (incoming traffic to instance) rules and Outbound (outgoing traffic from instance). Default API values will be used if nothing is specficed.
I will keep everything defaulted for now.
You can then configure the storage, we will be using the default given to us for right now.
We can then now launch the instance and we should be sent to this screen and a .pem file should be in your downloads that you will want to keep in a folder for later.
EC2 is one of many different AWS services. While EC2 is among one of the most popular, there are still many other well liked services that each have different uses and capabilites.
Amazon Relational Database Services (RDS), allows for database configuration, management, and scaling very easy in the cloud. It has some similar qualities to EC2, however, RDS is much easier to manage and maintain.
Amazon's themselves say, "Both Amazon RDS and Amazon EC2 offer different advantages for running a database. Amazon RDS is easier to set up, manage, and maintain than running Oracle Database on Amazon EC2, and lets you focus on other important tasks, rather than the day-to-day administration of Oracle Database. Alternatively, running Oracle Database on Amazon EC2 gives you more control, flexibility, and choice. Depending on your application and your requirements, you might prefer one over the other."
For the senior design project we have discussed with our sponsor that we will be using EC2. However RDS could very well have been a possibility.
Amazon Simple Storage Service (S3), is an object storage service. It is maleable with any amount of data for things such as mobile applications, websites, archives, big data analytics, etc.
S3 allows the user to be able to organize, configure access and optimze the data being entered in to achieve requirements that one's specfifc organization or business may need.
How it basically works is that data that is put through S3 will be stored as an object within bucks. This object will be a file and any metadata that describe the file and a bucket is the container for objects. Each object will have a key within the bucket that will serve as a unique indentifier.
S3 is a key-value store, something that is considered very important within NoSQL databases to achieve mutating, semi or unstructed data that can grow very big. Thus this effectively makes S3 a NoSQL database. Uploaded objects will be referenced by a unique key which provides with near endless flexibility.
S3 has been shown by many to be very manageable, reliable, secure, compliant with features such as analytics and insight to provide the user more visibility with storage usage. In turn this can lead to a better analysis and optimization of overall storage. Amazon S3 also provides storage logging and monitoring to see exactly how the resources are being used in S3. They even allow S3 Versioning which give the user the ability to keep multiple versions of an object within the same bucket. So, if an object gets deleted or overwritten by accident there is the potential to restore it.
S3 could be utilized with EC2. EC2 can store the same information that S3 can, the only difference is EC2 is limited when it comes to storage capacity, and S3s only purpose is storing resources, it does come with the ability to run a server.