A Comprehensive Guide to AWS Deployment Services: EC2, Lambda, ECS, EKS, and Fargate

VAIBHAV HARIRAMANI
7 min readJun 5, 2024

--

Deploying applications effectively is a crucial aspect of modern software development. Amazon Web Services (AWS) offers a variety of deployment services tailored to different use cases, ranging from traditional virtual machines to serverless computing.

In this blog, we will explore the following AWS deployment services:

  • AWS EC2
  • AWS Lambda
  • AWS ECS
  • AWS EKS
  • AWS Fargate.

We’ll discuss their use cases, scenarios, and provide hands-on examples to illustrate their capabilities.

Server-Based vs. Serverless Deployment

Before diving into specific services, it’s essential to understand the difference between server-based and serverless deployment models.

Server-Based Deployment

In a server-based deployment, you manage the underlying infrastructure, including servers, storage, and networking. You have full control over the operating system, runtime, and applications running on the servers. This model is suitable for applications requiring specific configurations, high-performance computing, or custom environments.

Serverless Deployment

Serverless deployment abstracts away the underlying infrastructure, allowing you to focus solely on your application code. AWS manages the servers, scaling, and maintenance. This model is ideal for applications with unpredictable traffic patterns, event-driven workloads, and scenarios where reducing operational overhead is a priority.

AWS EC2 (Elastic Compute Cloud)

Overview

AWS EC2 provides resizable compute capacity in the cloud. It allows you to launch virtual servers on-demand, providing full control over the computing environment.

Use Cases

  • Web Hosting: Hosting websites and web applications.
  • Batch Processing: Running large-scale batch processing jobs.
  • Development and Testing: Creating isolated environments for development and testing.
  • High-Performance Computing (HPC): Performing complex computations with high compute power.

Hands-On Example: Launching an EC2 Instance

  1. Login to AWS Management Console.
  2. Navigate to EC2 Dashboard.
  3. Click on “Launch Instance”.
  4. Choose an Amazon Machine Image (AMI): Select an appropriate AMI, such as Amazon Linux 2.
  5. Choose an Instance Type: Select an instance type, such as t2.micro.
  6. Configure Instance Details: Specify the number of instances and other settings.
  7. Add Storage: Configure storage options as needed.
  8. Add Tags: Add tags to organize your instances.
  9. Configure Security Group: Set up security group rules to control inbound and outbound traffic.
  10. Review and Launch: Review your configuration and launch the instance.
  11. Connect to Your Instance: Use SSH to connect to your instance.
ssh -i your-key-pair.pem ec2-user@your-ec2-instance-public-dns

AWS Lambda

Overview

AWS Lambda is a serverless compute service that lets you run code without provisioning or managing servers. It automatically scales and charges only for the compute time you consume.

Use Cases

  • Real-time File Processing: Processing files uploaded to S3.
  • Data Transformation: Transforming data streams in real-time.
  • Event-driven Applications: Executing code in response to events from services like S3, DynamoDB, and API Gateway.

Hands-On Example: Creating a Lambda Function

  1. Login to AWS Management Console.
  2. Navigate to Lambda Dashboard.
  3. Click on “Create Function”.
  4. Choose “Author from scratch”.
  5. Configure Function: Provide a function name, runtime (e.g., Python 3.8), and permissions.
  6. Write Your Code: Use the built-in code editor to write your Lambda function.
def lambda_handler(event, context):
return {
'statusCode': 200,
'body': 'Hello from Lambda!'
}

7. Deploy the Function.

8. Test the Function: Use the test events to trigger and test your function.

AWS ECS (Elastic Container Service)

Overview

AWS ECS is a fully managed container orchestration service that helps you run and scale containerized applications using Docker.

Use Cases

  • Microservices: Deploying microservices architectures.
  • Batch Processing: Running batch processing jobs in containers.
  • Web Applications: Hosting scalable web applications.

Hands-On Example: Deploying a Container with ECS

  1. Login to AWS Management Console.
  2. Navigate to ECS Dashboard.
  3. Create a Cluster: Use the “Create Cluster” wizard to set up a new cluster.
  4. Register a Task Definition: Define your container specifications, including image, CPU, memory, and networking settings.
  5. Create a Service: Set up a service to run and maintain the desired number of tasks from your task definition.
  6. Deploy the Service: Deploy your containerized application to the cluster.
{
"family": "my-task",
"containerDefinitions": [
{
"name": "my-container",
"image": "my-docker-image",
"cpu": 256,
"memory": 512,
"essential": true,
"portMappings": [
{
"containerPort": 80,
"hostPort": 80
}
]
}
]
}

