Confluent Japan Community Blog

Confluent Japan Community が提供するストリーミングデータを扱うConfluent、Apache Kafkaに関する情報を提供します。

Confluent Japan Community が提供する apache Kafka および Confluent に関するブログ

ストリーミングデータとは

- pub/subシステムのメリット -

 

・広範囲になったデータの取り扱い

昨今新しい石油といわれているのがデータです。正確に言えば行動や個人情報なども含むさまざまな分野に利用することが出来るデータが新たな石油といわれて注目されてきています。

インターネットの世界の覇者として君臨するGAFMAGoogleAppleFacebook、Microsft、Amazon)。GAFMAに代表されるさまざまなインターネット企業がサービスなどを通じてデータを収集し、それを活用して新たなサービスを展開しています。

最も基本的な活用の例としては、あるサービスへユーザがアクセスした際に、サーバ内にアクセスされたページに関するデータが保存され、それを解析することでサービスの利用のされ方を把握してきました。

もともとは、単純にサーバーに保存されたもので内容を把握してきたが、もちろん企業としてはより精密なデータを解析し、顧客のニーズを把握したいと考えるのは当たり前の流れです。そのため、それらを実現するGoogle Analyticsなどを利用して詳細な情報を随時取得して蓄積し、解析を行うように形を変えています。

さらには自社のサイトのアクセスから他社のアクセスも紐づけて管理するようになり、より詳細に人々の行動を解析し、より緻密なマーケティングメソッドを提供する流れへと変わっていっています。

スマートフォンの爆発的な普及などによりインターネット利用者の拡大やサービスを提供するシステムの複雑化に伴って、データの量や種類は増加の一途をたどっています。その変化に合わせて、扱い方や処理方法にも大きな変化が起きています。

今までデータの処理にはAPIなどを使ってリアルタイムに処理するものや、決まった時間にバッチ処理で行うものなどが主流でした。これらはインフラ環境の構成や規模などによって、それぞれにシステムが構築されて処理がされてきました。これらのデータの処理は何らかのトリガーアクションに基づいて処理が行われています。しかし、IoTに代表されるようにビーコンや位置情報のように常に存在し変化しているデータを処理するようになってきました。これら時々刻々と生成されて流れるデータをストリーミングデータ(もしくはストリームデータ)と呼びます。今後はこれらストリーミングデータをいかに活用できるかが差別化要因になっていきます。

参考資料:

データの全体像に関するムービー(Kafka Summit London 2018)

www.youtube.com

 

リアルタイムのアクションには欠かせない

 

これらの変化のベースには、マーケティングの高度化やインターネットユーザーの拡大、システムの高度化、複雑化が関係しています。インターネットの時代になり、マスの時代から大きく変化してきました。そのインターネットの時代はさらに進化し、ユーザーの認知から継続利用までを含めた一連の流れ(カスタマージャーニー)の中でどのようにマーケティングを行うかという領域に進化し、今後はさらに膨大なデータを用いた予測など未来を想定したマーケティングにまで進化すると考えられます。

その時代の要素として欠かせなくなってきているのがストリーミングデータです。位置情報やビーコン情報などの時々刻々と変わるデータを元にリアルタイムでレコメンドしてマーケティングを行うなどの処理を行うためにはデータは欠かせません。そのようなリアルタイム性の高いデータを表現、処理できるストリーミングデータを理解することは、これからの時代においてビジネスを行う、加速させるには必須の要件となります。

データの変化と合わせてインフラやネットワークといったものも進化しており、2019年から2020年にかけて本格的に開始される5Gネットワークなどの登場により、さらに多くの機器がネットワークに接続され、それらから多様かつ大量のデータがもたらされることになります。IoTツールに代表されるように、今までデータとして存在していなかったデータがより多く生み出されてきます。これらのデータをいかに迅速に使える形で処理をし、マーケティングなどに生かすかが企業の戦略の一つとなってきています。

これらのリアルタイムの処理は、インターネットサービスを提供している企業に限定されているものではありません。伝統的な企業の代表である金融サービスなどはすでに積極的にストリーミングデータを活用しており、マーケティングだけではなく、ビジネスの全体像をデータによってモデリングするなども行っています。代表的な例でいえばアメリカの金融会社であるCapital Oneは、リアルタイムデータを活用することにより、金融に関するさまざまなリスクを可視化しています。例としては口座におけるアクティビティを監視し、短時間に複数回の不自然な取引が行われているなどの不正を瞬時に検知して対応を行うなどしています。これによりビジネスの健全性を実現しています。

リアルタイムのアクションはビジネス分野に関係なくすべてのビジネスを加速させるために必要なものであり、これらを活用できる企業が未来を予測したり、現在を的確に理解することが出来ます。

 

参考資料:

Capital Oneのストリーミングデータ活用

