If you like DNray Forum, you can support it by - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 and more...

 

Architecture of Modern Web Applications

Started by goutammohanty, Mar 15, 2023, 03:07 AM

Previous topic - Next topic

goutammohantyTopic starter

"Server!" rang out and though the question seemed simple, I struggled to give a direct response. Throughout my seven years of experience in web development, I've come to understand that the architecture of modern web applications is far more intricate than a mere separation of client and server components.



There exist multiple databases on different servers, third-party services with their own servers such as logging and analytics, and an array of clients. It is crucial to differentiate the "server" as a source role and data processor from the opaque infrastructure that the client need not concern themselves with.

So, what term should be used for the system element responsible for processing HTTP requests from clients and performing initial processing? It cannot simply be referred to as a "server" because there are intelligent servers serving various purposes. The label "HTTP server" also fails to accurately describe this component since data interchange with third-party services and separate databases can occur via the HTTP protocol.

When people discuss the "backend," they encompass everything on the opposite side of the frontend that handles HTTP requests, yet its structure may remain unknown to frontend developers. The term "serverless application" is likewise misleading as it implies a pre-existing server with developed logic, provided by service owners instead of independently writing server code.

I considered using the term "servlet" in Java, but it falls short of adequately capturing what I am attempting to convey. This receptive element that manages diverse client requests is loosely associated with the concept of a bus in electronics.
  •  


mindblowing

Many times, the schemes we design end up being overly simplistic. Within one of our projects, we have implemented two autonomous backends - one that offers a conventional API, and another that facilitates server-side pre-assembly of client application pages, aptly named the api server and "to the back that is for the application."

Rather than being preoccupied with naming conventions, our attention should be directed towards the task at hand. It is essential to recognize that the notion of a "basic file structure" is non-existent given that there exist five distinct projects in Git, each with their own unique folder hierarchies.
  •  

JPinto

The significance of a link within a chain is determined by its functionality, which I contend is primarily rooted in the backend - encompassing the software and hardware components that constitute a service. But what lies beyond the frontend? It's an API that is leveraged by services, databases, and the frontend itself. So, why isn't this regarded as part of the backend? After all, it is the software responsible for processing API requests, which can utilize a multitude of protocols such as HTTP, HTTP(s), SQL, MQTT, and more.

However, the organization of the backend presents a separate challenge altogether and can often be a point of contention due to the vast array of technologies and protocols available.
  •  

jainteq

User agents, such as web browsers and mobile applications, facilitate the interaction between users and servers. They accomplish this by sending requests and receiving responses. DNS acts as a directory for websites, enabling browsers to locate the IP address of a web server and transmit HTTP requests.

Load balancers play a crucial role in horizontal scaling by distributing incoming requests to multiple servers that mirror one another, ensuring consistency and availability. Virtual machines emulate computer systems and offer similar functionalities. They rely on specialized software, hardware, or a combination of both.

Web servers are responsible for processing user requests and providing data. They often refer to internal infrastructures like databases, cache servers, and task queues. Databases offer powerful tools for organizing, searching, and updating data, and can be either relational or non-relational. Caching services store data to expedite calculations by referencing previous results. Caches are utilized across various technological levels, including operating systems, networks, web applications, and databases.

Content delivery networks (CDNs) consist of geographically distributed networks of proxy servers and associated data centers. They serve a majority of internet content, encompassing text, graphics, scripts, media files, software, documents, e-commerce applications, portals, streaming media, and social networking sites. CDNs ensure high availability and performance.
  •  

Affemabib

In the realm of web development, the term "server" indeed seems simplistic when discussing the complex architecture of modern applications. As someone with years of experience in web engineering, I've come to realize that what we often refer to as a server is really just a part of a much larger, intricate system. Let's dive into a detailed explanation to clarify this concept further.

Firstly, it's important to distinguish between the "server" as a physical or virtual machine that hosts various software components, and the "server" in the context of handling HTTP requests. The traditional view of a server as a monolithic entity is outdated. Today's web architecture involves multiple layers and services working in tandem, each playing a distinct role.

1. HTTP Request Handling: The component you're referring to is indeed responsible for processing HTTP requests. This part of the system often needs to be called something more specific than just "server." In many frameworks and architectural discussions, this component is referred to as the "request handler" or "request processor". This element is responsible for receiving HTTP requests, interpreting them, and routing them to the appropriate services or databases.

2. Distinguishing Roles: Unlike a generic "server," which can mean various things (e.g., database server, application server), the term "request handler" more accurately reflects its role in the request-response lifecycle. It deals directly with incoming HTTP requests and initiates the necessary processing, which might involve interacting with databases or third-party services.

3. Backend and Serverless Architectures: The term "backend" encompasses a broader range of responsibilities, including data processing and business logic, which may involve multiple services and databases. While "serverless" suggests that developers do not manage servers, it still implies the use of abstracted server resources managed by cloud providers, which can be misleading in terms of describing what happens behind the scenes.

4. Servlets and Alternatives: The term "servlet" from Java is useful but somewhat narrow as it specifically refers to Java-based server-side components. For a more generalized term, you might consider "application gateway" or "application endpoint". These terms reflect the idea of an entry point for processing requests and orchestrating the flow of data.

5. Conceptual Models: Drawing an analogy to electronics, the concept of a "bus" that routes signals might be appropriate. However, for software systems, terms like "request router" or "middleware" might also be used. These terms emphasize the role of managing and directing requests through various processing stages.

In summary, while "server" and "HTTP server" are often used, they might not fully capture the intricate nature of modern web architectures. Terms like "request handler", "application gateway", or "request processor" can more precisely describe the component responsible for handling HTTP requests and performing initial processing in the complex ecosystem of a web application.
  •  

jameswilliam723

I'd argue that the correct term is an "application server". This component is responsible for receiving and processing HTTP requests, interacting with databases and third-party services, and performing the necessary business logic. The term "application server" is more specific than "server" and encompasses the complexity of modern web applications.
  •  


If you like DNray forum, you can support it by - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 and more...