INFORMATION
ニュース
Scale By the Bay 2017に参加してきました。(ワークショップ&初日)
溝口 泰史 著
サンフランシスコで11月16-18日に開催されたScale By the Bay 2017と、会期前日の15日に行われたワークショップにも参加してきました。
Scale By the Bayというカンファレンスについて簡単に説明すると、かつてはScala By the Bayという名前のScalaに関するカンファレンスだったものが、Scala(2015まで) -> Scalæ(2016) -> Scale(2017)となって、従来通りScala自体に関する話題も含めますが、大規模データの解析なども取り扱うカンファレンスとなっています。
この変化はScalaがScalable Languageであるのももちろんですが、Sparkの開発言語になっているというところもきっかけとしてあるのでしょう。実際に参加者のほとんどがSparkやFlinkなど大規模データ処理基盤やTensor Flowなどの利用者でした。
ワークショップ
ワークショップはGoogle Launchpadで行われました。建物は非常に綺麗で、ワークショップらしく机と椅子が並べられている一方で、わずかながら設置されていたソファに座ってワークショップを受講する参加者もいるなど、いわゆるアメリカのIT企業らしさを感じました。
内容は2部構成になっており、1部ではプログラミングが中心で、ScalaもしくはJavaで書かれたソースの穴埋めをして、gRPCをサービス間通信として利用したマイクロサービスアーキテクチャーのチャットサービス(といっても認証サービスとチャットメッセージの配信サービス、コンソールアプリのチャットクライアントしかありませんでしたが)を作るというものでした。
gRPCはGoogleが開発を主導するRPC(リモートプロシージャコール)で、gRPCとして公開される前の実装がGoogle社内の多くのサービス間通信で用いられており、HTTP 1.1とjsonを利用した場合に比べてスループットが3倍程度良くなるとのことでした。(jsonのエンコードとデコードで大きなオーバーヘッドが発生し、スループットが悪化するというのが主因とのこと。gRPCについて詳しくはこちらを参照)
実際にワークショップでgRPC使ってみたところでは、Protocol Bufferの設定ファイル(*.protoファイル)は非常にわかりやすく、プログラムへの適用も簡単に行うことができました。
また、私自身はプログラミングを伴うワークショップに参加したのは初めてだったのですが、面白いと感じたのはプログラミングの解答がgitのbranchで提供されていたことです。git branchで解答と自分のコードの差異を確認でき、branchを切り替えてプログラムを実行すると手元で正しい挙動を確認できるのは非常に良い方法だと思いました。(もちろん書き方の癖などによる違いは吸収できませんが。)
1部が終わると昼食でした。昼食中はワークショップの机とは別に会場の後ろに4人がけの机が用意され、参加者同士が自由に話ができるようになっていました。(他のテーブルからの英語を同時に聞き取れるほど英語力がないので、他のテーブルで何を話していたかは分かりかねますが)
私もメキシコから来た参加者と自身のキャリアやScalaの学習方法について話をし、本を読んで勉強するよりもcourseraなどのオンライントレーニングを受講した方が良いと勧められたので、今後courseraのコースを受講してみようと思います。なかなか海外の開発者がどのように勉強をしているかを聴く機会もないので、有意義でした。
2部ではIstioでGCP上のサービスのネットワーク設定を行うというものでした。用意されたコマンドとコンフィギュレーションファイルの中身を確認しながら、サービスのルーティングやロードバランシングを行いました。
Istioは最近オープンソースとなったマイクロサービス向けのネットワーク制御プラットフォームですが、なかなか触る機会がなかったので、とても良い機会でした。
しかしながら、基本的には設定コマンドとコピー&ペーストしてその動作を確認するという進め方であり、事前にIstioに触れられていなかったこともあって理解を深めることができなかったのは悔やまれます。
また、最終的には1部の成果物をコンテナとしてGCP上にデプロイし、Istioでネットワーク制御を行うという流れになっていたようですが、1部の時点で進行が芳しくなく、それぞれの成果物を組み合わせることなくワークショップが終わってしまったのは少し残念ではありました。
初日
カンファレンス自体はワークショップとは違い、Twitterの本社(HQ)で行われました。セッションは全部で3種類あり、Functional(Scalaとそれに付随する話題)、Data(大規模データの解析に関する話題)、Reactive(事例紹介や実際にコードを書くなど様々)に別れていました。
以下では初日のセッションでいくつか面白いと思ったものを列挙していきます。
Disorder & Tolerance in Distributed Systems at Scale
初日の一番最初のセッションです。毎日一番最初のセッションは基調講演的な側面が強く、このセッションでは大規模システムのあり方を自然界の法則を元に考えるというものでした。(ちなみに写真は始まる前に撮ったもので、このセッションの講演者は女性でした。)
具体的には、以下のような話が挙げられました。
Billions of Recommendations at Twitter
Twitterのリコメンデーションをどのように生成しているかという話。Twitterのリコメンデーションにはいくつか種類があるらしく、アカウント、トピック(ハッシュタグのまとめみたいなもの?)、ツイート自体をリコメンドしており、それぞれ仕組みが違うとのことでした。
全てのリコメンデーションは、
興味深かったのは候補の作成の箇所で、フォロー・被フォロー関係を元に候補を作成しているのはわかっていたのですが、アカウントはフォロー関係の変化が遅いのでバッチ処理で、トピックやツイートはリアルタイムでと処理使い分けているとのことでした。
作成処理自体は上述の通りフォロー関係のグラフに対してMapReduceをおこなっているとのことでしたが、グラフが巨大であるので、実行には膨大な計算量が必要とのことでした。
長くなって来たので2日目、3日目は別の記事に分割します。
INFORMATION
KandaSearch
KandaSearch はクラウド型企業向け検索エンジンサービスです。
オープンAPIでカスタマイズが自由にできます。
セミナー
企業が検索エンジンを選定する際のポイントから、
実際の導入デモをお客様ご自身でご体験!