Skip to content
This repository has been archived by the owner on Jan 29, 2024. It is now read-only.

WIP- Aiven-for-Dragonfly-service #2279

Merged
merged 38 commits into from
Dec 12, 2023
Merged
Show file tree
Hide file tree
Changes from 37 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
0857c3a
Aiven for Dragonfly docs EA
harshini-rangaswamy Nov 20, 2023
ee6c2a1
test topics
harshini-rangaswamy Nov 21, 2023
2ebb558
Fixed broken link
harshini-rangaswamy Nov 21, 2023
81ce1ec
Merge branch 'main' into harsini-aiven-dragonfly
harshini-rangaswamy Nov 21, 2023
be95d18
Fixed broken link
harshini-rangaswamy Nov 21, 2023
ff8f1ae
Fixed broken link
harshini-rangaswamy Nov 21, 2023
ddea8b6
Merge branch 'harsini-aiven-dragonfly' of github.com:aiven/devportal …
harshini-rangaswamy Nov 21, 2023
d456000
Added Aiven Redis to DF migration steps
harshini-rangaswamy Nov 24, 2023
645a914
Added content for database migrations
harshini-rangaswamy Nov 30, 2023
fbb194a
Updated content
harshini-rangaswamy Nov 30, 2023
38fd6b3
Fixed vale errors
harshini-rangaswamy Nov 30, 2023
70546cc
Added HA content
harshini-rangaswamy Dec 4, 2023
102952f
Connect with DF content
harshini-rangaswamy Dec 6, 2023
7c29830
Content for connecting with DF
harshini-rangaswamy Dec 6, 2023
151e90f
Fixed vale errors
harshini-rangaswamy Dec 6, 2023
57b8034
fixed vale errors
harshini-rangaswamy Dec 6, 2023
7f45227
Fixed more vale errors
harshini-rangaswamy Dec 7, 2023
8d6c18a
Removed broken link
harshini-rangaswamy Dec 7, 2023
ad6182b
fixed title
harshini-rangaswamy Dec 7, 2023
8c79ac4
Merge branch 'harshini-aiven-dragonfly' into harshini-connect-with-df
harshini-rangaswamy Dec 8, 2023
b6d3214
Addressed feedback
harshini-rangaswamy Dec 8, 2023
00385f4
fixed vale errors
harshini-rangaswamy Dec 8, 2023
9de2cd0
Merge pull request #2314 from aiven/harshini-redis-DF-migration
harshini-rangaswamy Dec 8, 2023
327366e
Merge branch 'harshini-aiven-dragonfly' into harshini-connect-with-df
harshini-rangaswamy Dec 8, 2023
9fb3517
Update _toc.yml
harshini-rangaswamy Dec 8, 2023
e562d25
Merge pull request #2334 from aiven/harshini-connect-with-df
harshini-rangaswamy Dec 8, 2023
dbe42f9
More updates to content, cross-links, landing page
harshini-rangaswamy Dec 8, 2023
2b434cc
Merge branch 'main' into harshini-aiven-dragonfly
harshini-rangaswamy Dec 8, 2023
07447e1
Updated intro text
harshini-rangaswamy Dec 8, 2023
b64d05b
Added note about LA and link to Dragonfly docs
harshini-rangaswamy Dec 11, 2023
4848bb7
Udpated dict file and advanced parameters
harshini-rangaswamy Dec 11, 2023
9cd8002
fixed typo
harshini-rangaswamy Dec 11, 2023
248c2c1
Update .github/vale/dicts/aiven.dic
harshini-rangaswamy Dec 11, 2023
fd1816e
Fixed more vale errors
harshini-rangaswamy Dec 11, 2023
719fd74
addressed review feedback
harshini-rangaswamy Dec 11, 2023
939ae30
Updated trademark for DF
harshini-rangaswamy Dec 11, 2023
74133f0
Removed referrence to Redis
harshini-rangaswamy Dec 12, 2023
3e277d2
Updated backupd features in HA topic table
harshini-rangaswamy Dec 12, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/vale/dicts/aiven.dic
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ Docker
dockerized
downsampled
downsampling
Dragonfly
DSBulk
DZone
Elasticsearch
Expand Down Expand Up @@ -208,6 +209,7 @@ rebalance
rebalances
rebalancing
Redis
Redis OSS
redis_timeout
Redli
refcard
Expand All @@ -228,6 +230,7 @@ Savepoints
savepoints
schemaless
scriptable
SDKs?
Security
serde
serializer
Expand Down
8 changes: 8 additions & 0 deletions .github/vale/styles/Aiven/first_Dragonfly_is_registered.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
extends: conditional
message: "At least one '%s' must be marked as ®"
level: error
scope: text
ignorecase: false

