奥田氏の自己紹介

奥田輔氏(以下、奥田):じゃあ始めます。よろしくお願いします。LINEのData Engineeringセンター Data Platform室の奥田と申します。

私からは、Data Platform室が何やってるかとか、先ほど紹介もありましたが、LINEはデータプラットフォームを持ってます。(なので)それに関しての技術的だったり、ビジネス、会社的な位置付けも含めて紹介できればと思います。よろしくお願いします。

まず自己紹介です。奥田と申します。実は私も新卒(入社)で。ただかなり昔ですね。2013年の新卒入社になります。最初はインフラデータベースエンジニアでLINE GAMEの裏側のデータベースを維持運用してました。そこから社内移動を希望して、今のHadoopやETL、バッチジョブのジョブの開発に移動しました。

また、2018年とか2019年ぐらいからはデータプラットフォームの開発に従事しています。最近だとHadoopの移行プロジェクトなどを経て、エンジニアリングマネージャーやデータコネクトというデータプラットフォームにデータを入れるためのパイプラインのプロダクトマネージャーみたいなこともしています。どうぞよろしくお願いします。

データプラットフォーム室のミッション

私からのセッションのアジェンダです。最初はData Platform室の紹介。組織やシステムに関しての紹介。また、データエンジニアについて聞き慣れない方、今(これまでのセッションで)マシンラーニングとかデータサイエンティストの紹介があったと思うんですけれど、データエンジニアは(それらと)何が違うのかみたいな話をします。最後に、我々のチームからいくつか公式に公開されているアクティビティとかがあるので、それも紹介していこうかなと思います。

まず、Data Platform室の紹介です。組織全体の紹介をする前に、先ほど前のセッションに出た方は見たと思いますが、LINE STYLEの中にAlways Data-drivenというものがあります。

やはりデータは全社的な価値があるもので、それが全社の行動指針にも表れている。なので、そのデータをしっかりと守るため、また活用するために、全社一丸となって取り組む。そのためにData Platform室が存在している感じになります。

ミッションについてですが、大きく分けて「入れる」、そして「ストアして最終的に何かに活用する」「出していく」というような流れを概要として書いてあります。

(スライドを示して)我々はデータプラットフォームの名前をスライドの青から紫にグラデーションされているアイコン、IU(Information Universeインフォメーションユニバース)と呼んでいます。

我々が目指す1つの姿としては、セルフサービスのデータプラットフォーム。よくあるかたちとしては、データエンジニアをある組織に中央集権的に集めて、そこにいる人たちだけがデータを触れるようにすることはよく行われています。ただ、我々はよりビジネスを加速させ、その中でデータの活用をするために、それぞれのサービスがデータ活用できるようなセルフサービスのデータプラットフォームを作ることを目指しています。

なので、スライドでいうと、左側にあるそれぞれのサービスからのデータを我々のIUに入れる。我々のIUに入れたものをまた別、同じ組織、または別の組織でもデータサイエンスやマシンラーニングとして活用できるようなプラットフォームを作っていこうと。それが我々のミッションになります。

Data Platform室の組織的位置と内部のポジション

簡単に組織の紹介です。実は組織はそれぞれ成長するにしたがって変わっていくのですが、今我々のData Engineeringセンターには、Data Platform室と同じレベルでいくつか他の室があります。

データガバナンスを管理するData Management室や、前のセッションで言っていたMachin Learning Platform室も兄弟関係の室になります。また、トラッキングシステム、(このセッションを聞いている方は)LINE使ってる方が多いかなと思うんですが、そこに関するWebだったり、iOSやAndroidのネイティブクライアントから直接ログを送るようなUTSの開発を行うUTS室だったり。

また、全社的なデータ活用ポリシーを決めて推進していくChief Data Officer(CDO)の組織、CDO Officeも同じData Engineeringセンターの配下にあります。

また、Data Platform室にはいくつかのポジションがあります。必ずしも全員がガッツリとデータプラットフォーム、分散システムみたいなものの開発のエンジニアというわけではありません。

(スライドを示して)まず一番上に、データプラットフォームエンジニアリングと書いてあります。ここはいわゆるサーバーサイドエンジニア(が該当するところです)。我々はビッグデータを扱っているので、どうしてもかなりの台数の分散システムがあります。そこをどうやって協調して、データを活用して安全に保存して、またセキュリティなども担保していくのかを考える。そういったエンジニアリングのコア業務をやっているのが、データプラットフォームエンジニアです。

