【入門編】 データ配置ポリシーの内部実装 – Cloud Spanner

こんにちは!クラウドの世界へようこそ。
今回は、世界中の巨大なシステムを裏から支える怪物級データベース「Cloud Spanner(クラウド スパナ)」について、その核心である「データの置き場所とスピードの秘密」を一緒に紐解いていきましょう。

「なんだか難しそう……」なんて身構えなくて大丈夫です。
ここをしっかりとクリアすれば、Cloud Spannerの基本はバッチリマスターできますよ!ぜひ最後までお付き合いくださいね。

—

レストランの「キッチン」で例えてみるデータ配置

いきなりですが、あなたが大人気ハンバーガーチェーンの店長になったと想像してください。

お客さんは世界中にいます。アメリカ、ヨーロッパ、そして日本。
もし、すべてのハンバーガーを日本の本店(ひとつの巨大な厨房)だけで作って世界中に届けていたらどうなるでしょうか?

  • 日本のお客さん:「注文してすぐにアツアツが届いた!(最高!)」
  • アメリカのお客さん:「注文してから届くまでに何日もかかって冷え冷え……(最悪!)」

これでは世界中のお客さんを満足させることはできませんよね。
そこであなたは考えます。「そうだ、世界中の主要な都市にミニ厨房(分店)を作って、それぞれの場所でハンバーガーをすぐに出せるようにしよう!」と。

Cloud Spannerのマルチリージョン構成(データの配置ポリシー)も、まさにこれと同じことをやっているんです。

—

Cloud Spannerの裏側:データはどこにいる?

Cloud Spannerは、世界中に散らばるサーバーをあたかも「1つの巨大なデータベース」として動かす魔法のような仕組みを持っています。

普通のデータベースだと、「データをどこに置くか」を人間が必死に考えて設定しなければなりませんでした。でも、Spannerは違います。Googleの超絶すごいネットワークとAIのような頭脳が、「今、世界中のどこからアクセスが多いか」を判断して、データを最適な場所に自動でコピーして配置してくれます。

例えば、「東京リージョン」と「アメリカのリージョン」の両方を使う設定(マルチリージョン)にした場合、こんなことが起きています。

1. 近くのサーバーが答えてくれる
日本のユーザーがデータを読み書きするときは、日本(またはその周辺)にあるサーバーがシュッと対応します。だから、光の速さに近いスピード(超低レイテンシ)で動くんです。

2. 地球の裏側で何かが起きても大丈夫(耐障害性)
たとえ日本のサーバーが置かれているエリアで大きな自然災害が起きたとしても、アメリカや別の場所にある「コピー(レプリカ)」が即座にバトンを受け取ります。「お店が全焼したから営業停止です」なんてことは絶対に起きません。

—

「読み取り」と「書き込み」のドラマ

ここで、ちょっと面白い秘密を教えましょう。
データの世界では、「読むこと(参照)」と「書くこと(更新)」で、スピードの出し方がちょっと違います。

  • 読み取りは「どこでもドア」

データを見るだけなら、あなたの目の前(一番近い場所)にあるコピーを見ればいいので、爆速です。

  • 書き込みは「全員の合意」が必要

「お金の残高が変わった」「商品の在庫が減った」という大事な書き込みのときは、世界中に散らばるリーダーたちで「今からこのデータを変えるよ!異議なし?」という会議を開く必要があります。

「えっ、世界中で会議をしたら時間がかかるのでは?」と思いますよね。
そこがGoogleのエンジニアたちの天才的なところです。「TrueTime(トゥルータイム)」という、原子時計とGPSを使った超高精度な時間合わせの技術を使い、世界中のサーバーの時間をピタッと同期させています。これにより、地球の裏側とのやり取りであっても、最短ルートで安全に素早く書き込みを完了させることができるのです。

—

実務でどう使う?簡単なイメージを覗き見

実際にCloud Spannerを使うとき、私たちは「このデータをどのエリアのグループに置きますか?」というルール(配置ポリシー)を選びます。

例えば、コード(設定のイメージ)を書くときはこんな雰囲気です。

— 【イメージ】日本とアメリカの両方で超高速にデータを安全に扱いたいときの雰囲気
— 実際にはGoogle Cloudのコンソール画面やTerraformというツールでポチポチッと設定します。

CREATE DATABASE global_shop_db
— データの置き場所(マルチリージョン)を指定するイメージ
— 「アジア」と「アメリカ」のユーザーどちらも待たせない最強の配置にします
;

※実際の構文はもう少しシンプルですが、頭の中では「世界地図を広げて、どこに金庫を置くか決める感覚」で設定しています。

初心者の方であれば、まずは「東京と大阪」のような国内の複数拠点(デュアルリージョン)から始めてみるのがおすすめです。これだけでも、片方のデータセンターが止まるような大事故に耐えられる、ものすごく堅牢なシステムが完成します。

—

まとめ:ここをクリアすれば怖くない!

今回は、Cloud Spannerのデータ配置ポリシーと分散原理について、日常の例えを交えてお話ししました。

  • データは世界中の「一番いい場所」に賢く配置される
  • ユーザーの近くのサーバーが答えてくれるから、とにかく速い
  • 万が一の災害が起きても、別の場所のコピーが守ってくれる

Cloud Spannerは、一見すると難解な分散システムの塊ですが、その本質は「世界中のお客さんを誰ひとり待たせず、絶対にデータを失わないおもてなしの心」で動いています。

ここを理解できれば、Spannerを使うときのワクワク感が何倍にも膨らむはずです。
ぜひ、あなたの次のプロジェクトでもこの「世界を股にかけるデータベース」を体感してみてくださいね。それではまた!

コメント

タイトルとURLをコピーしました