Apium Innovations
Published in

Apium Innovations

Commonly Used AWS Services

AWS is a cloud service provider which offers more than 150 services. These services are categorized into several categories including network, content delivery, migration, compliance, storage, compute, databases, management tools, and security In this article, I will explain the most commonly used AWS services which we can use to build more complex web applications.

To understand the basic services of AWS let’s assume we have built an application that offers various services to users and over time we want to add more features and complex functionalities to our application. We have deployed this application on our on-premises data center.

In order to accomplish the above scenario, the first thing we need is a private network. A private network provides high security and has restricted unauthorized access.

At the beginning of the application, we do have only static content and we use a web server to accept and fulfill requests coming from users. The web server has disk space to store the content of the website. In the initial stage, users are using the IP address to access our webserver.

Over time we want to add some business logic such as login functionality and UI to our application. In order to achieve this, we now add an application server that generates dynamic content. Along with that, we need to add a relational database to our application to store and manage user data as well.

Now let’s assume our application has more users and we need to increase the computing power of web and application servers to handle the requests coming from users. In that case, we can do horizontal scaling which is adding more web servers and application servers and combining their totaled computing power to handle requests.

As now we have multiple web servers we need a mechanism to distribute incoming network traffic efficiently across the servers. We can use a load balancer to route client requests across all servers efficiently.

Now we can add a DNS to our application that can map the IP address. In that way, the user can use the domain name instead of the IP address to access our application.

As now we have more complex data to manage, we want to add a NoSQL database to our application in order to have more scalability and better performance. let’s assume our relational database has more heavy operations and we need a DB caches component to improve our overall application performance and reduce the database cost. DB caches component is a data storage layer that delivers responses quicker by storing data from previous requests.

Now users are uploading images and videos to our servers and the disk spaces of the servers are no longer capable of handling these files as the disk has limitations. In order to overcome this problem, we can use external storage to store all the media files. We also now need a content filter to prevent storing malicious, harmful, and unnecessary media files.

Now we want to implement clickstream analysis to our application as well in order to track the user behavior on our application. Then we can use another external storage to store these data related to user behavior. In order to process these types of larger amounts of data, we use the Hadoop platform. We then send these events to a data Warehouse and use business intelligence tools to analyze and create reports from these data.

Now as the next step users can access the external storage where we have stored media files through a web browser. However, we want these media files in a different format for the users who use mobile devices to access these media files. So now we need to use a video convert function to convert each media file in our storage and convert it to any other format we want. Then we store those coveted media files on another external storage where mobile users can get access.

As we have stored a large number of media files we need a content delivery network that can speed up the delivery of the files by bringing them much closer to where users are. CDN can cache images, videos, and similar content in proxy servers near users’ physical locations.

Now we want to send some sort of notifications and emails to our users. Also, we need to add a message queue that helps to implement a user chat system.

Now as the last functionality of our application we need a monitoring dashboard that allows us to monitor the performances of our application. With the help of this, we can find the performances of our VMs, databases, and storage.

This is the completed architecture of our application which has been deployed on our own data center.

The architecture of the application — on-premises

Now we do the same on AWS instead of on on-premises. All the functionalities we talked about earlier and implemented on-premises can implement using services offered by AWS

The architecture of the application — on AWS
  • Private Network

When we are implementing the above architecture on AWS we can use Amazon VPC (Amazon virtual private cloud) to replace the on-premises private network. With this service, we can launch AWS resources into a virtual network that we have defined. Amazon VPC is easy to use as we can use AWS management console, AWS CLI, AWS SDKs, or Query API to create, access, and manage our virtual private clouds.

  • Virtual Machines

We can use Amazon EC2 (Amazon elastic compute cloud) to create virtual servers. With EC2 service we can create any number of virtual servers we want to configure security networking and manage storage. In the same way, we scale our on-premises architecture, with Amazon EC2 we can scale up or down to handle requirement changes. One of the main features of Amazon EC2 is auto-scaling functionality. With that, we can define conditions to automatically add or remove EC2 instances. This feature always makes sure that our application has the necessary amount of compute all the time

  • Disks

When we are using Amazon EC2 it replaces the disks with Amazon EBS ( Amazon Elastic Block Store). This has been designed specifically for Amazon EC2 and it is scalable and high-performance block storage. These EBS volumes attached to EC2 instances are used as storage volumes.

  • Load Balancer

When we are using Amazon EC2 it uses Amazon elastic load balancer to distribute incoming application traffic across multiple EC Instances automatically. Amazon elastic load balancer provides fault tolerance it detects unhealthy EC2 instances and reroutes traffic to healthy instances automatically.

  • Relational Database

When we build our application on AWS we can use Amazon RDS(Amazon Relational Database Service) to create database instances of PostgresSQL, MariaDB, MySQL, and many more. With Amazon RDS we can easily set up, operate and scale a relational database. One of the main advantages of RDS is we can use automated backups or create our own backups for the database

  • NoSQL Database

