How would you structure applications, design APIs, and make trade-offs regarding scalability, database selection, and system constraints?