BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News How to be Successful Running Docker in Production

How to be Successful Running Docker in Production

John Fiedler, Sr Director of Engineering at Salesforce IQ (formerly RelateIQ) spoke at DockerCon EU on how to be successful running Docker in production backing it up with his own experience during the last two years. Fiedler recommends not to jump directly to use all the tools available around Docker, but executing a step by step strategy when moving services to containers.

Fiedler explained that 100% of their web infrastructure is today running with Docker and that they have zero downtime deployments. At the same time he stressed out that they started the transition two years ago and tried out many things and fail frequently too.

We ended up playing with Mesos, but at that at that time it did not have authentication…We run Kafka inside Docker, if Kafka was down, then all our services were down… Running Docker-in-Docker is not a good idea.

SalesforceIQ has over 70% of its infrastructure running in Docker. When choosing which services to put in containers and which ones not, Fiedler recommends to pay attention to two main factors: ‘rate of change’ and ‘dependencies’. A web server or an API server have both a short life (‘rate of change’) and are stateless (‘dependencies’), while a database or a CI/CD server have a long life and are stateful. Therefore, web servers and API servers are services very suitable to be placed in containers.

containers-dependencies-rate-of-change

(*image credit: John Fiedler)

containers-stateful-stateless-life

(*image credit: John Fiedler)

SalesforceIQ is running today PaaS where everything but ‘persistent storage’ is at least somehow running on containers.

SalesforceIQ-infrastructure-docker

(*image credit: John Fiedler)

At the beginning of the talk Fiedler explained the meaning of the concepts ‘production’ and ‘success’ from his point of view.

Production environments are not the same as test or dev environments. When dealing with the first ones, there are some particularities that are not necessarily a concern when running in dev/test. Isolation, security, performance, monitoring or logging should be taken into account before moving to production. Also, scaling, having templates in place or automation are important concerns… Everything over 99.9% is successful from my point of view.

Concluding the talk, Fiedler recommended to “keep it simple, start small and not to try jump straight to PaaS”. Speaking about deployment tools he said that “Chef, Ansible and SaltStack are still great tools and can be used in conjunction with Docker”. While Docker is production ready, Fiedler raised awareness about “using surrounding solutions which are not ready (alpha and beta)”. “The biggest ROI when using Docker is CI/CD”, Fiedler added.

Rate this Article

Adoption
Style

BT