解析サービスを実現するために必要な要素
実際に実現するには他にも色々なポイントがありますが、これまで述べたように次のポイントが必須になります。
- 同時接続をさばく
- データ量のスループット
- 大量のデータを保存し、活用する
- データの抜けがないよう安定的にサービス提供する
- 解析結果を得るまでのレイテンシ
- 短い時間でのスケーラビリティ
- これらを簡単にコントロールするための仕組み
約20年前、まだGoogleがなかった頃に、この解析サービスを実現するには実にさまざまなものが必要だったと思います。物理サーバーをはじめとしたハードウェアやデータセンターやネットワークシステム、効率的なアルゴリズムなどが盛り込まれたソフトウェア、そしてそれをメンテナンスする人的リソースなど、色々なものを用意する必要があったでしょう。
しかしながら今では、私のMacBookからでもつながる、インターネットを介した便利なクラウドサービスが、非常に簡単にこれを実現可能にしてくれます。PLAIDではGoogle Cloud Platform(GCP)を中心としたクラウドサービスを最大限に活用しています。
GCPとは?
GCPとは、Googleが提供するコンピューティングプラットフォームです。Googleが検索サービスなどでコアとして使っているインフラストラクチャを、サーバー、ストレージサービス、解析サービスなどとして提供する、IaaS(Infrastructer as a Service)とPaaS(Platform as a Service)の形式で提供されているCloudサービスです。Googleが世界中のユーザーに対してWebサービスを提供し続けてきた経験が盛り込まれたインフラであると言われています。
KARTEでは、GCPのサービスの中でも、Compute Engine、Cloud Storage、Cloud Bigtable、Cloud Spanner、Cloud Datastore、Cloud VPN、Cloud Load Balancing、BigQuery、Cloud Pub/Sub、Stack driverを活用しています。
先ほど挙げた解析サービスの必須要素とGCPのサービスはどうつながっているのでしょうか?
同時接続をさばく、短い時間でのスケーラビリティという観点では、Cloud Load BalancingをCompute Engineの前面において、接続を複数のCompute Engineに分散させながら、Compute Engineのオートスケール機能で、Cloud Load Balancingのメトリクスを基準に自動で台数を調整することが可能です。
データ量のスループット、大量のデータを保存・活用する、解析結果を得るまでのレイテンシという観点では、読み書きのスループットが大きく、読み出しのレイテンシも短いサービスであるCloud Storage、Cloud Bigtable、Cloud Spanner、Cloud Datastore、BigQuery、Cloud Pub/Subの特徴を活かしています。
データの抜けがないよう、安定的にサービス提供するという観点では、GCPのサービスの裏側は全般的に多重化されており、安定的であるのに加え、もし障害が発生してもCloud Pub/Subに一時的にデータをためておき、障害から回復した時に再度処理を開始するようにしています。また、Cloud VPNで、非常に重要なデータは他のクラウドサービス上に安全にレプリケーションを行っており、大きな障害が発生してもサービスを提供し続けられるようにしています。
これらを簡単にコントロールするための仕組みという観点では、GCPのサービスは全般的にWeb UIでコントロールでき、簡単に構成の変更が可能です。また、Stack driverという監視サービスによって、他のサービスのメトリクスを確認することもでき、アラートの設定などが可能になっています。
このように、GCPを利用することによって、解析サービスを提供するために必要となる、大量のデータを処理する、レスポンスが速い、これらを安定的に提供する、などの高い要件を満たすような多種の基本的な道具を、クラウド上で簡単に手に入れることができます。
まとめ
解析サービスを実現するために必須な要素をまとめました。PLAIDでは、これらの必須要素を備えたKARTEを提供するにあたり、GCPを最大限に活用しています。
単に、物理サーバーを意識することなく、計算機資源をコントロールできるという利点だけでなく、サービスに必須な要素を実現するという、よりサービスの根幹に近いレイヤーで重要なものとして、GCPを活用していることがわかります。
次回以降は、どのようなポイントでどう構成しているかを紹介し、それぞれの構成要素の具体的な課題とその課題を解くために使用しているサービスの詳細などについて紹介していきます。
