Making web-servers used to be complicated. Wiring up Apache with all its configuration files and so forth to respond to various server requests and enforce a level of security most people ignore is a lot of work when you can write the same thing in 5 minutes using a nodeJS script.
With NodeJS, we can write discrete web interactions, mini servers that do ones bidding and not anything else. This means that such interactions could be enqueued and executed later, to good effect. It also means that enqueued actions must be tested before they are released as queues would back up if they start producing errors.
With lots of small functions talking to discrete servers, there is a far greater need for strict architecture following design patterns, or other fundamentals. Rules usually managed under the hood are now simply exposed as public macros. The use of git for source control becomes essential so that changes can be rolled back if ever made necessary and release procedures designed that make sure each step of the journey is tested before it fails.
In other words continuous integration is now always necessary. To ignore it and use agile procedures is folly and potentially wasteful.