A decision that often gets overlooked is keeping the application stateless wherever possible. Once application state is tied to a single instance, scaling horizontally becomes much harder. Moving sessions, caching, and background work to dedicated services makes it much easier to add or replace application instances as traffic grows.
I also think it's worth emphasizing observability early. Structured logging, metrics, and tracing help you identify bottlenecks faster and verify that your architecture performs well in production. Adding these from the beginning is usually much easier than trying to introduce them after the system has grown.
Finally, I like the idea of starting with a well-structured modular monolith instead of jumping straight to microservices. Clear module boundaries make future extraction much simpler if the application genuinely outgrows a single deployment. This approach keeps complexity lower while still leaving room to scale.