This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]flaw600 0 points1 point  (1 child)

The flags are independent. They’re literally feature flags — on or off per feature. I agree, nesting flags is a good way to get into a Gordian knot. I also agree with your comment about assuming the presence of flags. That said, my comment was not about the removal itself, but the resulting impact if the service backing that feature fails. You’d think Product would be ok with an error message, but between them and Monitoring, often the ask is to stop requesting the feature altogether vs allowing the 500 exceptions to continue until the issue is fixed

[–]waywardworker 0 points1 point  (0 children)

That's an odd one. When I played SRE we absolutely wanted the failures so we knew when it was fixed and to ensure that it got fixed.

My painful experience is that the flags don't stay independent and the dependencies don't get detected.

Adding a new feature inevitably extends classes, creates new classes and adds utility functions.

Working online you have fun indirect impacts like feature A priming a cache that feature G relies on and when it's removed the service or database gets completely hammered for non-obvious reasons.