Here is one breakdown:
External level β User interface level, usually consisting of a combination of HTML, Javascript, CSS, Flash and various server codes, such as ASP.Net, classic ASP, PHP, etc. Think of it as the closest user in terms of code.
Middleware, middle-tier β One level back, usually called the "plumbing" part of the system. Java and C # are common languages ββfor writing this part, which can be seen as the glue between the user interface and data and can be web services or WCF components or other SOA components.
Base level β Databases and other data warehouses are usually located at this level. Oracle, MS-SQL, MySQL, SAP, and various off-the-shelf software tools come to mind for this piece of software, which is the final data processing.
Overlapping can exist between any of them, since you could pour everything on one layer, for example, on the ASP.Net website, which uses the built-in AJAX function that generates Javascript, and the code behind it may contain database commands in which The code containing the code contains both the middle and back levels. Alternatively, you can use VBScript to act like all layers using ADO objects and merging all three levels into one.
Similarly, in some cases, a combination of middleware and a front or rear interface may be combined.
Bottlenecks usually have several different levels for them:
1) Working with databases or internal processing β It can vary from salary or sales or other tasks when database bandwidth tires things.
2) Intermediate bottlenecks β This may cause some web services to hit capacity, but the front and back have bandwidth to handle more traffic. Alternatively, there may be some server that is part of a system that is not part of the user interface or raw data, which could be a bottleneck using something like Biztalk or MSMQ.
3) Foreground bottlenecks β This could be a client or server problem. For example, if you take a computer with a low level of access and load a web page consisting of a lot of downloaded data, the client may be where this bottleneck is. Similarly, a server can request requests in a queue if it is clogged with requests, for example, that Amazon.com or other sites with high traffic can receive from time to time.
Some of them are subject to interpretation, therefore they are not perfect by any means and YMMV.
EDIT: something that needs to be considered is that some systems may have multiple interfaces or a back-end. For example, a content management system is likely to have the ability for site visitors to view content that is an interface, but what about how content editors can modify data on a site? The ability to raise this data can be considered as an interface, since it is a component of the user interface, or it can be considered as a background, because it is used by internal users, and not for general viewing of the site. So there is something to say about it.