Quit Covering Up Your Toxic Hellstew with Docker
blog.neutrondrive.com
blog.neutrondrive.com
This reminds me of my days in the Space Shuttle program.
Which, to put it mildly, is something of a credibility boost. So I finished the article.
"You think a reboot is going to help? This reminds me of my days in the Space Shuttle program."
I mean, yes, it's literally rocket science, but the shuttle program fell well short of it's reliability goals.
Also the amount of change to the software was relatively low because of the slow bureaucratic process. So you have a high cost for not much change. The computers used in the Shuttle were extremely old towards the end, and because of Moore's law, really laughable in terms of processing powering. Towards the end NASA was using EBay to buy old hardware parts for the Shuttle program. http://www.nytimes.com/2002/05/12/us/for-parts-nasa-boldly-g...
NASA with the Shuttle program didn't fight cost and complexity hard enough. Hence you have large groups of engineers to do tasks that can now be handled by better software. Our "Data Group" should have been removed long before the whole program shutdown but half of our department refused to change and use the new simulator.
I think Elon Musk gets this with Space X and I believe Space X vehicles already operate at lower costs. Now he just has to prove his reliability and keep becoming more efficient.
I dont think following this pipedream was the wrong move to make. While it could have had better execution and resulted in aerospace setbacks overall I think the idea was a good one, perhaps just far too far ahead of its time.
One day, I hope we will have a reliable reusable thingy with wings. It just has to beat the cost of non reusable tube with giant flames.
Yes, but then when he repeated the line with "this reminds me of my days with perl", suddenly I started hearing the entire post in grandpa simpsons voice...
Then that means the Unix bamboo server needs a Windows agent that can execute the cross-compiler inside a MS VC environment. It certainly is complex, but what piece are you going to change?
That, or switch to a different chipset, this time taking care to select something that includes unix build tools.
Neither of those is trivial, nor are they cheap. But rewriting their simulator in C, as described in the article, couldn't have been cheap either.
Price is an important factor, and the messy choice is often not unreasonable.
Sometimes, there just aren't good clean solutions, and you have to be messy and pragmatic. That, of course, is often used as an excuse for being lazy as well.
I too have seen this time and time again. It pops up constantly in poorly managed software projects, especially those that have changed hands over years. In addition to this, I believe simplicity is lost because many engineers/managers struggle to step back from the their immediate task and instead visualize the whole system in its entirety. This is difficult and takes a special combination of knowledge and procedure to do well.
I don't see how supposing every devOps specialist is replaceable by average engineers is a real solution.
[1] When learning, reinvent all the wheels.
Use MongoDB for all your pet projects, all your development. Joining data from documents is good way to learn where SQL came from.
Just don't do it in production before you master it.
The beauty of Docker is that it, to some extent, does turn average engineers into devops specialists. They just specialize in a very specific, somewhat abstract/virtual environment. Then the real devops specialists can write tooling around that virtual environment that doesn't require detailed knowledge of what's inside the black box. It's an interface between application and deployment engineers that obviates the need to coordinate on deployment process.
Some potentially relevant quotes[1]:
Zymurgy's First Law of Evolving Systems Dynamics: Once you open a can of worms, the only way to recan them is to use a larger can.
Ducharm's Axiom: If you view your problem closely enough you will recognize yourself as part of the problem.
The organization of the software and the organization of the software team will be congruent. (paraphrasing of Conway's Law)
Separation of concerns ... a necessary consequence of loss of resolution due to scale ... a strategy for staying sane. (Mark Burgess, In Search of Certainty: The Science of Our Information Infrastructure, 2013)
[1] Taken from my fortune clone https://github.com/globalcitizen/taoup
I think maybe I know what his actual problem is. It didn't detect a change to the requirements.txt, or it is _always_ detecting a change.
In the Dockerfile you want to ADD your requirements.txt first, then RUN the pip install, then ADD .
http://stackoverflow.com/questions/25305788/how-to-avoid-rei...
Also check for a --no-cache
This PHP application is not trivial, but also not very complex. Yet its developers do not provide this application as a PEAR package, and replied that this kind of things are superfluous these days, VM are simpler.
People like these developers fail to understand that there is a lot more in a VM than just their software (from the kernel to all the exposed services) and that by distributing a VM they are also becoming the maintainers of a very complex set of dependencies. Not that they care: it took them two months to release a VM not vulnerable to heartbleed. Let's see how long before they release a VM not vulnerable to shellshock.
This means that new-hires are handed a cryptic and seriously out-of-date document with instructions on how to setup a proper VM environment.
They check out their code.
They deploy...but wait the deploy fails because of missing data, missing document types, missing lists...
Open up SharePoint, enable some doc types not turned on by default, turn on some more features, add a list. Deploy again, no wait it died again, oh now it's a different doc type and a different feature that the deployment doesn't turn on by default ...etc
The end result is a mess that requires days to get up and running, not hours.
For some reason I intuited that you were not going to talk about how well the organization has dealt with said complexity. I'm curious if there is any way to FFI into sharepoint and start using tools that don't actively sabotage their users.
Its marginally less of a total failure for issue tracking than Excel.
I'm not sure that that counts as something nice.
(For the omg-cryptic-markup crowd there is always Google Docs. I seriously wonder why that hasn't crushed all trivial Sharepoint instances yet.)
This is why I thank the stars that I am the opensource developer, focusing on linux / Python / Django development. I cross over into SharePoint only when we begrudgingly use it as a CMS for a windows 8 app or similar.
There is an effort now to write an external service bus to manage a lot of the business logic complexity that we've baked into SharePoint. With the eventual goal of having SharePoint and other resources leverage this SB and use it instead.
The article seems to portray Docker as the _cause_ of this anti–pattern without any sort of context for why Docker and not xyz or why not your implementation of xyz.
The tool was used incorrectly and it resulted it badness. Bringing Docker into it is pointless. This would have happened with Salt, Fabric, Chef, Puppet, etc. with the same team.