Week 11 - Solutions Architect Track - Containers
Evolution of Application architecture and the underlying Infrastructure
The above image provides a brief history lesson on the evolution of software development, application architectures, and packaging, leading up to the use of containers for deployment and hosting applications. With the emergence of agile methodologies in the late 1990s and early 2000s, the focus shifted to creating smaller, more iterative applications, leading to the adoption of virtual servers and containerization for more efficient resource utilization. The industry average usage of server capacity is now around 10%, and hosted service providers have become common. The evolution continues with the emergence of DevOps practices in the 2010s. Microservices use polyglot persistence, allowing the use of different databases and frameworks for each service, promoting independence and collaboration. Event-driven architecture is a subset of microservices, where components communicate through events instead of APIs. Containerization came into play as a solution to run these small, independent microservices, providing an efficient platform for their deployment and execution.
Containers are not a one-size-fits-all solution but rather fit into specific use cases.
Containers are not a silver bullet but a valuable tool for modernizing workloads, particularly for organizations with monolithic applications and a desire to use AWS for containerization.
Analogy of Containers
The relationship between containers in shipping transportation and computing. Containers in the shipping industry evolved as a standardized unit for transporting goods, making it easier to move large quantities with fewer complications.
Similarly, in computing, containers have become a standardized way to package and deploy applications, leading to the modern paradigm of cloud-native applications using containerization, microservices, and DevOps. While containers can be run on-premises or in the cloud, business need to factor in their technical and business needs before making a decision.
Container Architecture
An application container is designed to contain a complete deployment unit for an application to allow for automation, version tracking, and rapid deployment.
Advantages of using Containers
How do Containers Run?
Containers run enabled by Container platform like Docker, LXC, rkt, and Podman
What is Docker?
Docker is a platform that helps develop, ship, or run applications in a container format, making containerization more efficient and popular. The Docker engine is the layer installed on top of an existing operating system, allowing users to run containers and manage their lifecycle.
The architecture of Docker, a client-server application used to run containers. The Docker server or agent receives commands from the user through the Docker CLI and performs the requested operations by communicating with the Docker service. To run a container, a template called a container image is needed, which is stored in a container registry like Docker container registry or Amazon Elastic Container Registry (ECR).
Amazon Elastic Container Registry (ECR) is a service provided by AWS for image storage and management). ECR allows for private image storage with control over access and integration with other AWS services, including CloudTrail for audit trail and traceability. ECR also helps in maintaining multiple versions of images based on updates.
How do you Run Container on AWS?
Containers require a compute platform to run, which can be provided by Amazon Elastic Compute Cloud (EC2) or in a serverless fashion using AWS Fargate.
Why do you need Orchestration?
Running one Container is manageable but ones the application moves to production it becomes difficult to manually manage more than one container instance, this is where Orchestration service comes to the rescue. Orchestration services used in AWS include Amazon Elastic Container Service (ECS) or Elastic Kubernetes Service (EKS)
AWS Elastic Container Service (ECS)
ECS is a cloud computing service provided by Amazon that allows users to run and manage Docker containers. ECS handles the orchestration and provisioning of containers, allowing you to focus on building your applications.
ECS offers two launch types: EC2 and Fargate.
EC2 allows you to have more control over your server clusters and networking.
Fargate takes care of all the underlying infrastructure for you. You just specify the CPU and memory requirements, and Fargate will handle the rest.
The service integrates seamlessly with other AWS services, like Elastic Load Balancing for distributing traffic and Amazon RDS for database services. It also supports Docker Compose, a tool for defining and running multi-container Docker applications and Docker CLI.
Amazon Elastic Kubernetes Service (EKS)
EKS is a managed service that makes it easy to run Kubernetes on AWS without needing to install, operate and maintain your own Kubernetes control plane.
Kubernetes is an open source platform designed to automate deploying, scaling and operating application containers. With EKS, you can leverage the power of Kubernetes without becoming an expert in it.
EKS integrates with AWS services to provide scalability and security for your applications, including Elastic Load Balancing for load distribution, IAM for authentication and Amazon RDS for relational databases. Additionally, EKS supports both EC2 and Fargate as its compute layer.
ECS vs EKS
EC2 instances vs ECS vs EKS Architecture
The Diagrams below illustrate the architecture of the compute options available for different application architectures based on business technical needs.
EC2 Instance Architecture
ECS Architecture
EKS Architecture
If you found this article helpful, please leave feedback.
Find more resources here
Week 11 - AWS Containers presentation slide
Orchestration on AWS simplified
Lab work to try on
Kudos to the Besa team for curating yet another insightful and impactful session!💪 #Besa #Containers #ECS #EKS #Fargate #AWS #Technology #Innovation #ContinuousLearning
Subscribe to my newsletter
Read articles from Linet Kendi directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Linet Kendi
Linet Kendi
Cloud and Cyber Security enthusiast. I love collaborating on tech projects. Outside tech, I love hiking and swimming.