Interviews/

大須賀 敦俊 / データエンジニア

自己紹介をお願いします
Data Engineeringセンター Data Platform室 IU Data Connectチームの大須賀敦俊です。サーバーサイドエンジニアとして、Information Universe(以下、IU)というデータ分析基盤にデータを取り込むシステムの開発・運用を担当しています。

LINEを就職先の選択肢に入れたきっかけは、夏のインターンシップに参加したことです。LINEは国内でトップクラスにユーザー数の多いサービスを有しており、かつ膨大な数のサーバーを運用しています。その規模の大きさに魅力を感じて、インターンに応募しました。

インターン時代には、メッセージ関連のストレージの開発・運用をしているZ Partチームで働きました。そのとき、社内がとてもオープンな雰囲気で、自由に意見を言える環境であることに驚きました。当時の私はインターン生で、当然ながら他のメンバーよりもエンジニアとしてのスキルは低かったはずです。それにもかかわらず、私が意見を述べるとメンバーたちが真摯に聞いてくれました。遠慮せずに発言できる空気感がありました。それから、本当に膨大なトラフィックやデータを扱っているからこそ、他社ではなかなかできない貴重な経験ができます。その点もおもしろさを感じました。

現在、私が担っているのはデータエンジニアリングという領域ですが、インターン時代にはそんな技術領域があることを全く知りませんでした。ですが、LINEに入社してこの仕事ができて本当に良かったと感じています。
業務内容や具体的な流れを教えてください
私たちの業務内容は、LINEのあらゆるサービスやサーバーから発生するログをLINEの分析環境に保存して、分析できる状態にすることです。詳細例を述べると、各サービスやサーバーから発生するログをApache Kafkaに保存し、Apache FlinkによってそれらのデータをHDFSやElasticsearchに保存するパイプラインを構築しています。それから、LINEの各種アプリケーションのログを収集するためのAPIサーバーを運用なども行っています。

具体的な業務を挙げると、私は今KafkaからElasticsearchにデータを移動する部分のアーキテクチャ変更プロジェクトを担当しています。もともと、このシステムはKafka Streamsで構築されていたのですが、運用上の課題がいくつも発生していました。

たとえばスケーラビリティの課題があります。Kafka Streamsは、KafkaのI/Oの処理とレコードのプロセッシングなどCPUヘビーな処理が、パイプラインされずに同一のスレッドで実行される設計になっています。その影響で、Kafkaではもっと1つのパーティションでデータが流せる余裕があるのですが、KafkaとElasticsearchの接続部分でパーティションを処理する能力が足りなくなり、パイプラインが詰まることがよく起きました。そこで、Apache Flinkを使って別スレッドに分散して処理することで、その課題を解決したいと考えました。

私たちのチームでは四半期ごとに、今期に取り組むことを決めるミーティングを行っています。その集まりで前述のプロジェクトを提案し、他のメンバーやマネージャーの承認を得てプロジェクトを開始しました。現在、チームメンバーとともに再構築・再実装に取り組んでいます。

他には、兼務先のチームでLINEのクライアントログを収集するシステムを開発・運用しています。LINEは以前、クライアントログの収集システムとしてTSとWTSの2つを用いていました。TSはLINEのネイティブアプリの、WTSはWebアプリのデータ収集を行うものです。それらをUTSという収集システムに統合するプロジェクトが立ち上がりました。

私はUTS向けのAPIの設計・開発を担当することになりました。LINEアプリ側のJavaScriptやSDKからAPI経由でログ情報を投げてもらい、APIサーバーがApache Kafkaに情報を書き込みます。その先は、IU Data Connectチームのシステムを用いて、データをランディングしていく構造です。このプロジェクトでは、サーバーサイドエンジニア同士でお互いのコードをレビューしながら、開発を進めていきました。

新しいプロジェクトは往々にして少数のメンバーで始まるので、その時はAPIサーバーの開発者は2人ぐらいでした。GitHub使ってプルリクエストをお互いにレビューしながらという、よくあるサーバーサイド開発のフローで業務を進めていました。

案件やその難易度や優先度によって、担当者の数や進め方は適切にチューニングされています。自分がやりたいことは手を上げることでやらせてくれますし、必要性をちゃんと伝えると自分発信でプロジェクトを始めることもできる組織だと思っています。
仕事を進める上で、意識していることはありますか
仕事を円滑に進めるためにという観点だと、個人的にまず気をつけているのが、その日のはじめに今日やるべき作業を書き出すことです。私たちのチームは運用しているサーバー台数が非常に多く、かつトラブルシューティングの作業がよく発生します。

割り込みで急ぎの対応をした後に、もともと取り組んでいた作業に戻ることが頻繁にあります。何かしらのメモがなければタスク管理が大変ですから、実施すべき作業をあらかじめ書き出しています。また、ターミナルで入力したコマンドのログを残したり、オペレーションの内容や意図をメモに書いたりと、作業記録をつけて再利用可能にすることも重要です。

