Skip to content

Fluentdが新Plugin API実装においていかに自由すぎる旧APIとの互換性を確保したかの話 #39

@tagomoris

Description

@tagomoris

表記するお名前、SNSアカウント

tagomoris
https://twitter.com/tagomoris
https://github.com/tagomoris

概要

Fluentd v0.14はプラグイン向けの新しい(より整理された)Plugin APIを持っていますが、その一方で旧APIを使用しているプラグインをすべて無効にすることはもちろんできず、新APIの上に互換性を担保するレイヤを用意することで旧APIのプラグインも動作させられるような仕組みを持っています。

しかしFluentdのプラグインは従来から「なんでもできる」(何も整備されていない……)が特徴でもあったため、互換性を維持するということはつまり、なんでもやっている実装を相手にするということでもあります。
このため、実際の互換性レイヤにおいては考えられる限りのメタプログラミングの手腕が発揮されることとなりました。

このトークでは、大きな齟齬のあるAPI間で互換性を維持するためにどのように魔術的な手法がとられたか、どのように想定外な実装のプラグインが降臨して苦しめられたか、黒魔術万歳と言いながら性能を諦められないときに何をどのように妥協せざるをえなかったかについて、実際のコードとcommit履歴を見せながら話します。

要求トーク時間

A/15:40/30min

想定聴講者層

中〜上級者
黒魔術に少しでも親しんだことがあると良い

録画や写真撮影と、その後の公開

OK

日付の希望

両日問題無し

あなたは暴言などをしない常識を持っていて、このトークで人や法人を悲しませたり怒らせたりせず、平たく言ってネット等でダメな方向に炎上するような行動は慎むことを誓えますか?

誓います!

お知らせとなる #1 お知らせスレをSubscribeするなどしてちゃんと読みますか?

Sure!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions