Aiven和Qovery提供端到端的托管开发流程

使用Aiven和Qovery进行端到端的托管开发流程。

2033年3月30日

Aiven和Qovery提供全面管控的开发流程。

让我们使用 Aiven 和 Qovery,在一个可重现且安全的方式下部署环境!

你好!我是Qovery的Romaric。很高兴能与Aiven的 Blanc合作撰写这篇文章并为您带来。本文将介绍Aiven for PostgreSQL®和Qovery如何协作,以及如何在AWS上提高应用程序开发和部署的效率。但在深入了解之前,让我们先详细了解一下Aiven和Qovery。

Aiven和Qovery

Aiven和Qovery是两个强大的工具,通过它们的联合使用,为现代应用程序开发提供了最佳解决方案。Aiven提供了快速简便地启动开源数据基础设施,如PostgreSQL®,Redis®和Apache Kafka®的方法,而Qovery则提供了开发者能够轻松部署、管理和扩展应用程序的平台。

要开发最新的应用程序,需要一个高速,可靠且易于管理的数据库。因此,Aiven for PostgreSQL®应运而生。Aiven提供完全托管的云数据库服务,可以在几分钟内进行设置和配置。通过使用Aiven,您可以使用专为满足您需求而设计的全面托管的PostgreSQL数据库,同时确保高可用性、数据安全性和数据安全保护。

Qovery是一种提供开发者最新平台,用于部署和管理应用程序的方式。使用Qovery,开发者可以轻松创建多个环境,并在部署到生产环境之前进行应用程序的测试和预览。此外,Qovery还可以方便地将外部服务,如Aiven for PostgreSQL,集成到应用程序中。

通过组合Aiven和Qovery,可以实现强大的解决方案,用于最新的应用程序开发。开发者可以轻松启动Aiven for PostgreSQL实例,并将其与Qovery应用程序集成。有了Aiven和Qovery,开发者可以专注于构建出色的应用程序,而无需担心基础设施。

现在我们已经讨论了Aiven和Qovery的优点,让我们详细了解一下它们是如何协作以进一步提高应用程序开发效率的。

Aiven和Qovery的集成方法

为了验证Aiven和Qovery的整合,我们将使用一个用Java编写的示例应用程序。该应用程序是一个简单的ToDo列表,并将Qovery和Aiven for PostgreSQL®作为后端数据库部署在AWS上。

假设您已经在Qovery和Aiven上有一定的使用经验,如果您需要帮助开始使用,请务必查看Qovery和Aiven的文档。

要开始使用,需要同时拥有 Aiven 和 Qovery 的账户。如果您没有 Aiven 账户,请注册免费试用。Qovery 也有出色的免费计划可供选择。

将Aiven与Qovery集成,可以使用Qovery的生命周期作业功能。生命周期作业是在特定环境生命周期的特定时间点执行的脚本,如部署前或关闭后。使用生命周期作业,可以自动创建和配置Aiven Postgres实例,并在应用程序启动时可用。

Qoveryがアプリの環境を管理していることを示す図。アプリはAWS上でホストされている

在上面的图中,有三个主要的组件:Qovery、Aiven和AWS账号。Qovery的重要性在于将容器化的应用程序部署在AWS账号上,而不是在其他托管平台上(请阅读创建AWS账号的方法)。而Aiven则使用自己的AWS账号来提供PostgreSQL实例的部署和管理。

在Qovery环境中,定义了两个服务。Aiven for PostgreSQL的实例通过Terraform脚本来定义,ToDo应用程序通过Docker文件来定义。这些服务都来自GitHub存储库,并且Qovery可以按照正确的顺序构建和执行它们。首先部署Aiven for PostgreSQL服务,然后部署ToDo应用程序服务。

在 Qovery 的网页界面上,看起来是这样的:

Qoveryウェブ・インターフェースのスクリーンショット

这是我们的 Terraform 脚本:

#main.tf

terraform {
  required_providers {
    aiven = {
      source  = "aiven/aiven"
      version = "~> 3.9.0"
    }
  }

  backend "s3" {}
}

provider "aiven" {
  api_token = var.aiven_api_token
}

