こんにちは、喜田と申します。
エクスチュアブログでの発信は記念すべき一本目です(拍手~👏🎉)
今はエクスチュアでデータ基盤の設計・構築等を担当していますが、長年やってきたのはミッションクリティカル領域のDB設計・開発で、AWSやAzureもDB中心に触ってきました。私の知識ベースは完全にRDBです。日本PostgreSQLユーザ会で理事長をやっています。
Snowflake、盛り上がってますね~⛄
縁あってSnowflakeを触る機会があり、また、ありがたいことに次々とお客様の相談もいただいていますので、本腰いれて勉強しようと取り組んでいる真っ最中です。そこで、今しかない自分なりの学びポイントを書き留めていくいい機会だなということでブログにしていこうと思います。勉強し始めて、すでに気になる要素・目からうろこな感心しちゃうような要素があるので、そういうことを取り上げてシリーズ化していきたいな、なんて目論んでいます。
Snowflakeを語りたい!
早速ですが、今回は「Snowflakeの特徴・見どころ」を語りたいと思います!あまり世で言われていない表現なので、若干ポエム味があったり、見解に賛否あるかもとかドキドキしますが、「そういうことを聞いてみたかった」という人にお一人でもヒットすると嬉しいです。
で、最初に一言で表現しておくと「DWHのSaaSであること」こそがSnowflakeの最大の魅力だと捉えています。もう少し言うと「DWHの」の部分には「DWHの皮をかぶった【データをコンテンツとするデータ共有プラットフォーム】」というニュアンスで理解しています。その心は後ほど語りたいと思いますが、以下の図のようなイメージです。
独自機能のあらゆる部分がこれを後押ししていると言ってもいいと思います。
いろんな人のいろんな視点を聞いてみたいという想いからの「語りたい」本稿ですので、ツッコミ、厳しいご意見でも、ぜひぜひフィードバックいただけるとありがたいです。
Snowflake超初心者にとって「最初の壁」
「Snowflakeって何?」状態から勉強しています。
そんな超初心者にとって、最初の壁はなんだったかなとここ数カ月を振り返ってみると、機能面や、お行儀のよい紹介資料はたくさん見つかり、技術者として第一歩を踏み出すことは非常にハードルが低かったです。
では何が欲しかったか。それをこの場で語らせてください!
※そして、その答えを言語化してみたものの、まだ自分の中で解決しきっていません。
いろんな視点が語られるようになって答え合わせしていけると嬉しいです。
「Snowflake」を検索すると、豊富で質の高い公式情報や、企業による紹介記事がヒットします。まず思ったのが、公式の製品案内・チュートリアル等がしっかりしている反面、公式であまり述べられてない視点での「俺的Snowflakeの魅力」みたいな情報ってあまり目にしないな、ということでした。
各企業さんの紹介ブログも、機能やアーキテクチャを平易な言葉で解説してくれるようなものが多く、まあそれはそうなんだけど。もっと各々の視点で色付けしたような発信を見たい!熱く製品愛を語ってくれる投稿はないものか?!
と最初から思っていたのでした。
Snowflakeが選ばれるポイントはズバリ何?
ある程度の製品理解ができてくると「データシェアができる」「アーキテクチャ的に、性能・課金・インフラ管理などの面で優秀」といったわかりやすい製品特徴がわかってきました。
自分がそういうことを理解できてくると、では、Snowflakeを選ぶ人は100人中100人がそういう魅力までちゃんと評価した上で選ぶのだろうか?と疑問が沸いてきます。
- Snowflakeでしか実現できない機能があった
- 他のDWH製品と機能比較をして「データシェアができるのが良かった」から選んだ?
- コスト比較の結果Snowflakeだった
- コンピュートの性能・稼働時間に依存する課金が用途にフィットした?
そういうケースももちろんあると思います。SNOWDAY JAPAN 2023 に参加した際、「製品比較の結果良かった」という話はたくさんありました。
ただ、こういう選び方って、やりたいことが明確にありその実現が想像できるとか、定量的な価値が測れるからこそだと理解しています。要件が明確でないと製品選びはできないでしょうか?(要件があって、それを満たすベストな製品を選ぶ側面は重々承知の上ですが)
DWHのSaaSがもたらす価値
ここからが本題です。「俺的Snowflakeの魅力」を言語化してみたいと思います。
Snowflakeって、
- DWHのSaaSだよ
- 最大の特徴は外部コラボレーション!
- 細やかな権限管理
- 単なるDWHの箱でなくエンジニアリングもSnowflakeのプラットフォーム上に統合
というあたりが製品の特徴かなと思います。これを言葉で書くと「なんだ結局、製品紹介でよく言われてる要素か」と見えるかもしれませんが、もう少しお付き合いください。
DWHのPaaS製品との比較
クラウドサービスとして提供されるDWH製品といえば
- BigQuery(GCP)
- Amazon Redshift(AWS)
- Azure Synapse(Azure)
あたりが有名です。IaaS~PaaSまでを丸ごと提供するパブリッククラウド各社では、オンプレで動かしてきたシステムをいかに取り込むか、そのためにあらゆるワークロードに対応する各種データストア(OLTP、DWH、ファイル、KVS、キャッシュなど)をミドルウェアレイヤのサービス(PaaS)として持っています。そのうちの分析ワークロードに特化したのが上記のようなDWH製品というわけです。
それに対して「Snowflake」は製品名であり会社名でもあり、このDWHサービスを中核とするSaaS提供企業です。上述したような大手クラウド各社で「DWHサービスが無い」ことが自社クラウドへの誘導の障壁にならないようにデータストアの1つとして用意したものではなく、DWHサービスこそがビジネスの根幹なのです。
恥ずかしながら、DWHなんて単なるデータ置き場と思って、オンプレDWHをOracleで作るか、分析の鮮度が許すならPostgreSQLで頑張るか?!みたいなことをやった経験もありましたが、反省しかないです。SaaSプロダクトとしてビジネスを成立させ、またSnowflakeならでは、SaaSならではとも言うべきデータ共有などの要素を目の当たりにして思ったことは「Snowflakeすごいな、ワクワクするな!」ということでした。
ここからポエム味が増しますが、私がSnowflakeに触れて感じた「単なるデータ置き場」でない、Snowflakeらしいポイントを、「他のパブリッククラウドで作るDWH」との違いを取り上げて説明します。
あくまでもインフラとして提供されるパブリッククラウドベンダによるDWHサービスは、利用企業の業務アプリケーション部分、BIやインターフェースにあたる部分の開発を前提とし、完成したシステムを利用部門に公開して利用してきました。基本的にシステム主管部や開発者がもつインフラとしてのクラウドのアカウントを一般の利用者に公開することがなく、完成されたシステムを使わせる方法をとります。
データ分析用途でいうと、経営層を中心に、完成されたBIダッシュボードを見る用途と、ごくごく一部のデータサイエンティスト等の高度分析ユーザがAWSやGCPの権限を持っていて、開発を伴うデータ基盤利用があるぐらいです。
Snowflakeが提供するSaaSではそれがどう変わるか。ようやく本稿冒頭で掲載した図にたどり着きました。
Snowflakeが提供するあらゆる機能が意味することは「システム開発」レイヤを1つ排除し、利用者とデータを近づけることに他ならないと感じています。
「DWHのSaaS」と書くと、上記と同じようにあくまでもインフラの一部を切り出したPaaSのように見えますが、本稿冒頭や上図内でも書いたように【データをコンテンツとするデータ共有プラットフォーム】のニュアンスで理解すると、一気に利用者の間口を広げられるように感じます。
DWHとして整理されたデータセットの形をとっていれば利用しやすいというのはありますが、本質は利用者が欲しいデータに好きなようにアクセスするためのSaaSであると見ることができます。
データ共有プラットフォームとして見るSnowflake
機能的な特徴については繰り返しになりますが、利用者とデータを近づけるにあたって、以下のような仕組みが効いてきます。
- DWH 改め データ共有プラットフォームのSaaS(上位のビジョン的な要素)
- 個人レベルのSaaSユーザ発行とロールを介した細やかな権限管理
- 最大の特徴はデータシェアによる社内外コラボレーション!
- 単なるDWHの箱でなくエンジニアリングもSnowflakeのプラットフォーム上に統合
Snowflakeのユーザ権限管理
1000人の従業員が、自身の業務に必要なデータを自分で検索することを考えると、定型BIダッシュボードでは足りず、より自由なインターフェースやデータに対する権限管理が必要になります。インフラ全体を考慮したIAMロールで中身のデータへの権限まで管理する従来のPaaS形より、Snowflake内で誰がどのデータにアクセスできるか管理するのは理にかなっています。
独自機能のデータシェアリング
そういう人たちが「あれも欲しい」「こっちのデータも結合したい」となると、システム開発を伴う従来のスピード感では合わず、利用者同士でのデータ共有、ひいては部門間、会社間のデータ共有という需要につながり、あらゆるデータをつなぐプラットフォームが意義を持ちます。
エンジニアリングも統合するプラットフォーム
データ連携やDWHとしてデータを加工・整形するといったエンジニアリング部分は、利用しやすいデータセットを用意するためにはどうしても発生しますが、それもあらゆる処理をSQLでシンプルに実装できますし、またエコシステムを構成するツールパートナーが多数存在することでビジネスユーザですら必要な処理を作成できます。(これはモダンデータスタックの文脈で皆さんもご存じの通りと思います。)
もちろん、従来のPaaSとしてのDWHと同じ使い方(=システム開発を伴うデータ置き場)という面で使えますし、そのシステム開発の範囲では機能面で大きな差はつきません。ただし、各々の利用目的があり、大小様々なワークロードが発生することを考えると、処理ごとにコンピュートのサイズを調整して、やりたいことにフィットしてコストを最適化できるといったわかりやすいメリットがあります。
※各社サービスの今々の設計思想などを熟知しているわけではないので、今はBigQueryだってそれが当たり前だよ、みたいなことがあればご指摘ください。
次回以降、これらの機能をさらに深堀してみたいと思います。SaaSとしてのデザインゆえか、アーキテクチャも非常に特徴的に感じていますので、RDBと比較しながら語っていく所存です。
さて、好き勝手に長文で語ってしまいましたが、製品愛をもって語りたいという方、ぜひ仲良くさせてください!笑
そして、Snowflakeに興味がある方、自社で使ってみたい方、相談ベースで一緒に探ってみたい方、いろいろなシーンでお手伝いできることがあると思いますので、ぜひお気軽にご相談ください!
この記事へのコメントはありません。