In classical software architecture, the architecture is often layered. There is one layer for the user interface, another for the application logic, and yet another for accessing persistent data (such as a database). In classical software architecture, an application server is used, which will run the different services (such as different entrypoints of a web site, or different parts of the business application). The problem with this approach is that such application servers often do not scale very well, they need a lot of resources, and services are often tightly coupled.