自分自身のスキルアップやチームへの貢献のために大切にしていることがあります。それは、システムがなんらかの理由で意図した通りに動かない場合、必ずその理由を深く追求して根本原因までたどり着くことです。上手く動かないということが、比較的頻繁に発生する領域の仕事だと思っていて、動かない部分を回避して動かすような方法もあるとは思いますが、動かない根源の理由をちゃんと調べることは意識しています。それがコードを読むことなのか、ドキュメントを読むことなのか、他のやり方なのかは場合によりますが。

何か問題を解決して単純にそれで終わりではなく、再発や頻発、他の部分に影響するかもしれないと、正しく疑える心を持って臨むことが大切だったりします。何か障害が発生した時に、仕組みとして解決できる方が絶対に建設的だと個人的にも思っていますし、チームの中でもそういう雰囲気や意志があると感じています。

私たちはLINE全社のプラットフォームとなる特にコアなシステムを扱っており、その安定性を支える大きな責任があります。だからこそ、根本の原因を突き詰め、抜本的に解決する姿勢が求められていると思います。

それから、普段のコミュニケーションで物腰柔らかく対応することですかね。私はわりと無表情なタイプで、意図せず相手に冷たい印象を与えてしまうことがあります。もしも、私が淡々とした口調でものを言うと、他の人を緊張させてしまうかもしれません。なるべく円滑なコミュニケーションができるように意識しています。
おもしろいことや難しいことなど、働く中でこれまでに得た感触を教えてください
先ほど述べたことに通じますが、私たちの取り扱っているシステムでは原因特定が難しい障害が起きることがままあります。たとえば、本番環境のトラフィック量で1か月くらいシステムを動かして、ようやく再現するような不具合もあります。そうした課題は解決が難しく、大変だと感じる一方で同時に仕事のやりがいにもつながっています。

チームとしての課題は、メンバーが徐々に増えてはいるものの、まだまだエンジニアが足りていないことです。やりたいこと、やるべきことがどんどん増えていく領域だと思うので、今後も継続的にメンバーが増えるといいなと思います。採用以外では、自動化によって運用タスクを軽減していくことも大事だと思います。完全な自動化は難しいこともありますが、運用タスクを実施するときには、スクリプトを書いて再利用できるようにすることを意識しています。

コードを書くことで業務改善を行った具体的な事例を紹介します。IU Data Connectチームでは、他のチームからテーブルのスキーマ情報を受け取り、その情報をもとにHDFSのテーブルを作ったり、Elasticsearchにマッピングを設定したりすることがよくあります。そういった業務の特性上、他のチームからのレビュー依頼がとても多いです。

こうしたスキーマの新規作成や変更などを、以前はすべてを人の目でチェックしていました。しかし、この方法では作業工数が大きくなってしまいますし、ミスが起きる危険性もあります。そこで、独自のlinterを作成することで、スキーマ変更のリスクなどを機械的にチェックできるようにしました。特にスキーマ変更周りは、破壊的になってしまうものを見逃すと、結構な事故につながる可能性もあるので、そこをなるべく仕組みで解決したかったんです。私たちのチームは常に「システムで解決できることはないか」を考え続けていますね。

この環境で働いたことで、エンジニアとしてスキル向上できました。膨大な量のデータやトラフィックを扱うシステム特有のノウハウを得られましたし、コードを読み書きする力やプログラムのデバッグ能力も上がったように思います。
LINEに入社して良かったと感じることはなんですか
同僚が協力的なところです。先日、深夜帯に障害が発生したことに気づいて対応していたところ、チームメンバーが自発的に参加して一緒にトラブルシューティングをしてくれました。これ以外にも、普段の業務の中で「仲間が困っていたら助ける」というメンバーのマインドを感じる場面は多いです。

それから、周囲にいるエンジニアのスキルレベルが高いことも挙げられます。先ほど述べた障害の対応策を考えていた際、自分は「正攻法で直すのは大変」だと考えており、解決策を決めあぐねていました。ですが、同僚がより良い方法をすぐに考えてくれたんです。一緒に働くメンバーに対して「この人たちは聡明だな」と感じる場面がよくあって、知見として学ぶことや姿勢としていい刺激になることが多いです。今後も目の前の業務に真摯に取り組み、課題を一つひとつ解決しながらスキルアップしていきたいです。人格も技術も、模範的なエンジニアになりたいと思っています。
最後にメッセージを
LINEは魅力的なメンバーで構成されている会社ですから、興味があればぜひ志望してほしいです。そして、よかったら働く場所として、Data Platform室を候補に入れてください。冒頭で述べましたが、データエンジニアリングという領域はとても魅力的な技術領域です。「膨大な量のデータやトラフィックを扱うこと」に魅力を感じる人が、この職種に向いています。

さらに言えば、データエンジニアリングの専門家は世の中に少ないため、スキルとしての希少性もあります。そして、LINEはまさにデータエンジニアリングの醍醐味を味わえる環境です。これほどの規模のシステムを扱える環境は、国内ではなかなかありません。エンジニアとしては本当に挑戦しがいのあるものだと思います。