|
|
|
|
|
by sauceop
2676 days ago
|
|
Agreed, I think the issues you're touching on are fundamentally difficult problems that don't have a single solution. For example. * storing complex data and supporting multiple access patterns efficiently (like joins) is hard and involves trade-offs (e.g. normalisation vs denormalisation, benefit vs overhead of indices). * data consistency is hard, particularly once you are at a scale that requires distributed storage * durability and disaster recovery is hard * failover and availability, particularly for a stateful system, is hard The right solution is completely application dependent. Usually the best approach is to avoid hard problems to the extent your application allows it, e.g. by accepting relaxed consistency, partitioning the data, or limiting the use cases the system supports. Then you can outsource the hard problems that remain to an existing solution (e.g. a transactional database). Microservices help address some of those problems, but you need to recognize when they don't (e.g. you need strong consistency across multiple services) and adjust your designs accordingly |
|