resource "aiven_pg" "pg_instance" {
  project                 = var.aiven_project_name
  cloud_name              = "aws-us-east-2"
  plan                    = "startup-4"
  # make the service name unique by adding a suffix based on the first digit of the Qovery environment ID
  service_name            = "pg-${split("-", var.qovery_environment_id)[0]}"
  maintenance_window_dow  = "monday"
  maintenance_window_time = "10:00:00"
}

resource "aiven_pg_database" "pg_database" {
  database_name = var.aiven_database_name
  project       = var.aiven_project_name
  service_name  = aiven_pg.pg_instance.service_name
} 

我相信你会发现,这是一个使用Aiven Provider模块的纯净Terraform脚本,非常漂亮和容易使用。

也许在这一点上,你可能会怀疑如何将ToDo应用程序连接到Aiven for PostgreSQL。如果你熟悉Terraform,你会知道只有在执行清单后才能知道某些变量。而Qovery会立即支持Terraform的输出值。

这是我们的输出:

output "postgres_host" {
  description = "The Aiven PG connection host"
  value       = aiven_pg.pg_instance.service_host
}

output "postgres_port" {
  description = "The Aiven PG connection port"
  value       = tostring(aiven_pg.pg_instance.service_port)
}

output "postgres_user" {
  description = "The Aiven PG username"
  value       = aiven_pg.pg_instance.service_username
}

output "postgres_db_name" {
  description = "The Aiven PG database name"
  value       = aiven_pg_database.pg_database.database_name
}

output "postgres_password" {
  description = "The Aiven PG password"
  value       = aiven_pg.pg_instance.service_password
  sensitive   = true
}

Qovery可以将这些值作为环境变量注入到ToDo应用程序中。

Qoveryによって管理される新しいセットアップを示す図

没有魔法!它简单而有效,非常好。

マネージド・サービスを表示するQoveryのアップデートされたUIのスクリーンショット

当查看Aiven的Web控制台时,可以看到PostgreSQL数据库也正常运行。

PostgreSQLインスタンスが稼働しているAivenのコンソールのスクリーンショット

Aiven和Qovery实现了多环境功能。

使用Qovery,您可以轻松创建多个环境,并避免共享暂存环境所带来的问题。在传统的开发环境中,开发人员可能需要共享一个暂存环境。如果环境损坏或无法使用,将影响所有开发人员,并使整个开发流程变慢。

ステージングが壊れると、すべての開発者が自分の仕事にアクセスできなくなることを示す図

Qovery 提供了一种创建多个按需分阶段环境的高效方法来解决这个问题。每个开发者都可以拥有一个独立的分阶段环境,该环境是生产环境的副本。这使得开发者能够在一个独立且安全的环境中进行代码测试。

Qoveryが開発者ごとにステージング環境をスピンアップし、チーム内のすべての開発者をブロックしない方法を示す図

Qovery的能力不仅仅限于这个。当创建环境的克隆时,其中包含的所有服务也会被复制。也就是说,Aiven for PostgreSQL实例也会被复制,并且原始实例中的所有数据可以在复制的实例中使用。这样,克隆的环境将具有与原始环境相同的数据,并且可以轻松地在没有对生产环境造成影响的情况下进行更改测试。

关于数据的部分,您有什么需要吗?根据需要,可以进行数据的克隆。Aiven将为您提供一切所需,使此过程变得简单易行。

得出的結論

通过结合Aiven和Qovery的使用,可以加快开发工作流程并轻松创建预览环境。通过利用Qovery的生命周期作业和多个环境,开发者可以加快开发周期,并享受到解决传统的中间工作站问题的优化体验。

此外,Aiven for PostgreSQL与Qovery的集成易用性展示了构建真正强大高效的开发环境的最佳解决方案组合的威力。同时,正如我们之前所看到的,这种组合非常灵活,可以根据每个团队独特的需求进行调整。

希望这篇文章能够为Aiven和Qovery的合作提供有益的概述。我们希望继续与Sebastien先生和Aiven团队合作,探索与Apache Kafka的集成以及其他用例。

请期待下一次的合作!

请继续阅读

    • この記事のGitHubリポジトリ

 

    TODOアプリのGitHubリポジトリ