first: '\b(Dragonfly)(?!®)'
second: '(Dragonfly)(?:®)'
39 changes: 39 additions & 0 deletions .github/workflows/advanced-params-dragonfly.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Dragonfly - Create PR to Update Advanced parameters

on:
schedule:
- cron: "0 6 * * 2"
workflow_dispatch:

jobs:
advanced_params_dragonfly:
runs-on: ubuntu-latest
steps:
- name: Checkout the repo
uses: actions/checkout@v2

- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: "3.8"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt

- name: Dragonfly - Update Advanced parameters
run: make service-type-config-dragonfly

- name: Create Pull Request
uses: peter-evans/create-pull-request@v4
with:
commit-message: Dragonfly - Update Advanced parameters
committer: GitHub <[email protected]>
author: GitHub <[email protected]>
title: Dragonfly - Update Advanced parameters
body: Dragonfly - update advanced parameters file
base: main
branch: dragonfly-update-advanced-params
labels: dragonfly, automated-pr
delete-branch: true
38 changes: 38 additions & 0 deletions _toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -872,8 +872,46 @@ entries:
title: Formats for ClickHouse-Kafka data exchange
- file: docs/products/clickhouse/reference/advanced-params
title: Advanced parameters

# ---------Dragonfly --------------

- file: docs/products/dragonfly
title: Dragonfly
entries:
- file: docs/products/dragonfly/concepts/overview
title: Overview
- file: docs/products/dragonfly/get-started
title: Quickstart
- file: docs/products/dragonfly/concepts
title: Concepts
entries:
- file: docs/products/dragonfly/concepts/ha-dragonfly
- file: docs/products/dragonfly/howto
title: HowTo
entries:
- file: docs/products/dragonfly/howto/list-code-samples
title: Connect to service
entries:
- file: docs/products/dragonfly/howto/connect-redis-cli
- file: docs/products/dragonfly/howto/connect-go
- file: docs/products/dragonfly/howto/connect-node
- file: docs/products/dragonfly/howto/connect-python

- file: docs/products/dragonfly/howto/list-migrate-data
title: Data migration
entries:
- file: docs/products/dragonfly/howto/migrate-aiven-redis-df-console
title: Migrate Aiven for Redis
- file: docs/products/dragonfly/howto/migrate-ext-redis-df-console
title: Migrate external Redis






# -------- GRAFANA --------

- file: docs/products/grafana
title: Grafana
entries:
Expand Down
9 changes: 9 additions & 0 deletions conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,15 @@
:width: 24px
:class: no-scaled-link

.. |icon-dragonfly| image:: /images/icon-dragonfly.svg
:width: 24px
:class: no-scaled-link

.. |tick| image:: /images/icon-tick.png
:width: 24px
:class: no-scaled-link


.. |beta| replace:: :bdg-secondary:`beta`

.. |preview| replace:: :bdg-secondary:`preview`
Expand Down
35 changes: 35 additions & 0 deletions docs/products/dragonfly.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
Aiven for Dragonfly®

Check failure on line 1 in docs/products/dragonfly.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/products/dragonfly.rst#L1

[Aiven.capitalization_headings] 'Aiven for Dragonfly®' should be in sentence case
Raw output
{"message": "[Aiven.capitalization_headings] 'Aiven for Dragonfly®' should be in sentence case", "location": {"path": "docs/products/dragonfly.rst", "range": {"start": {"line": 1, "column": 1}}}, "severity": "ERROR"}
====================

Aiven for Dragonfly is an advanced, **high-scale, and Redis®* compatible in-memory database service** that can be easily deployed in your preferred cloud environment. It provides lightning-fast data storage and retrieval capabilities, making it ideal for businesses that handle large-scale data operations.

