LINEで働くエンジニアに色々と話を聞いていく「LINE Engineer Insights」。LINEの技術組織で働く個々人に、何を重視して技術者としてのキャリアを歩んでいるのか、今LINEで何に取り組んでいるのか、今後実現していきたいことなどを聞いていきます。
今回登場するのは、LINEのMessaging Platformのサーバーサイド開発者として、これまで主にHBase関連のプロジェクトに携わってきたZ Partチームのシニアソフトウェアエンジニア鶴原翔夢。「LINEは大規模なサービスだからこそ、ここでしか出会えないトラブルや大変さがある。それらを解決していくことで、エンジニアリングのスキルを向上させてきた」と彼は語ります。
今回は鶴原にHBaseに触れた経緯や仕事のやりがい、今後の目標などを聞きました。
サービスの規模が大きいからこそ経験できることがある
──鶴原さんのこれまでの経歴についてお聞かせください。
工学修士号を取得し、新卒で各種ITサービスを運営する企業に入社しました。そして、サービスやAPIの開発に携わった後、主にサービスの運用を担当する部署で働きました。その部署ではデータベースの運用やサーバーのプロビジョニング、アプリケーションのデプロイツールの開発などをしました。
当時のLINEはサービスが急成長している時期にあり、パフォーマンスなど各種の課題を解決する必要がありました。LINEならばエンジニアとしてチャレンジできると考えて、2013年に入社を決意しました。
入社後はLINEのメッセージングサービスのサーバーサイドエンジニアとして、HBaseを中心としたデータベースアクセス層まわりの開発・運用を担当しています。
──LINEで働く魅力について教えてください。
やはりサービスの規模が大きいことです。アジアで展開しているサービスではトップクラスの規模のトラフィックを処理しているため、LINEでしか起きないようなトラブルや大変さがあります。検索してもインターネット上には解決方法が載っていないような、非常に難易度の高い課題です。
自分たちで各種のログやメトリクスを見たり、OSSのコードを読んだりしながら、仮説を立てて検証や改修していくことが求められます。そういう仕事をしていると「世界で他に誰も解いたことがない面白い問題を、自分が一番最初に解けるかもしれない」と感じることがよくあって。エンジニア冥利に尽きます。
──LINEのメッセージングサービスではどのような箇所でHBaseを使用しているのでしょうか?
各種ユーザー情報やグループの名前、メンバーのリスト、メッセージ本文など、メッセージングサービスのコアとなるようなデータは大体入っています。こうした情報はRedisとHBaseの両方に格納されており、メインのストレージとしてRedisを使いHBaseをバックアップ的な位置付けにしている箇所が多いです。ですが今後は、HBaseをメインのストレージにし、Redisをキャッシュとして用いるような構成へと順次変えていく予定です。
──Z Partチームの中でも、鶴原さんは特にHBaseに詳しいエンジニアなのだとか。
そう言っていただけると嬉しいですし、最近ではHBaseスペシャリストと言われる機会も増えましたが、実は私自身はHBaseを専門的に極めようと決心したことは一度もありません。今後の業務の中でHBase以外のことをやっても構わないと思っています。
目の前にやりがいのある問題が転がっているので、それを夢中で解き続けていたら、いつの間にかHBaseのことに詳しくなっていました。ただ、それだけなんです。
数々のプロジェクトが自分を成長させてくれた
──鶴原さんは何をきっかけにHBase関連の開発・運用に携わるようになったのですか?
前職のキャリア後半でデータベース関連の仕事をしていたので、その領域に強いだろうと、LINEに入社してからHBase関連の仕事が割り当てられました。ですが前職で扱っていたのはリレーショナルデータベースだったのでHBaseとは性質が違い、過去の経験が直接的に活かせたわけではありません。
さらに、HBaseやLINEの大部分のサーバーサイドのシステムはJavaで書かれていますが、当時は業務でJavaを書いた経験がほぼなく、そのキャッチアップも必要でした。入社当初はとにかくたくさんの書籍や論文を読んで、必死にHBaseやJavaの勉強をしていました。
当時、非常に手厚いサポートをしてくれたのが、現在もLINEでフェローとして働いているチョルホさんという上司です。何か不明点があるときにはいつも、学び方についてのアドバイスをくれました。本当に感謝しています。
──これまで各種のプロジェクトに携わってきた中で、特に印象に残るエピソードはありますか?
入社して1年経たないくらいの頃、あるデータをHBaseに保存するようにシステムを変更してリリースしたところ、HBaseが高負荷の状態に陥り、次々とサーバーがダウンしたことがありました。焦りましたね。急いでロールバックした後、チョルホさんや同僚と一緒に調査を進めました。
すると、HBaseがシステム内部で用いているブルームフィルタというデータ構造がJavaのJVMのランタイムの中に巨大なメモリチャンクを作り、GC(Garbage Collection)の問題を引き起こしていることがわかりました。それが、LINEの業務で最初に経験した本格的なトラブルシューティングでしたが、調査の過程はすごくエキサイティングでした。原因がわかったときの「これだ!」という感覚は今も覚えています。
他には、HBaseのバージョンアップを行ったエピソードが印象に残っています。これは過去にLINE DEVELOPER DAYでも発表しました。データベースのバージョンアップをする場合、通常はサービスをメンテナンス状態にしてユーザーからのアクセスがない状態で作業を実施します。しかし、LINEはその特性上、サービスを停止するわけにはいきません。
HBaseは無停止でバージョンアップできる機能が備わっているため、普通はその機能を用いれば事足ります。しかし、当時LINEで用いられていたHBaseのバージョンが相当に古かったため、当時使っていたバージョンと最新バージョンとの差が大きすぎて、その無停止でのバージョンアップ機能が使えませんでした。
そのため、長い間バージョンアップできずにいましたが、2015年ごろに一念発起してプロジェクトを進めることを決意しました。自分たちでHBaseのソースコードを読みながら調査し、バージョンアップのための独自の方法を考え出しました。実際にHBaseのバージョンアップに成功したときには、非常に感慨深かったことを覚えています。
仕事と家庭を両立させるための考え方
──鶴原さんは家事・育児と仕事の両立を大切にしていると伺っています。
2016年に双子が生まれまして、その頃はすでに2人の娘がいたので4人の父親になりました。当時はまだ上の子たちも幼く、それぞれ4歳と2歳でした。その状況では妻が1人で育児をするのは物理的に無理ですから、私も家事や育児を担うことを決めました。
──エンジニアとして働きながら家事や育児をするのは大変そうです。
前職に勤めていた頃は、仕事から帰宅した後もよく技術書を読んだりコードを書いたりしていたんですよね。エンジニアリングが完全に趣味の延長でした。ですが、家庭のことを大切にすると、当然ながらそうした時間は大きく減ります。
正直なところ焦りや不安がありました。「エンジニアはプライベートな時間でも技術のことを学ぶべき」という風潮があるじゃないですか。過去と比べて勉強できる時間が減ったので、「このままでは技術の流行についていけなくなるんじゃないか」と葛藤が続きました。
ですが、あるとき踏ん切りがついたんですよ。必ずしも勉強する時間が多ければいいわけではない。限られた時間だとしても、自分なりにできることをやってみようと思いました。それに、家族と向き合う時間が増えたことによって「自分が真の意味でやりたい仕事は何なのか」を徹底的に考えるようになり、集中的に力を磨く領域が明確になりました。
結果的に、家事や育児をするようになってから何年が経っても、不安に思っていたようなことは起きませんでした。もちろんそれは、家族や同僚がサポートしてくれたから、という側面が大きいです。
この経験から、漠然とした不安や焦りというのは実はあまり実態のないものであり、日々の業務の中で課題と真摯に向き合えば、決してプライベートな時間をたくさん勉強に割かなくてもエンジニアとして成長できることを学びました。
LINEのデータプラットフォームをさらに進化させる
──データベース関連の開発・運用業務の魅力とは何でしょうか?
データベースはいわゆるミドルウェアと呼ばれる領域のシステムで、ユーザーに使ってもらうアプリケーションを支える土台の役割なんですよね。だからこそ、データベースのパフォーマンスや信頼性などを改善すると、これに依存する全てのアプリケーションの改善につながります。それほどインパクトの大きい仕事です。
逆に言えば、データベースが利用不可能になるとクリティカルな障害が起きる可能性がかなり高いため、シビアなプレッシャーとの戦いでもあります。そういうエキサイティングなところが本当に面白いです。
加えて、ミドルウェアはアプリケーションだけではなく、よりシステムの下層に位置するハードウェアやOSなどとの連携も行います。システムの上層から下層までを適切に理解しながら、パズルのように設計・実装を考えていくところが、データベースを扱う面白さなのかなと思います。
──これから業務の中で挑戦したいことを教えてください。
HBaseはいわゆるNoSQLと呼ばれるデータベースです。NoSQL系の各種ソフトウェアは、リレーショナルデータベースが抱えていた限界や制約を乗り越えるために登場したという歴史的な経緯がありますが、当然ながらNoSQLのデータベースにもできること・できないことがあります。だからこそ、今後も積極的に技術的なチャレンジをしたり、新しいソフトウェアを導入したりして、LINEのデータプラットフォームをより良いものにしていきたいです。
私たちのチームでは、一緒に働くメンバーを募集しています。
少しでもこれらの取り組みに興味があれば、気軽にお声がけください。