Actions

Application Server

What is an Application Server?[1]

An application server is a program that handles all application operations between users and an organization's backend business applications or databases. It is also referred to as an app server. An application server is typically used for complex transaction-based applications. To support high-end needs, an application server has to have built-in redundancy, monitor for high availability, high-performance distributed application services, and support for complex database access.

An application server consists of a server operating system (OS) and server hardware that work together to provide computing-intensive operations and services to the residing application. An application server executes and provides user and/or other app access when utilizing the installed application's business/functional logic. Key required features of an application server include data redundancy, high availability, load balancing, user management, data/application security, and a centralized management interface. Moreover, an application server may be connected by enterprise systems, networks, or intranet and remotely accessed via the Internet. Depending on the installed application, an application server may be classified in a variety of ways, including as a Web server, database application server, general purpose application server, or enterprise application (EA) server.[2]

The application server is frequently viewed as part of a three-tier application, consisting of a graphical user interface (GUI) server, an application (business logic) server, and a database and transaction server. More descriptively, it can be viewed as dividing an application into:

  • A first-tier, front-end, Web browser-based graphical user interface, usually on a personal computer or workstation
  • A middle-tier business logic application or set of applications, possibly on a local area network or intranet server
  • A third-tier, back-end, database, and transaction server, sometimes on a mainframe or large server[3]


Application Server
source: Amit Nirala


History of Application Server[4]

In the early days of application servers, it was realized that applications (the programs people were using to get work done) themselves, were becoming bigger and more complex - both to write and to maintain. At the same time, the pressure was increasing for applications to share more of their data and sometimes functionality with other applications. More applications were either located on a network or used networks extensively. It seemed logical to have some kind of program residing on the network that would help share application capabilities in an organized and efficient way - making it easier to write, manage, and maintain the applications. The end result of this thinking was what is now called an application server. However, these servers first appeared in client/server computing and on LANs. At first, they were often associated with "tiered" applications, when people described the functionality of applications as two-tiered (database and client program), three-tiered (database, client program, and application server), or n-tiered (all the above plus whatever). This was (and still is) a complex model of application development, and it resisted wide-scale implementation.


When to Use an Application Server[5]

You should consider an application server when you have a need for:

  • Integration with existing systems and databases
  • Website support

Secondary reasons to use application servers derive from the primary reasons. A few secondary reasons are:

  • E-Commerce
  • Web-integrated collaboration
  • Component re-use

One way to look at application servers is that they are a formalization of a solution to a problem that has been around for a long time. That problem can be characterized as a need to create an integrated presentation and processing environment for existing systems and databases. The presentation has pretty much been decided with browsers now being the dominant interface. This is why you usually see a Web server paired with or included in an application server. Integrated processing has been moving towards components for some time. Application servers provide containers for such components along with application program interfaces (APIs) to support the components. These APIs are to the existing systems and databases.


Application Server Categories[6]

  • Java-based, including Oracle WebLogic and IBM WebSphere (supporting the database and the Web client)
  • Microsoft Windows Server-based
  • Others, often built using open-source technologies


Features of Application Servers[7]

  • Component Management: Provides the manager for handling all the components and run time services like session management, synchronous/asynchronous client notifications, and executes server business logic.
  • Fault Tolerance: Ability of the Application server with no single point of failure, defining policies for recovery and fail-over recovery in case of failure of one object or group of objects.
  • Load Balancing: Ability to send the request to the different servers depending upon the load and availability of the server.
  • Transaction Management
  • Management Console: Single point graphical management console for remotely monitoring clients and server clusters
  • Security: Security features for applications security


Types of Application Servers (Models)[8]