.. important::
Aiven for Dragonfly® is currently a :doc:`limited availability </docs/platform/concepts/beta_services>` service. If you are interested in exploring this offering, reach out to our sales team at [email protected] for more information and access.

-------------------------

.. grid:: 1 2 2 2

.. grid-item-card:: :doc:`Quickstart </docs/products/dragonfly/get-started>`
:shadow: md
:margin: 2 2 0 0

Set up your Aiven for Dragonfly service and learn how to connect to it.

.. grid-item-card:: :doc:`Overview </docs/products/dragonfly/concepts/overview>`
:shadow: md
:margin: 2 2 0 0

Explore the unique features and benefits of Aiven for Dragonfly.

.. grid-item-card:: :doc:`Concepts </docs/products/dragonfly/concepts>`
:shadow: md
:margin: 2 2 0 0

Understand the core concepts behind Aiven for Dragonfly's technology.

.. grid-item-card:: :doc:`How-Tos </docs/products/dragonfly/howto>`
:shadow: md
:margin: 2 2 0 0

Discover step-by-step instructions on how to use Aiven for Dragonfly and tips for various use cases.
6 changes: 6 additions & 0 deletions docs/products/dragonfly/concepts.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Concepts
========

Learn more about some of the key concepts for working with Aiven for Dragonfly®:

.. tableofcontents::
69 changes: 69 additions & 0 deletions docs/products/dragonfly/concepts/ha-dragonfly.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
High availability in Aiven for Dragonfly®
==========================================

Aiven for Dragonfly® offers different plans with varying levels of high availability. The available features depend on the selected plan. Refer to the table below for a summary of these plans:

.. list-table::
:header-rows: 1
:widths: 20 20 30 30 10

* - Plan
- Node Configuration
- High Availability & Failover Features
- Backup Features
- Backup History
* - **Startup**
- Single-node
- Limited availability. No automatic failover.
- Automatic backups to a remote location.
- 1 day
* - **Business**
- Two-node (primary + standby)
- High availability with automatic failover to a standby node if the primary fails.
- Automatic backups to a remote location.
- 3 days
* - **Premium**
- Three-node (primary + standby + standby)
- Enhanced high availability with automatic failover among multiple standby nodes if the primary fails.
- Automatic backups to a remote location.
- 13 days
* - **Custom**
- Custom configurations
- Custom high availability and failover features based on user requirements.
- Custom backup features based on user requirements.
- Custom based on user requirements



Failure handling
----------------

- **Minor failures**: Aiven automatically handles minor failures, such as service process crashes or temporary loss of network access, without any significant changes to the service deployment. In all plans, the service automatically restores regular operation by restarting crashed processes or restoring network access when available.
- **Severe failures**: In case of severe hardware or software problems, such as losing an entire node, more drastic recovery measures are required. Aiven's monitoring infrastructure automatically detects a failing node when it reports problems with its self-diagnostics or stops communicating altogether. The monitoring infrastructure then schedules the creation of a new replacement node.

.. note::

In case of database failover, your service's **Service URI** remains the same—only the IP address changes to point to the new primary node.

High availability for business, premium, and custom plans
------------------------------------------------------------

If a standby Dragonfly node fails, the primary node continues running. The system prepares the replacement standby node and synchronizes it with the primary for normal operations to resume.

In case the primary Dragonfly node fails, the standby node is evaluated for promotion to the new primary based on data from the Aiven monitoring infrastructure. Once promoted, this node starts serving clients, and a new node is scheduled to become the standby. However, during this transition, there may be a brief service interruption.

If the primary and standby nodes fail simultaneously, new nodes will be created automatically to replace them. However, this may lead to data loss as the primary node is restored from the latest backup. As a result, any database writes made since the last backup could be lost.

.. note::

The duration for replacing a failed node depends mainly on the **cloud region** and the **amount of data** to be restored. For Business, Premium, and Custom plans with multiple nodes, this process is automatic and requires no administrator intervention, but service interruptions may occur during the recreation of nodes.


Single-node startup service plans
----------------------------------------------

Losing the only node in the service triggers an automatic process of creating a new replacement node. The new node then restores its state from the latest available backup and resumes serving customers.

Since there was just a single node providing the service, the service will be unavailable for the duration of the restore operation. All the write operations made since the last backup are lost.


44 changes: 44 additions & 0 deletions docs/products/dragonfly/concepts/overview.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
Aiven for Dragonfly® overview

