System Architecture

iGene is a relatively standard web server application that runs on a Java environment and connects to a SQL database. Clients only require a web browser for access. iGene is capable of running on anything from Microsoft Windows 7 to Microsoft Windows Server 2019. Additionally it can easily be deployed to Linux or inside a Docker container. For data storage, iGene stores most of the data in a standard SQL database, and binary data such as PDFs and other file resources within iGene’s storage pools.

Normally we talk in terms of:

  • Client or Browser - How users access the System

  • Application Server - The server running iGene

  • Database Server - The server running the SQL database

Client Server

Note: It is possible to run the database and application on the same server, however Genial would recommend against this.

For clients, iGene is simply a standard web application using HTML, CSS and Javascript. On the server, iGene runs on an OSGi Container called Karaf. The database server runs on Microsoft SQL Server or MySQL

Moving parts

  • Client/Browser - Clients access iGene using a web browser such as Chrome, Firefox or Internet Explorer. Like many web based genetic tools, iGene’s web front-end is fairly large and complex. Older browsers, e.g. Any version of Internet Explorer before Edge may have issues running it. Genial would recommend using Google Chrome for best performance and compatibility.

  • Application Server - This is the server that hosts the iGene service. It’s capable of running on anything from Microsoft Windows 7 to Microsoft Server 2019, additionally it can easily be deployed to Linux, or even inside a Docker container. When setting up/choosing an application server please keep in mind that if the application server is performing slowly, then every user accessing the system will also experience slow performance.

  • Database Server - This is the SQL server that stores the application data in a database. We recommend ensuring the database is stored on a fast machine with plenty of free memory, an SSD disk and a low latency network connection to the application server.

  • Karaf - Karaf is the OSGi container that runs iGene. Karaf can be thought of as a web container similar to IIS or Apache Tomcat. Karaf provides many features such as log management and remote administration. Karaf has extensive documentation that can be found here.

  • OSGi - OSGi is the framework upon which iGene is built and runs. It provides a way to dynamically and safely load additional modules and plugins to the system and this framework allows iGene to scale over multiple systems.

  • Database - The database is where iGene stores the majority of its non-binary information. This is a standard decentralised SQL database, which means it is possible to access the underlying database using tools such as MS Access, Crystal Reports, Tableau and any other tool that can connect to a SQL database. N.B any non-iGene access to the database should be read only unless previously discussed with Genial as accessing the database directly will bypass all permissions, auditing and can also be dangerous

  • Storage Pools - To avoid bulking out the database with binary data for PDFs, reports and images, iGene stores all binary data in storage pools. A storage pool is simply a file system location accessible to the server that can be accessed only by the iGene service. The storage pool can be located on drives directly connected to the application server, or on any UNC path accessible to the iGene service. For example, this could be from a DFS system or network attached storage. The storage pools are immutable, once data has been written they can never be changed. (The file names for the data include an SHA-1 of the original data)

  • Plugins/Interfaces - iGene provides ways for the iGene application to be enhanced and extended via plugins and interfaces. These allow additional functionality required by a site to be created and added without changing the core application. These plugins and interfaces have their own options and configurations. When moving iGene versions from one system to another it’s important to take into account any custom plugins/interfaces and their respective configurations.

  • IGene Home - IGene stores some configuration files and its report templates in a folder on the application server not located inside a storage pool. This is normally located on D:\igene or if only a single drive is available on C:\igene. The iGene home by default will contain the initial storage pool and this folder can become increasingly large over time.

  • Templates - The templates folder is stored within the iGene home folder, this is normally D:\igene\templates. This directory contains a folder for each report template within iGene. These reports can be daily worklists, statistical reports, letters or clinical reports. When moving versions of iGene from one environment to another it’s important to take these reports into consideration when migrating systems.

Before go-live, Genial recommend three iGene environments are setup: production, test and migration. Once a project is live, the migration environment can be dropped leaving just production and test. It’s possible to have additional environments, and Genial does not limit the number production environments that can be setup.

We recommend two standard system configurations. If alternative structures are required then please consult Genial Genetics on how to set this up:

Application Server & Database server.

In this setup ,there is one application server and one database server configured as below. This setup is used by the majority our sites.

App Server

Application Server, Interface Server & Database server.

In this setup, there is one application server, one interface server and one database server as shown below. This setup is designed for sites that have a large throughput of data on interfaces and plugins, whilst retaining the iGene service for normal usage.

App And Interface Server

Note: The interface server is just an iGene application server that is dedicated to handling plugins and interface traffic.

Database Setup and Clustering.

Care must be taken when placing iGene’s database on a shared database server. iGene can be very sensitive to slow database performance as is communicates a lot with the database server. It can often take 30+ queries to populate some of the busier screens within the application. If a database query is slow during busy/peak times then this can mean the application will perform much slowly, even if the traffic is not being generated from iGene.

The network connection between the iGene application server and the database server should also be fast, stable and provide consistent performance. The speed of the network between the client machines and the application server is fairly tolerant and users have accessed it happily over VPNs and cellular connections.

iGene can connect and run against a Microsoft SQL Server Cluster. The application doesn’t have any special settings to support and we have customers running this setup in production with no issues. The only item to raise is that on occasion, we’ve noted speed issues on some production clusters in shared environments when they are under heavy load.