In the early part of the 1990s there were two basic approaches for building large information systems.
The second approach was the SGML approach. A large input document was processed and output as a large output document. One big fat input and one big fat output at a time. Batch processing and pipelines still have their fans today.
During the 1990s, it seemed that both these approaches had shortcomings. The grain of the RDBMS data seemed too fine, meaning it was extra work trying to keep things together which naturally belonged together. The grain of the big SGML documents was too big, meaning you had to process the lot to get even small things done, such as editing. By the end of the 1990s, two other approaches were in full swing:
A more successful alternative approach was that of the template processors: ASP, JSP, PHP, XSLT and so on, leading up to AJAX: the detailed information was located or processed by some little query system, then that dynamic information was incorporated into some more static framework, either simple like web pages or complex like XSL-FO flow objects. (This tended to create a four layer architecture.)
As we moved into the 2000s, designing an information system came largely down to figuring out which parts of that information system were most suitable implemented by each approach.