Elastic{ON} 2017 参加レポート

はじめに

こんにちは。LINEでモニタリングシステムの開発を担当しているソフトウェアエンジニアのLee Jae Jinです。今回の記事では、会社のサポートを得て参加した「Elastic{ON} 2017」カンファレンスに関する感想をお届けします。LINEは、開発者のカンファレンス参加を積極的に支援しています。前半では写真を交えながら現場の様子をお伝えし、後半では個人的に興味深かった参加したセッションについて簡単な説明を付け加えたいと思います。

Elastic{ON} 2017の概要

現場の様子

「Elastic{ON} 2017」カンファレンスは、2017年3月7日から同9日にかけて米サンフランシスコの「Pier 48」で開催されました。Pier 48はAT&Tパーク付近にある埠頭倉庫風の建物で、世界中から2,000人以が出席する規模の大きなカンファレンスでした。
Elastic Stack、中でもElasticsearchとKibanaは、LINEでも様々な目的で利用されています。私が開発を担当しているモニタリングシステムでもイベントの保存、解析、視覚化の際にElastic Stackを利用しています。以前は単にイベントを取得するだけで解析や視覚化の機能はありませんでしたが、Elastic Stackのお陰で考えていたより簡単にそれらの機能を実装することができました(Thanks Elastic!)。しかしながら、運用していく中で問題解決に手こずったこともありましたし、これからElastic Stack 5.xへのアップグレードが予定されていることもあって、他のユーザの経験や解決策、新たに追加される機能などについてお話を伺った上で効果的な導入方法を模索したいと思い、参加することとなりました。

それでは、会場の様子から手短にお伝えします。
まず、会場に着いて参加パスを受け取りました。会場は思っていたよりも広く、中にはプレゼンテーションホールやAMA(Ask Me Anything)コーナー、他社のPRブース、そしてElastic社のプロダクトを体験できるブースなどが設営されていました。

カンファレンス全般に関する案内は、Elastic社が提供するアプリから簡単に確認でき、通知機能もありました。アプリではタイムテーブルをチェックして自分の聞きたいセッションをあらかじめ指定したり、食事メニューなど様々な情報を確認することができました。他にも、参加者が写真や書き込みを自由に投稿・共有してタイムラインのように活用できるなど、アプリから様々な機能が使えたのは非常に便利だったと思います。

Elastic{ON} 2017に参加する前から仲間たちよりカンファレンスTシャツを入手してきてとお願いされていたのですが、残念ながらポリシー上Tシャツの配布は一人一枚までと決まっていました(皆さん、ごめんなさい!)。Tシャツは出来合いのものをそのまま配るのではなく、自分が選んだ柄を生地にプリントしてくれるというなかなか面白いシステムで制作されていました。プリントはElastic社のスタッフの方に直接やってもらいました。プリント作業中、その方は私がLINEの社員であることに気づくと「自分は日本人の友だちとLINEで連絡しあっているよ。Very good product!」と褒められ、嬉しい気持ちになりました。

会場はElastic社指定ホテルから車で約20~30分のところにあり、参加者への配慮としてシャトルバスを定期運行していました。後述する水曜夜のパーティ会場へ移動する際も、このシャトルバスを利用しました。

水曜日の夜は、カリフォルニア科学アカデミーにてカンファレンス参加者のためのパーティが開かれました。こぢんまりとしたパーティをイメージしていたのですが、行ってみると豪華な食事とお酒を振舞われ、 パーティ会場自体も見所満載でした。あるホールには本物の白いワニが動いていて、別のところには水族館や珍しい鉱物が展示されているなど、パーティになかなか馴染めないシャイな人でも会場を見歩きながら楽しい時間を満喫できるようになっていました。

カンファレンス会場に参加者のための食べ物や休憩スペースが充分に用意されていたことは評価したいと思います。ただ、いくつか残念な部分もありました。まずは、セッションが行われたホール周辺の防音が不十分だったこと。そのため外部の雑音に邪魔され発表者の声が聞き取れないこともしばしばありました。また、会場内はやや冷え込んでいて、サンフランシスコについて間もなく風邪を引いてしまった自分にはことさら身にしみる寒さでした。水曜夜のパーティもとても素敵で華やかだったのですが、会場がホテルからシャトルバスなしでは行けないくらい遠いところにあって、バスに乗るために行列に並んで長時間待たされたこともありました。次回開催ではこうしたところは改善されると尚よいですね。

各セッションについて

Elastic{ON} 2017には様々なテーマのセッションが準備されていました。その中から自分が参加して有益と思ったいくつかのセッションについてお伝えします。

