ガジェット通信 GetNews

見たことのないものを見に行こう
  • 『ハン・ソロ/スター・ウォーズ・ストーリー』で大大活躍中! チューバッカさん直撃インタビュー:動画  
  • 『ミッション:インポッシブル/フォール・アウト』サイモン・ペッグインタビュー「ベンジーがイーサンに唯一勝てる場所」とは?
  • 大泉洋『探偵はBARにいる』シリーズへの愛を語る「“好きなんだけど映画館には行かない”だと続かない」
  • 『スター・ウォーズ/最後のジェダイ』でカイロ・レンはどうなっちゃうの? アダム・ドライヴァーを直撃!
  • 俳優・中村倫也インタビュー「女子の周りから固める恋愛作成は逆効果な気がします(笑)」
  • キアヌ・リーヴスに“仕事の流儀”を聞いてきた! 『ジョン・ウィック:チャプター2』が本日公開
  • 北野武からの出演オファーに「役者やってて良かった」 『アウトレイジ 最終章』池内博之インタビュー
  • 『アントマン&ワスプ』エヴァンジェリン・リリーインタビュー「7歳の息子がワスプになりきっているのをこっそり見てしまったの!」
  • 『パシフィック・リム:アップライジング』監督&ジョン・ボイエガに「ぼくのかんがえたさいきょうのかいじゅう」を見てもらった!
  • 『スーサイド・スクワッド』のダイバーシティを担う二人に直撃 「人間関係を構築するのに必要なこと教えよう」
  • 戸次重幸が「理解出来ないほどの悪い役」に挑む実話をベースにした物語『神と人との間』
  • 北原里英が映画主演で後輩に見せる“道”「AKB48が夢の通過点では無くゴールになっているからこそ」
  • 不潔で下劣な男に挑んだ阿部サダヲ「珍しく自分の写真を撮ったほど、別人になりきれた」
  • 『ジュマンジ』でタフな美女戦士を熱演! カレン・ギランの好きなゲームは「メガドライブ『ソニック・ザ・ヘッジホッグ3』」
  • 窪塚洋介が明かす未体験への挑戦と驚き 映画『沈黙-サイレンス-』でハリウッドデビューを飾る
  • 『マイティ・ソー バトルロイヤル』女戦士・ヴァルキリーを熱演! 声優・沢城みゆき「ロキ様ファンの方お友達になってください!」

体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

「地味だけど、面白い!」―LINE・NTTエンジニアが語る、日本を支える大規模JVM運用の舞台裏

一般的な社内向けシステムだと、業務アプリケーションの特性上アクセスが一気に増えるとか変わるとかいうことはあまりないので、メンテナンス期間を設けて1ヶ月に1回落とすような方法も取ったりしていました。いろいろな方法がありますが、LINEさんはどういうやり方なんですか?

鶴原:メインのアプリケーションサーバはTomcatで動いていて、デプロイのためにほぼ毎日再起動はしています。過去にGCが問題になったときはタイミングを見計らってリスタートといったことも、したような記憶があります。HBaseの場合はデータストアなので難しいところはあるんですけど……。

久保田:データベースの仕組みのなかには落とせない部分がありますもんね。

鶴原:Elasticsearchとかもそうだと思うんですけど、データベースをJavaで書くっていうとやっぱりGC問題が最後に立ちはだかるんですよね。

久保田:HBaseのトラブルはどんなものがありました?

鶴原:CMS GCの頃なんですけど、HBaseが内部的にすごく大きいオブジェクトを繰り返しつくってしまって、Full GCが走って止まってしまうってことがありました。

そのときはHBaseのパラメータを調整して解決しましたが、アプリケーション側でHBaseが得意ではない形のデータを作ってしまっているなど、そもそもの原因がアプリケーション側にあるということも多かったですね。

久保田:運用を重ねていくと、どういうオブジェクトが苦手だとか傾向がだんだんわかってきますよね。アプリケーション側の開発者とのノウハウの共有はどうやっていますか?

鶴原:私たちはHBaseを運用するチームがHBaseを使うアプリケーション側の開発も担当しているので、実は同じ人が書いているんです。なのでお互いコードレビューベースで「この形は危なそう」と共有する形ですね。

久保田:それはいいですね。

