CTL 003 - Real Docker Case-Study with Matt Butcher from Revolv - a podcast by CenturyLink Labs

from 2014-06-11T23:42:26

:: ::

itunes pic

The #1 request from CenturyLink Labs readers is to hear about real-life case studies about Docker in production. This week, we are honored to have a fantastic use-case example of Docker in the real world.


Matt Butcher is currently head of Cloud Services at Revolv… a crazy-cool home automation hub (internet of things) startup. Think Nest for everything else in the house. Works with your exiting devices (Belkin, Hue, Honeywell, Sonos, etc).


Matt Butcher has written 6 books on topics like Drupal, CMS, and LDAP. He also exclusively announced on our podcast that he is working now on a 7th (!!!) called Go in the Cloud. We have been super curious how a hot startup like Revolv which hasraised $7.3M in VC money uses Docker.



Here is just the audio podcast for those who are interested in listening on iTunes (subscribe):


 




  • How do you use Docker at Revolve?




We are still running many core services on Virtual Machines. We have played with a half-dozen Docker technologies and haven’t yet committed to any one just yet. But we have replaced our entire CI/CD solution with Drone (a Docker based on-prem open-source CI/CD solution). It took about a week and a half. We had been using Jenkins and it was a nightmare. We are actively looking for more ways to incorporate Docker into production.


We are seriously looking into using Amazon’s Elastic Beanstalk with Docker, but haven’t made commitments on it yet.



At the time of writing that article, Docker was just 3 months old and not well understood and Virtual Machines were gang-busters. Containers looked like a faddy kind of toy. But I did not foresee the cool things that came out of the Docker community like CoreOS and Deis and the other micro-PaaSes. Containers are becoming a very elegant and compelling model for building applications.


From a DevOps perspective, it is starting to turn out to look like Docker Containers are the right way of doing things.




  • What do you not like about Docker?




A week ago, it would have been the perpetual putting off of the 1.0. But now that is out. My biggest concern right now is that the tools around Docker are immature, but this problem is being solved by the community right now.




  • What is the biggest problem in real-life Docker adoption today?




The biggest thing is that right now if I want to deploy Docker, I still have to use Virtual Machines and then put Docker on them. It would be great to have pure Docker hosting from one of the larger hosting providers out there.



I am most excited about libcontainer. Seeing libchan which gives go channels at the network level is very exciting too. I am still not sure what to make of libswarm. It appears to be something more for the ecosystem than for end-users.




  • Are you using any orchestration or PaaS with Docker? Like CoreOS? Deis? Dokku?




First started playing with Dokku PaaS a year ago and I like the idea of minimalist build-your-own PaaS. I think it is very promising, but still takes hour to setup all the dependencies. We check into these projects every 2-3 months to see how it looks. So far it is not robust and mature enough, but we think it will be within 2-3 months from now. However we have backed off from PaaS and are going a little lower on the stack, closer to CoreOS.



Drone works by pulling stuff out of your git repository, build a custom Docker image with whatever dependencies you need (binaries and other), and then execute any arbitrary command you want. In Jenkins, even if you could wire up the code just the way you needed it, you were still running on the slave’s OS which may or may not match up with production. From the moment the Drone container finishes building, we know that the production environment will match exactly the same state as dev/test.


With Drone you can also spin up database containers that match production database containers. This creates a much more robust workflow for testing things than what has been available before.




  • How did you get into go? What do you like about go? What do you not like about go?




I started out doing Java for 10 years. Then I did PHP/Drupal for a while. When I joined Revolv, I joined as Java. However recently it felt like Java was nesting library upon library. With go I was impressed that I was able to build a remarkably robust application in go with just the core libraries. On the other hand, the fact that go compiles to a small size with low memory meant that I could use dramatically fewer resources.


In go, not everything may be easy, but everything in the language should be in the language. That is the suite spot that I wanted in a language. PHP had too much built-in and Java had too little, requiring you to use too many nested libraries. Go was a great middle ground.



 

Further episodes of CenturyLink Labs Podcast

Further podcasts by CenturyLink Labs

Website of CenturyLink Labs