Diagram as Code for prototyping cloud system architectures
github.com
github.com
I tried reading about Kubernetes. Holyshit what a monster we've created. I am sure there is going to be an orchestrator abstraction for multiple Kubernetes clusters. And then we have environment variables, secrets, access keys, a bazillion different parameters that need to trickle down from Gitlab CI settings all the way to the app through many layers.
Good lord. All engineers should be ashamed of this mess. We've forgotten how to build simple, beautiful, lean and parsimonious software. Instead of writing logic, I am configurating things all day.
Let there be a day where there is some deep compiler problem and this entire house of cards comes crashing down because your DevOps team ain't gonna know what happened down in lower abstraction layers. But, let's shit on the F-35 program everytime there is a Lockheed article on HN. Because surely, software engineers are the smart bunch ya. I know, I am unreasonably obtuse here, but jeez, no one complains about today's deployment process,... its apparently accepted without a question.
Needless to say they were amazed to see that we can deploy a new isolated, "virtual machine" application running in seconds using dynamic DNS, rather than waiting a year for a new application server from the IT organization not to speak about deploying it, operating it and troubleshooting it.
I'm with you on the feeling that modern stack is bloated and heavy... However, this is exactly the scenario where the compiler bug is isolated quickly because you're not chasing dependency differences between boxes
There are tons of them, people find new ones all the time. You troubleshoot it like every other problem.
Hell, you’ve barely scratched the surface of all the ways a kubernetes install can break — coredns? Etcd? Nginx? Istio?
My god what if there’s a bug in the Linux kernel? We should just give up, computers were a mistake.
Another tool in that space is https://cloudcraft.co/ although only for AWS, and you have to manually do the diagram layout.
Main benefit is that most of these kinds of CLI diagram tools have much longer lives than any GUI-based diagram software I've used.
But even just having a separate "diagram source" file where you just check in an image is still nice. Then you don't have to bother with wondering who has access to the tools, etc.
Cfn2dot source https://github.com/tobiipro/support-firecloud/blob/master/bi...
Used like this https://github.com/tobiipro/support-firecloud/blob/master/re...
One problem is that you need meta-data to give weights to different resources so that you highlight a lambda resource and not there associated cloudwatch loggroup resource, and its iam role, and iam policy, and its permission resource, etc
The other problem is the graph itself shows how the cloudformation resources depend on one another, not how your data/execution pipeline flows.
So you need to do it manually or maybe try to add lots of meta-data to the types of resources.
The diagram can be manually laid out, but the "health indicator" must be updated automatically.
Not exactly. By utilizing Python as a base language you gain access to control structures as `for` loops, `if`-s and functions. It can make your diagram script much more powerful and/or more complicated.