まず最初に、オープニングKeynote開始前、突然一人のバレリーナが壇上に上がるとバレエを踊り始めました。まるでElastic Stackのプロダクトラインナップの一つであるBeatsとそれの視覚化を強調するかのように、バレリーナの動きに合わせてビートがグラフ化していく様子はとても印象的でした。そしていよいよ、Elastic{ON} 2017は開幕しました。

Opening Keynote

Elasticsearchの生みの親で、現在はElastic社CTOのシャイ・バノン(Shay Banon)氏によるセッションです。序盤でElastic Stackが広く採用されていることを数字やチャートで見せてもらい、今後Elastic Stackから新たに公開される技術についての簡単な説明が続きました。冒頭で印象深かったのは、Elastic Stackのリリースが行われるたびに、全プロダクトのバージョンを統一してリリースしているという部分でした。現に私自身も開発を行いながら次々とバージョンアップしてリリースしていますが、関わりのあるすべてのプロダクトのバージョンを揃えてからリリースすることは、実はなかなか大変なことです。そういうところまできっちり守りながらリリースしているということは、つまりそれだけプロダクト管理が徹底しているということですね。すごいと思いました。

後半では、新機能に関する簡単な紹介が続きました。各々の機能に関するより詳細な説明は別途のセッションで行われたのですが、本記事のセッション紹介の最後に全体セッションのURLリンクが張ってありますので、ご興味のある方はそちらをご覧ください。個人的な想像ですが、もし自分が開発したプロダクトがいつの間にやらたくさんの付加プロダクトで構成されたStackとなり、一つ一つのプロダクトがどんどん進歩して、その優れた性能について数千人を前に紹介できるとしたら、どれだけ誇らしく嬉しいことか。そう考えると、そのときバノン氏は世界一幸せな人だったのかも知れませんね。最後のところでは「Elastic Cause Awards」といって、Elastic Stackを利用して現実社会の問題解決に取り組んでいる団体に対する授賞式も行われました。受賞したプロジェクトにElastic Stackがどのように適用されているかについては、クロージングKeynoteで紹介されています。

What’s Evolving in Elasticsearch?

このセッションでは、Elasticsearch 5.xへのバージョンアップに伴って変更された部分、そしてバージョン6.0でさらに追加される部分について紹介されました。たくさんの変更点のうち、まずはバージョン5.xで改善された部分からです。

  • 以前は、クラスター状態が「赤(RED)」のとき、詳細を把握するには様々なREST APIを使って状態をチェックするしかなかったのですが、これが実はかなり厄介なことです。ところが今では、/_cluster/allocation/explainというAPI一つで状態が分かるようになっているそうです。
  • ゆくゆくはtribeノードはなくなるそうです(後述するBlizzard社のセッションでもtribeノードに関する問題点が指摘されています)。
  • Cross cluster searchに関する紹介もありました。今後はそれを利用してKibanaなどで複数クラスターに対する検索が可能になるらしく、非常に興味深い機能といえます。
  • そしてElasticsearchの運用において多少手間取っているところとして、メジャーアップグレードが行われると必ずクラスター全体を再起動しないといけないというのがあります。ところがバージョン6.0からは、5.xから6.0へのローリング・アップグレード機能が提供されるそうです。これは会場内から歓声が湧き上がるほど大きな朗報でした。というのも、メジャーアップグレード時にクラスター全体を再起動すると、少なくともその瞬間だけはElasticsearchが利用できなくなってしまい、サービスに致命的な影響を及ぼすことになるためです。ところが今後はローリング・アップグレードによって、サービスを停止することなくアップグレードが可能になる見通しです。
  • さらに、5.xクラスターと6.0クラスターの間で相互検索も可能になるそうです。

これまでバージョン・センシティブだったところが一つ一つ解消され、運用・使用する上でより便利なElasticsearchへと進化しつつあることが分かります(以前は、Javaクライアントもできるだけバージョンを揃えて使っていました)。他にも色々な変更点について紹介されていますので、Elasticsearchにご興味のある方はぜひ一度ご確認ください。

What’s Cookin’ in Kibana