AWS EKS (Elastic Kubernetes Service)

Overview

AWS EKS is a managed Kubernetes service that simplifies running Kubernetes on AWS without needing to install and operate your own Kubernetes control plane or nodes.

Use Cases

  • Microservices: Running containerized microservices using Kubernetes.
  • CI/CD Pipelines: Automating CI/CD pipelines with Kubernetes.
  • Hybrid Deployments: Managing hybrid workloads across on-premises and cloud environments.

Hands-On Example: Creating an EKS Cluster

  1. Login to AWS Management Console.
  2. Navigate to EKS Dashboard.
  3. Create a Cluster: Use the “Create Cluster” wizard to configure your cluster settings, including name, role, and networking.
  4. Configure kubectl: Set up kubectl to manage your EKS cluster.
aws eks --region region-code update-kubeconfig --name cluster-name

5. Deploy Applications: Use Kubernetes manifests to deploy applications to your EKS cluster.

apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 2
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-docker-image
ports:
- containerPort: 80
kubectl apply -f deployment.yaml

AWS Fargate

Overview

AWS Fargate is a serverless compute engine for containers that works with both Amazon ECS and Amazon EKS. It eliminates the need to provision and manage servers.

Use Cases

  • Microservices: Deploying containerized microservices without managing the underlying infrastructure.
  • Batch Processing: Running batch processing jobs in a serverless environment.
  • Event-Driven Applications: Executing containerized applications in response to events.

Hands-On Example: Deploying a Container with Fargate

  1. Login to AWS Management Console.
  2. Navigate to ECS Dashboard.
  3. Create a Cluster: Select the “Networking only” option to create a Fargate cluster.
  4. Register a Task Definition: Define your container specifications for Fargate.
{
"family": "my-fargate-task",
"taskRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
"executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
"networkMode": "awsvpc",
"containerDefinitions": [
{
"name": "my-container",
"image": "my-docker-image",
"cpu": 256,
"memory": 512,
"essential": true,
"portMappings": [
{
"containerPort": 80,
"hostPort": 80
}
]
}
],
"requiresCompatibilities": ["FARGATE"],
"cpu": "256",
"memory": "512"
}

5. Create a Service: Set up a service to run and maintain the desired number of tasks from your task definition in the Fargate launch type.

6. Deploy the Service: Deploy your containerized application to the Fargate cluster.

Conclusion

AWS offers a wide range of deployment services tailored to different use cases, from traditional virtual machines with EC2 to serverless computing with Lambda and container orchestration with ECS, EKS, and Fargate.

Understanding the strengths and best use cases for each service can help you choose the right deployment strategy for your applications. By following the hands-on examples provided, you can get started with deploying applications using these powerful AWS services.

But wait, there’s more to explore!

In upcoming articles, I’ll delve into exciting topics like Ansible, Helm charts, and beyond. Your feedback and questions are invaluable, so feel free to share as I continue this learning adventure. Stay curious, and let’s keep building amazing things! 🚀

Thank You for reading

Please give 👏🏻 Claps if you like the blog.

Made with ❤️by Vaibhav Hariramani

Don’t forget to tag us

if you find this blog beneficial for you don’t forget to share it with your friends and mention us as well. And Don’t forget to share us on Linkedin, instagram, facebook , twitter, Github

More Resources

To learn more about these Resources you can Refer to some of these articles written by Me:-

Do Checkout My other Blogs

Do find time check out my other articles and further readings in the reference section. Kindly remember to follow me so as to get notified of my publications.

Do Checkout My Youtube channel

The Vaibhav Hariramani App (Latest Version)

checkout THE VAIBHAV HARIRAMANI APP consist of Tutorials,Projects,Blogs and Vlogs of our Site developed Using Android Studio with Web View try installing it in your android device.

Follow me

on Linkedin, instagram, facebook , twitter, Github

Happy coding ❤️ .

--

--

VAIBHAV HARIRAMANI

Hi there! I am Vaibhav Hariramani a Travel & Tech blogger who love to seek out new technologies and experience cool stuff.