Containerization is one of the most important concepts of modern computing. Basically, before the container revolution when you wanted to run some piece of software, you needed a version that matched your operating system (OS). Containers solved these problems by bundling together the code with the necessary libraries and files to run anywhere. So, what benefits can we look to gain from a paradigm shift? Scalability, Portability, Agility and Fault tolerance. Let’s talk a little about each of these. Scalability can be easily achieved because containers are lightweight software components that run efficiently. Containers provide Portability because an app doesn’t need to be rewritten for different environments. This even allows you to upgrade the legacy app to more modern versions for deployment. Agility is so much easier due to containers because containerized apps run isolated from the rest of your environment. All this coupled together helps your app to be more fault tolerant. Multiple containers running isolated from each other increases resilience and availability. Developers can make use of all these benefits by creating and deploying container images. Container Images are files with the pertinent information to run containerized apps. They’re read-only and can’t be changed by the computer system. Containerized systems are layered with container images being the topmost layer. The System is built up from the infrastructure layer which is the hardware layer. The next is the OS layer. Followed by the Container engine also called the container runtime. This acts as the intermediary agent between the OS system and containers. And finally, the code and other dependencies. Now can examine some general use cases for containers. A big one is IoT devices. Devices used for the internet of things use containers to help with limited resources and the deployment of apps across devices easily. Another prominent use case is cloud migration. This can be done when you want to encapsulate legacy code to run in the cloud. Microservice architecture is another use case containers help with. With a basic understanding of containers let's look a little more deeply into what Amazon brings to the table.
Amazon Elastic Container Registry (ECR)
What is it?
ECR is a Docker container registry fully managed by Amazon that makes storing, managing, and deploying Docker container images. Amazon ECR is secure, scalable, and reliable. You can use private repositories with resource-based permissions with IAM so only specified users or EC2 instances can access your container repos and images. The components that make up ECR are the registry, an authorization token, the repository, a repository policy, and an image. Along with components are a few features you need to know to understand ECR. Image scanning scans your container images to identify software vulnerabilities. You can configure every repository to scan on push so that all new images are scanned. Another important feature is Cross-region and cross-account replication. Configured as a registry setting and is on a per-Region basis. Lifecycle policies deal with managing the lifecycle of images in your repositories. And finally, Pull through cache rules. It’s used as a way to cache repositories in remote public registries. All these things combined help ECR accomplish easy deployment. Downloading and Sharing images securely over HTTPS. Access and distribute your images faster with reduced download times. Amazon ECR is a powerful service.
Meet your image compliance security requirements.
Streamline your deployment workloads.
Manage image lifecycle policies.
Pay only for the amount of data you store in your repos and the data transfer from your image pushes and pulls.
Amazon Elastic Container Services (ECS)
What is it?
Elastic Container Service is a highly scalable fully managed container orchestration service. Run, stop, and manage Docker containers on a cluster of EC2 instances easier with ECS. Amazon ECS has two launch types. The two models you can use are an EC2 launch or a Fargate launch. The latter is a pay-as-you-go serverless option. Best suitable for large workloads that need to be optimized for low overhead. Small workloads with occasional bursts. Batch workloads and tiny workloads. The former you configure and deploy Amazon EC2 instances in your cluster. More suitable for large workloads that need o be optimized for price. Apps that need to access persistent storage and if you need to manage your infrastructure. Also, for workloads that require consistently high CPU core and memory usage. Important features include integration with IAM. Continuous integration and continuous deployment (CI/CD) for pushing the image to an image repository and building a new Docker image. AWS managed container orchestration with AWS configuration and operational best practices built in. A serverless option with AWS Fargate. Also, a key component of most distributed systems and service-oriented architectures is Support for service discovery. With ECS you can Launch thousands of containers across the cloud. Save up to 50 percent on compute costs with autonomous provisioning, auto-scaling, and pay-as-you-go pricing. It deeply integrates with the rest of the AWS platform to provide a secure and easy-to-use solution for running container workloads in the cloud.
Scale web applications
Plan, schedule, and execute batch computing workloads across the full range of AWS services.
Deploy in a hybrid environment
There is no additional charge for Amazon ECS
Amazon Elastic Kubernetes Service (EKS)
What is it?
EKS is a way to run and manage Kubernetes containers without needing to install and operate your Kubernetes clusters. Kubernetes is an open-source system for automating the deployment, scaling, and management of containerized applications. Whenever you deploy Kubernetes, you create a cluster. A cluster consists of nodes or working machines. You manage these workers or nodes with the control plane. EKS runs a single tenant Kubernetes control plane for each cluster. The infrastructure of the control plane is never shared across clusters or AWS accounts. Amazon EKS actively monitors the load on control plane instances and automatically scales them to ensure high performance. Amazon EKS leverages the architecture of AWS Regions in order to maintain high availability. It can also automatically detect and replaces unhealthy control plane instances. Ensure a more secure Kubernetes environment with security patches automatically applied to your cluster’s control plane. You can also run EKS not only in the cloud but on premises as well.
Efficiently run distributed training jobs
Running Kubernetes in the cloud
Manage your Kubernetes clusters and applications in hybrid environments.
Build and run web applications.
pay $0.10 per hour for each cluster you make.
Amazon App2Container (A2C)
What is it?
Just like its name implies App2Container containerizes and migrates existing apps to the cloud. A2C is a command line tool for migrating and modernizing Java and .NET web applications into container format. Containerize applications running in your data center without code changes and accelerate modernization with automatic analysis of applications. You can use AWS A2C to build and analyzes an inventory of apps running bare metal, virtual machines, EC2 instances or in the cloud. With A2C you can generate container images for one or more containers. You can use it directly on the application server and does not need source code for the app to containerize it. Some of the things App2container can perform are analyzing the runtime dependencies of supported applications and extracting application artifacts for containerization. As well as generating a Dockerfile, and Initiates builds for the application container. Some other tasks include creating an inventory list for the application server that identifies all running ASP.NET (Windows) and Java applications (Linux) that could be containerized and Generates AWS artifacts and optionally deploys the containers on Amazon ECS, Amazon EKS, or AWS App Runner.
Maintain legacy applications and achieve cost benefits.
Build and deploy containers and use pre-created continuous integration and delivery (CI/CD) pipelines for AWS DevOps services.
Automate application provisioning.
No additional charge.
What is it?
AppRuunner is a fully managed service that lets those with no experience build, deploy, and run containerized web apps and API services. App Runner is a fast, simple, and cost-effective way to deploy from source code or a container image directly to a scalable and secure web application to the cloud. This makes getting your team up to speed fast and easy. App Runner can connect directly to your code or image repository. Amazon AppRunner is for operational teams and developers. For teams’ automatic deployments, each time a commit is pushed to the code repository or a new container image version is pushed to the image repository. Developers can use App Runner to simplify the process of deploying a new version of your code or image repository.
Build frontend and backend applications.
You can run thousands of microservices simultaneously.
]You need to improve your time to market.
RedHat OpenShift Service on AWS (ROSA)
What is it?
A managed service for RedHat OpenShift users that want to build, scale, and manage containerized applications on the AWS cloud. You can use ROSA to create Kubernetes clusters using the Red Hat OpenShift APIs and tools and still access all of AWS. Each ROSA cluster comes with a fully managed control plane and compute nodes. There's no up-front cost for the service. And by default, Red Hat manages all ROSA clusters using the same restrictions, quotas, expectations, and configurations.
Modernize existing applications
Create a central application environment
Accelerate application delivery
Uses a Pay as you go model.
Hopefully, you gained a better understanding of the importance of the shift to containers. As well as a beginner understanding of AWS container services and what it’s doing for the space. Keep learning and follow for more information and future tutorials.