DEV Community

Cover image for Volumes: High IOPS and Low Latency NVMe SSDs Public Preview
alisdairbr for Koyeb

Posted on • Originally published at koyeb.com

Volumes: High IOPS and Low Latency NVMe SSDs Public Preview

It’s the final day of Koyeb's Launch Week Round 2, and today we’re announcing the public preview of Volumes!

Volumes on Koyeb are blazing-fast NVMe SSD you can use to persist data across deployments.
After announcing Volumes in technical preview a few months ago, we are now opening the preview to all users on the Starter plan!

Volumes Public Preview

Offering high throughput and low latency, Volumes open the door to a wide range of new workloads and use cases to handle the state of your applications.
Whether you’re looking to run:

  • Clustered databases
  • Object storage
  • Queue systems
  • Storing model checkpoints and weights for AI workloads
  • Or anything else that requires data persistence

Get seamless data persistence by deploying any container image from DockerHub - such as Minio, Neo4j, ClickHouse, or Meilisearch - on Koyeb. With just a few clicks or simple CLI commands, you can leverage volumes and persist your data across deployments.

Right now, Volumes are available in Washington DC and Frankfurt for all Standard CPU instance types. Over the next few months, we will progressively add Volumes to more regions, if you are interested in a specific region, just let us know!


During the public preview, Volumes are completely free, so dive in and start adding persistence to your
services!
{' '}

Getting Started with Volumes

To help you get started, here are a few examples to deploy some popular stateful applications including Minio, ClickHouse, MongoDB, and Neo4j using Volumes to handle data persistence using Koyeb CLI.

Minio

Minio is a high-performance distributed object storage server with an S3 compatible API.
In the following example, we will:

  1. Create a 10GB Volume in the Washington DC region
  2. Deploy Minio using the official Minio Docker image quay.io/minio/minio
  3. Attach the minio-data Volume to the service and mount our volume into the /data directory of the container

Create a Volume

koyeb volume create minio-data --size 10 --region was
Enter fullscreen mode Exit fullscreen mode

Deploy Minio

koyeb app init minio \
  --docker quay.io/minio/minio \
  --docker-command server \
  --docker-args /data \
  --docker-args --console-address \
  --docker-args :9001 \
  --region was \
  --volumes minio-data:/data \
  --env MINIO_BROWSER_REDIRECT_URL=https://{{ KOYEB_PUBLIC_DOMAIN }}/console/ \
  --port 9000:http \
  --port 9001:http \
  --route /:9000 \
  --route /console:9001
Enter fullscreen mode Exit fullscreen mode

ClickHouse

ClickHouse is a fast and resource efficient open-source column-oriented database management system.
In the following example, we will:

  1. Create a 10GB Volume in the Washington DC region
  2. Deploy ClickHouse using the official ClickHouse Docker image clickhouse/clickhouse-server
  3. Attach the clickhouse-data Volume to the service and mount our volume into the /var/lib/clickhouse directory of the container

Create a Volume

koyeb volume create clickhouse-data --size 10 --region was
Enter fullscreen mode Exit fullscreen mode

Deploy ClickHouse

koyeb app init clickhouse-server \
  --docker clickhouse/clickhouse-server \
  --region was \
  --volumes clickhouse-data:/var/lib/clickhouse \
  --env CLICKHOUSE_USER=main \
  --env CLICKHOUSE_PASSOWRd={{ secrets.clickhouse_password }} \
  --port 8123:http \
  --port 9000:tcp \
  --route /:8123
Enter fullscreen mode Exit fullscreen mode

MongoDB

MongoDB is a general-purpose, document-based, distributed database built for modern applications.
In the following example, we will:

  1. Create a 10GB Volume in the Washington DC region
  2. Deploy MongoDB using the official MongoDB Docker image mongo
  3. Attach the mongo-data Volume to the service and mount our volume into the /data/db directory of the container

Create a Volume

koyeb volume create mongo-data --size 10 --region fra
Enter fullscreen mode Exit fullscreen mode

The command above creates a 10GB Volume in the Frankfurt region.

Deploy MongoDB

koyeb app init mongo \
  --docker mongo \
  --region was \
  --volumes mongo-data:/data/db \
  --env MONGO_INITDB_ROOT_USERNAME=main \
  --env MONGO_INITDB_ROOT_PASSWORD={{ secrets.mongodb_password }} \
  --port 27017:tcp
Enter fullscreen mode Exit fullscreen mode

Neo4j

Neo4j is a highly scalable, robust native graph database.
In the following example, we will:

  1. Created a 10GB Volume in the Washington DC region
  2. Deploy Neo4j using the official Neo4j Docker image neo4j
  3. Attach the neo4j-data Volume to the service and mount our volume into the /data directory of the container

Create a Volume

koyeb volume create neo4j-data --size 10 --region fra
Enter fullscreen mode Exit fullscreen mode

The command above creates a 10GB Volume in the Frankfurt region.

Deploy Neo4j

koyeb app init neo4j \
  --docker neo4j \
  --region was \
  --volumes neo4j-data:/data \
  --env NEO4J_AUTH={{ secrets.neo4j_password }} \
  --port 7474:http \
  --port 7687:tcp \
  --route /:7474
Enter fullscreen mode Exit fullscreen mode

That's it! For each of the example above, in less than 60 seconds, you will have a Minio, ClickHouse, Mongo, or Neo4j service running on Koyeb using a Volume to handle peristence.
You can then start using from your other services using our built-in service mesh for secure service to service communication.

What’s Next?

Volumes is a foundational primitive to build and run stateful applications on Koyeb. We're currently working on adding more features around data mobility to let you attach and detach Volumes from services and support snapshots to create a point-time copy of your Volumes.

We're looking forward to your feedback to help us shape the product, and stay tuned as we roll out even more exciting updates during Launch Week!

Top comments (0)