Kibanaの現状、そして今後のロードマップに関するセッションでした。Kibanaは非常に強力な視覚化ツールで、個人的にElastic Stackの中で最も優れたプロダクトだと評価しています。セッションの前半ではバージョン5.0で新たに追加された機能であるtag cloud、heat map、search profiler UIや性能向上について、後半ではロードマップについて説明されました。うちいくつかだけ簡単にご紹介します。

  • Log event context:たとえば一つのエラーイベントが発生した際、その前後にどのようなイベントが発生しているかを示してくれる機能。障害解析に有効と思われ、Logglyのようなサービスではすでに対応していますので、Kibanaでも対応を求める声はずいぶん前からありました。
  • Exporting query data to CSV: Kibanaのクエリーデータをcsvファイル形式でエクスポートする機能。やはり以前から対応を待ち望むユーザの声は多く、近くリリースされる見通しとのことです(自分にとっても待ち遠しい機能です)。
  • Time Series Visual Builder:time series dataに特化した視覚化ツール。これはMetricbeatとも関係していて、Elasticがモニタリングやtime series storage分野においてもサポートをより強化していく方針であることを示唆しています。

他に、Kibana開発者のための話もありました。KibanaはもともとAngular.jsで開発されていますが、これからは新しいUIはReactで開発され、次第にReactを用いた開発にシフトしていくそうです。

What’s Brewing in Beats?

自分で担当しているモニタリングシステムにおいてMetricbeatと非常に類似した役割のエージェントを自主開発し統計を取得していることもあって、相互比較しながら興味深く聞くことのできたセッションです。

  • Metricbeat:システムメトリックのみ取得していたかつてのTopbeatですが、Kafka、Dockerなど様々なモジュールに追加対応したMetricbeatに変更されたということです。
  • Filebeat:Filebeatを利用するとApache、nginxなどのログを簡単に取得・視覚化できるそうです。
  • Heartbeat:ping、HTTPリクエストを利用してアップタイム・モニタリングを行います。
  • Self Monitoring:Elastic Stack 6.xに追加される機能。beats自体のモニタリングができるよう、送信したメトリックの数やCPU使用率などをbeatsから直接提供し、そのためのモニタリングUIも追加される予定とのことです。

今までは、LINEで自分が開発しているのと同類のオープンソースモニタリングシステムにおいて最近もっとも話題を呼んでいるのはPrometheusという認識だったのですが、どうもこれからはモニタリング分野においてもElasticからますます目が離せそうにありません。 ちなみに、このセッションでは、Metricbeatを利用したDockerのモニタリングについて詳細に説明されています。Metricbeatを利用したモニタリングにご関心のある方は、ぜひ一度ご覧になってください。

Building a Near Real-Time Pipeline for All Things Blizzard

個人的にBlizzard社ゲームの大ファンということもあって、テーマに関係なくとにかく一度聞いてみたいと思って参加したセッションです。同社のゲームキャラクターなどを使った遊び心満載のスライド資料は、プレゼンテーションをさらに盛り上げてくれました。最近は、おそらくほとんどの会社が各サービスで発生する様々なデータを一つのプラットフォームに集めて分析したり、そのようなプラットフォーム構築に取り組んでいると思われます。セッションでは、このプラットフォーム実現に向けた同社の過去の取り組みと将来像について充実した説明を聞くことができました。様々なデータに関するスキーマをいかに管理するか、そしてより多くのデータを取得するためにどのような取り組みが行われたかについて、詳細に紹介されています。さらに、Node.js向けの高性能Kafkaクライアントについても紹介されたのですが、Node.js環境でKafkaを利用している場合は、一度試してみるのもよろしいかと思います。経験から得られたElastic Stackの長所・短所に関する説明でしたので内容も充実していて、LINE社内でもデータパイプラインに関する模索が続いていますので、それと比較しながら興味深く聞くことができました。

Correlating Metrics and Logs

自分で主に扱っているデータがメトリックとログですので、このセッションに参加しました。冒頭でメトリックとログに関する簡単な定義から始まり、結局二つともtime series dataであると結論づけられたのは興味深い部分でした。この二種類のデータは同じstorageに格納して同じUIで表現すべき、という説明がありましたが、実は私も自分で開発しているモニタリングシステムでログも何とかメトリックチャートで表現できないものかと模索中でしたので、興味深い内容でした。他にも、「ほとんどのtime series databaseがメトリックにのみ対応しているので、Elasticはそれらとは差別化されたより進化したtime series storageになりうる。さらに、すばらしい視覚化もできて、MetricbeatやFilebeatを利用してメトリックやログの取得も簡単にできる」という内容もあるなど、中身としてはわりとPRセッションに近いものでした。

Machine Learning in the Elastic Stack

