Using multiple IIS servers for deployment stages

Traditionally, you would have multiple IIS Servers that keep each step in development distinct, moving code between servers until it is in production. This time-tested tactic to prevent sharing one server is the only way to insure that a call for reboot on development testing doesn't bring down the production instance. To achieve autonomy it is generally (and highly) recommended that each instance be a separate machine: separate IIS, separate licensed Corticon Server for .NET install, and separate instances of CDDs and decision services. The sequence of operations is where Studio generates a versioned decision service that is tested on DEV. When DEV accepts it, then production picks up that decision service version for their tests, and takes down any prior version.

How to set up additional applications on one IIS server

There is a technique you can use that shares an IIS server, keeping the stages of production isolated through IIS application pools. Each application will share the IIS resources and the Corticon resources while maintaining application-specific sandboxes and logs.

Let's assume that you want development (DEV) to be isolated from production (PROD). You will create application pools, then ensure that your files and folders are ready to be replicated, and then create the applications.

Create Application pools

  1. In the IIS Manager, select Application Pools, then choose Add Application Pool.
  2. In the dialog box:
    1. Name the pool as in the illustration, DEV.
    2. Choose .NET CLR Version v.4.0.n.
    3. Choose Managed pipeline mode: Classic


    Click OK.
  3. The new Application Pool is listed with no application.
  4. Repeat the steps to create all the Application Pools you want, as illustrated where PROD was added:

Create the Applications

  1. Stop the IIS Manager.
  2. In the File Explorer at C:\inetpub\wwwroot, copy the axis folder, and then paste it.
  3. Rename the copied folder to your additional application's name, such as DEV.
  4. Repeat the copy/paste/rename steps to specify all your applications, such as PROD.
    Note: Unless you want to retain the axis directory as a template, you can delete the axis directory by first deleting its directory, and then in the IIS Manager, removing it.
  5. Restart IIS Manager to see the new folders:
  6. On each of the application folders (DEV and PROD), do the following steps:
    1. Right-click on the application folder and choose Edit Permissions.
    2. Choose Security, then Edit to allow IIS_IUSRS to have Full control. These permissions are expected to be inherited by the CcServerSandbox, the cdd folder, and logs folder.
    3. Right-click on the application folder, and then choose Convert to Application.
    4. In the Add Application dialog, enter a name, and then click Select to choose an application pool, as illustrated:

Restart IIS and test the URLs.

In your browser, enter the URL http://localhost/DEV/corticon/server/ping to make a REST call to the running development Corticon Server to get the time (in milliseconds) that the Corticon Server has been running on IIS, as illustrated:


Do the same with http://localhost/PROD/corticon/server/ping.

When you see that both applications are running, proceed to testing the applications by publishing a decision service to each.

Note: Use logs to confirm the distinct application spaces It is good idea to edit brms.properties in each application, and then set logLevel=DEBUG. When you run a test in each application, it will test that the application-specific logs are working. You will then want to change the setting to the default or your preferred level as DEBUG produces enormous output.