ただ、データをストアするだけじゃだめですね。いろいろな統計処理をする必要があります。また、それも専門知識が必要です。これが2番目のデータエンジニアリング。いわゆる一般的なデータエンジニアというのは、ここに該当するかなと思います。

また、ストアしても「このデータが何かわからない」ということがあります。あとのセクションでも紹介しますが、そういったものをより見える化するために、我々はカタログをWeb UIで提供しています。そういった使いやすいWeb UI、Web APIを開発するためのエンジニアもまたポジションとしてあります。

また、そういったいろいろなプロダクトが組み合わさってデータプラットフォームが成り立っているので、プロダクトマネジメントだったり、それをより使いやすくガイドしていくテクニカルコンサルタントみたいなのも、我々はエンジニアの1つの形態として持っています。

こういったいろいろなポジションがありますが、必ずしも完全に独立しているわけではありません。サーバーサイドのエンジニアとWeb APIのエンジニアが協業して、それらが作ったデータ、メタデータを加工しながら、より良いデータを作っていくデータエンジニアリング。また、そういった最終成果物のデータっていうのをどうやって活用するのかを考えていくような、プロダクトマネジメントやテクニカルコンサルタントといった役割もあります。

このような感じで、チームやプロジェクトなどを、それぞれのポジションがクロスしながら活動していることを理解してもらえればと思います。

Data Platform室が関わるプロダクト

プロダクトも簡単に紹介します。まずは技術スタックです。聞いたことあるものもあれば、ないものもあるかなと思います。(スライドを示して)この中でも特に緑で書いてあるものは、我々が自社、内部で作っているようなもので、黒で書いてあるのがオープンソースなどの外部のソフトウェアを利用して、我々が内部で構築運用しているものになります。

見てもらえばわかるとおり、かなりの量をオープンソースに依存しています。あとのパブリックアクティビティで見ますが、いくつかのコミッターも我々の中にはいます。やはり大規模で使っていると、なかなか経験しないようなバグとかトラブルも踏むので、そういったものを中で止めておくのではなくて、オープンソースに貢献していくこともやっています。

これはちょっと簡単な紹介ですが、我々の1つのWebツールとしては、「Yanagishima」という簡単にSQLを打ってその結果を見ることができるようなツールだったり、「OASIS」というビジュアライズダッシュボードのツールだったり、また、「Frey」と言われる、各サービスのデータベースを簡単にIU、データプラットフォームに入れるようなWeb UIを提供していたりします。

データプラットフォーム室が扱うデータスケール

データスケールですが、先ほど「たくさんデータがある」と言いました。実際にたくさんあると思います。サーバー台数でも今は5,000台を超えてきています。CPUやメモリの数でも90,000や500テラバイトという、なかなか個人では経験できないようなスケールかなと思います。

また、ストレージのキャパシティでいえば、400ペタバイト、今成長しているのですが、400ペタバイトぐらいのデータは普通に確保できるような状態になってます。

また、インカミングレコードですが、各サービスから中央集権的にIUにデータを入れています。そういったデータを入れる時のピークの時間帯で17.5メガパーセカンド。メガというのはバイト数じゃなくてレコードの数ですね。ちょっと日本語にするとどれぐらいかパッと出てこないんですが、これぐらい多いということです。

キャパシティの話は400と言いましたが、実際に使ってるのは半分以上、290ペタバイトを使っています。15万のジョブが1日に駆け回っていて、テーブルの数、だいたいログの数だと思ってもらえばいいですが、これは40,000を超えています。

こういった大きなスケールのデータセットを、マネジメントだったりを含めてエンジニア47名で管理しています。

データエンジニアのミッション

では次にデータエンジニアの紹介にいこうと思います。データエンジニアのミッションとして、LINEのコアのデータセットをリラビリティ、(つまり)信頼ができる状態でクイックにパフォーマンスよく。また、セキュアリー、安全に作っていくことが重要になります。

どういうことかと言うと、こういったところにミッションもあり技術的チャレンジもあります。リラビリティ、例えばデータが遅れていないかとか、データが間違っていないか。クオリティですね。

またデータがどこにあるかがわからない、ぐちゃぐちゃになっていると信頼性が下がるので、データディスカバリーやリネージュ。あるデータがどういうデータから作られているのか、また、あるデータがどういうデータに使われているのかみたいな依存関係を示すことをリネージュと呼んでいますが、そういったものを示すことで、データのクオリティを上げていくことです。

また、パフォーマンスです。データモデリングやクエリチューニングは当然のことながら、システムとしてのパフォーマンスやリソースの効率化も行っています。

