About scaling and DB: it is possible to build monolith to make it a node of the cluster. This approach preserves all advantages of monolith (including transaction support), while enables fine-grained control of which services are actually running inside each node and how many instances of it are running (lightweight scaling). In addition, this approach enables data affinity, i.e. splitting processing, so each node processes data stored in local node storage. This way of scaling/performance optimization is not available to microservices nor moduliths.
A more detailed description of the approach can be found here: https://dev.to/siy/nanoservices-or-alternative-to-monoliths-and-microservices-12bb