社内を横断する技術共有の仕組み

久保田:メトリクス(※)の監視なんかはどういう方法でやっていますか?

※メトリクス…データを収集して管理に使えるよう計算や分析を加えた評価指標

鶴原:アプリケーションサーバ内で発生するいろいろなメトリクスは、内製のモニタリングツールを使って監視しています。例えば「毎秒このくらいメッセージが送られている」とか「このAPIが何回コールされている」とかは、ライブラリを組み込んでAPIを呼んでおけば勝手にカウントしてサーバで呼んでグラフで見れる、という風になっています。

HBaseプロセスそのものの監視もいろいろやっていて、プロセスメモリの使用量、書き込みリクエストの秒間量などの監視にPrometheusを使っています。HBase自体がJMX(Java Management Extensions)でメトリクスをエクスポートしているので、PrometheusでJMXを読みにいって集めて、Grafanaで表示するようになっています。

久保田:Prometheusといえば、LINEエンジニアの湯川さんがブログで紹介したりPrometheus Casual Talksというイベントを開催したりしていますよね。

鶴原:そうなんです。実は湯川さんにPrometheusを紹介したのは僕なんですよ(笑)社内Wikiに書いたら湯川さんが興味を持って、あっという間に広めていてすごいなーと。

久保田:インフラのプロセス監視は全てPrometheusで統一しているんですか?

鶴原:全然、全社的な統一ではないです。LINEゲームアプリのバックエンドチームや統計解析専用のチームなど、他のHBaseを使っているチームでもそれぞれ違うモニタリングシステムを持っている状態です。

久保田:HBaseを担当しているチームがいくつかあるんですね。サービス、製品ごとにチームが分かれていて、それぞれにたまたまHBaseを選択したということですか?

鶴原:そうですね。ただ現状だと共有できていなくて無駄な部分もあるので、横断的に使えるように社内クラウドのようなものを整備しています。まだ完成していないんですが、いつかみんな共通の使い方でHBase対応にしたいなーという夢を抱いてます。

チャレンジを続けるための課題

久保田:社内でHBaseを広めていく過程で、現状課題だと思っているのはどんなことですか?

鶴原:大きくいうと2つあって、1つはやはり人手が足りないという問題と、もう1つはHBaseのバージョン問題ですね。2017年のLINE DEVELOPER DAYでも発表したんですけど、まだHBaseの古いバージョンを使っている部分があって、これまでのノウハウはそちらに偏ってしまっているんですよ。

過去1年くらいを通してHBaseのアップグレードをやってきて、ようやくこれから社内に広められるかなというところです。ただHBaseはやはりMySQLほど広く使われている技術ではないので、未踏のバグもまだ結構あるんですよね。

⇒ 参考:HBASE AT LINE 2017 – LINE DEVELOPER DAY

久保田:我々も過去にはJVMのバグを結構踏みましたね。バグを修正してOSSに貢献してという。

鶴原:そうですね、基本的に見つけたバグは貢献しています。ただ私のチームは5、6人で2000台くらいのサーバを見ているので、トラブルが起きるとそれを調べるだけでかなり時間を使ってしまうんですよね。クリティカルなバグが生じることもあるので、アップグレードもバックグラウンドでロードだけかけるようなことを半年間やったりして……慎重に進めてます。

久保田:うーん、それは人が足りないなあ(笑)我々の部隊も特殊な分野なので、なかなか難しいです。JVMではあるんですけど、コアまで見ているので実はJavaはほとんど書かなくて、メインはCやC++です。そもそもやりたいという人を見つけるのが難しい分野ですね。

最近はGoogleが提唱した「SRE(Site Reliability Engineering)」という表現がすごくいいなと思っていて、内容についてもそうですがなにより一見地味だけどすごいことやってるぞ、というのがもっと伝わればいいなと思っています。

鶴原:SRE、かっこいいですよね。久保田さんは社外での発表を積極的にされていますが、やはり魅力を伝えたいというモチベーションが大きかったんでしょうか。

久保田:最初に始めたときは、知識を全社的に底上げしたいという目的でした。サンフランシスコのJavaOne 2014での発表も、HeapStatsを開発したタイミングで「せっかくだからCFP(Call For Paper)出してみよう」と出したら思いがけず通って、結構バタバタしていました。継続的にやると名前を覚えてもらって結果的に、ということはあるかもしれません。

