Docker is great and i've talked about it a few times now. One thing that you might notice is that docker can be low-level. You can dig deep into a container and mess around with the nitty gritty details. That's all fine and dandy when you're working on just a few servers but it can quickly be hard to keep track of it.
As an example, before I set up my current infrastructure, I messed around with a few servers and a lot of containers before I got it to where I wanted it to be. Right now, I'm quite satisfied with it but I'm not tinkering much with it mostly because I can see the problems if I frequently did.
Some of the headaches I'm thinking of are the ff:
- How do I make sure my data is backed-up and I can easily re-import it back to a new container?
- It would be easy if they just sit on one server but if you had multiple ones then it becomes quite a pain.
- How do I make sure that this container is not taking up tons of resources?
- I may think about moving them to it's own server.
- How do I keep containers/servers clean?
- Having lots of images and the likes can take up space. I can't always keep track of them esp when it's not my day-to-day job.
Those are just a few and they can be solved by going deep into docker. It might be quite confusing if you were to use it a work managing local, dev, staging and prod servers (unless you pay someone else to worry about that). If you're like me who is working on it as a hobby and not everyday, it can get difficult.
As with common with IT, we only want to worry about our core business. Hence, why Digital Ocean, Amazon Web Services (AWS) and the likes have become a huge part of software development. If we could not worry about infra, that'd be great.
In the video embedded above, we see Tutum. It's one of the services that abstracts a lot of these things for us. With Tutum, we can define our infra and have it provisioned for us in Digital Ocean, AWS or others. We can create an environment for staging, prod and everything else in between. We don't have to worry on which goes where. We define servers and let Tutum manage how to distribute the docker containers (depending of course on our configuration). Besides hooking up with those two services, it can also hook up to many other services like github.
Anyway, the video shows the whole ecosystem and how it works. Check it out.
On a final note, I'm really excited for this service (or any similar service). I would love to have a service where I can test and deploy random projects or technologies I want to try. I'm hoping it's inexpensive as well. I dream of a time where I can easily deploy Go Lang, Polymer and Java apps to the cloud in a single push and not be broke trying it. We are closer to having Continuous Integration and Continuous Delivery available to hobby projects.