Dockerize marketing campaign in production. Cloud 66 supports agencies - Steam case study: Part I

This interview is broken down to two blog post. Part I, focuses on Steam (marketing agency) software infrastructure and Part II, showcases how Steam moved their Docker stack from development to production.

There is a massive marketing transformation being influenced by technology. The marketing agencies have to engage with the customers to position brands in the evoked set. Technology helps with the speed, relevance and reach of the campaigns. However, getting the creative marketing directors to work alongside technical gurus can be challenging, due to the limitless creativity and complex technology.

Chris Hines, a Product Marketing Manager at Docker, explained in his webinar that Docker allows businesses fast innovation and frequent updates. Sounds perfect! But does Docker help create secure and rich marketing campaigns?

Let’s talk to Daniel van Gils, a Creative Technologist at Steam, who shares his experiences and explains why Docker and Cloud 66 is an excellent fit for agencies.

What kind of company is Steam?

Most people I talk to think we are those Half Life 2 guys ;-) We are not. I have definitely no clue when Half Life 3 is coming out either, hahaha. Steam is an Amsterdam based online employer branding agency. We already exist for 22 years and we have 25 employees working for a great portfolio of big companies (eg. PwC, ABN AMRO, KPN, Achmea, UMCU) and government agencies (eg. National Police, Ministry of Defense).

The nature of our (online) work requires a lean and mean kind of workflow. We have to create fast, secure, highly creative and fun campaigns which create buzz and has high impact, employee wise, for our clients. To succeed, we needed and created a technology backbone to deliver that quality of work.

What is Steams’ infrastructure set up?

Before we rolled out Docker in our company we had three architectural pillars: web, gaming & internet of things. Our webstack we use modern web technologies like middleman, rails, grape, nosql/sql databases and preprocessors like slim, sass and coffeescript. When we create interactive spaces we make use of technologies link unity3d, leapmotion, kinect and the oculus rift. Sometimes part of an online/offline campaign we make use of the internet of things leverage open hardware platforms like arduino, raspberry pi and such.

For all the stack we created a workflow solution to have everything tested against our definition of done. We use Codebasehq for code repository (git), time tracking and issue tracking. Browserstack for all our automated browsers test which is triggered by Shippable. Of course, all our web stacks are deployed using Cloud 66 on a DigitalOcean cluster.

Why did you decide to use Docker?

Well, we had two reasons, the first is a bit opinionated. I personally hate when frameworks get too complicated and are bloated with too much features. For that reason, we moved slowly away from Rails (still a warm heart) in the last couple of years. Embracing the microservices movement. The whole concept of microservices and the ability to mix-match technology fits nicely in our line of creative work. Coming up with all those crazy ideas makes it sometimes hard to stick to one (web) framework, programming language or hardware device.

With that in mind we rollout Docker as a solution to our ever changing world of technology for creative use and getting the whole studio run with the same codebase on their laptops and in production with the help of Cloud 66.

What Cloud 66 features are you using?

We are still using the excellent Rails/Rake stack deployment features of Cloud 66, including management database backups.

For the Docker part we are using almost every bit of it. Some campaigns use 7 or more services simultaneously so we are using Elastic DNS for service discovery backed with the database support / replication and backups. And because we separated parts, the bounded context, of our apps we also use the traffic_matches feature for load balancing.

What marketing campaigns have you used Docker for?

We used Docker in production last year for the first time. Right after the Docker support went out of beta we used it for the digital forensics campaign #crimediggers created for the national police. After that we also did some campaigns for ABN AMRO (bank) and KPN (telecom).

Working on projects for Ministry of Defence or Police, the security is an important aspect. How did Docker meet the security criterias?

To be honest, we were kind of skeptical about Docker security back then. We calculated the risks, took the right architectural decisions, got prepared and after some exhausting testing/hacking we went for it.

We only had two public facing services, the rest of the services used the private network using the outstanding Weave integration done by Cloud 66. Only our static content (nginx container) and the public API (nginx/passenger/grape) exposed to the public. We had all monitors on red alert on the exposed API and added some code for breach detection.

Oh boy, hack-attacks they happened! But if a hacker did something abnormal they got a message saying: Hi Mr. White Hacker, maybe it’s time to put your skills for a real, why not applying for a job at the police cybercrime unit ;-)

To make sure we are protected for hack-attacks we put cloudflare in front of our cluster and we already have ActiveProtect in place. Before we went live we conducted a full 3 day of penetration testing (done by the police internal security specialists) and with some code adjustments we went live!

It is a great pleasure to work with the wicked folks at Steam. I would like to say thank you to Daniel for finding the time and sharing his knowledge with us. It is great to see how Steam uses Docker to support marketing campaigns. This is definitely one of the rarest case studies that you could think of for Docker use. But very practical! In Part II of this interview, you can read how Steam moved their Docker stack from development to production.


Are you working on something cool? Or perhaps you want to start using Docker? Get in touch or join our Slack Community to get some tips from awesome developers!