https://www.confluent.io/online-talks/capital-one-delivers-risk-insights-in-real-time-with-stream-processing

 

金融機関が実現したストリーミングデータ活用

https://www.confluent.io/resources/top-3-use-cases-for-real-time-streams-in-financial-services-architectures?utm_source=blog&utm_medium=new_big_thing&utm_campaign=microservices

 

バッチ処理とストリーム処理の違い

 

ストリーミングデータの活用は、どのように行われるのでしょうか。

データの処理といえばバッチ処理が従来から行われてきた方法であります。ひと昔前では夜になるとECサイトが閉じているなどというのがよくあったことを覚えている人も多くいるでしょう。これは日中の売り上げなどの膨大なデータをバッチ処理で基幹システムに送るという処理が深夜に行われていたためです。このような対応の背景には単純にデータ量に関してだけではなく、インフラ構成など様々なことが理由としてありました。

現在においては元来の基幹システムというのは置き換えられてきており、基幹システムと連携する為にバッチ処理を行う事は減ってきました。

売り上げなどトランザクショナルに処理されるデータはAPIなどでリアルタイムに処理を行っていますが膨大なデータが流れるストリーミングデータにおいては、ストリーム処理にて行われます。

https://www.confluent.io/wp-content/uploads/Finserve-Post.png

※左はBefore 右はAfter

 

ストリーム処理は、無限に発生するデータ(ストリーミングデータ)や恒久的に継続されるデータの処理であり、バッチ処理とは処理の根本が異なります。ストリーム処理は、低遅延で、一定の時間内に発生した情報を処理し続けるものになります。

また、異なる部分としては、バッチ処理はだいたい処理するタイミングが決まっている、制御しやすい状態にあり、新たな処理の追加もしやすい状態にあります。これに対して、恒久的に処理が継続されているストリーミングデータの場合は、新たに処理を追加することも容易ではありません。しかし、処理対象はビジネスが進めば進むほど増減し、またそのデータの量も常に増減します。これらにどのように対応していくかが企業の命題の一つです。

ストリーミングという言葉で置き換えると無限のストリーミングデータを処理することがストリーム処理であり、無限のストリーミングデータを比較的大きな時間でデータを区切り、遅延を許容しながら確定、蓄積されたデータに対して処理を行うことがバッチ処理になります。ただし、実際にはこの表現の中には一定の時間に区切れる形に蓄積するという処理も入るのでそんなに単純な違いではないことは理解する必要があります。

 

ストリーム処理の課題

 

ビッグデータと呼ばれるスケールのデータをストリーム処理するにあたっては、以下のような課題があります。

  • データ量が膨大であること
  • 不定期な処理であること
  • 多くのデータ種別があること

 

・データ量が膨大であること

リアルタイムでの処理を実現するために以前に使われていたのはMQ(Message queue)と呼ばれるシステムです。

これらの仕組みはシステムから送られてくるメッセージを受け取り、リアルタイムに別のシステムに配信する仕組みとして提供されています。しかし、これらの仕組みはデータ量が現在のような量ではなく、1台のマシン(サーバー)で十分に処理可能なデータ量を想定しています。現在のように、1日に数億件ものレコードを処理するためには、複数台のマシン(サーバー)に処理を分散することが必要になります。恒久的にさまざまな場所から送られてくる現在において、最初の問題は処理するデータのボリュームが以前のデータ量という定義をはるかに上回る量でデータが流れるという部分にあります。

 

不定期な処理であること

ストリーミングデータは、発生した順に送られてくるとは限らないという部分がもう一つの大きな問題です。例えば定期的にデータを送信するIoTセンサーなどがあった場合に通信が途切れたりすればその間のデータは送信されず、通信が再開した際に再度処理が送られてきます。その間には別のデータが送信されており、後から発生したデータが先に発生したデータを追い越すことも普通にあり得ることになります。バッチ処理であれば一定の情報をソートして送ることが出来るので一定の順番にて定義されたデータが送信されてきます。

 

・多くのデータ種別があること

ストリーミングデータは、決まった形式に固定されたものではなく、さまざまなデータの送り元がさまざまなソフトウェアを利用してデータを送付してきます。Aという機器で作成されたデータ、Bという機器で作成されたデータなどさまざまなデータがさまざまなソフトウェアを利用して送信されてきます。それらのデータを取得して処理する必要があります。また、処理する先も同じデータを利用するが利用方法が異なる先もあります。これらに柔軟に対応して処理を行う必要があります。

 

まとめ

 

インターネットのユーザーが爆発に増えたことで日常にデジタルが存在していないことがほぼなくなってきています。それに伴ってデータの種類や処理も大きく変わってきました。これらを活用することは企業の成長に欠かせなくなっています。次章では、データドリブンでの処理、リアルタイムデータについて説明します。