Docker in the Wild
Blitline is a SaaS for image processing — We provide enterprise level, massively parallel, image processing services so that our customers can focus on building innovative software instead of building and maintaining image queues and worker machines.
Blitline has it’s own JSON API which interprets commands stored in the JSON, and in turn uses ImageMagick libraries to execute those commands on Blitline’s cloud based worker machines. All this happens at a large scale, and speed, scalability, and security are paramount.
Before Docker, our customers who had their own proprietary scripting code (like ImageMagick scripts) had to try to convert those scripts into Blitline JSON, which was often difficult and tedious. The Blitline API did not always match up 1-1 with things that our customers could achieve with their own scripts. Often these scripts built intersticial images that we used for compositing or masking or even applying arithmetic algorithms to other images, that our API just didn’t support.
These scripts would be hard to run on our cloud machines in a secure way, and spinning up other virtual machines would take way too long. We were stuck trying to build secure ways for people to ‘build’ scripts that were ‘safe’ enough to run on our cloud machines, which ultimately wasn’t much more useful than our API for this use case.
When we found out about Docker it was love at first sight. Docker provided us the ability to empower our users to run their own proprietary scripts in a safe virtual environment. Users can supply scripts or urls to scripts and we can download and execute them using Docker in a secure and pre-configured environment.
Why is Docker such an awesome tool for this?
Speed: Docker startup and shutdown can be measured in milliseconds not minutes Security: The sandboxed nature of Docker allows us to protect our us and our users from potential malicious users. Control: Docker allows us to set memory and cpu constraints, which protects other jobs being performed on the same machines. Access: We can easily push and retrieve files from running Docker instances which allows for us to easily interact with processes running on those Docker containers. Ease: Docker is so easy to set up and get working, we were able to provide this functionality to our user in a matter of days, not months.
Remember the first time you saw an iPhone, and how you knew that’s what phones were going to be like from now on? That’s the way we (at Blitline) feel about Docker. It is obvious that Docker is the next generation on managing and using virtual machines and the sooner we get on board, the more advantage we will have over competitors. Docker allows us to provide a better, cheaper, safer service to our customers and we are looking forward to all the cool new functionality Docker will provide us in the future.