Tulip uses one server configuration per instance. So, if a company uses one instance per manufacturing plant, then there will be one server configuration for each manufacturing plant.
Tulip supports a variety of server configurations, including cloud-based, within a VM and on-premises.
Tulip App Servers: Kubernetes + Kubernetes handles scale-out of application servers and services to thousands of nodes. Used in production by Box, SAP, New York Times, eBay, Comcast, IBM, and more.
The Tulip backend uses three major technologies for persisting data:
Read Only Process Completion Data: PostgreSQL
Digital Factory digital data (users, stations, apps, etc): Mongo DB
Machine Outputs: Amazon S3
Data inside the database is not changeable unless via the authorised controls inside the Tulip system. There are four main components to ensure application security:
SSL
Database Security
Web Security Standards
Application Security
Data is created and controlled in the following ways:
Data Element | Created In/by | Stored In | Controls |
---|---|---|---|
User Data | Tulip Editor | Mongo | 1. Access controlled (authorised users) 2. System controls changes by design |
Apps (inc. history and groups) | Tulip Editor | Mongo | 1. Access controlled (authorised users) 2. Permissions 3. System controls versions |
App Variables | Tulip Editor | Mongo | 1. Variables are defined and stored in mongo, and utilized in the execution data saved in postgres 2. Each variable has a unique identifier, which cannot be changed 3. Records in Postgres are read-only values attached to that variable identifier |
Stations (inc groups) | Tulip Editor | Mongo | Access controlled (authorised users) |
Machines | Tulip Editor | Mongo | Access controlled (authorised users) |
Activity Log | Tulip Editor | Mongo | |
System Date & Time | Server | Azure | Cannot be changed in the Editor or Player. Can be determined by a company's local time server. Takes into account leap years and daylight savings via custom server configuration for each instance. |
System & Station Timezone | Tulip Editor | Mongo | Access controlled (authorised users) |
App Executions | Tulip Player continually updates the execution data locally, and on the server using Mongo DB’s underlying technology for updating collections across client and server. In the Tulip code this module is called the “state manager”. When a ‘process completion’ event is sent from the player to the server, it writes the current status of ‘state manager’ into a new row in the postgres db. | Postgres | 1. Access controlled (authorised users) 2. System controls changes by design 3. Read-only DB 4. Every method on the back end does an ACL check to make sure the logged in user has the appropriate credentials. |
Tulip Table Data | Tulip Tables Page, Player, API | Postgres | Access controlled (authorised users) |
ID | Requirement |
---|---|
PLAT-8867 (801) | All records, including audit trail shall be Legible, ie. shall be human readable throughout the retention period. |
PLAT-8888 (811) | All records, electronic signatures, and audit trails must be human readable and protected to ensure they are readily retrievable throughout a pre-defined retention period. |
PLAT-8915 (804) | All records shall be Complete. Records shall include all data related to activity with no deletion or overwriting. |
PLAT-8946 (806) | All records shall be Enduring, ie. stored, managed, accessible and unalterable for the full retention period. |