書き込みのスケールアウトとPostgreSQL互換によって暗号通貨を再構築したMidoin

Arisa Izuno
The Distributed SQL Blog
Dec 10, 2023

本記事は、The Distributed SQL Blog にて2023年11月7日に公開された “Midoin Reshapes Crypto with Horizontal Write Scalability and PostgreSQL Compatibility” を翻訳および一部訳注を追加しております。最新情報は英語版の記事を参照してください。

Midoinは、アクセシビリティと持続可能性に焦点を当て、デジタル通貨のあり方を再構築しています。彼らの主力製品であるMidoinアプリによって、ユーザーはスマートフォンをタップするだけでMidoinを「採掘」できるようになります。Midoinはブロックチェーン技術に基づいていないため、従来の暗号通貨に比べ環境に優しい選択肢となります。

新しいデジタル通貨プラットフォームを通じて、Midoinは以下をユーザーに提供することを目標にしています:

  • 低い手数料:費用対効果の高い支払送受信方法の提供
  • 迅速な取引:迅速な取引処理(通常数秒以内)
  • セキュリティ:PoRコンセンサス、マルチシグネチャウォレット、コールドストレージなどによって、ユーザーの資金を保護

Midoinは、彼らのビジネスをサポートし、会社の成長に合わせてユーザーに価値を提供するために、パフォーマンス、セキュリティ、スケールを犠牲にせずに管理しやすいデータベースソリューションを必要としていました。彼らは、当社のフルマネージドDBaaSソリューションであるYugabyteDB Managedを選択しました。

水平スケーラブルなPostgreSQL互換データベースの技術要件

Midoinの開発チームは、HerokuにデプロイされたレガシーPostgreSQLソリューションで、書き込みのスケールの問題に頻繁に直面していました。彼らは、最小限の運用オーバーヘッドで管理できる書き込みがスケールするPostgreSQL互換データベースを必要としていました。小規模なITチームはアプリケーション開発に集中する必要があり、初期のスタートアップにとって経費の管理は非常に重要でした。

MidoinがPostgreSQLに代わるデータベースを選択する際に指針としたのは、以下の要件でした:

  • デプロイメント:単一リージョン、単一アベイラビリティゾーン(AZ
  • 主なデータベース要件:使用量と秒あたりの書き込み量が突然急増した場合に対応できる水平方向の書き込みスケーラビリティ。ピーク時のイベントや使用量の急激な増加に対応するため、必要に応じて簡単にスケールアウト(およびスケールダウン)できる方法が必要。
  • 使用クラウド:AWS
  • ワークロードの特徴:読み込みと書き込みのレイテンシが20ms未満を必要とする書き込みの多いワークロード
  • スループット:1日あたり最大80億オペレーション
  • APIインターフェース:YSQL(PostgreSQL互換API)
  • 追加のデータベース要件
    PostgreSQLとの互換性
    高い可用性
    運用オーバーヘッドを最小限に抑えたホスティング・ソリューション

高可用性を備えた最新のPostgreSQLへの移行

上記の要件に基づき、Midoinは当社のフルマネージドDBaaS(Database-as-a-Service)であるYugabyteDB Managedを導入し、レガシーのシングルノードPostgreSQLからアプリケーションを移行することを選択しました。

Midoinの環境は、単一のリージョンと単一のアベイラビリティゾーンに配置されていました。新しいマルチノードクラスタは、データを確実に保護し、ノードが故障しても顧客に影響を与えないようにすることで、可用性を向上させました。この更新されたアーキテクチャーは、Midoinがさらなるゾーンやリージョンに拡張するためのスケーラブルな展開方法を提供し、あらゆる成長需要に対応できる高い可用性を保証します。

以下は、新しいアーキテクチャに不可欠なYugabyteDB Managedの3つの主要機能です。

1. 水平方向の書き込みスケーラビリティ

以前の環境では、開発チームはリードレプリカによってオリジナルのPostgreSQLデータベース(Heroku上)を何とかスケールさせることができていました。しかし、ユーザー数が増加するにつれ、PostgreSQL環境を水平方向にスケールすることができなくなりました。Herokuでは、1秒あたりのデータベース書き込みが急増するたびに、最大ノード数での垂直スケールの壁にぶつかっていました。

YugabyteDB Managedを使用することで、Midoinは突然の需要の急増に対応し、ピーク時のイベントをカバーするために、必要に応じてスケールアウトすることができました。水平スケーリングに関しては、ノードを1台単位でスケールすることができます。

YugabyteDBでは、データはタブレットに分割(シャード)され、これらの複数のタブレットはクラスタ内のノードにまたがって配置されます。ノードが追加されると、いくつかのタブレットは自動的に新しいノードに移動し、クラスタが常に均衡を保つようにします。

タブレットは、新しく追加されたリソースを使用するために(必要に応じて)動的に分割することができるため、各ノードが管理するタブレットの数は少なくなります。その結果、Midoinのクラスタ全体がより多くのトランザクションとクエリを並行して処理できるようになり、大規模ワークロードの処理能力が向上しました。

2. 単一ゾーンでの高可用性

Midoinによる最初のYugabyteDBのセットアップでは、単一リージョン、単一ゾーンのデプロイメントが採用されました。彼らはデータ保護を強化するために、シングルノードのPostgreSQLから、より回復性の高い4ノードのクラウドクラスターにアップグレードしました。

この4ノードクラスタで、Midoinはレプリケーション係数3(RF3)を選択しました。この環境では、1台のノードに障害が発生してもYugabyteDBは読み取りと書き込みを実行し続けることができます。将来的には、クラウドのアベイラビリティ・ゾーンの停止に対する保護を確保するために、ゾーンをまたいで簡単に拡張することができます。

ノード障害に耐える単一リージョン、単一ゾーンの構成

3. ランタイムレベルのPostgreSQL互換性

Midoinは、標準のPostgreSQLをベースに開発された既存のアプリケーションを持っていました。YugabyteDBはPostgreSQLとの強力なランタイム互換性を提供するため、Midoinは再設計することなく既存のアプリケーションを移行することができました。APIレイヤーはそのままで、YugabyteDBの新しいストレージレイヤーが自動シャーディングとデータ分散を提供し、スケーリングと可用性の要件を満たしました。

まとめ

Midoinのような経験は、急成長している小規模な企業ではよくあることです。彼らは、PostgreSQLの強力な機能を活用しながらも、すぐに単一のノードやゾーン、リージョンを超えてスケールする必要性に直面します。

Midoinは、複雑なソリューションに投資したり、データベースの専門家を追加で雇うのではなく、彼らの厳しい要件を満たし、強力な展開の柔軟性を提供するフルマネージドDBaaSソリューションを見つけました。YugabyteDBのPostgreSQLとの強力な互換性により、移行が容易に行えるため、Midoinはデータベース操作ではなく、新しいコアアプリ機能の開発に集中することができました。

YugabyteDB ManagedおよびMidoinが活用した機能については、以下のリソースを参照してください:

  1. 毎週木曜日のデモに参加して、ジオ・パーティショニングの実例をご覧ください。
  2. YugabyteDB Managedのフル機能が使用できる無料トライアルにサインアップして、ジオ・パーティショニングをお試しください。
  3. YugabyteDBを使用したグローバル・アプリケーションの構築方法については、ドキュメントおよびブログをご覧ください。

--

--