This document outlines the software and hardware requirements of OpenSpecimen.
|Server||Operating System||Technical Specifications|
Prod database server
|Linux ( CentOS or RedHat)||Quad-core CPU, 8GB RAM, 100 GB SSD HDD|
Production app server
|Linux ( CentOS or RedHat)||Quad-core CPU, 8GB RAM, 100 GB any HDD|
|Linux ( CentOS or RedHat)||Dual-core CPU, 4GB RAM, 100 GB any HDD|
Printing server (for BarTender or NiceLabel)
You will need to purchase a network printing software with automation capabilities like BarTender, NiceLabel, etc. You can use any network-enabled printer like Brady, Zebra of any make.
To integrate with other databases like RedCap, OpenClinica, Epic, Velos, Oncore, etc, you will need a plugin developed by Krishagni. Email firstname.lastname@example.org for more details. You can also develop your own plugins using the APIs if you have an in-house development team.
Q: What language is the code written in?
Q: How much memory is needed?
A: In short, if both apps and databases are installed on the same machine, then we suggest to equip the machine with a minimum of 4 GB for smoother operation. In reality, the amount of memory needed is determined by the profile of the load like a number of concurrent users, count of specimens, throughput and response time requirements, etc.
Q: What are the minimum OS/app server requirement for the app?
A: Server is developed using Java language; therefore the web app has no direct dependency on the operating system. Any operating system that supports Java 8 runtime will do.
Any version of Tomcat >= 7.0 that supports servlet 3.0 specification will work
Starting OpenSpecimen v5.2 onward, any version of Tomcat >= 8 that supports servlet 4.0 specification will work.
Q: Does it have any platform-specific code or dependencies on low-level programs like Perl / ruby/python/chron/shell etc?
Q: Does it need any specific browser plugins?
A: Groovy based Gradle build tool is used to compile and package the source code into a web app artifact (.war). The release distribution is provided in compressed artefact (.zip) containing the app, and its dependencies like Tomcat, JDBC drivers, etc
Depending on the severity of bugs, bugs are either
Alternatively, adopters can create pull requests for bug fixes and submit, which the Krishagni team will review and merge into mainline
A: Source code is open and is accessible to the world. However, the commits are reviewed and merged into mainline by the Krishagni team. Adopters have an option to fork and maintain their own code line. In doing so, adopters risk missing out on features contributed/developed on the mainline. This practice is highly discouraged, however, being an open-source project always remains an option to the adopters. Email email@example.com to discuss anything about your specific pull requests.
A: OpenSpecimen uses Liquibase framework change set scripts to seamlessly manage differences between DDLs of different databases. As such we do not explicitly maintain DDL SQL statements.
Liquibase scripts are a source of truth. Liquibase scripts are available in the Github repository.
A: Database changes are managed using Liquibase framework scripts, which are executed by OpenSpecimen during server bootstrap. Every time, change scripts are run, new changesets, if any, will get applied to the database. This ensures database schema is up-to-date and compatible with the version of OpenSpecimen being run. There is no additional step required by the DBA to carry out on every release.
A: For most tasks, sudo access is good enough. For some tasks like setting up OpenSpecimen as a service needs root access.
A: Following ports should be open:
A: Min 4GB RAM per server with standard server VM configuration.
A: Yes. I assume by OS you mean Operating System and not OpenSpecimen.
A: Typically ongoing basis.
A: None on the firewall unless you want to give web access to external researchers. If you want to do it, then open port 443.
A: The support staff should have sudo rights to perform the following actions:
systemctl(RHEL lineage) /
service(Debian lineage) commands.