「地味だけど、面白い!」―LINE・NTTエンジニアが語る、日本を支える大規模JVM運用の舞台裏
大規模なJVM運用の共通点
――お互い間接的にご存知だったそうですが、初対面ということでまずは自己紹介からお願いします。
鶴原(LINE):私はLINEアプリのメッセンジャー機能のバックエンドの、アプリケーションサーバの開発をしています。LINEのサーバーサイドはJavaで書かれていて、多くの部分でHBase(※)を使用しています。私はHBaseの運用や、HBase周りのアプリケーション開発担当です。
※HBase…Apache HBase。JVM上で動作するNoSQLデータベース。

久保田(NTT):私はNTTグループ会社向けにOSS製品の技術サポートをする「OSSセンタ」という組織で、OpenJDK、JVM、Java中心にサポートする部隊のサポートリーダーを務めています。運用自体はしていませんが、困りごとを解決したり、現地に行って解析したり、パフォーマンスチューニングをしたりと。
トラブルシューティングのための情報収集を行う「HeapStats」というOSSのJVM解析支援ツールの開発にも携わっています。

鶴原:全国のNTTグループ全てのサポートをされているんですか?
久保田:対象は全てではあるのですが、グループ会社の中でも主にSIerを中心にサポートを提供していますので、想像されているよりは少ないですね。なので、サポート対象はそれほど多くないです。
サポートも一度手を入れると現地できちんとノウハウ化されるので、問い合わせ自体減ってきました。5年前のサポートはすごく忙しかったけど、最近は割と余裕があるなあという感じがあります。
鶴原:トラブルを解決しつくしたってことですか、すごいですね(笑)。問い合わせ内容はどういうものが多かったんですか?
久保田:社内でのサポートに加えて社外でもJavaの困りごとを伺う機会が多いんですが、やはりGC(Garbage Collection)周りの相談がほとんどです。GCは初歩的な部分がわからないと、何をしたらいいか全然わからないところなんですよね。
鶴原:HBaseでもGC周りのトラブルは多いです。HBaseはデータベースなので、そこでStop The Worldが起きてしまうとアプリケーションの性能に大きく影響を与えてしまうんですよね。最近はHBaseのアップグレードやG1 GCへの切り替えでトラブルは減ってきましたが、障害が起きてしまったこともありました。
その時々で適した技術をチョイスする
久保田:そもそもなぜデータベースにHBaseを選択されたんですか?
鶴原:LINEアプリの立ち上げ当初はMySQLとRedisなどで作られていたんですが、ある日香港から大量のユーザ登録があって、そのときにMySQLの書き込みがボトルネックになりました。これをスケールさせないといけないということで、当時MongoDBやCassandra、HBaseなどでベンチマークをとったり使用感を試したりして、HBaseが我々の規模のスケールに対して有効そうだということで採用されました。
とはいっても時代によっていろいろな技術の変遷があるので、絶対にHBase、というわけではないです。いま一部ではCassandraを入れて試していたり、その時々で適したものをチョイスしています。