In the TV series “Star Trek: The Next Generation,” the magnetic containment field prevents contact of antimatter with normal matter in a warp core. If the field were to collapse or fall below 15% of its maximum integrity, the starship would be destroyed. This containment field was a very important safety system for starships (reference Wikia).
Ancestry has begun using a fairly new “containment field” called Docker. At Ancestry we are always looking for ways to implement new technologies (such as Docker). This is one of the reasons I enjoy working for Ancestry. Our stance towards technology, I believe, is a healthy one: we continue to utilize technology as long as it is useful and relevant but also keep an eye towards the future. The following discussion about Docker might be useful to other companies looking for pointers and lessons on adopting recent technologies.
Docker has many benefits including a safety feature for application isolation. When using Docker it’s difficult for two applications to step on each other’s toes. In essence, it prevents Ancestry application-starships from collapsing or being destroyed. Think, “Shields Up!”
Yes, Docker is all the rage nowadays in the tech world. Docker is a specific implementation of what we broadly call containerization. So, let’s start there. What is containerization? It is a lightweight alternative to virtualization. Both virtual machines (VMs) and Docker provide containerization qualities but Docker is not a VM. There are similarities between these two (that’s why you can replace your VMs with Docker) but there are important differences between VMs and Containers. Let’s take a look:
VM & Container Similarities:
- Protect application spaces
- Multiple app instances per box
VM & Container Differences
- Containers have no guest OS overhead
- Containers are lightweight
- Containers start and reboot faster (sec. vs min.)
- Containers include only what’s needed for your application/service
Docker is the next generation of containerization for software development. Containerization has been around for a long time but Docker made containerization easy for developers. In fact, Docker has taken the software development world by storm. Using this kind of “containment field” we obtain the following benefits:
- Simplified configuration so your app runs anywhere without changes.
- Saves money with greater hardware utilization per server.
- Easily runs tests against the application and its Dockerized dependencies.
- Saves time setting-up a new developer’s box by just using the Docker image.
- Deploys faster (“Docker build” and “Docker run”).
- Smaller footprint because your Docker image only contains the necessary software for your application or service. The core OS is only included on the host machine.
- Protects applications from system changes made in neighboring apps. This protection is not as strong as VMs but is more than adequate. The pros of Docker far out way the cons.
- Fewer bottlenecks because Ops and DevOps are less likely to stand between the developer and their build and deploy.
- Faster application/service startup which is usually under one second.
- Easier migration to microservices.
Because of the above reasons, Ancestry is exploring Docker further and we really like what we see so far. Many of our new services are now written in Java, on Linux as a microservice deployed as a Docker image. This is an exciting time to work at Ancestry as we take the next steps in developing our support systems and discuss what should change and how as we move into a Dockerized world. Yes, there was and is much to do as we migrate to these new systems and methodologies, and it’s a lot of fun for our engineers as well.
You might ask, “As Ancestry begins using Docker, what’s different for Ancestry going forward? What will change for our developers as a result of this adoption?” Here are a few that leap to mind:
- Developers control their own build image.
- DevOps will cease to be a bottleneck for developers.
- Dockerized dependencies can be easily loaded on a devs laptop for testing.
- Testing and deployment will take a fraction of the time.
- Patching will be done on app build which is less likely to break builds on live (production) because patching is not inserted into a live box but is part of the build and testing process.
- Problems with VM hypervisors will become non-existent.
At Ancestry we’re always looking to leverage new technologies that will improve our customer experience. We are currently piloting Docker and are already seeing some of the above benefits that could be considered the equivalent of “magnetic containment fields.”
My personal log to you is this: “seize the time” – use these new and emerging technologies to your advantage. Make a difference. Explore new worlds to improve your company processes, your developer experience and shorten your time to market. All this will benefit your customers. After all, that’s what all this is about!
Let’s ask the captain, “Should we make the switch to Docker?”
“Make it so, number 1” – Ancestry: The Next Generation!
Personal log, Stardate 69053.1:
“Seize the time… Live now! Make now always the most precious time. Now will never come again. Someone once told me that time was a predator that stalked us all our lives. But I rather believe that time is a companion who goes with us on the journey and reminds us to cherish every moment because they’ll never come again. What we leave behind is not as important as how we’ve lived. After all, Number One, we’re only mortal.”
Please leave your personal log in the comments below. How do you feel about Docker, containers and other emerging technologies?