斎藤です。こんにちは。
今回は、2回にわたりインフラエンジニアにも関係してくる学術論文を取り上げ、内容を要約・解説していきます。
運用に携わる人々は「実務」から物事を理解し、マニュアルやツールといった形でモデリング化し、物事を切り開かれている方が多いかと思います。一方で、物事をモデリングする手法には、学術論文...文章化してゆくと言う方法もあります。
「いやー、論文って読もうとすると難しいよねー」とか、「英語とか面倒だなぁ〜」なんて思っている方にでも、論文に触れる新しい機会に、そしてこれからの運用の参考となれば幸いです。
※誤訳やより良い解釈がある等ありましたら、twitterの @koemu までお知らせください。
「ログを用いたソフトウェア開発者と運用者を繋ぐ手法」
原題は"Bridging the Divide between Software Developers and Operators Using Logs"(以下、本論文)といいます。ICSE(International Conference on Software Engineering)という、ソフトウェア工学(ソフトウェア開発に置ける問題を工学的に解決する研究分野)での世界最大のカンファレンスにおいて、ポスターセッションで発表された論文です。
本論文では、開発者と運用者といったフェーズ毎の役割の間にある問題認識のギャップを、ログを用いて解決しようとしています。ログは、運用中に流れるものばかりではなく、開発中に残るソースコード管理システムや、バグトラッキングシステムに保存されているものも含め、広義に扱われていることが肝となっています。
その上で、現在発生している問題を棚卸しし、何を解決する必要があるかを明確にしています。この部分は、実務に携わっている方であれば心当たりがある部分も少なくないのではないでしょうか。
そして、解決するために、ログ解析を自動化するための手法を取り上げ、最終的には自動化するプラットフォームを開発したい、と述べられています。
さて、Abstract(要約)から読んでみましょう。
要約
運用コストを低減するためには、ソフトウェア開発者(以下、開発者)と運用者のギャップを埋めることが不可欠です。そこで、「ログ」...プログラムが発するメッセージを用いてみよう、と言う研究です。
方法として、ケーススタディを通じて、ログの価値を検証して行くものであります。
I. はじめに
2者の間には重点を置いているポイントが違います。開発者は豊富な機能とバグのないものを、運用者は問題を起こさずスケーラブルに運用する事です。
しかし、開発者は滅多に運用の知識が提供されておらず、また運用者には滅多に開発の知識が提供されている訳でもありません。これらが提供されていれば、開発者は現実に即してコードを改善し、運用者は開発者の介入を待たずに問題をタイムリーに解決できるかもしれません。
最近のDevOpsの取組は、2つの間の懸念を共有し、ドキュメントかとコミュニケーションによって橋渡しをする必要性が提案されています。そこで、筆者はログを用いる事を提案します。ログは、開発を進めるために、運用者は情報の追跡のために必要なものです。
しかし、ログは系統立てて利用されていません。ログが大きく複雑で解析が遅くなったり、構造化されておらずアドホックに利用され、そして2社の間で重要性について限られた認識があるためです。
そこで、本論文ではログを利用するいくつかの手法を提案します。そして、OSSや商用のシステムを使用して実証を行います。
II. 仮説
_ログは開発と運用に関する貴重な情報源。しかし、体系的な方法で滅多に用いられてはいない。そこで、体系的な処理方法の開発は開発・運用品質の向上につながる。 _
まず、「開発知識」と「運用知識」の2つソースを定義します。開発知識はコード変更履歴やバグ報告、運用知識は現場でどのような動作をしているかと言う情報です。
開発者のために、品質を向上させるため、メンテナンス履歴に基づきエラーが発生しやすい部分を識別する手法を提案し、大規模システムに向けに現場でテストする範囲を提案するものとします。また、運用者のためには、運用上の複雑性に対処するため、ドキュメント自動生成とログの解釈方法を提案し、そして開発履歴をもとにログを削減する技法を提案します。
III. ログの進化の探索的実験
Hadoopの10のリリース、およびレガシーエンタープライズアプリケーションの9つのリリースのログ上で実験を行いました。
わかった事が4つあります。1つは、バージョン間で高いログの変更がある場合、運用者の仕事が増えること。2つは、40〜60%は不要である事。3つは、15〜50%の影響は堅牢な分析方法を使用して制御可能であること。そして、開発知識にくらべ運用知識はより頻繁に変更されると言う事です。
結果は3つの事を示しています。1つは、2者にとって貴重な知識の供給減である事。2つは、ログは継続的に進化している事。3つ目は、多くの場合、開発者は運用者の依存性を考慮せずにログを変更し、ログ処理アプリが壊れやすくなることです。
これらは、ログからの知識をもとに、より体系的なアプローチを行うために必要です。
斎藤より: 前半について
前半は、筆者の研究のモティベーション、即ち問題点と仮説、そして本論文の主役であるログについての概要について記されていました。
後半は、問題点と解決手法を整理し、さらに著者が計画している今後の活動についての部分が述べられています。
それでは皆様、ごきげんよう。