QCon San Francisco 2919で、Chris Riccomini氏が、"The Future of Data Engineering"と題した講演を行った。おもな内容は、完全に自動化された非集中型データウェアハウスの実現という、データエンジニアリングの最終目標への到達に関するものだ。
Riccomini氏の講演の目的は、データパイプライン、ETL、データウェアハウジングといった最新技術を検証し、データエンジニアリングがどこへ向かうのかを先読みすることにあった。
私たちは今、おもに2つの領域に向かって進んでいます — よりリアルタイムなパイプラインの実現と、非集中型の自動化されたデータウェアハウス管理です。
WePayのソフトウェアエンジニアであるRiccomini氏は、今年7月に発表した自身のブログ記事をベースに、データエンジニアリングの将来像を描いてみせた。まず最初に氏は、データエンジニアリングとは何かを定義した。氏の定義によれば、"データエンジニアの仕事は、組織のデータ移動と処理を支援すること"である。氏の見解によれば、"移動(move)"はストリーミングないしパイプラインの意味であり、"処理(process)"はデータウェアハウスとストリーム処理の意味である。
講演の中でRiccomini氏は、何もない状態から始まり、分散化された状態に達するという、データエンジニアリングのさまざまなステージを紹介した。
- ステージ0: 何もない状態(none)
- ステージ1: バッチ
- ステージ2: リアルタイム
- ステージ3: 統合(integration)
- ステージ4: 自動化(automation)
- ステージ5: 分散化(decentralization)
各ステージは、組織の現在の状況に依存すると同時に、それぞれの課題を抱えている。Riccomini氏は、WePayが完全な分散化と自動化を実現したデータウェアハウス管理システムという最終ステージに到達するまでの過程を基に、各ステージについて詳説した。ステージによって組織の現在位置と将来的な展望が明らかになる、と氏は指摘する。
さらに氏は、WePayは独自のステージにあり、もっと進んでいる組織もあれば、遅れている組織もある、とも述べている — これらのステージは、ロードマップを構築する上での参考になるはずだ。Riccomini氏の定義する最初の何もない(none)ステージでは、組織は小さく、モノリシックなアーキテクチャを持ち、データウェアハウスを早急に必要としている — Wepayは2014年にこのステージにあり、クエリのタイムアウトや高度な分析機能の欠如といったことが問題となっていた。
次のステージであるバッチでは、依然としてモノリシックアーキテクチャだがスケールアップを必要としており、レポートやチャート、ビジネス・インテリジェンスといった、より多くの機能も求められるようになる。2016年にWePayはバッチステージにあった、とRiccomini氏は言う。
何かを立ち上げて実行したいならば、バッチステージは理想的な状態です。
しかしながら、組織が拡大すると、ワークフローのタイムアウトやパイプラインに影響を与えるデータ操作などの問題が発生する可能性がある。次にRiccomini氏が論じたリアルタイムステージは、氏がデータエンジニアリングの現在の時代と考えるものだ。データエンジニアリングが組織における一級市民となったこのステージには、Apache Kafkaのようなインフラストラクチャが存在する。2017年のWePayがこのステージであり、Riccomini氏がブログにその状況を記している。
出典: https://qconsf.com/system/files/presentation-slides/qconsf2019-chris-riccomini-future-of-data-engineering.pdf
しかしながら、Riccomini氏が述べているように、リアルタイムセットアップという問題がある。
- データベースのパイプラインは依然としてApache Airflow上にある
- CassandraやBigtableにはパイプラインはまったくない
- BigQueryはデータロギングが必要
- Elastic search用のデータが必要
- Graph DB用のデータが必要
そこで氏は、次のステージである統合へと話題を進める。アーキテクチャはもはやモノリスではない。統合が必要なのは対象とするシステムの数を少なくするためだ、と氏は説明する。WePayではそのために、Waltzを備えたKafkaを活用した。この統合ステージは、WePayの現在のステージでもある。ただし、アーキテクチャはより複雑になっており、Kafka以外のシステムの数も増えつつある。そこでWePayでは、次のステージである自動化の検討を始めている。
自動化ステージには2つのタイプがある、とRiccomini氏は説明する。
- 運用の自動化 — Kafkaトピックの生成と設定、BigQueryビューの生成などの自動化。Terraform、Salt、Chef、Spinnakerといった自動ツールを活用する。
- データ管理の自動化 — スキーマやバージョニング、暗号化を含んだデータカタログの設定、RBAC(Role-Based Access Control)、IAM(Identity Access Management)、ACL(Access Control List)などによるアクセス設定。ここでもTerraformなどのツールが活用される。
自動化されたデータ管理においては、GDPRやSOX、HIPAAが重要であり、企業は次のような疑問に答える必要がある、とRiccomini氏は指摘する。
- このデータにアクセスするのは誰か?
- このデータはどの位保持する必要があるのか?
- このデータはこのシステムでの利用が許されるのか?
- データは地理的にどこへ配置されなければならないか?
- カラムはマスクされるべきか?
しかし自動化においても、設定やデプロイメントには依然としてデータエンジニアリングが必要だ、とRiccomini氏は述べている。最後に氏は、最終ステージである分散化について、完全リアルタイムなdataパイプラインの存在する状態である、と説明した。ここで問題となるのは、その管理はひとつのチームが行う必要があるのか、という点だ。Riccomini氏はそれを否定する。将来的には複数のデータウェアハウスを立ち上げて、別々のチームが管理できるようになるだろう、というのが氏の意見だ。従来型のデータエンジニアリングは、モノリシックなデータウェアハウスから、すべての人々が自身のデータウェアハウスを管理する"マイクロウェアハウス"というべきものに発展する、と氏は考えている。
Riccomini氏は、自身の講演のスライドを公開している。さらに、これを含むカンファレンスの講演は録画されており、今後数ヶ月内にInfoQで公開される予定である。最後に、次回のQCon London 2020は、2020年3月2~6日の開催が予定されている。