Communications (REST, etc.) Data persistence (SQL, etc.) All these don't even touch on all the other pieces that are not part of your application proper, such as the server (Apache, tomcat, etc), the database server (PostgreSQL, MySQL, MongoDB, etc), the OS (Linux, etc.), domain name, DNS, yadda, yadda, yadda. The tremendous complexity notwithstanding, most application developers mainly have to concern themselves with the six items listed above. These are their main concerns. Although there are many fine solutions available for these main concerns, in general, these solutions are siloed, complex, and incongruent. Let me explain. Many solutions are siloed because they are single-solution packages that are complete within themselves and disconnected from other pieces of the system.