Docker Management
When the containers concept was introduced, managing Docker containers was tedious. There was no simple way to orchestrate these containers while running a required number of them on managed instances. Today, however, various tools, each with their pros and cons, have been developed to suit a wide variety of use cases.
Managing containers involves handling the deployment process as well as monitoring the performance and lifecycle of running containers. Large-scale deployment brings with it the overhead burden of monitoring, deployment, configuration, automation, and management. To address this, various tools were introduced to handle orchestration. The most popular among these are Kubernetes, Swarm Mode and AWS ECS. In this article, we will focus specifically on AWS ECS.
AWS ECS
AWS EC2 Container Service (AWS ECS) allows you to manage and orchestrate Docker containers in the AWS cloud. It creates a cluster that executes the applications hosted in containers. Furthermore, it offers container management features such as maintaining an arbitrary number of containers, managing Docker images or managing Docker environment variables.
Being part of the AWS ecosystem, it has the added advantage of integrating with various other AWS products. It allows configuration of the application’s security with IAM roles and policies. You can also integrate with other AWS services like AWS ELB, AWS EC2, and others. In addition to allowing you to run microservices in containers, AWS also provides EC2 Container Registry (ECR) to host the images you want to run.
ECR is basically a private instance of Docker Registry so you will not have to pay for a separate Docker Hub account nor set up your own registry. Of course, you are not in any way constrained to use the ECR, so if you wish you may choose images from any other registry. Container management and scheduling can be done from CLI. For that JSON format is used.
While Docker users may be more suited to the YAML format used by Docker Compose or Kubernetes, the fields used in JSON are quite similar to those of the above-mentioned tools and most should be self-explanatory. When paired with an infrastructure-as-a-code solution, such as Amazon’s own CloudFormation or Terraform from HashiCorp, those task definitions can provide a good basis for a Continuous Deployment pipeline.
Being part of AWS, ECS integrates easily with other managed services available in the Amazon cloud. You can use ELB for load balancing, EBS for storage, IAM roles for access management and various other building blocks as well. Additionally, ECS is gratis. You only pay for the cost of underlying infrastructure, such as EC2 instances or EBS volumes.
There are also ECS optimized AMI instances, but if you so desire you may setup an ECS agent on any other new or existing instance. The agent itself is open source with code hosted on GitHub. The binaries are available either as a Yum package, as a Docker container or as a Windows executable, so deployment should not pose a problem.
Introducing N2WS Backup & Recovery (CPM)
Although there are tools like CloudFormation provided by AWS to help run your infrastructure, there is still lots to do in terms of automation and maintenance such as scheduling snapshots, replicating in more than one region and/or accounts, and managing users.
N2WS Backup & Recovery allows you to backup and restore quickly and easily leveraging native snapshots. N2WS snapshots are taken at the block level and therefore is the most efficient backup available. No homegrown scripts needed. You have the freedom to choose snapshot schedules ranging from minutes to months. N2WS also supports EBS, RDS, Redshift and Aurora clusters.