Spannerを解説したら講義になった話

はじめに

Qiitaにこんな記事が上がりました
2020年現在のNewSQLについて - Qiita

NewSQLについてアーキテクチャから詳しくまとまっていて
理解しやすい素晴らしい記事だと思います。

社内のSlackでも共有したのですが、
この辺の話は
古くからあるモノリシックなRDBMSが生まれて
スケールアップの限界との戦い
データベースをどうスケールアウトするかの時代が訪れて、
分散コンピューティングの問題にぶち当たる
という、
『歴史を理解してはじめてCloud Spannerの凄さを理解できる』
と思ったので
もっと補足説明がいるんじゃないかと思い、社内でLTしました。

また、自分はDataBase周りの知識が弱いと思っているので、
補強のためにもまとめてLTを…とおもったら、
前後編で2回に分けて30分語るという発表だったので、
もう講義じゃんって言われたし思いました。

What is NewSQL

内容:DataBaseの歴史と分散コンピューティング

資料

解説

本当はCloud Spannerすごいぜイエーイで終わりたかったんですが、
それじゃ絶対伝わらないと思ったのでRDBMSとは何かから説明しました。
というのも、LT会の参加メンバーには新卒の社員や、体系的にCSを学んでいないメンバーもいるためです。
そういったメンバーもこの資料を通じて少しでもDataBaseへの理解が深まれば良いなと思って取り入れました。
自分もある程度DBを触ったことはあるし、データベース設計もしますが
アーキテクチャ的な部分についてはほとんど無知だったためそこら編の知識を深めようと思いました。

技術的なことを学ぶときにどういう時代に何ができてきて、
当時の問題は何だったのかを考えることでよりわかりやすくなると思い年表を作成しました。
DB年表は以下のサイトで作成しました。
DataBase年表 | THE TIMELINE

あとは、この資料作成中に発見したのは英語版のWikipediaのRDBMSの比較ページがすごいということ。
Comparison of relational database management systems - Wikipedia
いろいろな制約などが詳しく乗っていて、日本語版より情報量が多くて素晴らしいなと思う反面、
Wikipediaでも英語圏と日本語圏の情報格差があるんだなと思い知りました。

あとは、DBの比較については以下のサイトも便利でした。
Database of Databases - Home
今回は特に出番はなかったですが、DBの選定などで利用できそうです。

LTと言いながら30分ぐらい語りました。
しかも、NewSQLについて語らずにw

What is NewSQL part2

内容:NewSQLのCloud Spannerがなぜすごいのか

資料

解説

前回の資料でNewSQLの説明を引っ張ったものの、結局分散データベースについて解説できなかったので、
今回はそこから解説しました。
だいたいQiitaの記事と流れは一緒ですがその道筋で難しいところを補足する形になっています。

また、実際にSpannerを使っている案件に関わっている人物の所感も合わせて補足しました。
Spannerを採用した感想として聞いたのは

  • 性能面は申し分ない
  • とくに障害という障害を起こしていない
  • ORMを自作しないといけないのは面倒
  • 高い。検証用に立てても10万円前後はきつい

というものでした。
個人的には値段はあまり気にならないというか、
やってることを考えるとむしろ安い方だと思います。
問題はそれに合う要求があるか。
『近所のコンビニに行くために新幹線使う』
みたいな事にならなければ適切かなと思います。
近所は徒歩で行こう。

ただ、もう少しスケールインした構成でリソースを節約できるプランができたら
使いやすいと思います。

なぜ今Cloud Spannerなのか

Cloud Nativeが提唱されはじめて暫く経ちますが、
ようやくコンテナ技術やKubernetesが安定して
業務レベルで利用可能になってきたというのが今の状況だと思っています。
自分の会社でもEKSもGKEも採用事例が増えていますし。

そういったスケーラブルなコンポーネントを利用して
高負荷に耐えうる構成にしたところで、最終的にDBがボトルネックになってしまう。
そのボトルネックを解消するために人員を動員したり、
RDSを組み合わせて複雑なアーキテクチャを設計したり
また、サービスの一部の仕様を断念することがあるかもしれない。
ただ、そのときにCloud Spannerを知っているだけで取れる選択肢は変わってくると思います。

正直、シャーディング前提の特殊な設計も必要になるので、
すぐに使い始められるものではないと思います。
ただ、そこを超えてまで必要になる要件はあります。
そのときに
「うちじゃできません」
と言わないで済むために知っておかなければならない技術だなと思い展開しました。