全29の多彩なトーク
YAPC::Tokyo 2019レポート、第3回です。
今回のYAPCは全部で29のトークがあり、テクニカルな話題、コミュニティの話題、エンジニアの話題など、さまざまな観点のトークが用意されました。
今回はテクニカルなトーク、そして、ベストトークを受賞した今回の珠玉のトークをお届けします。
これまでの模様はこちらをご覧ください。
PerlでもX-Rayが使えるように
今回、まずレポートするのは、LINE社主催のISUCONにおいて多数の優勝経験を持つ藤原さん。「Perlでも分散トレーシングしたい!」と題して、AWS X-Rayについてわかりやすく解説して下さいました。
分散トレーシングという考え方は、2010年に発表されたGoogleのDapperと呼ばれるツールに関する論文にまで遡ります。近年のマイクロサービスアーキテクチャのように、システムがさまざまな言語で書かれた複数のコンポーネントに分散された環境では、障害の発生箇所やパフォーマンスの問題が起きているコンポーネントを把握することが難しくなります。これを可視化し、時間軸で見たときにどのコンポーネントがどのようなタイミングで実行されていることを把握できるようにするものが、分散トレーシングです。
分散トレーシングの実装には、Zipkin(Twitter社)、Jaeger(Uber社)などがありますが、本トークで紹介されたのはAWS X-Rayです。
X-Rayは、X-Ray API、X-Ray daemon、X-Ray SDK、X-Ray consoleの4つの要素からなるフルマネージドサービスであり、トレースのデータを送るだけですぐに使い始めることができます。トレースの送信はX-Ray daemon経由で行います。このデーモンはUDPを使って通信するため、アプリケーションはデータを「UDPで投げっぱなし」にして良く、「X-Ray daemonが落ちていてもアプリに影響しない」ようになっています。
とても便利なAWS X-Rayですが、残念なことにPerlにはライブラリが提供されていません。そこで藤原さんは、そのためのモジュールAWS::XRayを自作したそうです。さらにPlack::Middleware::XRay、Devel::KYTProf::Logger::XRayといった便利な道具も組み合わせることで、Plackを使って書かれたPerlのアプリケーションが簡単にトレースできるようになることを示しました。
後半は、ISUCONの問題に対してこれらのツールを使い、実際に分散トレーシングをした結果について解説されていました。動作が遅い外部APIがX-Ray consoleを見ることですぐに明らかになり、分散トレーシングの強力さが改めて感じられました。明日にでも分散トレーシングを始めてみたくなるような、大変実践的でためになるセッションでした。
関わっているソフトウェアを良くすれば、世界のどこかは良くなる
songmuさんのトークのテーマは、自身の昔を振り返りながら、エンジニアのキャリアについて考えるというものでした。
今でこそCPAN Authorやはてな社のMackerelのプロダクトマネージャー、さらには執筆者としても活躍するsongmuさんですが、昔の自分のことを「本当に大したことなかった」と振り返ります。そして、「コミュニティと関わるようになってから急激に成長した」とOSSコミュニティの重要性を述べました。
songmuさんの書かれたCPANモジュールとしては、L、App::RunCron、DBIx::Schema::DSL、Rijiなど、本当にさまざまなものがあります。いきなりそのような多数のモジュールを公開するのは難しいとしても、他言語のモジュールをPerlへ移植したり、メンテナンスされなくなったモジュールのメンテナを引き継いだりすることで、誰にでも「できることは結構ある」とsongmuさんは話します。
最後に、Mackerelのプロダクトマネージャについて「社外のエンジニアと交流した経験が生きている」と延べ、OSSを通した活動がビジネスにも役立つものであることをアピールしていました。
本トークは多くの参加者の共感を呼び、YAPC::Tokyo 2019のベストトーク賞に選ばれました。