Route by what breaks, and when. Nothing exists yet and you need a defensible answer to “will this hold ten thousand requests a second?” → System Design, for the four-step method and real QPS, storage and bandwidth numbers instead of another box diagram. You can’t run a single business rule in a test without booting the web framework and a database → Clean Architecture. Your team and your code use different words for the same thing, and one Customer class has grown forty fields because three departments each needed some → Domain-Driven Design. Two users bought the last item in stock and the code looked correct → Data-Intensive Apps, which explains why the default isolation level allowed it and what a replica will serve a user who just wrote. It’s live and one slow third-party call ties up every thread → Release It!, for timeouts, circuit breakers and bulkheads. The servers are fine and the page still paints late → High Perf Browser, which counts the round trips nobody profiles.
Domain-Driven Design and Clean Architecture compound: one finds where the boundaries belong, the other decides which way dependencies cross them. Release It! is the one people install a week too late — after the first outage rather than before, when every fix is a change to code you’re now afraid of.