from-nibly
3 days ago
I get all of these complaints. Why do I also have to be an infrastrucutre engineer? And why is my infrastructure not bespoke enough to do this weird thing I want to do? Why cant I use 5 different languages at this 30 person company?
The thing about immutable infrastructure is that its straightforward. There are a set of assumptions others can make about your app.
Immutable infrastructure is boring. Deployments are uncreative. Thats a good thing.
Repeat after me, "my creative energy should be spent on my customers"
srpablo
3 days ago
> Repeat after me, "my creative energy should be spent on my customers"
"I should save my energy, so I won't exercise."
"I should save money, so I won't deploy it towards investments."
I don't think "creativity" is a zero-sum, finite resource; I think it's possible to generate more by spending it intelligently. And he pointed out how moving towards immutable infrastructure, while more "standard," directly hurt customers (the engineering team lost deployment velocity and functionality), so it's especially weird to end your comment the way you did.
To say "immutable infrastructure is just more straightforward" so definitively, from the limited information you have, is just you stating your biases. The stateful system he describes the company moving away from may also have been pretty "straightforward" and "boring," just with different fixed points. Beauty in the eye of the beholder and all that.
from-nibly
2 days ago
Creative energy is fairly zero sum though. You can't spend 100% of your day producing creative works. It's taxing, it takes time, it takes failures. Abstractions are one way engineers take away the requirement for creative energy and build on top of it. We don't start our jobs inventing an operating system for our new job so we can start to write some programs with it, we just use linux/macos/windows, and move on. You don't need to be creative with the video driver on your laptop while you build some business crud app, and you don't need to be creative with your infrastructure either. UNLESS that is where your company will succeed. Spend all of your creative energy there.
phkahler
3 days ago
>> Repeat after me, "my creative energy should be spent on my customers"
I agree with you. But from the blog:
>> "Product requirements were changed to play with the adopted tech."
That's when things may have gone too far.
awkward
2 days ago
Every customer has one pet feature. They want that feature, then they want less downtime and more performance, then maybe they want the features other customers want.
The biggest problem with bespoke deployments like this is that they can widen the gap between a happy path and a disaster. If deployments are faster but not derisked, customer expectations are raised but failure cases become more costly.
schmidtleonard
3 days ago
It's "weird" to want low downtime?
The general nastiness of updates is one of the largest customer friction points in many systems, but creative energy should be directed away from fixing it?
Gross.
roland35
3 days ago
I think like many things in engineering, it depends?
I'm sure most applications in life benefit from accepting a little downtime in order to simplify development. But there are certainly scenarios where we can use some "high quality engineering" to make downtime as low as possible.
from-nibly
2 days ago
who said anything about downtime? Immutable infrastructure does not require downtime.
alt187
2 days ago
> who said anything about downtime? Immutable infrastructure does not require downtime.
Um, the article did.
jtbayly
3 days ago
How is downtime beneficial to the customer?
dvdkon
3 days ago
Nobody wants downtime, but it's easy to spend too much effort on avoiding it, taking time from actually important development. Plenty of customers don't mind occasional downtime, and it can mean the system is simpler and they get features faster.
fifilura
3 days ago
I have been there! Duly upvoted!
Too much power to architects worsen the situation because they both have formal responsibility to keep the downtime low, but they are also appointed to finding technical solutions rather than sometimes technically mundane product improvements.
Also in the worst case, this solution becomes so cool that it attracts the best developers internally, away from building products.
aziaziazi
3 days ago
Don’t forget startup innovation culture: everything has to be disturbed. Encourage with tax exemptions for « innovative » jobs and you’ll have cohorts of engenders reinventing wheels from infra to UX in a glorified innovative modern "industry".
ActionHank
3 days ago
I think theres more to it than that.
You are correct for 90% of the cases, but this also kills innovation.
from-nibly
3 days ago
If you want to do insfrastructure innovation you are more than welcome to. There are lots of engineers dedicated to it. Its also not that hard to go from software engineer to infrastructure engineer thus bringing your experiece and unique perspective. But working at a SMB or startup (the 90%) doesn't justify innovation for innovations sake. 1 acre of corn doesn't justify inventing the combine.
andiareso
3 days ago
I love that last line. That’s the best analogy I’ve heard.
marcosdumay
3 days ago
The way to enable fast ops evolution is by creating a small bubble with either a mutable facade or the immutability restrictions disabled, and go innovate there. Once you are ready, you can port the changes to the overall environment.
And the way to do the thing the article complains about is with partial deployments.
Both of those are much better behaved on a large-scale ops than the small-scale counterparts. K8s kinda "supports" both of them, but like almost everything in k8s, it's more work, and there are many foot-guns.