When we are using AWS we can use the Amazon DynamoDB service to create NoSQL databases that have low latency and scalability. The main benefit of Amazon DynamoDB is that it allows us to store and retrieve any amount of data and any level of request traffic. We can use AWS management console or DynamoDB API to interact with the Database. This service supports basic CRUD operations and advanced conditional operations.

  • DB Cache

We can use Amazon ElastiCache which is a cache-as-a-service to set up and scale the memory cache. This service is easy to set up and it provides a resizable cost-effective in-memory cache. Amazon ElastiCache service relies on a Memcached caching engine and a Redis cache engine

  • Content Filter

We can replace the content filter component in our on-premises architecture with the Amazon Rekognition service when we build the same architecture on AWS. with this service we can add image and video analysis to our application. We only need to provide an image or a video to the Amazon Rekognition API and it can identify text, objects, people, activities, and scenes. This also provides facial analysis, face search capabilities, and face comparison options

  • External Storage

Wherever we want to implement external storage we can use the Amazon S3 (Amazon Simple Storage Service) service. It is an object storage service with security, data availability, and scalability that stores data as objects within the buckets. One of the main features of Amazon S3 is that we can organize, optimize and configure access to the data in the S3 buckets according to our requirements.

  • Video convert function

We can use the AWS Lambda service to create a video conversion function. This is a Platform-as-a-service and supported by various programming languages including Java, Python, Go, and c#. The concept of AWS Lambda is that we can pass invocation events into a function that runs in AWS lambda. The event we passed will then processes and it will return the response. AWS Lambda helps us to run and execute our backend code

  • Clickstream Analysis

We can use the Amazon Kinesis Data Stream service to process streams of data in real-time. This provides the same result we expect from Clickstream Analysis but with more benefits. This service has been specially designed for real-time applications where we can collect data from multiple sources and scale it. Amazon Kinesis is easy to use as it allows the creation of a new stream set requirements and start streaming data right away.

  • Hadoop

When we built our application on AWS we can use the Amazon EMR service to process and analyze a larger amount of data. With Amazon EMR we can transform and move a large amount of data into and out of any other AWS data stores or databases. We can use Amazon EMR to process and sort information analytics and business intelligence purposes

  • Data Warehouse

Amazon Redshift is a data warehousing solution that has the ability to handle huge volumes of data and process structured and unstructured data. Similar to other services of AWS, Amazon Redshift is encrypted for added security. Amazon Redshift is an online analytical process, column-oriented database. One of the main benefits of using Redshift is we can create clusters much quicker without managing the infrastructure

  • Business intelligence

Amazon Athena is a serverless interactive query service that we can use to analyze data, stored in Amazon S3. we can use this service when we are building our application on AWS to accomplish the same result we get when using BI tools. When using Athena we only need to pay for the queries we run. As this is a serverless service we don’t need to manage set up or pay for infrastructure

  • DNS

When we are building our application on AWS we can use Amazon Route 53 to perform domain registration, DNS routing, and health checking. This service is a scalable and highly available Domain Name system service. This service allows users to perform all the Route 53 functions using the AWS management console without any coding requirement.

  • Content Delivery Network

We can use the Amazon CloudFront service to distribute dynamic and static content such as image files, software, SDKs, videos, HTML, CSS, and js files with high transfer speed and a secured manner. Amazon CloudFront has a content privacy feature and uses HTTP or HTTPS protocols for quick content delivery

  • Mobile Push Notifications

We can use Amazon SNS (Amazon simple notification service) to manage messaging services for application to application (A2A) and application to person (A2P) communication functionalities.

  • Email

With AWS we can use the Amazon SES service (Amazon simple email service) to send and receive emails using our own email address and domains. This is an easy and cost-effective email platform service.

  • Message queue

We can use the Amazon SQS service (Amazon Simple Queue Service) to manage message queueing in our application. This service is secured, durable, and available hosted which allows us to integrate and decouple distributed software systems and components

  • Monitoring Dashboard

The same way we monitor our application when it’s on-premises, we can use Amazon CloudWatch to monitors our AWS services and application we run in real-time. The home page of CloudWatch displays metrics about all the AWS services we use. Apart from that, we can create custom dashboards to display metrics about our custom applications.

At Apium Innovations we build world-class software products while following the best practices in DevOps, follow us to learn more.

Thank you for reading!

Apium Innovations is a place which likes to challenge the norms. We like to add a bit of creativity to business, education and lifestyle. We like to say we add eccentricity to the generic mundane software.

Recommended from Medium

Be more Goldilocks: When and how to scale your startup engineering organisation

FREL Auction and Freela Trading Challenge

How to Set Up Cron Jobs in Linux Systems

Bicycle in front of yellow wall

Top 10 Programming Languages for Desktop Apps In 2021

Using Base64 Image Data with Phaser 3

Golang: For-loop Concurrency Quirk

How to write the simplest chat server in golang

Ganeshalands brings Elephants onto the Terra Network.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Jinali Pabasara

Jinali Pabasara

Software Engineer | Tech Enthusiast

More from Medium

Moving to Serverless Architecture

Creating AWS Lambda Function Via Console

Building a serverless, scalable, and secure web application in AWS

Serverless Architecture