Build, Deploy, or Request: Where your configuration decisions actually belong
Blog post from Unleash
The text delves into the concept of decision-making frameworks in software engineering, emphasizing the importance of correctly assigning configuration decisions to three distinct layers: Code (Build Time), Infrastructure (Deploy Time), and Runtime (Request Time). It highlights the challenges teams face when decisions are misplaced, causing friction and inefficiencies, and introduces a mental model for diagnosing where decisions should be bound. Each layer provides different levels of context and flexibility, with early binding at the code level offering determinism but less flexibility, and late binding at runtime allowing more adaptability but with added complexity. The post argues for the development of mature practices for runtime decisions, akin to those for build-time and deploy-time, and introduces the concept of FeatureOps as a discipline to improve decision-making processes, thereby enhancing engineering performance and business outcomes.