App Deployment is an important step after App Development. It is a very difficult task for anyone to predict the computing power required for the application. The servers, storage, OS, network connections, etc. are difficult to manage simultaneously. Either there will be an overestimation of requirements which will lead to buying of servers you don’t need or underestimation of usage which will lead to the crashing of your app.
AWS EC2 (Elastic Cloud Compute) is a web service offered by Amazon that provides resizable compute capacity in the AWS cloud. It offers Infrastructure as a service (IaaS). It provides complete control of computing resources, which one can scale as per the requirement.
EC2 reduces the time required to boot and obtain new server instances i.e. Amazon EC2 instances. It allows scaling capacity as per the computing requirements. Amazon EC2 provides system administrators and developers, isolation from failure scenarios by providing them tools to build failure resilient applications.
EC2 is hosted on the concept of server virtualization, where the full computing power of server hardware can be divided into various instances and offered to the end user as a computing instance over the internet.
As the instances provided are software-based, each unique instance is scalable and users can create a virtual data center over the cloud whenever they want, with the help of on-premise computing infrastructure. This kind of liberty is possible because of the SOAP (Simple Object Access Protocol) API support. The instance, commonly known as Virtual Machine is created using Amazon Virtual Image and is hosted on Xen Hypervisor, a software for server virtualization.
What is an instance?
A virtual server used for running applications on Amazon’s EC2 is an instance. An instance can be understood as a small part of a large computer, having its own hard drive, network connection, OS, etc. You can have multiple small computers on a single physical machine, and all these small machines are called Instances.
Instances are broadly categorized into three types:
There are no long term commitments in case of On-Demand Instances. They charge you for the compute capacity used per hour. Companies can increase or decrease the capacity depending on the demand of their application and will only pay for the specified hourly rate of the instance they choose. The benefit of using On-Demand instance is that it saves you from the cost of managing, planning, and purchasing hardware and converts your large fixed costs into smaller variable costs. It also eliminates the need for “safety net” capacity to handle sudden traffic spikes.
Reserved Instances (RI)
In Reserved Instances, there is a flexibility to change operating system types and tenancies. RI has an optional capacity reservation for EC2 instances. AWS Billing applies discounted rates of RIs when the attributes of EC2 instance’s usage matches with that of an active RI.
EC2 reserves capacity matching the attributes of RI, if an Availability Zone (AZ) is specified. The running instances automatically utilize the capacity reservation of RI which matches its attributes.
Reserved Instances is also subdivided into three categories based on the application. They are:
These RIs are ready for steady stage usage. They offer a discount of up to 75% off On-Demand instances.
These RIs provide capabilities to change the attributes of RI as long as it creates RI of equal or greater value in exchange. Convertible RIs are also best suited for steady-state usage. They offer discount up to 54% off On-Demand instances.
These RIs allows you to match your capacity reservation to a predictable recurring schedule that only requires a fraction of day, week or a month. Scheduled RIs are available to launch within time windows which is reserved by the user.
One can grow the application’s compute capacity and throughput for the same budget, and enable new types of cloud computing applications by reducing the cost of the same with the help of Spot Instances. These instances allow you to bid on spare AWS EC2 computing capacity and hence are often available at a discounted rate as compared to On-Demand pricing.
How EC2 Works?
EC2 uses the AWS Management Console, the AWS Command Line Interface (CLI), or AWS Software Developer Kits (SDKs) for managing the scaling according to changing needs and makes it simple to deploy virtual servers and maintain storage.
During the setup, AMI(Amazon Machine Image) has to be created, which includes an operating system, apps, and configurations. After launching an instance, in the console, the user can either select an AMI template or create one. That AMI is loaded to the Amazon S3(Simple Storage Service), and it is registered with AWS EC2, creating an AMI identifier, at which point users can launch instances as per the requirement.
Benefits of Amazon EC2
Amazon EC2 offers 99.9% availability for each Amazon EC2 region. The services are highly reliable where replacement of instances can be done easily and rapidly.
Amazon works with Amazon VPC to provide robust networking and security for the compute resources. The compute instances are located in a VPC (Virtual Private Cloud) in a specific IP range. This specific function helps the user in deciding which instances are exposed to the internet and which remains private.
EC2 provides you with choices of multiple instance types, software packages, instance storages, and operating systems. EC2 lets us configure memory, CPU and boot partition size which is optimal for the operating system and application.
EC2 is inexpensive as it allows the user to select plans as per the requirement. This will help the user to save cost and utilize the resources fully. EC2 passes the benefits of Amazon’s scale as the user has to pay a very low amount compared to the services they provide.
Complete Computing Solution
EC2 works fine with Amazon RDS, S3, Dynamo DB and Amazon SQS. This provides complete computing, processing and storage solution.
Elastic Web-Scale Computing
Enterprises can easily increase or decrease capacity within minutes. They can commission thousands of server instances simultaneously. Additionally, all the server instances are handled by the web service APIs which can scale the servers up and down depending on the requirements.
One has complete control over the instances. One can have root access to each instance and they can interact with them as any other machine. The user can stop instance while retaining the data on the boot partition and restart the same using web service APIs.