鶴原:私たちの仕事も基本オンプレなのでホットなクラウドの話題とは少し離れてしまうところがあるんですが、ならではの面白さをもっとアピールしたいと思ってます。

久保田:オンプレならサービスに合わせてマシンをカリカリにチューニングしていくのがかなり面白そうだなと思っています。

JVMの中に手を入れて、サービスをより効率良くぶん回して、性能良くして、1つ1つのプロセスの負荷をすごく低くしてという感じで……。私もサービス運用したいなって少し思います(笑)。

鶴原:実際にちょっとした最適化でマシンが半分で済んだり、全然ある話ですよね。チャレンジできる戦場があるのは嬉しいことです。

進化を続けるJavaへの期待

鶴原:我々は一昨年くらいにJava6からJava8へ移行したんですけど、すごくいいなと思っています。私はもともとPerlのようなLL言語でサクサク作るようなタイプだったので最初にJavaを触った時は結構モッサリしているイメージを持っていたんですけど、Java8ではLambdaがエラスティックにいろんな問題を解決しつつ、Lombokとか使って堅いJavaからは脱却したのかなと。

Java10のProposalを見ても、最近のKotlinやScalaのいいところがまたJavaにも入ってきて、Javaそのものが堅牢で実用的な言語になっていくんだろうというイメージを持っています。

久保田:言語としての使いやすさはかなり良くなっていますよね。私自身はいろんな機能や便利な部分をどんどん取り込んでリリースサイクルが早くなることは歓迎です。

ただJavaを使う多くの人が求めているだろうことは「非互換性が極力ないこと」で、「変わらないこと」がいいところでもあったんですよね。NTT含め多くのSIerでは、開発より運用の期間がずっと長くなる。非互換性がないことでソースコードがそのまま使えると。

Java8や9の非互換性を調査しているんですけど、細かいところは結構変わっています。良くも悪くも、運用のコストが高くなるのは確かだと思います。基本はLTS(Long Term Support)なので、開発者としてはJavaの進化は素晴らしいと感じていますけどね。

鶴原:最近Javaそのものが良くなってきていて、Java回帰のような流れがあるのかなと思っています。コミュニティやユーザの成熟度も群を抜いて高いので、Javaが良くなってくれることは嬉しいですね。

久保田:言語としての進化が早くなりましたよね。最近はGCの種類が増えてきたので調査をしているんですけど、JVMは新しいGCが導入されるのが早い印象ですね。今後3つほど新しいGCが入ってくる予定ですし、その一つのZGCはOracleラボで研究されたいろいろな調整が取り込まれそうだなと。

HBaseも、新しいGCになったらどうなるか調査をして、GC戦略をいろいろと考えてと、面白くなりそうですね。

鶴原:そうですね。私も期待しています。

【対談者プロフィール】

LINE株式会社 LINE開発1室 鶴原 翔夢(つるはら・とむ)氏
2013年にLINEに入社後、メッセージングサービスのサーバーサイド開発者として、主にHBaseと関連するプロジェクトに多く携わる。


日本電信電話株式会社 OSSセンタ 久保田 祐史(くぼた・ゆうじ)氏
Javaの調査検証やコア解析からシステムパフォーマンスチューニングまでこなすテクニカルサポートエンジニア。OpenJDKへの貢献(OpenJDK Author, icedtea Committer)やDuke’s Choice Award 2016を獲得したJavaトラブル支援ツールHeapStats の開発にも携わっている。

●著者プロフィール

dotstudio ちゃんとく
大学までは文系で法学を学んでいたが「モノを作れる人」に憧れて知識ゼロからエンジニアに転身。本業ではPHPでWebサーバサイド開発を担う傍ら、テクニカルライターとしてdotstudioに参加している。Node.jsユーザグループ内の女性コミュニティ「Node Girls」を主催。趣味の電子工作では日本最大のIoTコミュニティ「IoTLT」で体当たり電子工作を発表中。
Twitter: @tokutoku393 / dotstudio, inc.

前のページ 1 2
CodeIQ MAGAZINEの記事一覧をみる
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。