There is a lot of noise around Docker containers at the moment, but how does Docker perform in practice? We have approached Alexander Christie, the CEO of Briefly and asked him to share his experience of building and managing Docker stacks with Cloud 66.
Background
For those who haven't heard about Briefly before, it is an awesome startup company that just came out of the alpha program and is moving to the open beta in July 2015.
Briefly has created an intelligent hiring platform with its main focus being on the tech industry. It is an ideal place for freelancers, developers and employers. Briefly really understands the needs from both sides (employer and contractor) and they deliver results very efficiently. Within hours, a super smart algorithm automatically pre-selects 12 most suitable matches, allowing work to start on the very next day. There is no need to worry about the legal and payment administration as Briefly takes care of it all.
In the UK alone there are 1.5M developers, according to StackOverflow Survey. At the moment, Briefly focuses on the London area with the plans for the further market expansion in the near future.
We asked Alex a few question to find out how the containers solutions work for his business.
1) Could you tell us more about Briefly and why did you decided to use Docker with Cloud 66 for your startup infrastructure?
We went through a great many iterations with our infrastructure that are talked about below. Cloud 66 was the ideal meeting point of our desire for hosted infrastructure and our wish to design our own infrastructure. All of the systems we had tried in the past had really long development cycles and forced us into paradigms we weren't thrilled with.
2) Have you had different infrastructure setup pre-Docker?
We started on Nodejitsu PAAS but were less than thrilled with the performance it offered, and we really wanted a London-based datacentre because that is the only location we serve (you will quickly learn that we care greatly about milliseconds).
*Read more on Moving your Nodejitsu app to Cloud 66.
After that, we moved onto Modulus, where we spent a few months on the Modulus enterprise solution. We had started to use Docker and Vagrant internally for development at this point, but we still hadn't found a build and test system to go with it and we couldn't use it in deployment. Modulus enterprise was a very expensive system for what we got. We were spending approximately $900 a month for what we are now getting from Cloud 66 and DigitalOcean for less than $100 a month. Not only that but our API response times have decreased by 10ms on average taking our average response time down to only 15ms because of the higher quality infrastructure (For some reason EC2, which modulus enterprise runs on, never quite packed the punch of DigitalOcean. We could never work out why).
We also spent all of two days looking at Heroku before we decided to regain our sanity.
All in all, we are now rested on Docker throughout, tested on Codeship and pushed to Cloud 66. The stack setting is great and when you guys added build time environmental variables we were set. The only problem we have now is elastic scaling but hey, we don't need it yet so hopefully it will come.
The benefits of using docker compared to Heroku / Nodejitsu / Modulus are huge. We can build, test, profile and deploy with one consistent image and be guaranteed to have our code run and execute like we planned. This is really important for us because we use cutting edge builds of io.js in production. We like it dangerous, but we'll probably stop doing this as we move out of closed alpha.
3) What are you using Docker for?
We use three stacks tied to our GitHub repo. We have Development, Staging and Production, which we aligned with our GitFlow based repos. (Watch out for an upcoming article about this at Briefly blog).
The stacks are a really nice touch and they make life easier. We have dumped an inordinate amount of money on SSL certs to HTTPS them all, but hey money well spent.
When we push, our code is built and tested using Codeship which upon a successful test run sends the rebuild command out to Cloud 66 and boom zero downtime deployment (biggest competitive advantage to Cloud 66 is the zero downtime redeployment). Various other platforms seem to assume zero means less than 5 minutes. We take it to mean zero.
4) What is your experience using Docker with Cloud 66, so far?
Statistically, our hosting bill has decreased to roughly $150 including our compose.io databases. (Sorry we don't use Cloud 66 but compose run them in the same DO datacentre as our Cloud 66 servers are and manage our DBs for us :) ). This represents a cost saving of over $800 from the Modulus Enterprise scheme and has served our needs considerably better given that we are a startup that love tech. I am sure that Modulus is a great fit for the right company, but we felt we were paying a premium for things we already had.
Our performance decreased by between 10 and 25 ms depending on the route in load testing. As I mentioned earlier this represents an overall average response time of around 15 ms for our APIs.
We use Cloud 66 to run our background service and APIs. Our frontends are hosted on a great service called DivShot that we have paired up to a Cloud 66 based API. All in all, its a great setup and we are getting the performance we want from it.
We haven't worried about savings yet, but we could probably reduce our costs further by trimming loose dev environments.
Efficiency gains have been marginal, compared to other PAAS services we have been able to connect LogEntries our chosen log management solution very easily and link Cloud 66 to our Slack. But these are more like sweeteners than selling points for us.
*Read more on Cloud 66 integrations.
5) In your experience, what do you see as the pros and cons to your current Docker infrastructure?
The pro is the immutability of the environment and that we can be 100% sure our code will run.
The downside is that docker is still a rapidly evolving ecosystem and we do feel that containerisation works against us with certain things. One example is that we found problems with short term caching of files to disk, this posed enough problems that we simply went with SoftLayer object storage instead of worrying about it.
6) Is there anything you would like to add?
We would like to add that Briefly has changed our focus over the last few months onto Software Contractors. We actually support Cloud 66 and Docker as options for engineers that can be searched for and employed through us.
As such if any of your users might have an interest in finding technical talent who could migrate their setup onto Cloud 66 for them we would love to help them with that problem and invite them to get in touch. I emphasise again we are for contracting and we only serve London, but we are interested in hearing about problems and market demand around the world. We are definitely eyeing up an American expansion in the near future.
The coin also goes the other way that if any engineers out there would like to offer their talents on our platform, we would love to talk to them.
Conclusion
Briefly sounds like a perfect solution for hiring and we are ecstatic that Cloud 66 powers the Briefly platform by offering containers solutions. If you are looking for a fresh talent - you should check them out!
Are you working on something cool? And would like us to share it, get in touch with us!