Modular monolith or microservices: choosing on team shape
Microservices solve organisational scaling problems and introduce distributed systems problems. Most teams should start with a well-structured monolith.
Relational databases handle the overwhelming majority of business workloads well. Alternatives should be chosen for specific reasons.
PostgreSQL and MySQL handle transactions, complex queries, JSON documents, full-text search and geospatial data competently. For most business applications the relational default is correct and remains correct at considerable scale.
Modern relational databases absorbed many features that once justified specialised stores, which makes the case for adding another system weaker than it was.
A second database means another thing to back up, monitor, patch, secure, scale and hold expertise in. It also raises the question of consistency between stores, which is where subtle bugs live.
Adding one is justified when a specific workload genuinely does not fit; it is not justified by a general preference.
Normalise until it hurts, denormalise until it works. Start with a clean model, measure the queries that matter, then denormalise deliberately where profiling justifies it.
Indexes are the cheapest performance work available and the most commonly neglected. Most slow queries in production are a missing index rather than a wrong database.
Most databases outlive the assumptions they were designed under, so a few habits keep future options open without over-engineering now.
Read replicas, connection pooling and query optimisation address most scaling needs, and they should be exhausted before considering architectural change.
Both are excellent. PostgreSQL has richer types, extensions and stricter standards compliance; MySQL is very widely deployed and well understood. Existing team familiarity is a reasonable deciding factor.
Later than most people think. Vertical scaling, read replicas and query optimisation carry a very long way. Sharding adds substantial complexity and should follow evidence.
Frequently yes. Relational databases handle JSON well, letting you keep flexible fields alongside relational integrity in one system.
Keep reading
Microservices solve organisational scaling problems and introduce distributed systems problems. Most teams should start with a well-structured monolith.
Complete rewrites fail at a high rate. Incremental strangulation delivers value earlier and carries far less risk.
Events decouple producers from consumers and make the overall flow harder to see. Both effects are real and need managing.