Learning Amazon Web Services

heldsteel7
CloudCyntral
Published in
5 min readMar 6, 2018

--

Basics of cloud computing in general and AWS in particular.

Cloud is something we as a programmers must be aware of in today’s time. Most of new products are born into the cloud and as an engineer we need to use the cloud services for designing, implementing and operating our products. And not to mention in most efficient ways in terms of performance, cost and maintainablilty.

In this post (or series) we will explore the cloud services from Amazon Web Services. We will not go into great details of each service, but rather it would be just enough introduction.

So as a loose definition Cloud computing can be termed as an abstract set of computational resources and tools which are owned by cloud providers and made available to external world via well defined interfaces.

So what do we consider as computational resources — well, Compute power (such as provided by physical machines — desktops and servers or virtual machines), Storages (Hard disks, SSD’s, Databases), networks (for data transfer etc). Cloud provide these basic computational resources and more services in “elastic” form through well defined interfaces.

Basically cloud providers can be categorized into three types:

  • Infrastructure as a service (IaaS): Basic computational resources in bare minimum form such as virtual machines. Users have control on what applications and dependencies are installed on these machines. We may deploy our own application on these resources. Cloud providers manage the underlying cloud infrastructure.
  • Platform as a Service (PaaS): Typically these are services which deploy customer’s applications. As a user we do not have control on underlying infrastructure as well applications. Cloud vendors typically provide toolkit such as application runtime, a well defined SDK to write code, databases etc.
  • Software as a Service (SaaS): These are software application deployed into the cloud and made available to use. Application is written and maintained by vendor and as a user we only operate the application. Typically a subscription or pay per use model is followed.

Amazon Web Services (AWS) as name depicts are a set of services provided via well defined web services. Primarily AWS can be called as IaaS vendor.

While working with cloud we often here term — ‘elastic’, what does it really mean is, services provide an ability to scale out and scale in rapidly without having to think about the underlying infrastructure. Since the infrastructure is managed by the cloud provider, as a user all we need to care is using resources — in cost-effective, secure manner.

Compute

Compute power is most basic requirement for any real use of cloud. In fact the cloud, as provided by AWS started with its offering of compute service in the form of Elastic Compute Cloud — (EC2). This service provide secure, resizable (elastic) compute capcity. The interface allow to instantiate machines (be it a single machine, hundred or thousand machines) in cloud within minutes. These are virtual servers launched in AWS data centers across the globe.

EC2 also provide various configurations, in terms of memory, CPUs, GPUs or networking capabilities to choose from. Thus whatever may be requirement, it could be fulfilled without any issue. Its important to know that EC2 is a reliable service with SLA of 99.95% availability in each region (we will cover region in later post).

It should be noted that the EC2 machine or instance is completely owned by us and we are responsible for managing the access to it. EC2 instance may be accessed remotely and configured as per our needs. That means we share responsibility with AWS to secure our machines.

EC2 instances are instantiated from pre-baked virtual images, known as AMI (Amazon Machine Image). For now, just remember that, AMI can be viewed as a template from which instance can be launched.

Since AWS caters to a broad range of applications, all of which may have different requirements, it need to support quite a big spectrum of EC2 instances types. Some of the real world applications may require CPU extensively — such as busy web servers, scientific applications, some other systems may be memory extensive — such as database systems, while some of require huge GPU powers — such as machine/deep learning , and yet another class of applications require a large storage. AWS instance types are categorized into instance families based on their intended characterestics. We will study some of the instance families in detail in coming posts. Also remember that each instance family would have multiple generations, with each advancing generation having better hardware resources.

In nutshell, each instance family is:

  • Optimised for a special resource type and
  • cost is cheaper for that special resource.

EC2 Instance Families

  • General Purpose: These instances provide a balance of compute, memory and networking resources. Typically these instances are the ones, any beginner would be first introduced to.
  • Compute Optimized: These instances would have more CPU/$ and highest ratio of CPU against RAM.
  • Memory Optimized: These instance would have more RAM/$ and highest ratio of RAM against CPU.
  • GPU/Accelerated Computing: These instances are best for computive intensive workload which need to provide higher throughput with parallel processing. Typically these instances have large array of GPUs or Field Programmable Gate Arrays (FPGA). Application which would benefit are 3D rendering engines,real time video processing etc.
  • Storage Optimized:These instances are optimized to provide high number of (tens of thousands) low latency IOPS (Input/Output per Second) performance to a very large dataset on local storage.

Remembering EC2 instance types can be daunting task since AWS keeps adding or updating instance types, moreever AWS documentation is thick. It is easier to track EC2 instance information and associated costs at https://www.ec2instances.info/.

Below is timeline of EC2 instance types:

That’s for this post!!

If you are interested to know about AWS’s origin, do read!

--

--