What is our primary use case?
I have set up Container Service environments for various clients using different cloud providers, including AWS. I have used the Amazon Elastic Container Service in this capacity.
One of my clients from Israel is running web-based applications that are using PostgreSQL as the backend database connection. I think that it is a user-learning software, and they provide it to big companies to give KT sessions for new employees.
They use the Totara application and for that, we have set up the infrastructure including VBA and database applications. We also manage their Amazon Route 53, and we have set up Jenkins for CICD purposes.
How has it helped my organization?
They use EC tools for AWS and try to save on costs through the various savings plans and through the RX solution.
From time to time, their solution has problems due to the failure of the underlying hardware. When they deprecate older hardware, for example, sometimes it causes the production environment to be affected. This is the main cause of their problems. In response, we moved them to the ECS solution, after which we get a highly-available environment with minimal billing on a monthly basis.
This solution is a good deal for our clients.
What is most valuable?
Using this Container Service is a very cost-effective solution. We can use this service with minimal costing.
The production environment is highly available, which nowadays is a requirement for all of the big companies. There is a 99% uptime with this Amazon ECS.
This is a fully-managed product and we don't have to be concerned with problems related to the underlying hardware or configuration management.
What needs improvement?
The problem with containerization technology is that many businesses do not trust it right now, and only use it in their development environment. For example, if you spin down the container then all of the data inside it gets deleted. From our perspective, we think that this technology is good, and it is really an issue of awareness. I am very much excited by this technology and am okay with it. I think that it would help if the vendor provided more use cases and explanations as to how ECS can be utilized.
For how long have I used the solution?
As part of my experience, I have been working with this cloud-based technology for the past four years.
What do I think about the stability of the solution?
Based on the experience that I have had throughout my career, I find that this product is very stable. The only problem it has is with awareness, where businesses need to better trust it.
What do I think about the scalability of the solution?
It's predetermined that ECS is scalable. There are two types of scalability, which are horizontal scaling and vertical scaling. If you upgrade your container from a resource perspective, that is horizontal scaling. If you upgrade the core device, where suppose that you have one container and after that, you have created multiple containers to distribute the nodes, then that is vertical scaling. ECS already covers these in the scaling policy, so we have nothing to worry about in this regard.
Our client with the Totara application has thousands of users that they are managing in ECS.
How are customer service and technical support?
We have not used the Amazon technical support, although some of our clients have already purchased it. We rarely raise issues that are the result of the underlying hardware. That cannot be resolved from our side because it is managed by AWS.
In 99% of the cases, we solve issues through support that we provide to our clients.
Which solution did I use previously and why did I switch?
Prior to ECS, we used Docker and Swarm. This is an open-source technology but there are some issues with that solution, which is why we have chosen the dedicated service by AWS. We always try to take the easiest approach.
When you use Swarm, you are responsible for managing the application. There is the possibility of failure because of a version mismatch or some of the other dependencies. But, if you are going to use the ECS service provided by AWS then they manage the infrastructure and all of the underlying hardware, as well as configuration management. We don't need to care about any of these things. Rather, we only have to set up the infrastructure and support it. This is a benefit to using ECS.
How was the initial setup?
When I first started working with ECS, my feeling was that it was complex. However, after working on it for a longer time, I now feel that it's very simple. It took me six months of working on it, and now I am very happy.
Essentially, it depends on how much experience you have. With more experience, you feel it is very simple, whereas if you do not know the solution, then you will feel it is complex.
If you start with a container that is 500MB or 800MB in size, it will take about 30 minutes to deploy on the production server. We follow a deployment plan and implementation strategy that is specified in our corporate documentation. We generally follow this when we deploy in a production environment.
Our strategy for new release and deployment begins with backing up the currently-running solution. We take a backup of the current artifact because whenever we deploy a new release in the production environment, there is a change that we will experience a failure. We also keep a backup of the older releases.
The next step is that we test it from the various environment test stages, including beta and staging. We prefer to deploy to various environments.
There is also an issue of authentication that is mandatorily applied. Only release managers or release administrators can deploy any changes to the production environment. It is not possible for developers to perform this task.
After the deployment to the staging area, there is a QA to who we give ownership for testing. Once QA approves the release, the deployment will take place on the production server.
There are a few more steps in our process, but this is a summary of our strategy.
What about the implementation team?
We normally use the AWS deployment tool, although sometimes, we use an open-source deployment tool. Price-wise, it is always best to use open-source technology because it will reduce your costs.
The deployment and maintenance are done for the client by our in-house team. We have a team of between four and five members, and I am the senior person who is leading them right now. My engineers work on projects and I guide the various steps. If they face any issue or there is any doubt, then I provide guidance. I am a solution architect, as well, and I always try to meet the project deadline so that the client will always be satisfied.
We provide technical support for our clients, as well. The first step is that we need to understand the infrastructure. We need to know how the infrastructure has been set up and what the configuration details are. We need to know which applications are running in the container. Basically, we need the infrastructure details. If you provide the infrastructure diagram, that will be helpful input for us. Essentially, we have to become familiarized with the infrastructure so that we can easily troubleshoot any issue. This way, if the business is negatively affected then we can give a solution shortly.
What was our ROI?
Our client was paying up to $2,000 USD per month for 20 to 22 servers before implementing ECS. Nowadays, they pay $400 to $500 per month, which is a huge difference in the yearly billing.
What's my experience with pricing, setup cost, and licensing?
Our client is paying between $400 and $500 USD per month for this service.
What other advice do I have?
My advice for our clients is that before creating the infrastructure, take steps to analyze your needs, and gather the requirements. You want to know what the requirements are, and what resource utilization you have. Suppose, for example, that your requirements are for two CPU cores and one terabyte of RAM. If you are not aware of the actual requirements of the application and the user then you work with the unknown and run the risk of setting up an infrastructure with a high level of resources. This will be costly.
Our approach is to take some time to understand the application and the resource requirements before the setup. After analyzing, we draw the diagram to prepare the plan and then set up the infrastructure.
The biggest lesson that I have learned from using this product is that it is highly available, cost-effective, and reliable. I get all three of these benefits from this technology.
I would rate this solution a nine out of ten.
Which deployment model are you using for this solution?
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Amazon Web Services (AWS)