Datagrok consist of Docker containers, database and persistent file storage.
Docker containers allow installing Datagrok on any platform, including but not limited to bare-metal machines, on-premise virtual machines or virtual machines in cloud providers, for example AWS EC2, on-premise Kubernetes cluster or Kubernetes service in cloud providers, for instance AWS EKS, and container services in cloud provides, for example AWS ECS.
Also, Datagrok server requires PostgreSQL database. As database Datagrok supports any PostgreSQL database out-of-the-box, including cloud solutions for PostgreSQL database, for example AWS RDS. We recommend using scalable and highly reliable solutions for databases and avoiding single database instance setup to prevent datagrok internal information loss such as created users, created connections, etc. User data won't be affected anyhow on Datagrok database crash.
For persistent file storage Datagrok supports Local File System, Network shares or cloud solutions, for example AWS S3 or Google Cloud Storage. We recommend using scalable and highly reliable solutions for storage and avoiding local file system setup to prevent datagrok internal information loss, such as projects, settings, etc. User data won't be affected anyhow on Datagrok storage loss.
This document contains different deployment options for Datagrok.
More information:
Datagrok supports different deployment scenarios. You can choose the one which suits you best.
The easiest way to deploy the application is to use our deployment script
- Download script from repository: deploy.sh
- For AWS deployment, check that you have all required permissions on AWS account
- Run the script. It will ask questions and deploy a datagrok stand based on your answers. The supported deployment
platform:
ECS, Kubernetes, Virtual Machine.
- EC2 instance should be treated like Virtual Machine. It is required to create EC2 instances before the script run. You can check how to create instances in regular machine example preparations steps
sh deploy.shThis method does not require anything except one machine on which docker-compose will deploy all the components for Datagrok. We recommend this method if you want to jump-start with Datagrok on your local device.
This is a reference implementation that is NOT recommended for production usage.
More information:
We strongly recommend using AWS ECS for the Datagrok deployment. It provides a highly scalable, fast container management service that makes it easy to manage application components. You can go completely serverless using AWS Fargate engine, which will reduce efforts on service support.
We prepared two options for effortless deployments to ECS:
- Docker Compose. It deploys the default application without enabled security features such as SSL and encryption. The deployment process is simple, and no foreknowledge is necessary. However, this option requires separate creation for an RDS database and S3 bucket.
- CloudFormation. It is an elaborate setup that considers all common security policies. It uses the CloudFormation template, which creates all required resources with enabled security options such as encryption and privileges control.
Kubernetes is software for scaling and managing applications in Docker containers. It is an extensive system with complex architecture. Kubernetes provides you with a framework to run distributed systems resiliently.
Datagrok requires persistent storage, which can be created using Kubernetes persistent volumes. PostgreSQL database can be both deployed in Kubernetes or on any other server. Set the database address and credentials in Datagrok configuration. Datagrok server will deploy all required schemas and users on the startup.
To deploy Datagrok in Kubernetes, including Cloud solutions for Kubernetes, such as AWS EKS, you can use our prepared deployment scripts and ingress configuration.
Datagrok can be deployed to a regular machine: bare-metal servers or virtual machines. This method is not as reliable, scalable, and maintainable as others, so we do not recommend it for production usage. This deployment method will require separate deployment for Datagrok required resources: PostgreSQL database and persistent storage(local filesystem can be used).
We use native Docker compose commands to run applications on machines. It simplifies multi-container application development and deployment.
More information: