Posts

Showing posts with the label cloud computing

EC2 - Load Balancing and Auto scaling

Image
Load balancing and Auto scaling Let's suppose we have deployed our web application to the EC2 instance. And all of the sudden, our app. got viral and previously 10k daily users became 1 million. So we want our infrastructure to use less resources when there is little or no user, more when there is high load or spike, it somehow must adjust itself in a way to withstand to this load. This is when auto scaling comes into play. Load balancer - is a proxy that allows you to distribute connections to servers. It provides fault tolerance and high availability . Load balancer can be front of  EC2,ECS, other load balancers, lambda functions etc. There are 3 types of load balancer in AWS: Application load balancer (operates at Application layer (L7) http, https etc.) Network load balancer (operates at IP layer (L4) -  TCP, TLS, UDP etc.)  Gateway load balancer (uses Geneva protocol, balances firewalls,IDS/IPS, operates at layer 3 ) Auto scaling - allows you to automatically and terminate EC2

EC2 - User data

Image
User data Functionality in EC2 service is important and very handy tool. This allows us to execute script right after EC2 instance creation phase. By that we can execute,install any program we want or update, upgrade operating system on that virtual machine. User data functionality will run once just after completion of the instance creation sequence.  First we need to create an EC2 instance with extra steps. Choose Amazon Linux OS so we don't have to install aws-cli tool which we will need in the next steps.    Click to advanced options and add script below also tick the metadata options as well. With new metadata service it is not possible to send request to metadata service without secret key. That is why we need to use old metadata service for the demonstration purposes. Script is at the end of the page !!! We need one more thing to do, since by default all the ports are closed state. We need to add firewall allow line to open port 80 to serve our page to the public web. Click

EC2

Image
EC2 EC2 is a service in AWS, allows you to create and manage EC2 instances. EC2 instances are basically virtual machine, highly recommend you to read (https://www.learn-aws.com/2024/11/server-virtualization.html). So long story short, EC2 allows you create/manage EC2 instances based on your resource needs.  How EC2 instances works ? There are powerfull servers on AWS datacenters and hypervisor software used to manage those EC2 instances (virtual machines) on these servers. A lot of variying CPU,RAM,networking combination of EC2 options available. There are 3 types of IP addresses for EC2 instances: Public: You are not charged for public IP assignment Lost when instance is stopped (When you stop and start instance new public address will be assigned) Associated with private IP address  Cannot be moved between instances Private: Retained when instance is stopped (Start and stop instance same private address will be assigned) Used in association with public address Elastic: You are charge

High availability and Fault tolerance

High availability and Fault tolerance High availability: Minimal service interruption Designed with no single point of failure Uptime measured in percentage, like 99.9999% Lower cost compared to Fault tolerance Examples services create High Availability : Elastic load balancers, EC2 auto scaler, Amazon Route 53 Fault tolerance: No service interruption Specialized hardware with instant failover functionality No downtime Higher cost compared to High Availability Examples of Fault Tolerance :  Disk mirroring, Synchronous Database replication, redundant power.

Scaling vertically vs Scaling horizontally

Image
Scaling vertically vs Scaling horizontally Scaling vertically - means that we are upgrading our server's capability so it will perform better.Let's suppose we have t1.micro (1 CPU and 1GB RAM) EC2 instance and running Mysql database on it.If we upgrade server resources (change EC2 instance to m1.large). We would definetly improve overall performance of database. But it costs money and sometimes not necessary. Scaling horizontally - means that we are adding multiple servers to our infrastructure to increase the performance. Let's suppose we have t1.micro (1 CPU and 1GB RAM) EC2 instance and running web application on it. If we add multiple t1.micro servers with same application and add load-balancer front of it. Overall performance of web application will be better. This kind of scaling is a lot cheaper than vertical scaling since we don't need to invest high-end expensive servers. These two scaling methods have their own usages. Scaling horizontally of databaese server

Server Virtualization

Image
Server Virtualization Server Virtualization is key concept of cloud. This enables a lot of opportunities and also decrease the work-load of IT engineers.  Let's suppose we have a server infrastructure, to deploy our web application on it, we must allocate resources, install operating system, required libraries/tools  etc. And do same things every time when  we transfer it to other physical server or location.  And it is major hurdle to transfer application from this server to another one. Not only that but if our server has a lot of resources than it normally use, then it would cost us a lot of money too. We want to make sure that our application portable so that it will able to work on another computer/server as well. Therefore hypervisor technology came into play. Hypervisor adds abstraction layer between server (host) and to the virtual machines (VM). Hypervisor allocates resources (CPU,RAM,Storage etc.) for virtual machines (VM). Thanks to this technology we can now run multipl

IAM - Roles

Image
IAM Roles Roles in AWS has special meaning. With this functionality you can define different variety of roles and assign it users or your application/service can use them. Roles are specifically important for AWS security. Because roles use temporary credentials with services. So that we don't need to use own permanent credentials to do some operations. If somehow hackers got access to AWS infrastructure they won't able to access our cached permanent  credentials. Here are some of advantages of using roles : Reduced Risk of Credential Exposure Least Privilege Principle Cross-Account Access  Let's create a role and assign it to the user  Click to "IAM" , "Roles" and then "Create role" button.  We need ARN (we talked about this in the previous post) of the user. Copy 12 digit unique ID. During role creation select "AWS account" since we are planning to add this role to user. Enter the ID we got from previous step. This ID defines our us