Tines is a Rails application that uses a PostgreSQL database for its persistent data storage and Redis for its cached data storage and message queuing.
It features two containers:
tines-app runs the Rails server for web application hosting/receiving webhooks.
tines-sidekiq runs background worker processes. Both containers read and write to and from the PostgreSQL database and Redis cache - they don't communicate directly, instead, they swap data and messages through PostgreSQL/Redis.
Typically, an Application Load Balancer (ALB) is deployed in front of the
tines-sidekiq containers use the same
tines-app Docker image with different entry points (
tines-sidekiq containers both make requests to external services to run your automation Stories.
tines-sidekiq container may be optionally configured to periodically load new Action templates from Tines (at template-data.tines.com) and to send basic version and feature usage information back to Tines (at hq.tines.io).
Serving the web application
A user's browser connects via HTTPS to the Tines web application via an ALB. The ALB terminates the SSL connection and connects to the
tines-app container over HTTP.
Running Actions on
The Tines product features 7 different types of automation "Actions", 3 of which cause Tines to connect to external services: IMAP, Email (SMTP), HTTP Request.
When a user "runs" an Action via the web application, a task is enqueued in the Redis cluster by the
tines-app container. The
tines-sidekiq container reads from this queue, reads related data from the PostgresSQL database, and performs the Action, which may result in an HTTP, SMTP, or IMAP request to an external server.
The data gathered from these requests is stored in an "event" in the PostgresSQL database.
Actions can also run as a result of an upstream Action running successfully, or on a schedule. When this happens, a task is enqueued in the Redis cluster by the
tines-sidekiq container for each Action that will run.
Testing Actions on
When "test" mode is invoked via the web application, the tines-app container directly executes the Action (rather than enqueuing it via the Redis instance for later execution by the
When this happens, the tines-app container may itself make an HTTP, SMTP, or IMAP request to an external server.
An external service may post webhooks to the
tines-app container through the same ALB used to host the web application.
When a webhook is received, the data is stored in an event in the PostgresSQL database. Further downstream Actions may be executed in turn by the
tines-app container enqueuing tasks in the Redis cluster.
Connecting to a SQL database
Outside of the core two containers, Tines also provides a separate container, called
sql-over-http, that allows the HTTP Request Action in the product to communicate with a SQL database (currently only PostgreSQL databases are supported).
An HTTP Request Action can be configured to invoke the
sql-over-http service via an HTTP request, which will, in turn, connect to the target database and execute the given SQL statement.
To connect to Snowflake databases, we recommend using the Snowflake SQL API.