In this presentation I will try to show that Docker, by trying to fix the ship-ability issue, undoes a number of advances in application quality made in the recent years by putting applications in it in black boxes called containers.
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Falling off the shoulders of giants
1. Falling off the Shoulders
of Giants
The lessons unlearned
Mike Wessling 22/01/2015
2. Or how to alienate your audience
Outline: In this presentation I will try to show
that Docker, by trying to fix the ship-ability
issue, undoes a number of advances in
application quality made in the recent years by
putting applications in it in black boxes called
containers.
3. “Code” runs is necessary but not
sufficient for production.
"Production ready" is orthogonal to "feature complete".
Whether the acceptance tests pass or the testers give it a green check
mark tells me nothing about how well the system as a whole is going to
hold up under the stresses of real-world, every day use. Could be
horrible, could be great.
Michael Nygard - Author “Release-it”
4. Software Application Qualities
More than just ship-able code.
There is Availability, Conceptual Integrity,
Interoperability, Maintainability, Manageability,
Performance, Reliability, Reusability,
Scalability, Security, Supportability, Testability,
User Experience/Usability.
5. Software Application Qualities
Lets ignore the softy stuff..
There is Availability, Conceptual Integrity,
Interoperability, Maintainability, Manageability,
Performance, Reliability, Reusability,
Scalability, Security, Supportability, Testability,
User Experience/Usability.
6. Software Application Qualities
Lets ignore the interesting stuff..
There is Availability, Conceptual Integrity,
Interoperability, Maintainability, Manageability,
Performance, Reliability, Reusability,
Scalability, Security, Supportability, Testability,
User Experience/Usability.
7. Software Application Qualities
That leaves plenty left to do.
There is Availability, Maintainability,
Manageability, Performance, Reliability,
Scalability, Security, Supportability.
8. Docker: high level view
Image
FROM
DF New
Image
New
Image
Build
ship
run
DEV
OPS
User
9. Maintainability : ease of change
Docker’s key feature:
shippable, run-able code.
And Docker encourages loose coupling and
modular design.
But there is more to maintainability.
10. Maintainability: More than just code
There is more to maintain, for example, User data and
instance configuration.
The real world is rarely stateless.
Others need to be able trust that the container correctly
separates user data from code.
The black box approach hinders understanding. We need
more transparency, not less.
11. Availability: making sure it runs ok.
Or how to monitor your dock full of containers.
And fix quickly.
Not easy looking at a humming black box
Each box may have its own idea of monitoring
tooling or not..
12. One important aspect to performance is to
allocate the available resources as optimal as
possible.
Resources usage can be controlled by
settings(knobs) at all layers of the stack.
These knobs are hidden in the containers.
Performance: tweaking the knobs
13. Security: nothing nasty going on?
This is where the black box becomes a real
issue: how do you know what is in your
blackbox? Or the black box it was made from..
It is black boxes all the way down..
Think Heartbleed. openssl libs.
14. Where should we go from here?
Lets learn the lessons
● It is not a DEV vs OPS situation.
o We need address all needs and requirements
● Don’t fix problems caused by VMs.
o another major kludge to fix OS limitations.
● Don’t create black boxes.
o Transparency is key
o Provide all information etc.
15. Lessons continued
My observations/ideas:
● naive: lets make OS’s do what they
supposed to do and drag them into the 2K’s
● hopeful: lets move up in the stack. Look at
applications as more than just code and
work on “containers” which hold up a
manageable, testable, secure, etc, etc, app.
o It is a hard problem.. good, we have the brains
16. So what is in your container?
Thanks for listening.
Questions/Remarks/Rotten fruit?
contact:
mike.wessling@bitbrains.nl
17. And remember:
Docker is basically a linux process in a
disposable diaper..
maybe it is time to potty train it.
Editor's Notes
Btw loose coupling without strong versioning is not ok.
And how to patch..
Or my first disillusion with docker.
Think mysql container and how to tweak my.cnf
=> Break open the container, create a new one and fix using sed? what!!.. Puppet? Chef?
The 70’s called they want their tools back… :-)
containment, who cares..
joshua corman.
Sad to see so much energy wasted on a good logo and a old idea.
Don’t make assumptions for others, just ask and discuss.. it is hard work.