Application Servers
Visit systemdesign.us for System Design Interview Questions tagged by companies and their Solutions. Follow us on YouTube, LinkedIn, Twitter, Medium, Quora.
An application server is a computing system that provides compute power, data or business logic to other computers over a network. A server can provide services as well as receive services at the same time. There are many types of servers like web servers, file servers, DNS servers, database servers.
Application server is a very general term that could encompass everything from an application running on a laptop to a big cloud hosted data center. As the technology and the use of that technology evolves, the definition of a server evolves with it. On a fundamental level, obviously it can be described as anything that serves others. In the computing context, we understand it as something that serves others over a network, since that is the only way to communicate between two computing systems.
Functionality of a server can be defined as a system which is configured to listen to requests coming in from clients over a network connection. And client expects a certain response from the server as advertised by the servers’ programming interface/protocol or documentation. If the server cannot provide the advertised service, the clients expect a reasonable response to deal with the failure of the server.
This is a very simplistic view of the application servers. Because in addition to the above, servers perform a lot of more complicated tasks like authenticating and authorizing requests, validating request formats and querying other servers. But understanding fundamentals is a really good way to build a more complex picture of any concept down the line.
Software systems have evolved to such an extent now, that there are a lot of different types of servers in use. Depending on your business case, amount of resources and time available, various organizations choose their specific servers. The diagram above shows only some of the types of servers that are popular today.
In most of the use cases today, server software is not written from scratch. There really are immense amount of options available that can serve all the needs your problem might have. These options range from commercial and proprietary to free and open source where you can modify the software if you wish to mold it to your needs.
The thing that becomes important from a system design point of view is understanding your business case really well and then introduce application servers in your design based on the tools you have at your disposal. For example, a lot of organizations already work with specific commercial version of a database. So even if that database doesn’t fit all of your needs exactly, you might have to come up with creative ways to use it to solve your problems. And that also means understanding the advantages and disadvantages of the tools you are about to use.
Other useful links:
1. https://www.lifewire.com/servers-in-computer-networking-817380
2. https://www.paessler.com/it-explained/server
3. https://www.webopedia.com/definitions/server/
4. https://en.wikipedia.org/wiki/Server_(computing)
5. https://www.computerhope.com/jargon/s/server.htm
Visit systemdesign.us for System Design Interview Questions tagged by companies and their Solutions. Follow us on YouTube, LinkedIn, Twitter, Medium, Quora.