There are three different types of application servers:

  • Dedicated application server - one physical hardware server which runs one single network application. Some applications actually require this. The benefit of using a dedicated application server is its level of performance given that the server hardware is serving a single application. All CPU and I/O resources are dedicated to providing a single service. However, this model is more expensive because it will force additional physical servers to be installed for other purposes as organizations typically have to use more than one network application in their environment. In addition, depending on application usage, this model may result in unused capacity if the application is not often used. This would result in inefficient use of the application server.
  • Distributed application server - one network application that runs on many servers concurrently. Many Web-based applications use a distributed model. More servers allow configuration of fault tolerance resulting in negligible downtime and uninterrupted workflow for the end-user. More servers also allow for scalability which in turn balances the load between different servers and enables a larger number of users who can use the network application. The downside of this type of model is the cost of implementation as it requires more hardware and software along with the capability of the application to run on more machines instead of one.
  • P2P or Peer-to-peer model. - the application runs on multiple systems. The key advantage of a P2P application is that it uses server hardware very efficiently. The peer-to-peer application model can balance the load more effectively when compared to distributed application server model, and provide the best performance possible. This is accomplished by analyzing the servers and determining how to load balance. However, the peer-to-peer application model is more complex to set up.


Mobile Application Servers[9]

A mobile app server is mobile middleware that makes back-end systems accessible to mobile applications to support Mobile application development. Much like a web server that stores, processes and delivers web pages to clients, a mobile app server bridges the gap from existing infrastructure to mobile devices.

The purpose of a mobile application server is to build on existing infrastructure to accommodate mobile devices. Although most standards-based infrastructure (including SOAs ) are designed to connect to any independent any vendor, product, or technology, most enterprises have trouble connecting back-end systems to mobile applications because mobile devices add the following technological challenges:

  • Limited resources – mobile devices have limited power and bandwidth
  • Intermittent connectivity – cellular service and wifi coverage is often not continuous
  • Difficult to secure – mobility and BYOD makes it hard to secure mobile devices

Core capabilities of mobile application services include

  • Data routing– data is packaged in smaller (REST) objects with some business logic to minimize demands on bandwidth and battery
  • Orchestration– transactions and data integration across multiple sources
  • Authentication service– secure connectivity to back-end systems is managed by the mobile middleware
  • Off-line support– allows users to access and use data even though the device is not connected
  • Security– data encryption, device control, SSL, call logging


Application Server Vs. Web Server[10]

Despite the contrast implied by “application server vs. web server,” on the Internet the two types of server are usually deployed together for a common purpose: fulfilling user requests for content from a website. There are no standard documents that define the properties of web servers and application servers, but let’s look at how the terms are commonly understood.

A web server‘s fundamental job is to accept and fulfill requests from clients for static content from a website (HTML pages, files, images, video, and so on). The client is almost always a browser or mobile application and the request takes the form of a Hypertext Transfer Protocol (HTTP) message, as does the web server’s response.

An application server’s fundamental job is to provide its clients with access to what is commonly called business logic, which generates dynamic content; that is, it’s code that transforms data to provide the specialized functionality offered by a business, service, or application. An application server’s clients are often applications themselves and can include web servers and other application servers. Communication between the application server and its clients might take the form of HTTP messages, but that is not required as it is for communication between web servers and their clients. Many other protocols are popular, including the variants of CGI.

In a typical deployment, a website that provides both static and dynamically generated content runs web servers for the static content and application servers to generate content dynamically. A reverse proxy and load balancer sit in front of one or more web servers and one or more web application servers to route traffic to the appropriate server, first based on the type of content requested and then based on the configured load-balancing algorithm. Most load balancer programs are also reverse proxy servers, which simplifies web application server architecture.

So why is it a question of whether something is an application server vs. a web server? It’s largely due to how the design and use of the two types of servers have increasingly come to overlap as the demands on websites have grown. Many popular applications act as both web servers and application servers (think Apache HTTP Server, Express, Hapi, and Koa).

Another overlap is that some web application servers use HTTP as their communication protocol. Similarly, some web servers end up looking like application servers because they have built-in modules and functionality that natively support popular languages like PHP, or proxy and translate requests from HTTP into the protocol (such as FastCGI) used by the application.


Benefits of Using Application Servers[11]

  • Provide integrity of data and code by enabling a centralized approach to application updates and upgrades.
  • Scalability - An application server can pool database connections. This means an organization can scale out a web server farm without the need to increase the number of database connections.
  • Security - Having a direct link from a web page to a database opens up infrastructure to SQL injection attacks. With a separate data access layer carrying out data validation and/or showing business logic, you can ensure that text entered in a web form is not used as an SQL call. Security is also improved by centralizing authentication processes as well as data access management.
  • Improve the performance of large heavily-used applications by placing restrictions on network traffic.


See Also


References


Further Reading