コンテンツにスキップ

5. データベースとアドオン

多くのアプリケーションは、Dyno上でコードを動かすだけでは完結しません。データベース、キャッシュ、メール配信、モニタリングなど、他にも多くのサービスが必要になります。Build.ioのアドオンエコシステムAddons.ioでは、アプリケーションと直接連携するマネージドサービスをワンクリックで利用できます。

この章では、Addons.ioのデータベース系アドオンと、マーケットプレイスでアドオンを探してプロビジョニングし、管理する手順を説明します。

Build.ioは、フルマネージドのリレーショナルデータベースを自社開発のアドオンとして提供しています。PostgreSQLはSchemaToGo、MySQLはAveToGoです。プロビジョニング、パッチ適用、バックアップ、フェイルオーバーといった本番データベースの運用作業は、どちらのアドオンでもBuild.ioが担います。そのため、アプリケーションの実装に専念できます。

SchemaToGoは、フルマネージドのPostgreSQLインスタンスを提供します。各データベースは、本番運用を想定したデフォルト設定、暗号化された接続、日次の自動バックアップを備えた状態で作成されます。

SchemaToGoのデータベースは、ダッシュボードからプロビジョニングします。アプリのResourcesタブを開き、AddonsセクションのAdd an addonをクリックします:

表示されたアドオンの一覧から、PostgreSQLアドオンであるSchemaToGoを選択します:

次のページには、利用できるSchemaToGoのプランが一覧表示されます。プランは、開発・ステージング向けの共有インスタンスから、本番ワークロード向けにリソースを設定できる専用インスタンスまであります。暗号化された接続、自動バックアップ、標準のPostgreSQL拡張機能は、どのプランでも利用できます。用途に合ったプランを選択してください:

プロビジョニングの内容は、必要に応じて調整します。推奨設定のままで進めることもできます。どちらの場合も、最後にAdd this Addonをクリックします:

SchemaToGoのデータベースをプロビジョニングすると、アプリに環境変数として渡される設定値(Config Var)にDATABASE_URLが自動で追加されます。Rails、Django、Expressなど、多くのフレームワークはこの環境変数を検出し、接続設定を自動で構成します。接続設定を手動で記述する必要はありません。

MySQL版のアドオンがAveToGoです。マネージドのMySQLインスタンスを、SchemaToGoと同じ運用モデルで利用できます。プロビジョニングの手順も変わりません。アドオンをアタッチすれば、DATABASE_URLが自動で設定されます。

どちらも本番運用に対応した選択肢です。アプリケーションとチームがすでに使用している製品に合わせて選択してください。新しく始める場合、特に希望がなければPostgreSQLを選ぶのが一般的です。Build.ioでの採用例が多く、標準で利用できる機能の範囲も広い傾向があります。

Redisは、CacheToGoというマネージドアドオンとして利用できます。プロビジョニングは、Addons.ioマーケットプレイスからでも、Build.ioのダッシュボードから直接でも行えます。マネージドのRedisインスタンスを追加すると、アプリケーションから高速なインメモリストレージを利用できます。用途は、キャッシュ、セッション管理、バックグラウンドジョブのキュー、Pub/Subのようなリアルタイム機能などです。

キャッシュ — 頻繁にアクセスするデータをRedisに保持します。対象になるのは、データベースのクエリ結果、レンダリング済みのフラグメント、APIレスポンスなどです。これにより、プライマリデータベースの負荷が下がり、レスポンスタイムも短縮されます。

セッションストレージ — セッションのバックエンドにRedisを使用すると、複数のDynoでセッションを共有し、高速にアクセスできます。ファイルベースのセッションはインスタンス間で共有されないため、Web Dynoを2つ以上稼働させる場合は必須の構成です。

バックグラウンドジョブ — Sidekiq(Ruby)、Celery(Python)、BullMQ(Node.js)といったライブラリは、Redisをジョブブローカーとして使用します。ワーカーはRedisのキューからジョブを取得し、Web Dynoとは独立して処理します。

リアルタイム機能 — RedisのPub/Subを使うと、ライブ通知やチャットのような機能を実装できます。Action Cable(Rails)やSocket.IO(Node.js)を使用する場合は、Dynoインスタンス間のメッセージブローカーの役割をRedisが担います。

CacheToGoのRedisインスタンスは、ダッシュボードからプロビジョニングします。アプリのResourcesタブを開き、AddonsセクションのAdd an addonをクリックします:

表示されたアドオンの一覧から、RedisアドオンであるCacheToGoを選択します:

次のページには、利用できるCacheToGoのプランが一覧表示されます。用途に合ったプランを選択してください:

プロビジョニングの内容は、必要に応じて調整します。推奨設定のままで進めることもできます。どちらの場合も、最後にAdd this Addonをクリックします:

5.3 アドオンマーケットプレイス

Section titled “5.3 アドオンマーケットプレイス”

Addons.ioは、サードパーティおよびファーストパーティのマネージドサービスを扱うBuild.ioのマーケットプレイスです。アプリケーションが依存するサービスを、1か所で検索し、プロビジョニングし、管理できます。対象はデータベース、キャッシュ、モニタリング、ロギング、メール、検索などです。

利用できるアドオンは、ダッシュボードで任意のアプリのResourcesタブを開くと閲覧できます。Addons.ioに直接アクセスすることもできます。各アドオンのページには、説明、利用できるプランと価格、導入手順のドキュメントが掲載されています。

アドオンはいずれも同じ統合パターンに従います。

  1. アドオンをプロビジョニングし、アプリにアタッチします。
  2. アドオンプロバイダーがリソース(データベース、モニタリングエージェント、メールサービスのアカウントなど)を作成します。
  3. コードが必要とする認証情報や接続情報が、1つ以上のConfig Varとしてアプリに設定されます。
  4. アプリが再起動し、新しいConfig Varが利用可能になります。

この仕組みでは、サービスの認証情報をコードに直接書き込む必要がありません。プロバイダーを変更した場合やプランをアップグレードした場合も、Config Varが更新されます。アプリは次回の再起動で新しい値を読み込みます。

多くのアドオンには複数のプランがあります。開発用途に適した無料プランから、専用リソース、より高い上限、SLA保証を備えた本番向けプランまで用意されています。プランはいつでも変更でき、アップグレードもダウングレードも即時に反映されます。

5.4 プロビジョニング済みアドオンとバックアップの管理

Section titled “5.4 プロビジョニング済みアドオンとバックアップの管理”

プロビジョニング済みのアドオンは、いずれも詳細ページでOpen Dashboardをクリックして管理できます:

アドオンダッシュボードには、アドオンの状態を示す情報と各種の設定項目がまとまっています。アドオンをカスタマイズする際の起点となる画面です:

ページを下にスクロールすると、このアドオンの取得済みバックアップが一覧表示されます。一覧からバックアップをダウンロードするか、その場で臨時のバックアップを作成できます。Build.ioのマネージドデータベースは自動バックアップを備えています。取得したバックアップは、データ損失からの復旧、問題のあるマイグレーションのロールバック、本番データをステージングアプリへクローンする作業に利用できます:

ページの最下部には、高度なカスタマイズ項目が多数用意されています。パフォーマンスやセキュリティを詳細に調整する場合は、ここで設定します: