Created
May 13, 2016 20:23
-
-
Save termie/4b693e0d317c1b53c09c969a704851cc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Please rise for Andy Smith, CTO in the Holy Order of Wercker, First | |
Father to Openstack, the Lightly Bearded, Tamer of Gophers, Catcher of Pythons, | |
Friend to Computer Wizards and Server Wrastlers. | |
[PHOTO church] | |
Hi -waves-. You may be seated. Thank you to coming today to this first meeting | |
of the Church of Reproducibility. | |
Please pull out your wikipedia, turn to page Reproducibility ... and read | |
along with me: | |
[PHOTO hella words] | |
If reality is governed by Superdeterminism or other forms of hard determinism, no experiment is Truly Reproducible as the exact global patch of that event in spacetime (i.e.: reality) only occurs once. Locally, the same spatio-temporal patterns appear to occur everywhere, but this is only a local observation. This result follows as, in order to Exactly Reproduce an event, ALL the variables that cause the event have to be the same AND the event has to be the same, Superdeterminism implies that this can only happen if it is predetermined to happen, and not otherwise. | |
[PHOTO monkey] | |
And lo it was that some cryptic sounding philosophical text was added to this | |
presentation without much bearing on the actual topic being discussed but | |
does reference the state of reality at any given moment as being a patch, | |
which is pretty cool, and also talks about variables, so basically it is | |
about programming and systems. | |
[PHOTO simulacra] | |
Systems are, at their heart, simulacra of reality without many of the pesky | |
variables, and they strive failingly for determinism. Systems are our way of | |
stripping away all the context of the cosmos until only those things that we | |
may control still exist, and then we attempt to set them in motion that they | |
might enact our vision. We fight the Halting Problem in all its forms and | |
drive our foundations ever lower in hopes that this time, at last, there is | |
no way they will break. | |
[PHOTO leaky] | |
Systems are leaky vessels perfect only in that unreachable country that is the | |
mind, and it is our greatest work to toil endlessly to fill them. To say a | |
system works is only to say it is working right now, but reproducibility | |
strives to allow every future to be the same as now. Immortality does not | |
exist, but perhaps there is a way never to die for long. Idempotency may | |
absolve many sins. | |
[PHOTO pot maker] | |
By working towards reproducibility in all our actions, from the local | |
development environment all the way through build, testing and deployment, we | |
begin to fill our lives and the lives around us with truth rather than hope, | |
with foreknowledge rather than hindsight. There is comfort and strength | |
knowing that another who interacts with your system will produce the same | |
reaction, confidence in seeing that repeatedly. | |
[PHOTO plug] | |
As CTO of the Holy Order of Wercker, I am tasked as a shepherd towards these | |
truths and implore you to join me in seeking them out. Our container-centric | |
automation platform provides ample tooling for developing, building and | |
deploying your multi-service cloud-native application. It works both locally, | |
via a single go binary, and on our platform in the cloud, via the same | |
binary. | |
[PHOTO forrest] | |
The path to reproducibility that we all must walk is many-fold and is | |
beset on all sides by the tyrannies of entropy, short-term vision, legacy | |
systems and other people's code. Certainly not your own nor any member of this | |
congregation's code. But they are the paths we must walk nonetheless, for | |
only that which is reproducible can be true, only that which is reproducible | |
can be stable. | |
[PHOTO heat death] | |
We of the Church aim for stability of the system within our own lifetimes, | |
that is to say prior to the Great Stabilization that will be the heat death | |
of the universe. The unknown may never fully be known, but 5 nines is a pretty | |
damn good milestone to strive for, and 4 nines ain't too shabby. Let your | |
system be filled with nines and grow in their light. | |
[PHOTO savannah] | |
Much like the fire that warmed our ancient ancestors on cold savannah nights | |
[PHOTO alexandria] | |
but also destroyed so much knowledge and culture when it burned down | |
the Library of Alexandria, | |
[PHOTO] | |
lately many have begun to handle a new | |
tool in the fight for determinism, and many have been burned. | |
[PHOTO rosetta stone] | |
To assist in the prevention of further injury, the Church has drafted a | |
series of commandments on the usage of this tool, Docker, and I will | |
share them with you now. | |
[PHOTO lightning] | |
Thou Shalt Not Run Containers Without --rm | |
While in many ways Docker appears to be a tool for reproducibility, its | |
path differs quite drastically from the Church's. The Docker Syndicate's true | |
goal is to use all available disk space on all drives everywhere. | |
Besides even the disk space mission, not removing a container after running | |
implies something even more insidious: that you cannot generate the same | |
container again at will. | |
[PHOTO lightning] | |
Thou Shalt Not Use Data Volumes | |
In more recent versions, members of the Church have forced The Docker | |
Syndicate to include the ability to list created volumes and delete them. | |
Previously, this was not the case and having your disk fill with unfindable | |
data volumes goes a long way towards the disk suffocation of the world. | |
In current times, however, data volumes will not be automatically cleaned up | |
or garbage collected and represent an additional out-of-sight system to | |
manage. | |
There do exist a variety of alternative volume backends that may alleviate | |
much of the pain, and simply using host mounts will keep your data in a | |
predictable location. | |
[PHOTO lightning] | |
Thou Shalt Not Push Twice to the Same Tag | |
Docker tags are an abomination to reproducibility. They are designed with no | |
implicit responsibility towards immutability and as such go directly against | |
the tenets of this Church. Unfortunately, tags are deeply ingrained in the | |
psyche of Docker so to be a truthful citizen one must work around them. | |
Your containers are releases not streams, let your systems get what they ask | |
for. Use version numbers or branch-commit pairs. | |
[PHOTO lightning] | |
Thou Shalt Not Pull From a Tag Somebody Else Pushed to Twice | |
Though you might try to be a good and truthly citizen yourself, it is quite | |
easy to become entangled in the lies of others. Nowadays one can pull an | |
image via a content addressable image ID and be significantly less prone to | |
lapses of truth from others. | |
This path can be taken quite far, through to package management with tools | |
like nix, but that is the subject for another time. | |
[PHOTO lightning] | |
Thou Shalt Not Trust That Docker Will Remain Responsive | |
The Docker Syndicate, like us all, is fallible, and like a teenager it can | |
be fallible quite often. Despite sometime appearing otherwise, Docker is not | |
a system service and should not be treated with the trust that is reserved | |
for the mature software in that category. | |
Keep a close eye on Docker, be prepared for it to hang. Know how to find out | |
what it did, restart it, kill containers manually, or just kill the system | |
it is running on. A new favorite of mine is to use rkt to run tooling to | |
inspect Docker problems. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment