Kinetics
Kinetics is a hosting platform for Rust applications that allows deploying all types of workloads by writing only Rust code.
pub async
Check out more examples here. Including REST API endpoints, queue workers, and cron jobs.
Features
🦀 Only Rust code
Just apply attribute macro to your function, and Kinetics will handle the rest. No other tools required.
🚀 Any workload
Deploy REST API endpoints, queue workers, and cron jobs.
🏕️ Works offline
Run your functions locally, with no connection to the internet. Requests to DB and queues are served locally as well.
💿 Comes with DB
For every project we provision a DB, with connection string being added to function config automatically.
📥 Comes with queues
When you launch a worker function, we automatically provision its queue. Other functions access the queue by simply importing the worker function.
🔑 Secrets
Automatically provision secrets from .env.secrets file and make it available in your functions.
📚 Logs Monitor your functions with just CLI. Each function gets its own stream of logs.
🤖 No infrastructure management
The infrastructure is always provisioned automatically.
Getting started
# 1. Install
# 2. Login or sign up, you will receive auth code to this email
# 3. Init a project from template
;
# 4. Call the function locally
# 5. Deploy the entire project to the cloud
# 6. Alternatively you can deploy only selected functions
# 7. Faster way, but you lose rollbacks
Kinetics is currently in ⚠️ active development and may contain bugs or result in unexpected behavior. The service is free for the first 100,000 invocations of your functions, regardless of the type of workload.
If you have any issues, please contact us at support@kineticscloud.com.
Documentation
Kinetics supports several types of workloads(functions): endpoint, worker, and cron.
Endpoint
A REST API endpoint. The following attribute macro parameters are available:
url_path: The URL path of the endpoint.environment: Environment variables.
Worker
A queue worker. When deployed, a corresponding queue gets provisioned automatically.
concurrency: Max number of concurrent workers.fifo: Set to true to enable FIFO processing.environment: Environment variables.
Cron
A regular job.
schedule: We support these types of expressions.environment: Environment variables.
Env vars
A macro for any type of workload accepts JSON array with environment variables.
Secrets
Store secrets in .env.secrets file in the root directory of your crate. Kinetics will automatically pick it up and provision to all of your workloads in the second parameter of the function as HashMap<String, String>.
Database
We automatically provision one SQL DB for each project. Also kinetics invoke --with-db [Function name] will automatically provision DB locally and replace the connection string with local endpoint.
You can then interact with it like you normally interact with DynamoDB, example.
Examples
Try in examples/ dir. These are the most frequently used commands with examples of input params.
Print out all available functions before deployment. Their names and URLs of REST API endpoints:
Invoke a function locally with parameters. --payload sets the JSON body payload:
Invoke a function which needs a DB. DB gets provisioned locally and is fully operational, not just a mock for requests.
Deploy entire project:
Deploy individual functions:
Deploy faster, but without the ability to roll back.
Invoke a function remotely by automatically resolving function's name into the URL:
Output logs for a function:
Output run statistics for a function:
Deploy from github actions
The newly initialized project contains a github workflow for continious deployment.
- After calling
kinetics init <project-name> - run
kinetics auth tokento get a token - and add it as
KINETICS_ACCESS_TOKENsecret to your repo to enable deploys.
After this setup main branch updaits will be automatically deployed.
Support & Community
- support@usekinetics.com. Help with builds, deployments, and runtime.
- GitHub Issues. Persistent bugs, and feature requests.