221 karma · joined January 29, 2013
Imagine you have setup your SaaS to run from some containers (1 container with your web app, 1 container with your worker, 1 container with your queue and a database somewhere.
Now let's walk through a scenario for a significant new release of your web app:
1) Package your new web app, Launch it for testing (on the same host, cheap) to point to a testing database. 2) Fails? Rebuild, test immediately. 3) Happy? Now relaunch your container to connect to the production database 4) Everything works completely? Now re-route your traffic to the already warmed up container. Chances of failure? < 0.1%
Some other ideas: - Package your worker. Run it once (on the same host), more load? run it multiple times, run it on multiple servers. -- it is so much quicker and cheaper than spinning up virtual machines. - So your developer made some changes.. He packages it and you run it. It fails. You now just save the entire container including the last state, logs and everything exactly as you crashed it. And hand that back to him.
Hope it helps.
these examples are based on intended use, because right now the whole development is still moving so fast production deployments are no yet recommended.
What I personally care most about? As a designer ex-entrepreneur and front-end developer, the thing that gets me going most is the idea that I'm able to "just run" an application. No more difficult than from the Mac store. For example Trac (a wiki system), Wordpress, Django apps, Mailservers, torrent-servers. Basic stuff which just makes it easier for me to deploy my creations, and those of others.
But the reason why so many people like PaaS such as Heroku and dotCloud is actually that there is /one/ recommended way to structure your app (at least, what to put in wsgi and so forth). It's about making it easy to go from code to package to deployment.
As a front end developer I would like to see this mature into a project which "makes my life easier", and currently, one of the biggest pains, I think is setting up a nginx or apache project with the right WSGI directives.
What I would love to see this develop into is a way to get my code pretty much straight from my IDE to a server of my own (whether hardware or virtual). I know it is very limited in deployment features right now, but I can pretty much rely on Docker to do that. e.g. "sandbox build /folder"; docker push dhrp/folder; ... ssh to my server ... docker run dhrp/folder. Done!
Two things are still missing here: * Some kind of proxy with virtualhosts to map port 80 to my container * A default run command for container committed by sandbox
"Have a weird build failure like a segmentation fault in the compiler? Publish the Docker image and have someone take a look! No need to take the builder offline while someone SSH's into it. "
In particular this notion of using it for a build environment, and then being able to share the EXACT problem with the build with other developers strikes me as a very interesting. I can imagine many build environments to benefit from such. Any failed build (in automation) can be handed to you as a chocolate on a platter.