Adventures with Docker
I’m a huge fan of Docker ever since I started to use it, approximately a year after it was started. It’s one of those technologies where when you start to use it, you immediately know it’s going to be a sea change in how things are done in the industry. It’s definitely going to be more impactful then Virtual Machines.
We’ve used Docker to great effect where I work. We’re building a huge system called Ericsson Network Manager, which will manage the networks of the future. As such, it’s a hugely complex problem to compartmentalise parts of the product, to be able to just use the part that you work directly on.
There has been two approaches inside the company:
- Encapsulate the whole system
- Just encapsulate the product
In my product area, we’ve focused on number 2. We did this because we wanted to focus on two things:
- Automated functional testing
- Automated integration testing
And again, number 2 was the main catalyst, as the existing infrastructure we had in place was very compromised. We have a central Continuous Integration service, but with over 100 teams, they can’t suit every team and every product.
So we decided to start small and just have Docker prove itself by taking over parts of our infrastructure where we ran integration tests. We have had many issues, but they have been mostly with the immaturity of Docker, for which Docker hasn’t provided a centralised solution (like cleaning up unused images, which can fill up a whole disk and then bad things happen). Elsewhere companies like Spotify and Google have written custom solutions to many of these such issues.
The biggest advantages we’ve gotten have been:
- Experience with Docker
- A cleaner deployment for local development
- Much more reliable and predictable integration tests
- Less work to do with local deployment
Disadvantages:
- More infrastructure that’s not core to the product
- More to learn (some people can be resistant to new technology!)
- More maintenance when things go wrong
Overall for us as a product area I think Docker has been a worthwhile investment for sure. It’s definitely not as stable as Virtual Machines (which at this point is very old technology), but the possibilities it brings to speed up development and deployment are really exciting to me!