Check failure on line 1 in docs/products/dragonfly/concepts/overview.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/products/dragonfly/concepts/overview.rst#L1

[Aiven.capitalization_headings] 'Aiven for Dragonfly® overview' should be in sentence case
Raw output
{"message": "[Aiven.capitalization_headings] 'Aiven for Dragonfly® overview' should be in sentence case", "location": {"path": "docs/products/dragonfly/concepts/overview.rst", "range": {"start": {"line": 1, "column": 1}}}, "severity": "ERROR"}
================================

Aiven for Dragonfly is an advanced, **high-scale, and Redis®* compatible in-memory database service** that can be easily deployed in your preferred cloud environment. It provides lightning-fast data storage and retrieval capabilities, making it ideal for businesses that handle large-scale data operations.

.. important::
Aiven for Dragonfly® is currently a :doc:`limited availability </docs/platform/concepts/beta_services>` service. If you are interested in exploring this offering, reach out to our sales team at [email protected] for more information and access.

Why Dragonfly?

Check failure on line 9 in docs/products/dragonfly/concepts/overview.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/products/dragonfly/concepts/overview.rst#L9

[Aiven.capitalization_headings] 'Why Dragonfly?' should be in sentence case
Raw output
{"message": "[Aiven.capitalization_headings] 'Why Dragonfly?' should be in sentence case", "location": {"path": "docs/products/dragonfly/concepts/overview.rst", "range": {"start": {"line": 9, "column": 1}}}, "severity": "ERROR"}
--------------

Dragonfly is designed to overcome the limitations of Redis Open Source Software (Redis OSS), especially under high-load conditions. While renowned for its speed and adaptability as an in-memory data repository, Redis encounters limitations when handling large-scale data management and achieving high throughput. Dragonfly addresses these challenges by enabling vertical scaling, optimizing hardware resources, and supporting larger memory footprints.

With Aiven for Dragonfly, businesses can handle workloads exceeding 1TB with more than 10 times the throughput performance of Redis OSS, along with reduced latency. This makes it an ideal solution for enterprises with growing data needs.


Features and benefits
---------------------

Aiven for Dragonfly offers numerous features and benefits:

* **Redis compatibility at scale:** It is a seamless drop-in replacement for Redis, capable of handling extensive workloads with enhanced performance.

* **Optimized for large-scale operations:** Dragonfly is specifically built to address the scalability and resource utilization limitations of Redis Open Source Software (Redis OSS).

* **Advanced performance:** Dragonfly's unique threading model and shared-nothing architecture allow it to scale vertically, enhancing its performance efficiency, especially in environments with heavy data loads.


* **Efficient backup and memory management:** Improved snapshot capabilities lead to more efficient memory usage during backups.

* **High availability and replication:** It includes active-passive replication and persistence capabilities, ensuring data reliability and consistency.

* **Ease of integration:** Dragonfly integrates smoothly with existing systems, requiring no code changes, simplifying the adoption process.

Use cases
---------------------

* **Data-intensive enterprises:** Ideal for businesses that necessitate robust, high-performance in-memory data storage and processing capabilities.

* **Scaling and performance needs:** Perfectly suited for situations where the need for greater scalability and higher throughput goes beyond what Redis OSS can handle.

Related reading
----------------
* For detailed information about Dragonfly, refer to `Dragonfly documentation <https://www.dragonflydb.io/docs>`_.
59 changes: 59 additions & 0 deletions docs/products/dragonfly/get-started.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
Get started with Aiven for Dragonfly®
=======================================

The first step in using Aiven for Dragonfly is to create a service. You can do so either using the `Aiven Console <https://console.aiven.io/>`_ or the `Aiven CLI <https://github.com/aiven/aiven-client>`_.

.. important::
Aiven for Dragonfly® is currently a :doc:`limited availability </docs/platform/concepts/beta_services>` service. If you are interested in exploring this offering, reach out to our sales team at [email protected] for more information and access.

Create a service using the Aiven Console
----------------------------------------------
1. Log in to the `Aiven Console <https://console.aiven.io/>`_.

2. Follow :doc:`these instructions </docs/platform/howto/create_new_service>` to create a new Dragonfly service.

