It is clear operating system-level the maturing of virtualization engines (VE), virtual private servers (VPS) and jails for production environments. Let's talk about what they are and when you may want to use them. Operating System-level Virtualization is being used in many places to provide hosting services, but how can it be used to make application development and deployment more productive? How do you launch your own and what are the benefits and drawbacks of doing so?
Some technologies that provide us this level of virtualization are:
- Linux Containers
- Solaris Containers
- FreeBSD Jails
Then just a few months ago we had DockerCon.
Google' presentation on how they build robust containers is a great overview of some of the history around their use of containers and why they use them. They open sourced kubernetes which is their container cluster manager which looks promising.
If you use these to serve services, you will want to understand how containers differ from a networking standpoint too. There are definitely differences you will need to take into account, but it could also simplify some of your deployment processes.
How does CoreOS fit in? How do you build your images and deploy them? Does packer help you? Does it make sense to start deploying containers as your artifacts rather than each individual component? How do you handle dependencies and instrumentation for that? What is the performance impact? How do you orchestrate the deployment of the containers and how do you build them with your personal software? Where do puppet, chef, etc. fit into this? Is something like Spotify's helios or libswarm the answer we are looking for?
If you have any experience with these (or similar) tools and would like to share your thoughts and perspective, please let me know.
See you there!