実際の事例からGCP設計のコツを解説
grasys Site Architecture
まずはgrasysのコーポレートサイトとブログサイト。とてもシンプルで、驚くことにサーバーが1台もない。バックエンドにGoogle Cloud Storage、フロントエンドにCloud Load Balancingを置き、Cloud CDNを使う。これだけで大規模な配信が可能で、応用すれば大量データを配布するスマホゲームアプリにも使えるという。長谷川氏は「とてもシンプルだが、データ配信で強靱な構成にするには鉄板」と強調する。
ポイントはGoogle Cloud Storageの制限回避。Google Cloud Storageはアクセス数が多いと、レートリミットがかかりアクセスできなくなることがある。そのためフロントで緩衝となるCloud CDNを置くのがいいという。
Mastodon
もともとMastodonはシングルホスト向きのアーキテクチャだが、長谷川氏が書籍執筆をきっかけに大規模向けの構成を組んでみたのがこちら。
データ分析だと、データソースはあらゆるところから流れ込むことになる。この構成では多様なデータを受けとめ、効率的にBigQueryに流し込むことを可能とする。なおBigQueryはリアルタイムでデータのインサートが可能だが、grasysではあまりリアルタイムにはこだわらずバルクインサートにすることが多いという。
grasys Data Analysis Architecture
さらにデータ分析基盤として磨きあげたのがこちら。grasysの標準的なデータ分析基盤のアーキテクチャとなる。BigQueryを大規模に活用する際、安定して運用できる構成になっている。
JobQueue Executor
こちらは大規模な演算処理のための構成。AWSからのデータをGCPで受けとめ、ジョブキューに渡す。必要な計算数に応じてVMを立ち上げ、不要になればVMを捨てている。要件が特殊だったため、自前で構成したものも含まれるものの、別クラウドサービスからのデータを取り込んで処理する例となる。
GKE Cloud Spanner Architecture
GKEとCloud Spannerの活用例がこちら。最近増えているという。汎用的な部分だけ抜き出すとこのようなシンプルな形になるが、実際には何パターンかに分かれる。
grasysではGKEをHTTP系のトランザクション処理だけではなく、常時接続のリアルタイムやストリーム処理にも応用し始めている。また最近ではGKEにおいて複数の処理系を担い、連続処理するような構成も出てきた。elasticsearchのような複数のノードタイプが存在するような構成でも応用できる。
長谷川氏はポイントをこう話す。「Spannerは大規模な要件にマッチするすごいサービスです。グローバルでけっこうな規模のトランザクション処理があり、それを守りたいといったときに、たくさんのRDBMSクラスタを自前で組まなければいけない運用負荷を考慮すると、大きな効果が出ると感じています。また大規模なバックエンドを安定的に維持することが可能です」。
WordPress Standard Architecture
WordPressを使う標準的なアーキテクチャ。実際、世界的に有名なファッションのWebメディアで使われている。フロントにCDNを設置することであまり並列することもなく、書き込み系だけ別に切り出すことで少ない台数に収めることができている。CDNは要件に応じて選定するためGoogle Cloud CDN以外を使うことがあるものの、基本的にはこの構成で時間当たり100~1000万アクセスをさばくことが可能だという。
***
あらためて長谷川氏はGCPへの愛着をこめてこう話した。「処理系はさておき、クラウドサービスの一番はオブジェクトストレージ。GCPのオブジェクトストレージとなるCloud StorageはBigQueryと親和性が高く、レガシーでできないことを可能にしてくれます。個人的にもCloud StorageとBigQueryを組み合わせ、DataPortalで可視化するのが好きでじゃんじゃん使っています。少し勉強すればできるようになるので、エンジニアでない方にもおすすめです。DataPortalはまだ歯がゆいところもありますが、最近ビッグデータ分析企業のルッカーを買収したので今後よくなると期待できます」
なお、長谷川氏が登壇した同セミナーにおいて、Google Cloud パートナーエンジニア浦底博幸氏より、「Google Cloud Platformの概要と最新情報」と題して、GCP概要から最近発表になったAnthos(旧Cloud Services Platform)の詳細について解説があった。Anthosは「Hybrid Done Right」という理念のもとに設計されたもので、オンプレとの組み合わせやマルチクラウドなどハイブリッドな環境でKubernetesクラスタを統合的に管理できるようになることが期待されている。