Overview
Interact HRMS is an enterprise system with more than 70 Integrated HR, Talent Management, Time and Leave Management, and Payroll management applications. Interact HRMS is a pure web applications that is deployed using Apache, PhP, and MySQL Database. Interact HRMS can be deployed in the Cloud, Hosted, or On-Premise. The configuration of the servers to support Interact HRMS for optimal performance depends on many variables. To name few:
- Number of Employees that will be supported by the system?
- How many Interact Applications will be deployed?
- How many Self-Services users will be accessing the system?
- How many Internal Users will be accessing the system?
- How many External Users, users accessing the system using the Internet?
- Distribution of Internal Users by application?
- Employees Baseline Database size?
- Database Growth Rate?
- Online and Batch Transactions usage distribution?
- Batch Processes (e.g, Payroll), Cycle and Frequency?
Once the above variables/parameters are defined, then you can build an Application Usage Matrix that depicts the usage of each application(s) by group of users and by type of Transaction and Process. With this information, you’ll be equipped with a set of metrics that will enable you to configure and size the servers needed to support Interact HRMS in a live/production environment. Interact supports various Servers Architectures that can be used based on the need to configure an optimal Servers Architecture and Configuration of Interact HRMS applications production to deliver a high performance, scalable, reliable, and secure server infrastructure. The remaining of this blog describes the various Servers Architectures that can be deployed.
Servers Architecture Overview
As shown in Figure-1, Interact Servers Architecture can be designed using three sets of Servers including, Front-End Servers, Back-End (Application) Servers, and Database Servers. Each of these servers sets has specific use and role. The role of the Front-End servers is to receive HTTP requests and forward them for processing by the Back-End/Application servers. The Back-End/Application Servers process the requests, and send the response to the Front-End Servers, the Front-End Servers deliver the HTTP response to the users Browsers. The Database-Servers received DB service requests from the Back-End/Application servers and process them and return the results to the Back-End Servers. A number of Front-End, Back-End, and Database Servers can be used to design and deploy the right-fit Servers Architecture in support of Interact HRMS applications that you are intending to deploy.
Figure-1: Interact Servers Architecture Overview
Servers Architecture Types
There are three types of Severs Architectures that you can configure to deploy Interact HRMS:
Figure-2: Servers Architecture Types
One-Server Architecture – This Architecture calls for the use of a single server to house the Front-End Server, Back-End/Application Server, and DB Server. One server plays all the roles. This type of setup/configuration is good for small production environment in support of up to 500 employees, depending on the server configuration (ie, Processors, Memory, and Disk Drives and Controllers).
Two-Server Architecture – This Architecture uses two servers, one server acting as a Front-End Server, while the second server is acting as both Back-End/Application Server and DB Server. This architecture provides more security. This architecture can be used to support a medium size production environment of 500 to 2000 employees depending on the number and type of applications to be deployed and depending on the servers configuration (ie, Processors, Memory, and Disk Drives and Controllers).
Three-Server Architecture – This Architecture uses a separate server for each server type. One server for the Front-End Server, one Server for the Back-End/Application Server, and a separate server for the DB Server. With this architecture type, you can use multiple servers as Front-End Servers, multiple servers as Back-End/Application Servers, and multiple servers as DB Servers. This architecture is the most flexible and allows for the configuration of highly scalable, high performance, and highly secure production environment. This type of architecture can be used to configure an environment in support of 10s and 100s of thousands of employees, depending on the servers configuration (ie, Processors, Memory, and Disk Drives and Controllers).
Architecture Servers’ Roles and Software Installed
Depending on the selected Architecture, each server plays specific role(s) and is installed and configured with specific software. In this section, we shall describe what is the role(s) of each server and what software is installed on each server based on the selected Architecture.
One-Server Architecture – Here we are using one server that plays the three roles, Front-End Server, Back-End/Application Server, and DB Server as shown in figure-3:
Figure-3: One-Server Architecture
The sever is installed with Apache, MySQL, and Interact HRMS software. Note that the server will be accessed by both External Users over the Internet and the Internal Users connected to the Private LAN of the Organization.
Two-Server Architecture – In this Architecture, two servers are used, one server is used as Front-End Server, and second server is used as both Back-End/Application Server and DB Server as shown in figure-4. In this case the Front-End server will be accessed by the External Users over the Internet, while the Internal users will be served by the Back-End/Application server.
Figure-4: Two-Server Architecture
In this case, the Front-Server (Server-1) is installed with Apache software only, while the second server (Server-2) is installed with Apache, MySQL, and Interact HRMS software.
Three-Server Architecture – In this case, we are using three servers (Server-1, Server-2, and Server-3), each server is used for specific role(s). As shown in Figure-5, Server-1 is used as the Front-End Server, Server-2, is used as the Back-End/Application Server, and Server-3 is used as the DB Server.
Figure-5: Two-Server Architecture
In this case, the Front-Server (Server-1) is installed with Apache software only, while the second server (Server-2) is installed with Apache, and Interact HRMS software, and Server-3 is installed with MySQL Software and Database(s). As the case of the two-server architecture, in this case the Front-End server (Server-1) will be accessed by the External Users over the Internet, while the Internal users will be served by the Back-End/Application server (Server-2).
Front-End Server Software Configuration
As previously stated, the Font-End Sever in the Two-Server and Three-Server architectures is used as as a Requester/Forwarder server, where the server receives HTTP request from external users and forward these requests to the Back-End/Application server, which in turn process the requests and send the response to the Back-End server, and the Back-End server sends the HTTP responses to the end user (external user) to be displayed in the user browser. Again, the only software installed on the Front-End server is Apache and the following are the steps to use to install and configure the Front-End server:
- Install Wamp Server
- Remove MySQL service as it is not going to be used
- Set WampApache Service to Start Automatically in Windows Services
- Edit Apache Config file and make the following changes: Turn on mod_substitute, Turn on mod_proxy , Turn on mod_proxy_http , and Turn on Virtual Hosts
- Open apache Virtual Host file and edit the configuration as needed on requested host name, see the Sample Config File shown in figure-6
- Restart the Wamp Apache Service.
- Now the Front-End Server is Accessible from Outside/Internet through its IP or Domain and will start routing the requests
Figure-6: Virtual Host File Configuration on the Front-End Server
Conclusion
Interact HRMS supports multiple servers architectures to enable the organization to build and configure an optimal production environment that is highly scalable, secure, reliable, and to deliver the required performance. Our recommendation is to always start with a small Architecture/Servers Configuration and once you have gathered sizing and performance metrics, then you can tune the Architecture by expanding the number of servers. Note that the cost of the infrastructure to be deployed is function of the servers’ architecture to be used and the number of servers to be deployed.