Modern Apps -- 05 -- AWS Container

AWS Container

Get Started. It's Free
or sign up with your email address
Modern Apps -- 05 -- AWS Container by Mind Map: Modern Apps -- 05 -- AWS Container

1. Tools & services with containers support

1.1. AWS Copilot

1.1.1. Quickly launch and manage containerized applications Easily launch and manage your containerized application on AWS

1.2. Amazon Elastic Container Registry (ECR)

1.2.1. Share and deploy container software, publicly or privately.

1.3. AWS App Mesh

1.3.1. Application-level networking for all your services AWS App Mesh is a service mesh that provides application-level networking to make it easy for your services to communicate with each other across multiple types of compute infrastructure

1.4. AWS Cloud Map

1.4.1. Cloud resource discovery service With Cloud Map, you can define custom names for your application resources, and it maintains the updated location of these dynamically changing resources

1.5. AWS Lambda

1.5.1. Package and deploy Lambda functions as container images AWS Lambda is a serverless compute service that lets you run code without provisioning or managing servers, creating workload-aware cluster scaling logic, maintaining event integrations, or managing runtimes

1.6. AWS App Runner

1.6.1. Build and run containerized applications on a fully managed service Quickly deploy containerized web applications and APIs at scale with no prior infrastructure experience required

1.7. Amazon Lightsail

1.7.1. Run simple containerized applications for a fixed, monthly price

1.8. AWS App2Container

1.8.1. Containerize and migrate existing applications Modernize your .NET and Java applications into containerized applications using a command-line tool (CLI).

2. On-premises

2.1. Amazon ECS Anywhere

2.1.1. Run containers on customer-managed infrastructure Easily run containers on your own on-premises infrastructure

2.2. Amazon EKS Anywhere

2.2.1. Create and operate Kubernetes clusters on your own infrastructure Create and operate Kubernetes clusters on-premises, including on your own virtual machines (VMs) and bare metal servers

3. Enterprise-scale container management

3.1. AWS Proton

3.1.1. Automated management for container and serverless deployments Connect and coordinate every tool you need for infrastructure provisioning, code deployments, monitoring, and updates

3.2. Red Hat OpenShift Service on AWS (ROSA)

3.2.1. A fully managed, turnkey app platform With ROSA, you can run containerized applications with your existing OpenShift workflows and reduce the complexity of management

4. Open-source

4.1. Amazon EKS Distro

4.1.1. Run the Kubernetes distribution that powers Amazon EKS Run the open-source Kubernetes distribution that powers Amazon EKS

4.2. AWS App2Container

4.2.1. Containerize and migrate existing applications

5. What's Container ?

5.1. **Containers** are packages of software that contain all of the necessary elements to run in any environment. In this way, containers virtualize the operating system and run anywhere, from a private data center to the public cloud or even on a developer's personal laptop.

5.2. Containers provide a standard way to package your application’s code, configurations, and dependencies into a single object. Containers share an operating system installed on the server and run as resource-isolated processes, ensuring quick, reliable, and consistent deployments, regardless of environment.

5.3. Containers are lightweight and provide a consistent, portable software environment for applications to easily run and scale anywhere. Containers make it easier to manage your underlying infrastructure, whether on-premises or in the cloud, so you can focus on innovation and your business needs.

5.4. Container orchestration (such as Kubernetes) automates the scheduling, development, networking, scaling, health monitoring, and management of your containers.

6. Identify ? (eg: EKS)

6.1. Environment

6.1.1. Complete control of environment. You control underlying infrastructure configuration such as VM Size, OS, AMI, etc

6.1.2. Requires management (e.g. patching, updates) and orchestration

6.1.3. Install almost any software

6.1.4. Prepackaged images with different software available

6.2. Resource Configuration

6.2.1. You can configure memory and CPU allocation as per need

6.2.2. Can choose underlying EC2 instance type appropriate to workload

6.3. Scaling

6.3.1. One Pod can serve more than one connection

6.3.2. Configure scaling using HPA (Horizontal Pod Autoscaling) and/or CA (Cluster Autoscaling)

6.4. Cost

6.4.1. With containers, you pay for them as long as they’re on (Pay-as-you-go). Containers are constantly running in most of the cases

6.5. Run Duration

6.5.1. No runtime time limit constraints. Containers can run for prolonged periods of time

6.6. Integration with Other Services

6.6.1. (Amazon EKS) Integrated with a few AWS services, such as IAM, ALB with help of Ingress

6.7. High Availability

6.7.1. You need to ensure high availability

6.8. Logging & Monitoring

6.8.1. (For Kubernetes) Fluentbit/Fluentd can be used to send logs to CloudWatch, S3, ES, Splunk, Datadog, etc

6.8.2. For monitoring, you can install an agent to work with Prometheus, Grafana, etc

6.9. Portability/Vendor lock-in

6.9.1. Containers can run anywhere. You just need container runtime installed

6.10. Supported languages

6.10.1. Applications can be containerized as long as the underlying host server supports the language they are written in

6.11. Development and Testability

6.11.1. Containers run the same no matter where they are deployed. You can easily run and test your applications anywhere

6.11.2. Containers can easily be run in a cloud, local data center or on a developer’s workstation

6.12. Security

6.12.1. Pods support security groups and IAM roles to access other AWS resource

6.12.2. OPA (Open Policy Agent) to enforce semantic validation of objects during create, update, and delete operations

6.12.3. Each Pod can have its own IP from VPC

6.12.4. EKS on EC2, FedRAMP in Gov regions

6.13. Operational Complexity

6.13.1. Containers take longer to set up initially than serverless functions because it is necessary to configure system settings, libraries, and so on. It is possible to offload infrastructure management to a provider, but that isn’t always the case.

7. Container Orchestration

7.1. Amazon Elastic Container Service (ECS)

7.1.1. Run containerized applications or build microservices

7.2. Amazon Elastic Kubernetes Service (EKS)

7.2.1. Manage containers with Kubernetes

8. Compute Options

8.1. AWS Fargate

8.1.1. Run containers without managing servers Run your containers on Amazon ECS or Amazon EKS without the need to manage your underlying compute infrastructure.

8.2. Amazon Elastic Compute Cloud (EC2)

8.2.1. Run containers with server-level control Amazon EC2 Spot Instances let you take advantage of unused EC2 capacity in the AWS cloud.

8.3. Amazon EC2 Spot Instances

8.3.1. Run fault-tolerant workloads for up to 90 percent off