3 ms·
Infrastructure is so often arbitrary and opaque configuration hell where no amount of sense can be made of the sprawling orchestration just by looking at it. It
by ehnto 5y ago
Infrastructure is so often arbitrary and opaque configuration hell where no amount of sense can be made of the sprawling orchestration just by looking at it. It's also third party and out of your full control. Where code can often be a lot more transparent and readable, and it is yours to own faults and all. If you can code and specifically solving the problem is within scope and capability I think you should solve it in code.
But I would think that as my only experience with infrastructure is when it fails and I have to fix it.
- debarshri 5y agoExactly. It is basically delegating problem from one place to another thing which is quite opaque and hard to debug. But again, it depends upon whom you ask. An infrastructure engineer or ops guys are more comfortable with infrastructure scaling your app whereas a developer is more comfortable with application scaling itself.
- athorax 5y agoI feel this. If you ARE going to solve your problem with infrastructure, then get ready to descend into the madness of infrastructure-as-code. One way or the other, you are going to end up having to codify it.
- tootie 5y agoI'm sitting here trying to make sense of how nginx parses regexes and I feel this in my bones. Any critical function buried in infrastructure is going to be inherently so much harder to debug and test in a predictable way. I lean towards putting as much as possible into application code and keeping infra as simple as possible.
- robertlagrant 5y agoI agree. I think k8s virtualizing ingress, networking, monitoring, restarting, logging is brilliant; I just wish I could write code to make it happen instead of reams of YAML.
- javagram 5y agoGenerating the yaml-equivalent config files using Jsonnet can help with this, I rarely see it mentioned online though.
- p_l 5y agoRemember that kubernetes doesn't actually use YAML anywhere - it just makes it available as convenience, and you can just as well call the API manually or use one of the client libraries.
- philipov 5y agoInfrastructure is global state, and global state is the enemy
- kazen44 5y agoin a sense, the entire internet is one massive state machine (on the routing level anyway).
- tuldia 5y agoInfrastructure are like roads, if you have to change infrastructure every time a new car model comes out then you are doing it wrong. Global state is global state. The enemy is your own mind.
- philipov 5y agoIf you are using your roads to do gps pathfinding, then you are indeed doing it wrong. Do not do in infrastructure what can be done in code. You can't version control your infrastructure, but you can version control your code. And with cloud instances and VMs providing abstractions that don't map 1:1 to the hardware they're running on, all your infrastructure becomes code to create reproducible deployments, or serverless execution. You don't build your roads immediately before you start driving, and destroy them after you're done, and build only as many miles of road as you need each time you go for a ride. They're not a great analogy to what we do with computers.
- TimTheTinker 5y ago> Do not do in infrastructure what can be done in code. While I agree, I just wanted to point out that Terraform allows defining infrastructure as code.