Nearly all legacy systems were built using a “monolithic” architecture. This approach is typically comprised of one or more web-servers transacting with a single relational database server.
Like the multiple options for development methodologies, there are also multiple options that support system scalability and extensibility. Today’s more modern architectural approach is to segment the system functionality into separately focused “micro services”. However, as with seemingly everything in software development, there are advantages and disadvantages with each approach.
For solutions that are relatively simple and do not require tens of thousands of transactions per minute, and do not anticipate the need for that level of throughput for the next 5 to 7 years, a monolithic approach may be your best choice. This approach provides ample scaling by introducing multiple web-servers with the database managed on a separate, beefy server. It is also easier to maintain due to the tight integration between the front-end web-servers and the back-end database server.
However, if the application is quite complex or the transaction throughput is extreme or is expected to be extreme within the next 5 to 7 years, a multi-service approach is advised. Multi-services allow for the segmentation of functionality as well as the selection of multiple technologies that may be ideal for a specific application need. Therefore, with a multi-service application, you may deploy multiple databases, possibly one for each micro-service, as well as differing types of data repositories such as flat-files, NoSQL and relational.
As you would expect, the complexities of managing these multiple services are much greater than a single monolithic approach. Primero Systems will offer you the appropriate approach that best suits your software needs.