Deploy

Introduction

Quix provides a serverless compute environment for running your projects (any models, micro-services, connectors, APIs, web frontends and dashboards).

It is powered by Git and Docker, abstracts you from managing servers, and provides elastic compute to scale costs with demand.

Create a deployment

To deploy your project you can either click on the Deploy button on the Develop page or click on the New Deployment button on the Deployments page.

Deployment config

There are three tabs of optional configuration settings for each deployment:

General

In the General config page you can:

  • Deployment name - specify the name of the deployment for future reference
  • Project - specify the source Git project for this deployment
  • Version Tag - specify particular Git tag or commit revision to build into docker image and deploy into serverless environment.
  • Deployment types:
  • Service - Service (eg pub/sub model, data connector etc) that runs all the time. If the service fails or terminates, it will be restarted automatically and pick-up on the last data point.
  • Job - A one time run that has an end state. For example model training or a static data import job.
  • CPU millicores - Set the maximum amount of CPU millicores that can be consumed by each replica. 1000 millicores equals to one physical cpu core.
  • Memory in MB - Set the maximum amount of memory that can be consumed for each replica.
  • Replicas - Set the number of instances of a service. Used to horizontally scale your deployments.

Variables

In the variables page you can specify environment variables that are inserted into the service. This helps you to parameterize your project without rebuilding the docker image.

Here's some Python code to show how to use variables:

import os

buffer_options.time_span_in_milliseconds = int(os.environ["window"])

Public access

You can assign public DNS addresses to your deployments. This is useful if your project exposes API (eg to call a model directly) or if the project hosts any sort of frontend or dashboard.

This option will wire a DNS address to the service port 80. Please note that it might take upto 5 to 10 minutes to propagate through the DNS servers to your network.

Such deployments will have a browse button enabled. THis lets you navigate your browser to the deployment assigned to the address.

Running deployments

Each deployment has Start/Stop button to control its status. You can stop a running deployment to edit any configuration properties before starting it again.

Version control

We use tags in Git to help you manage the version of each project deployment.

When your code is ready to deploy, simply tag a commit with Git tag. You can do that in your favorite Git client or in our portal.

If you already have your project, select it from Project view:

Then, in the right side menu, select the Git commit you want to deploy, and tag it with version text (for example V0.1).

Logs

There are two types of logs available for each deployment:

  • Build logs - Logs from docker image building phase.
  • Logs - Logs from service runtime