クラウドプラットフォーム・クロスファンクショナルチーム(Snowflakeチーム)の活動紹介 ~Snowflakeの紹介編~

データ活用・DXに欠かせないのがデータ基盤です。ブレインパッドには、クラウドプラットフォームの知識・スキルを深化させるべく、Google Cloud 、AWS、Microsoft Azure、Snowflakeの4つのクラウドプラットフォームチームから成る「クロスファンクショナルチーム(CFT)」があります。今回は、便利な機能を多数備え、単なるDWHサービスではない機能の広がり・独自性を持つクラウド型DWHサービス「Snowflake」についてご紹介します!
f:id:brainpad-inc:20220203141750p:plain


こんにちは、ソリューション開発部の藤田です。
顧客企業のデータ活用を、システム開発や基盤構築の面から支えている当社のデータエンジニアリング本部(DE本部)。そのDE本部には、 Google Cloud 、AWS、Microsoft Azure、Snowflakeの4つのクラウドプラットフォームチームから成る「クロスファンクショナルチーム(CFT)」があります。(詳細はこちらの記事を参照ください)
blog.brainpad.co.jp


そして今回は、Snowflakeの紹介をしたいと思います。

1.Snowflakeとは

まず、Snowflakeについて簡単に紹介します。
Snowflakeは、米・Snowflake社が提供する「クラウド型のDWH(データウェアハウス)サービス」です。AWSのRedshiftやAzureのAzure Synapse Analytics、 Google Cloud の BigQuery と比較され、下図(図1)のようにデータの分析やデータマートの作成を行う位置付けのサービスです。コンピューティングとStorageを分離し、複数の分析処理の同時実行を実現したり、エラー発生時点など特定の日時に遡ってクエリを実行できたり、簡易にクローンを作成して分析できたりと、便利な機能を備えたサービスです。そして、AWS、Azure、 Google Cloud の各クラウドサービス上で利用可能であるのも特徴のひとつです。

f:id:brainpad-inc:20220202115658j:plain
図1

SnowflakeはSaaS型のデータウェアハウスなので利用者が実行環境を準備する必要はありませんが、実態としては、AWS、Azure、 Google Cloud のクラウドサービス上で動いています。Snowflakeのアカウントを新規に作成する際には、AWS、Azure、 Google Cloud のどの環境・リージョンに作成するかを指定します。( Google Cloud のみ日本リージョン未対応:2021年12月時点)

f:id:brainpad-inc:20220202115934j:plain
図2:Snowflakeの動作環境

※Snowflake単体の機能としては、各サービスで違いはありませんが、例えばStorageとの連携を考えた際に、StorageとSnowflakeが同じ環境内にあると、各クラウドサービスのプライベート接続サービスが利用できます。

2.Snowflakeの特徴

次に、Snowflakeの特徴について紹介します。さまざまな特徴があるのですが、今回は機械学習や分析を行う会社にとって、"特に良い”と感じた3点に絞って紹介します。

● 機械学習・分析面での良い点

  1. 無限スケール可能で高性能
  2. 使用した分だけ支払う料金体系
  3. 分析官目線での便利機能の充実

2.1 無限スケール可能で高性能

Snowflakeは、処理を行う仮想ウェアハウス(以後、WH)を分離し、各WHが必要なDatabaseStorageにアクセスすることにより、競合を回避しボトルネックが発生しないアーキテクチャとなっています(図3を参照)。WHを分けさえすれば、負荷がかかるバッチ処理同士も影響を受けず、同時に実行することができます。分析官目線でいうと、分析官による分析作業とバッチ処理が重なったり、分析官同士の分析作業が重なっても、影響が出ないということになります。

f:id:brainpad-inc:20220202120553j:plain
図3:WHとStorageを分離したイメージ

このWHは、サイズがXS~6XLまでの10種類用意されており、クエリ実行時に都度サイズの変更が可能です。アドホックなクエリを実行する場合に、軽いものはXSサイズで実行し、重いものはXLで実行するなど、都度クエリ実行時に変更できます(従来のDWHのような、サイズを決めたクラスターを作成して、その中でクエリを実行する、という方法ではなく、クエリに応じてクエリ実行サイズを指定できるという構成となっています)。また、バッチ処理においても、まずはデータの件数を取得するSQL(Select count(*) From ~ )をSサイズで実行して、件数が1万件以上であれば、その後のデータ抽出のSQL(Select * From ~)はXLサイズで実行する、などの設定も柔軟に対応が可能です。

f:id:brainpad-inc:20220202121128j:plain
図4:クエリ実行画面(サイズの指定が可能)

上記のように、クエリごとにWHのサイズを簡単に変更することができます。

2.2 使用した分だけ支払う料金体系

主な課金内容は、WHの実行時間が基準となります。秒単位の課金(最低1分間分は課金。その後秒単位)となり、WHの起動は1秒もかからず、処理完了時に手動・自動で停止可能です。そのため、クラスターの停止を忘れ、余計な課金がされていた、ということが皆無です。また、スペックを倍にすると、理論上は処理時間 が1/ 2となるため、処理は早くなったが、料金が変わらないというシチュエーションになる場合もあります。

f:id:brainpad-inc:20220202121513j:plain
図5:スペックと実行時間の参考値(テストデータ1.5億件での検証)

テストで検証した際の参考値になります。4倍の性能のサイズを使用すると、処理速度が1/4に近い数字になることが確認できました。
X-Small < Small < Midium < Large < X-Largeの順番のスペックであり、MidiumはX-Smallの4倍、X-LargeはMidiumの4倍の性能があります。

2.3 分析官目線での便利機能の充実

分析官目線での便利機能という観点では、過去のデータを遡って検索できるTime Travel機能や、データ量を2倍にせず差分のみの増加でコピーを作成できるクローン機能があります。Time Travel機能を活用して、不具合発生時の状態に遡ってクエリを実行したり、クローン機能を活用して、自分用の分析DBをすぐに作成することができます。さらりと数行で書いていますが、利用者目線で行くと、ここの機能が一番インパクトがあるかもしれません。非常に便利です。

3.まとめ、今後の活動テーマ

Snowflakeチームの活動紹介の第一弾として、Snowflakeの概要と特徴についてご紹介しました。今回は、Snowflake単体での特徴を紹介しましたが、Snowflakeは単体で利用するというよりは、データの取得元や連携先があり、それらの機能と連携しながら活用するサービスです(図6を参照)。
今後は、Snowflakeと各種サービスとの連携方法などについて、調査をしていきたいと考えていますので、調査結果についても定期的に情報発信していきます。

f:id:brainpad-inc:20220202121733j:plain
図6


データエンジニアリング本部では、中途採用を積極的に行っています。
ご興味がある方はお気軽にご連絡ください。
■データエンジニアリング部の紹介資料
https://speakerdeck.com/brainpadpr/brainpad-de-202107ver

■ ブレインパッドの求人一覧
www.brainpad.co.jp