IllumiDesk : The Right Choice For Us Is AWS ECS
EDIT: We are moving to Kubernetes! We will provide more information with an updated article :-).
Some Philosophical Perspective
Before we get to why AWS ECS is the right choice for us, we need to cover some ground whereon we stand in the community or this movement called DevOps.
We’re 100% believers in infrastructure as code and servers are cattle, as described in this presentation. DevOps is a shared responsibility between the development and operations teams. A person who walks the walk is one that learns best practices from development coding and teaches the best practices from years of experience. I have been around long enough to understand the Good-Old-Day of Operations to say … “they were not that good.” Don’t get me wrong, the end of the year was like Christmas for many Old-Timers. We ordered year’s end items in August so we could open everything around Christmas…looking back, I see how much time I wasted on that paradigm.
Today, we run a few lines of code with ruby, bash or python; I can spin up the entire environment at a fraction of the cost. Infrastructure as code is the way to go.
My takeaways from the DevOps movement
- Embracing change is natural
- Automate anything you do more than once
- Destroy and rebuild. Fear is the mind killer!
- Code everything and commit often
- We don’t make cars…. we drive them. So should we do in the cloud.
Why We Chose AWS ECS
As a team of engineers, simplifying our code and processes is our core desire at IllumiDesk. We have a broad background of coding with Python, Ruby, Node, Bash, and Go which gives us the flexibility to use most SDK’s. I’ve even seen one in C++ API client which I may talk about in the near future!
We went through an exercise of jotting down our pros and cons comparing our existing container orchestration solution to AWS ECS. Actually we had attempted to use AWS ECS about a year and a half ago but the ECS agent was a little unstable. However, we felt that this had more to do with Docker’s torrid pace of releases in 2015/2016 than AWS not having a stable agent in place. In any case, we looked at several options, including:
- Third party orchestration solution, such as Docker Cloud and Rancher
- Managed container service from third party cloud, such as Azure and Google
- Internally managed orchestration cluster with Docker Swarm and/or Kubernetes
After taking a look at all pros and cons I must say we were conflicted between using a third party managed Kubernetes service or managing it ourselves. (Docker Swarm was not an option due to their limited support for running containers on GPU instances). However, our decision was very simple after re:Invent! AWS announced support for Kubernetes on ECS so we decided to jump in head first.
Why we chose ECS:
- Maintain our DevOps pizza size team.
- Preservation of our velocity to change with code
- Riders on the cloud, neither creating nor maintaining it ourselves.
- Bonus! We also found it quite simple to configure our AWS EC2 instances with Launch Configurations to support Nvidia devices and volume drivers necessary for ML/DL frameworks.
In short, we can spend more time improving our applications integration options, customer service and user experience rather than focus on the finite details of managing an orchestration cluster. After we moved our whole orchestration cluster to AWS ECS (quite painlessly I might I add).
Closing Thoughts
By testing various cluster technologies, we were able to identify ECS as the best choice for us. ECS naturally advanced our synergy as software engineers leveraging battle tested orchestration.
I will admit….It was too tempting to fall back into old habits, old paradigms of team separation, and silo’s of thought. However, the IllumiDesk team fought all to stay the course, stay small and communicate even if it hurt :-).
Would you like to know more? Send us a note by visiting our website. We are always looking for new team members!