最近なにかと話題の機械学習(machine learning)ですが、去年の秋、Elastic社は異常データ検知などのソリューションを開発したPrelert社を買収し、同社の機械学習技術のノウハウをElastic Stackにどんどん搭載し始めました。セッションでは、Elastic Stackにおける機械学習の導入方法についてデモンストレーションを通じて紹介されました。まずは、time series dataを通じて異常検知にフォーカスにした機能がリリースされる予定のようです。私もtime series dataを扱っていますので、最近社内ユーザから同じようなリクエストが急増しているという悩みがありました。それがElastic Stackを利用して簡単に実装できるかも知れないということですから嬉しいニュースですね。time series dataについてどのように機械学習が行われるか、その詳細については、こちらのセッションで紹介されています。ご興味のある方はぜひご一読ください。

Elasticsearch SQL

このセッションの趣旨は、私たちが使っているElasticsearchを、より馴染みのあるSQLを利用してデータ取得できるようにするというものです。さらに、JDBCなどを通じてSQLを利用することもできるらしいので、Elasticsearchを使うためのクエリ勉強を別途やる必要がありません。不慣れの初心者や会社でクエリを勉強したくないがためにElasticsearchを利用しない仲間を説得する良いチャンスかも知れません(現に私も、Elasticsearchクエリを新しく作るたびにドキュメントを参考にしていました)。おそらく、ほとんどのElasticsearchユーザが心待ちにしていた機能ではないかと思います。基本的な関数だけでなく、「GROUP BY」などの集合クエリにも対応しているそうです。ちなみに、SQLというと通常「Structured Query Language」の意味ですが、本セッションで紹介されたElastic SQLのSQLは「Standard Query Language」のことを指します。

Elastic at Datadog

Datadog社はモニタリングサービスを提供する会社です(ロゴマークが可愛すぎて個人的に好きな会社でもあります)。今自分でモニタリング開発を担当しているだけに、このセッションにも関心を持って参加しました。短いセッションでしたのであまりたくさんの内容が紹介されたわけではないのですが、Datadog社がモニタリングしているイベントについて、そしてどのようにElastic Stackを導入したかについて紹介されました。イベント管理のためRDBMSからElastic clusterへ切り替えたということですが、私も同じような経験がありましたので興味深い部分でした。拡張性のためにElastic clusterに切り替えたということと、切り替え後の性能向上について簡単な説明がありました。プレゼンテーション後半では、Elasticsearchをどのようにモニタリングしているかに関する説明が続きました。より詳細な内容については、本セッションでも紹介されたこちらの記事をご参考ください。

Closing Keynote

最後のセッションでは、オープニングKeynoteで紹介された「Elastic Cause Awards」プロジェクトが改めて紹介されました。プロジェクトを通じてElastic社も彼らの活動に貢献しているということ、そしてElastic Stackがそれらのプロジェクトでいかに活用されているかについて、各プロジェクト担当によるプレゼンテーションがありました。途中、IST Research社によるElastic Stackの活用事例も紹介されましたが、Elasticsearchで一つのノードをマスターノードとデータノードの兼用にしていたものを切り分け、よりスマートな環境に改善したという話でした。面白いのは、同様のことがCisco社でも行われているということです(実は私も…)。Cisco社でElastic Stackを利用してコマースプラットフォームを実装したことについて紹介されたセッションはこちらです。ご興味のある方はご覧いただければと思います。そしてElastic社創業者たちとのQ&Aを最後に、カンファレンスはすべて終了となりました。

他にも面白そうなテーマのセッションは多数ありました。詳細は、下記URLからご確認いただけます。
https://www.elastic.co/elasticon/conf/2017/sf

おわりに

Elastic{ON} 2017は、Elastic Stack環境で開発・運用に取り組んでいるエンジニアにとっては大変有益なカンファレンスです。Elastic Stackから新たに提供される機能や他のユーザの経験を紹介してもらったことは、個人的に大変勉強になりました。

私が初めてElasticsearchに触れたのは2011年のことです。以前はサーチエンジンやSplunkなど有料ソフトウェアの代わり程度の位置づけだったものが、今ではモニタリングや機械学習にまで対応していて、多様な環境で使える優れたStackを備えたプロダクトになったことは大変驚きでした。今後のさらなる発展に期待したいと思います。もちろんこれまでの発展にはたくさんのオープンソース・コントリビューターによる貢献が大きかったと思います。Elastic社のさらなる発展を応援しながら、この記事をお読みの方々にも機会があればぜひElastic{ON}カンファレンスに出席し、すばらしい経験をされることをお勧めします。

長文、最後までお読みいただきありがとうございました。

Related Post