The web server layer is the client-facing zone. The web servers behind the load balancer are the servers that will be hosting the AppForms sites.
Processor | Intel Xeon or similar with 4 cores |
Memory | 16 GB |
SSD | 50 GB |
Software | Compatible Version |
Operating System | Windows Server 2016 or above |
Server Roles | Server Roles > Web Server > Security Basic Authentication IP and Domain Restrictions Windows Authentication Server Roles > Web Server > Performance Dynamic Content Compression Static Content Compression |
Web Server Features | Features > .NET Framework 4.7 Features > WCF Services HTTP Activation TCP Activation |
.NET Runtime | 4.7 + |
Ports | Description |
443 | Default port for communication. |
3389 | Default port for RDP *1. |
Component | Action |
Anonymous Authentication | Enable Anonymous Authentication. |
IIS Auth with ASP.NET Impersonation | Set identity impersonate value to false. |
SSL Certificate | SSL Certificate for HTTPS Protocol *2. |
FQDN | A fully qualified URL needs to be created and added to the DNS – to add the site bindings to access the site *3. |
Application Pool User | Application Pool User credentials are required to run the installer. Application pool users should have access to the local files/folders *4. Application pool users should have access to the Database instance *5. |
User Account | The user should have the privilege to run the installer exe on server *6. |
*1– 3389 is the default port, and the recommendation is to use a different port. This port is only needed for installation/upgradation/maintenance.
*2– Each of the sites will need an SSL Certificate from a certificate authority are recommended for public facing sites. Self-Signed certificates are acceptable for an internally hosted AppForms site.
*3– Each of the sites will need an FQDN (Fully Qualified Domain Name).
*4– The application user will need to access local files/folders to write logs/exceptions.
*5– If the user chooses to use windows authentication for SQL, then we will be using the Service Account to connect to the Meta DB and the Log DB. The Application pool user should temporarily have dbowner, and dbcreator permission at the time of installation. If the application pool cannot be given permission, an SQL Service Account can be utilized. The user permission can be changed to dbowner after installation. This app pool user should have read permission in the registry.
*6– The user should have the privilege to run the installer exe on the server. This user should also have the Read/write permission in the registry.
Note 1: Depends on the number of users and application load, more resources (CPU, RAM, load balanced servers) may be required.
Note 2: The date-time format must be consistent across all machines in all (SANDBOX, DEV, QA, and PROD) environments.
The database server stores the meta data, application logs and the business data for the AppForms application. Its main role is to receive requests from client machines, search for the required data, and pass back the results.
Processor | Intel Xeon or similar with 4 cores |
Memory | 16 GB |
SSD | 100 GB*1 |
Software | Compatible Version |
Operating System | Windows Server 2016 or above |
SQL Server | SQL Server Standard/Enterprise 2017 or above |
Ports | Description |
1433 | Default port for SQL Communications. |
Component | Action |
SQL Authentication | The authentication can be windows or SQL Service account *2. |
Name | Description |
AppFormsMetaDB | This database stores all the meta data related to the AppForms |
DataformMetaDB | This database stores the meta data related to the Dataform. *3 |
AppFormsLogDB | This database stores all the logs. *4 |
*1– The disk space requirements are highly dependent on the Business DB and Log DB growth, logging level and the data retention period for the logs.
*2– SQL User Roles: dbcreator: This role is only needed at the time of installation as it involves creating application database and tables at the time of installation. dbowner: The database role required is dbowner.
*3 – DataformMetaDB is created only if Dataforms are used in the site.
*4 – AppFormsLogDB is necessary for storing all logs associated with AppForms. By default, these logs are saved in Meta DB. However, the recommended approach is to keep it as a different database for increased response time and controlled growth.
Note 1: If Azure SQL is to be used, we will need the above 3 databases to be created manually before installation for storing Metadata.
Note 2: The date-time format must be consistent across all machines in all (SANDBOX, DEV, QA, and PROD) environments.
The single server deployment architecture consists of one server that is running AppForms and a supported version of SQL Server. This architecture might be appropriate for evaluation purposes, development environment, or for an isolated non-mission-critical departmental implementation with only a few users. This installation is not recommended for a production environment.
Installation Scenario | Deployment type and scale | RAM | Processor | Hard disk space |
Single server with a built-in database or single server that uses SQL Server | Development or evaluation installation of AppForms with the minimum recommended services for development environments. | 32 GB | 64-bit, 4 cores | 80 GB for system drive 50 GB for SQL DATA 50 GB for SQL Logs *1 |
A small farm deployment consists of a single database server or cluster and one or two servers with AppForms installed. The major architecture characteristics include limited redundancy and failover. A small farm is useful to serve only limited deployments, with a minimal set of AppForms features enabled, a relatively small user base, a relatively low usage load (a few requests per minute up to very few requests per second), and a relatively small volume of data.
Installation Scenario | Deployment type and scale | RAM | Processor | SSD disk space |
Web server or application server in a small farm | Pilot, user acceptance test, or production deployment of AppForms | 32 GB | 64-bit, 4 cores | 80 GB for system drive |
SQL Server in a small farm | 32 GB | 64-bit, 4 cores | 80 GB for system drive 50 GB for SQL DATA 50 GB for SQL Logs *1 |
This architecture introduces the breakdown of the topology into multiple tiers: dedicated Web servers, and one or more database servers or clusters.
This is the most common architecture, and it includes a wide spectrum of service topologies and farm sizes. A medium farm deployment is useful to serve environments that have the following:
Installation Scenario | Deployment type and scale | RAM | Processor | SSD disk space |
A Single Web server or application server in a medium farm | Pilot, user acceptance test, or production deployment of AppForms | 64 GB | Dual Processor 64-bit, 4 cores | 80 GB for system drive |
SQL Server in medium farm | 64 GB | Dual Processor 64-bit, 8 cores | 80 GB for system drive 50 GB for SQL DATA 50 GB for SQL Logs *1 |
Large farm deployments introduce the breakdown of services and solutions across multiple farms, and additional scaling out the tiers on a single farm. Several AppForms services can be deployed on a dedicated services farm that serves requests from multiple consuming farms. In these large architectures, there are typically web servers, and multiple application servers, depending on the usage characteristic of each of the local (non-shared) services, as well as multiple SQL Server–based servers or SQL Server clusters, depending on the content size and the application services databases that are enabled on the farm.
Large farm architectures are expected to serve deployments that have the following:
Installation Scenario | Deployment type and scale | RAM | Processor | SSD disk space |
A Single Web server Configuration for a large farm (Single Web server typically supports 10,000-20,000 users) | UAT/Staging or Production deployment of AppForms | 128 GB | Dual or Quad Processor 64-bit, 4 or 8 cores | 80 GB for the system drive |
SQL Server in large farm | 64 GB | Quad Processor 64-bit, 4 or 8 cores | Depends based on the number of AppForms modules used. Separate SQL Server clusters can be set up for each module if required. *1 |