The summary.
THE EVENT LOOP EXCELS AT CONNECTIONS, NOT COMPUTATION
Blocking it stalls every request, not only the one doing the work. Move heavy computation to workers, a separate service, or a queue.
Monitor event loop delay — it is the direct measure of blocking.
ALWAYS HANDLE REJECTION, AND ALWAYS SET TIMEOUTS ON EXTERNAL CALLS
An unhandled rejection can terminate the process, and a hanging dependency exhausts your capacity.
Do not await sequentially where operations are independent.
EXPRESS GIVES YOU ROUTING AND MIDDLEWARE, AND NOTHING ELSE
Add security headers, request identifiers, schema validation and centralised error handling yourself — and register the error handler last.
Set body size limits, request timeouts and rate limits on authentication.
COMMIT THE LOCK FILE, INSTALL EXACTLY FROM IT IN DEPLOYMENT
And ask whether the standard library already does it before adding a small package.
RUN UNDER A PROCESS MANAGER, BEHIND A REVERSE PROXY
One process uses one core. Implement graceful shutdown, or deployments drop in-flight requests.