エンジニア向けSRE論文への招待
SREとその関連分野では、情報科学の他の分野と同様に、日々多数の論文が企業や大学から公開されています。これらの論文に書かれている内容が、目前のSREの業務に直結することは稀ですが、論文には必ず新しいことが書かれているため、知的な刺激を受けることができます。さらに、その論文のアイディアが社会実装されていないケースでは、エンジニアがそのアイディアを実装することでコミュニティへの貢献機会にもなり得ます。しかし、エンジニアコミュニティで共有されるブログ記事などとは異なり、機械学習など一部の分野を除いて、論文を発見するための導線が少なく、エンジニア向けの論文の読み方も共有されている例はありません。
そこで、本発表では、最先端のアイディアを発見・実装したいと考えるエンジニアに向けて、発表者の5年間のSRE研究と5年間のSRE業務の経験を踏まえて、SRE分野の論文の探し方・読み方を紹介します。探し方については、論文の種類やSRE分野に関連する国際会議、検索ツールの使い方などを、読み方については、単一の論文の下読み・精読方法と複数の論文を横断するシントピカルな読み方をそれぞれ概説します。
- SREコミュニティではあまり共有されていない、より発展的な技術貢献のアプローチの可能性を知ることができる。
- 国内ではほとんど情報のない、SREに着目した学術論文の探し方と読み方が得られる。
本発表で予定している内容のアウトラインは次のようになります。
- 本発表に対する期待値の合意(1分)
本発表では、SREのエンジニアコミュニティでは馴染みの薄い学術の世界でのSREに着目することで、SREの「NEXT」を押し広げる一助となることを目指します。論文自体の紹介ではなく、発表者が研究の現場で遭遇してきた経験をもとに、エンジニアの立場となって論文を探して読むならどんなチャレンジがありえるかを探ります。ソフトウェア開発・運用の現場で今日から使える知識やテクニックは提供できませんが、将来に向けて聴衆の方々がエンジニアとしてのチャレンジの手がかりを得るきっかけになれば幸いです。
本発表は、研究者ではなく実務家としてのエンジニアならば、どんな論文であれば読みたいか、論文を読むことにどれだけの価値があるかは未知数のため「仮定」に基づいています。その仮定が本当かどうか、聴衆の方々への問いかけを暗黙に含んでおり、これは、SRE NEXT 2023の価値観の一つである(研究者とエンジニアの)「Interactivity」に沿うものであると考えています。
- はじめに(3分)
なぜSRE論文を読む話をするのか?論文とはなにか?エンジニアが論文を読む動機はなにか?を話します。
9年前に発表者がブログ記事インフラエンジニア向けシステム系論文を公開したときには、当時のエンジニアコミュニティにて一定の反響がありました。論文を読むことに興味を持たられている、あるいは読んでいるエンジニアは少ないないようです(エンジニアが論文を読んでいる例 engineers-reading-papers.md)。少なくとも工学系の論文は最終的には実務家がその論文に書かれた知を活かすことを想定して書かれているため、エンジニアが論文を読むことは自然なことです。
エンジニアが論文を読む動機の一つは、すでに普及が進んでいる有名なアルゴリズムやソフトウェアの技術的詳細を知ることです。コンテナランタイム系ならAmazonのFirecrackerやGoogleのgVisor、データベース系ならAmazon AuroraやGoogle Spanner、ネットワーク系ならGoogleのAndromeda SDNやGoogleのMaglevロードバランサーなどが論文として発表されています。これらは内部の実装が隠されたマネージドサービスとして提供されていることが多く、自分たちが利用しているサービスの詳細を知ることでよりうまくそれらのサービスを活用できることが期待されます。
しかし、それ以外の圧倒的多数の論文では、論文で提案するアイディアが「普及する前」に書かれます。この普及前の論文(未普及論文)には読む動機がないかというとそんなことはなく、これらのアイディアを読み手のエンジニアがOSSとして実装したり現場に展開することで、会社やコミュニティに貢献する機会になりえます。
SREに関する論文には、OS、DB、NW系などの既存のシステム系分野だけでなく、SLI/SLOやMonitoring/Observability、インシデントレスポンス関連など、「SREらしい」論文も存在します。これらのほとんどが未普及論文になります。
本発表では、SRE領域でエンジニアが読む論文は、(1)自身が利用している技術の詳細を知るための普及済み論文、(2)自身の実装のためのアイディア探しのための未普及論文の2つあると仮定します。特に(2)の「SREらしい未普及論文」に着目し、論文の探し方と読み方を紹介します。
- SRE論文の探し方(7分)
学術論文の種類、SRE論文の分類と代表例、SRE論文に関係する論文誌と国際会議、論文検索ツールの使い方などを紹介します。
媒体の観点では論文の種類は、一般に、原著論文(論文誌論文、ジャーナル論文)、会議録掲載論文(Full paper、Short paper、Workshop paper、Postion Paper)などに分けられます。情報科学系では、ジャーナル論文より会議録掲載論文が重視される傾向があるため、基本的には会議録掲載論文のFull paperを読めば良いでしょう。
情報科学系では、サーベイ論文(総説論文)と技術提案論文に大別されます。読みたい論文のテーマが漠然としている場合は、サーベイ論文を探すことを薦めます。サーベイ論文は、特定技術の提案ではなく、あるテーマの総説を述べる論文であり、そのテーマに関する論文の地図のような文献になります。サーベイ論文を発見できれば、文中に大量の関連論文がリファレンスされているため、興味のある論文を発見しやすくなります。
(2)は、どんな論文があるのか、SNSやキュレーションサービスではほとんど共有されないため、基本的には国際会議の採録論文リストと論文検索ツールを駆使して論文を探します。
- SRE関連の国際会議
- システムソフトウェア系:USENIX系(OSDI, NSDI, FAST, HotOS, HotCloud)、ASPLOS、SoCC、EuroSys、Middleware
- ソフトウェア工学・運用管理系:ICSE、ESEC/FSE、ISSRE、IEEE CLOUD、IEEE NOMS、IWQoS
- DB系:SIGMOD、VLDB
- NW系:SIGCOMM、CoNEXT
- その他:WWW
- 国際会議のランクを調べるサイト:CORE Rankingsとresearch.comなど
- 論文検索ツール:Google Scholar
- "Microservice"といったマジックワードがある。探したいテーマの抽象度に対して一歩具体的なキーワードをいれる。
- 新着論文通知にGoogle Scholar Alertを使う。特定著者の新論文、論文の新規引用、キーワード検索による新論文に対して、メール通知可能。
研究者であれば、新規性のある着想が必須になるため、最新の論文を追いかける必要がありますが、(2)の論文を探す上では必須ではありません。特にトップカンファレンスの最新論文は、メガクラウドの最新の規模感を前提としていることもあり、日本国内のシステム規模ではオーバーテクノロジーになることもあります。
未普及論文でメガクラウド以外にも適用できそうな規模感の論文では、ISSRE、CLOUD、NOMSなどや過去のトップ国際会議がおすすめです。これらの会議のレベルは最高水準ではないものの、その分アイディア段階から実用化しやすいものが多い印象があります。
読みたい論文が見つかったら、論文管理ツールを使ってブックマークしておきます。発表者は、Google DriveをバックエンドとしたPaperpileを利用しています。
実際にどんなSRE論文があるかを概観するためにカテゴリごとの論文例を紹介します。カテゴリはSLI・SLO、Observability、インシデント管理を用意します。他にも、Platform EngineeringやInfrastructure as Code、組織管理・教育などに分けられる論文もあります。
- SRE論文の読み方(7分)
単一の論文の下読みと精読、複数の関連論文の読み方、読んだ論文の記録方法を紹介します。探し方とは異なり、SRE分野だからこその論文の読み方というものはないため、より一般的な情報科学系統の論文の読み方を紹介します。
論文の読み方を知る上で、論文とはなにかを知ることが重要です。
学術論文とは、The illustrated guide to a Ph.D.にあるように、人類の知の領域を拡げたことを証明する文書になります。そのため、優れた論文には、既知の領域がどこまでであり、新規に拡げた部分は何かを明確に述べられています。
同じ理系でも、自然科学系論文とは異なり、多くの情報科学系の論文は新規性と有用性をもつ何かを「提案」します。新規性をもたせるためには、既存の論文や技術製品を調査し、提案するアイディアがまだ世の中にアプローチされていないことを示す必要があります。有用性をもたせるためには、なにかしらの観点で、提案の新規性をもつ部分が関連するアプローチと比較し優れていることを示す必要があります。情報科学系では関連する文献や製品の数が特に多いため、細かく議論して新規性を示します。
論文は無駄がなく冗長性を削って書かれているため、1文1文が濃密で、厳密な表現も多く、通読することはなかなか骨が折れます。おすすめは、文中の図表、Abstract、Introduction、末尾のConclusionのみをまずは読むことです。これをここでは下読みと読みます。Introductionには提案に最も近い背景、提案に最も近い関連研究、関連研究の課題と提案の動機、提案の概要が詰め込まれているため、人類の知の領域の中でのその論文の位置づけを知るにはもってこいです。
Introductionの読み方について、実例を上げて説明します。例としてインシデント管理にLLMを応用するMicrosoftの論文を挙げます。:[[2023__arXiv__Empowering Practical Root Cause Analysis by Large Language Models for Cloud Incidents]]
特に(2)であれば、エンジニアが現場で遭遇する問題に適した解決方法が提案されているかどうかをIntroductionで判定します。期待どおりであれば、精読に移行します。一方で、(1)の論文なら、すでにその提案がどの課題に対して有用であることが知られているため、実装に近い知識を得たいのであれば、早い段階でMethodの節を読むとよいでしょう。
下読みから精読に移行する場合にも、Abstract -> Introduction -> Conclusion -> Experiment -> Method/Algorithm/Framework -> Background / Related Workの順に読みます。手法の詳細を理解するのは難しいことが多く、詳細を理解するに値すると判断したときでよいでしょう。これはエンジニアが技術文書を読むときに実装または事例に着目する読み方とは、真逆の読み方になります。
ひとつの論文を読み進めると引用されている大量の論文を発見することになります。過去の論文がわからないとその論文が書かれていることが本当の意味ではわからない、ことが多々あります。そのため、引用論文を辿っていくと、無数の論文を発見することになります。無数の論文を全部精読することは大変なので、一旦下読みで済ませてストックしておき、分野の地図を作っていきます。
複数の関連論文を読むときの問題は、どんな論文を読んで、どの論文に何が書いてあったかを記憶することが難しいことです。似ているとはいえ、どの論文も新規のアプローチが書かれているため、これらを個別に記憶に留めようとすると認知負荷が非常に高くなります。
発表者は、ネットワーク管理型のノートアプリObsidianに論文ノートを作成し、下読み・精度した論文に関するメタデータとメモを残し、関連する論文とリンク付けながら、ネットワーク構造をもつ自分なりの論文地図を作っています。ノートの例は、SRE Lounge Slackワークスペースの#aiopsで共有しています。
英語のまま読むのは難しい場合は、翻訳ツールのReadbleを薦めます。PDFファイルをアップロードすると日本語と原文が1ページずつ交互に出力されます。
- まとめと今後の予定(1分)
SRE LoungeのSlackワークスペースで論文読みに関するチャンネルの提供予定です。探し方や読み方、このテーマの論文はないかといった質問を受け付けたり、読んだ論文を共有する予定です。無数のSRE論文があり、1人ではキャッチアップが全く追いついていない状況ですので、コミュニティで共有していけるとよいと考えています。
参考資料
- [[📘本を読む本]]
- [[論文読みの日課について - joisino]]
- [[システム系論文の読み方と探し方]]
- 先端技術とメディア表現1 #FTMA15
- [[論文の読み方・書き方・研究室の過ごし方 - NAIST]]