これは何気に一番大事ですが、セキュリティです。認証認可、オーソライゼーションだったり、あとはデータのマスキングや暗号化もやっていく。こういったこともがんばればできるはずなのですが、これをより簡単にしていく。誰でもできるように、誰でも安全なデータをストアできるようにするのがデータエンジニアリングのチャレンジかなと思ってます。

データエンジニアはいろいろな観点であると言いましたが、データの種類や利用者が少ない場合はあまり問題になりませんが、LINEのような規模になってくると、実際のETL、ジョブの開発よりも、それを支えるリラビリティ、パフォーマンス、セキュリティの開発のほうがより重要になってくるという感じです。

先ほどまで紹介があったマシンラーニングの方やデータサイエンスの方がデータを使う環境に集中できるように、我々がそれを普遍的にサポートしていくことが、データエンジニアの重要な役割かなと思ってます。

(スライドを示して)このような違いがあるかなと思ってます。時間もアレなので簡単な紹介ですが、データサイエンティストは先ほど言ったとおり、よりロジックに集中していく。

一方で、データエンジニアはリラビリティやパフォーマンス、またセキュリティといったより普遍的な、インフラと言ってもいいと思いますが、より大きなスケールでいろいろ人、いろいろなデータサイエンティストが、いろいろなマシンラーニングのいろいろなサービスに使ってもらえるような、そういった広い範囲の仕事をしているということが書いてあります。

ここで重要なのが、必ずしも完全に分けられるものではなくって、クロスオーバーする領域っていうのもあるということは理解してもらえると助かります。

データエンジニアのテックスタック

(スライドを示して)テックスタックはこんなところを使ってます。これは簡単な紹介です。

「データエンジニアに興味がある方はこういうことをやっているよ」という(ことです)。例えば分散型のクエリエンジンとかスケジューラーを使いながら、コアデータセット、LINEのコアデータセットをどういうふうに作っていくか。ETL、ジョブをどのように構築していくかをやっていきます。

また、その中でデータが壊れないように、ぐちゃぐちゃにならないようなリラビリティや、安全な、必要な人がちゃんと必要なだけのアクセスをもらえるようなセキュリティの担保をしていく必要があるということです。

特にデータエンジニアはすごく技術の進歩が早くて、既存のデータパイプラインでも1年経てばかなり新しい技術が出てくる。新しい技術のキャッチアップもデータエンジニアは必要かなと思っています。

データエンジニアは、特にLINEの規模をやることで、かなり大きなスケールのデータトラフィックやデータボリューム、またはデータの種類に触れることができます。かなりいろいろなサービスを知ることができるポジションだなと思っています。

かつ、そのデータを管理していくことでLINEがどういったビジネスをしていくか、どういったビジネスにどういったデータを活用しているのかが見えてきたり、セルフサービスするにはどういった難しさ、どういったことができるのか。また、分散システム、OSSもたくさんあります。どういったものを使って我々が構築しているのかを知ることができるかなと思います。

本当はもうちょっと技術的な深いところを話そうと思ったのですが、たくさんスライドを作りすぎたので割愛します。また質問があったらしてください。

こういうスケールのデータの経験がある方は、新卒のみならず経験者の方でもなかなか多くはないです。なので基本的なアルゴリズムの考え方だったり、基本的なシステムの構築の理解だったりがあれば十分かなと考えています。

それよりもマインドセットのところですね。新しいテクノロジーを理解していく熱意だったり、自分のモチベーションや自分の責任を持つような自発性が(需要としては)強いと思います。

この理由が、先ほど言ったとおり、データエンジニアの領域は新しい技術がどんどん出てくるということです。なので、そういった新しい技術をキャッチアップしたり、「それをどういうふうに今のシステムに入れることができるかな」というような新しいアイデア、考え方だったりが重要になってきます。

なので、こういった未経験の領域、未経験のチャレンジをどんどんやっていく必要があって。(でもこういったことは)特にこういった経験のある方でも難しかったり、(そもそも)経験したことがないことが多いです。

そういったことをどんどんチャレンジ、新しいことにタックルしていくことが重要かなと思います。また、我々データプラットフォームには日本語だけではなくてかなりいろいろな国籍の方もいるので、チャットは英語だったりします。

最後、内部の資料みたいなものを見せて終わろうと思います。2021年にもLINE DEVELOPER DAYでいくつかのセッションで発表しています。

ブログも定期的に書いているし、オープンソースでも「Hadoop」や「Hive」といったコアであったり、最近では「Trino」というところにもコントリビューションしていたりします。

ぜひ興味があったら質問などよろしくお願いします。以上で、奥田からの発表を終わります。