Once the service is ready, the status changes to *Running*. Depending on your selected cloud provider and region, this generally takes a couple of minutes.


Create a service using the Aiven CLI
------------------------------------------------

`Aiven CLI <https://github.com/aiven/aiven-client>`_ provides a simple and efficient way to create an Aiven for Dragonfly® service. If you prefer launching a new service from the CLI, follow these steps:

1. Determine the service plan, cloud provider, and region you want to use for your Dragonfly service.
2. Run the following command to create Dragonfly service named dragonfly-demo:

.. code::

avn service create dragonfly-demo \
--service-type dragonfly \
--cloud google-europe-north1 \
--plan startup-4 \
--project dev-sandbox

.. note::
There are additional options available to you, which you can view by running the following commands:

* For a full list of default flags: ``avn service create -h``
* For type-specific options: ``avn service types -v``


Connect to Aiven for Dragonfly
-------------------------------

Learn how to connect to Aiven for Dragonfly using different programming languages:

* :doc:`redis-cli </docs/products/dragonfly/howto/connect-redis-cli>`

Check failure on line 46 in docs/products/dragonfly/get-started.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/products/dragonfly/get-started.rst#L46

[Aiven.common_replacements] Use 'Redis' instead of 'redis'.
Raw output
{"message": "[Aiven.common_replacements] Use 'Redis' instead of 'redis'.", "location": {"path": "docs/products/dragonfly/get-started.rst", "range": {"start": {"line": 46, "column": 9}}}, "severity": "ERROR"}

Check failure on line 46 in docs/products/dragonfly/get-started.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/products/dragonfly/get-started.rst#L46

[Aiven.common_replacements] Use 'Redis' instead of 'redis'.
Raw output
{"message": "[Aiven.common_replacements] Use 'Redis' instead of 'redis'.", "location": {"path": "docs/products/dragonfly/get-started.rst", "range": {"start": {"line": 46, "column": 59}}}, "severity": "ERROR"}
* :doc:`Go </docs/products/dragonfly/howto/connect-go>`
* :doc:`Node </docs/products/dragonfly/howto/connect-node>`
* :doc:`Python </docs/products/dragonfly/howto/connect-python>`


Explore other resources
------------------------

harshini-rangaswamy marked this conversation as resolved.
Show resolved Hide resolved
* Learn about how Aiven for Dragonfly supports :doc:`high availability </docs/products/dragonfly/concepts/ha-dragonfly>`.
* Migrate data from :doc:`Aiven for Redis®* to Aiven for Dragonfly </docs/products/dragonfly/howto/migrate-aiven-redis-df-console>`.

Check failure on line 56 in docs/products/dragonfly/get-started.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/products/dragonfly/get-started.rst#L56

[Aiven.common_replacements] Use 'Aiven' instead of 'aiven'.
Raw output
{"message": "[Aiven.common_replacements] Use 'Aiven' instead of 'aiven'.", "location": {"path": "docs/products/dragonfly/get-started.rst", "range": {"start": {"line": 56, "column": 108}}}, "severity": "ERROR"}

Check failure on line 56 in docs/products/dragonfly/get-started.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/products/dragonfly/get-started.rst#L56

[Aiven.common_replacements] Use 'Redis' instead of 'redis'.
Raw output
{"message": "[Aiven.common_replacements] Use 'Redis' instead of 'redis'.", "location": {"path": "docs/products/dragonfly/get-started.rst", "range": {"start": {"line": 56, "column": 114}}}, "severity": "ERROR"}
* Migrate data from :doc:`external Dragonfly to Aiven for Dragonfly </docs/products/dragonfly/howto/migrate-ext-redis-df-console>`.

Check failure on line 57 in docs/products/dragonfly/get-started.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/products/dragonfly/get-started.rst#L57

[Aiven.common_replacements] Use 'Redis' instead of 'redis'.
Raw output
{"message": "[Aiven.common_replacements] Use 'Redis' instead of 'redis'.", "location": {"path": "docs/products/dragonfly/get-started.rst", "range": {"start": {"line": 57, "column": 113}}}, "severity": "ERROR"}


7 changes: 7 additions & 0 deletions docs/products/dragonfly/howto.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
HowTo
=====

Check out the common tasks for working with Aiven for Dragonfly®:

.. tableofcontents::

Loading
Loading