Y Masatani, National Institute of Informatics
インフラ・コード化の実践における
IPython Notebookの適用
政谷 好伸 谷沢 智史 横山 重俊 吉岡 信和 合田憲人
国立情報学研究所
Towards “Literate Computing for Infrastructure” – 6/3/2015
Y Masatani, National Institute of Informatics
IPython Notebook
http: //ipython.org
1991: Python
1995: Numeric → NumPy (~2006)
2001: SciPy
2001: IPython
2003: Matplotlib
…
2011: IPython Notebook
2015: Jupyter
Y Masatani, National Institute of Informatics
IPython Notebook
•  Python の Rich Web client な対話インターフェース
•  実行Code,実行結果(計算の結果や,結果を埋め込んだ図表),自然言語による手
順や経緯の説明を ひとつにまとめて記述
•  The purpose of Computing is insight, not numbers – Hamming [Numerical
Methods for Scientists and Engineers (1962) Preface]
•  数理系研究者のツールとして発展
http: //ipython.org
1991: Python
1995: Numeric → NumPy (~2006)
2001: SciPy
2001: IPython
2003: Matplotlib
…
2011: IPython Notebook
2015: Jupyter
アイデアの探索課程の記録,共同開発,再現可能な成果の公開,教育
Y Masatani, National Institute of Informatics
Jupyter – Language Agnostic Notebook
- Interactive Python shell - Network protocol and Rich Web clients
- Kernel for Python - Notebook file format and tools
- Tools for Interactive Parallel - Nbviewer
Computing
Y Masatani, National Institute of Informatics
Jupyter – Language Agnostic Notebook
http: //jupyter.org
- Interactive Python shell - Network protocol and Rich Web clients
- Kernel for Python - Notebook file format and tools
- Tools for Interactive Parallel - Nbviewer
Computing
Jupyter = Julia, Python & R †
Github でもサポート
- Language Agnostic
† https://github.com/jupyter/design/wiki/Jupyter-Logo
Y Masatani, National Institute of Informatics
Literate Computing
Notebook という形
•  ... inspired by open language of science
•  計算機 = computation と 人間=communication が役割分担
ü 実際の実行結果が、説明に埋め込まれている..
手順や経緯 が具体的に,再現可能な形で表現・伝達 → reproducibility
ü Technical と Non-Technical で 理解を共有
Y Masatani, National Institute of Informatics
Literate Computing
Notebook という形
•  ... inspired by open language of science
•  計算機 = computation と 人間=communication が役割分担
ü 実際の実行結果が、説明に埋め込まれている..
手順や経緯 が具体的に,再現可能な形で表現・伝達 → reproducibility
ü Technical と Non-Technical で 理解を共有
Literate Computing というアプローチ
ü  The Notebook: Literate Computing – Fernando Perez
[ http://blog.fperez.org/2013/04/literate-computing-and-computational.html ]
インフラの構築・運用の場面に適用
Y Masatani, National Institute of Informatics
Literate Computing
Notebook という形
•  ... inspired by open language of science
•  計算機 = computation と 人間=communication が役割分担
ü 実際の実行結果が、説明に埋め込まれている..
手順や経緯 が具体的に,再現可能な形で表現・伝達 → reproducibility
ü Technical と Non-Technical で 理解を共有
Literate Computing というアプローチ
ü  The Notebook: Literate Computing – Fernando Perez
[ http://blog.fperez.org/2013/04/literate-computing-and-computational.html ]
インフラの構築・運用の場面に適用..
It shall be applicable to Infrastructure / DevOps
Y Masatani, National Institute of Informatics
Infrastructure as Code
Orchestration with “Coding Style”
•  CFEngine (1993~): http: //en.wikipedia.org/wiki/CFEngine
•  Puppet (2005~): http: //en.wikipedia.org/wiki/Puppet_(software)
•  Chef (2009~): https: //www.chef.io/blog/2009/01/15/announcing-chef/
•  Ansible (2012~): http: //en.wikipedia.org/wiki/Ansible_(software)
Y Masatani, National Institute of Informatics
Infrastructure as Code
Orchestration with “Coding Style”
•  CFEngine (1993~): http: //en.wikipedia.org/wiki/CFEngine
•  Puppet (2005~): http: //en.wikipedia.org/wiki/Puppet_(software)
•  Chef (2009~): https: //www.chef.io/blog/2009/01/15/announcing-chef/
•  Ansible (2012~): http: //en.wikipedia.org/wiki/Ansible_(software)
DSL
DSL + ruby
DSL + ad-hoc
Y Masatani, National Institute of Informatics
Infrastructure as Code
Orchestration with “Coding Style”
•  CFEngine (1993~): http: //en.wikipedia.org/wiki/CFEngine
•  Puppet (2005~): http: //en.wikipedia.org/wiki/Puppet_(software)
•  Chef (2009~): https: //www.chef.io/blog/2009/01/15/announcing-chef/
•  Ansible (2012~): http: //en.wikipedia.org/wiki/Ansible_(software)
Benefit of “Coding Style” :
–  Validation, Auditing, cross OS …
–  CI (Continuous Integration), Automation …
–  Code vs. Config (Hiera,
DSL
DSL + ruby
DSL + ad-hoc
Y Masatani, National Institute of Informatics
Automation だけではなく..
as Code (コード化)= Coding Style を適用する
•  作業手順が Code になる
•  作業手順の正当性がプログラムコードのように検証可能
•  実行結果も機械的に検証可能
•  記述言語の能力
•  記述に基づく機械化・自動化ツールの利便性
Y Masatani, National Institute of Informatics
Automation だけではなく..
as Code (コード化)= Coding Style を適用する
•  作業手順が Code になる
•  作業手順の正当性がプログラムコードのように検証可能
•  実行結果も機械的に検証可能
•  記述言語の能力
•  記述に基づく機械化・自動化ツールの利便性
現場的には Communication が大切…
•  スキルセットが異なる当事者間においても.. 個々の作業の再現性を担保したい..
•  インフラの状態やそこに至るまでの経緯を理解し易くする..
•  その上で作業をカスタマイズ・再利用すると言ったプロセス自体も(Code として)見える化
•  伝達可能にすること,蓄積・発展させること
Automation ?
Y Masatani, National Institute of Informatics
Automation だけではなく..
as Code (コード化)= Coding Style を適用する
•  作業手順が Code になる
•  作業手順の正当性がプログラムコードのように検証可能
•  実行結果も機械的に検証可能
•  記述言語の能力
•  記述に基づく機械化・自動化ツールの利便性
現場的には Communication が大切…
•  スキルセットが異なる当事者間においても.. 個々の作業の再現性を担保したい..
•  インフラの状態やそこに至るまでの経緯を理解し易くする..
•  その上で作業をカスタマイズ・再利用すると言ったプロセス自体も(Code として)見える化
•  伝達可能にすること,蓄積・発展させること
Literate Computing for Infrastructure –
Open Communication about Design and Process through Notebook
Automation ?
Y Masatani, National Institute of Informatics
現実の問題として..
CI が適用できるようなケースも重要だけど..
すべてが Immutable, Idempotent という訳にはゆかな
い… 副作用積み重ねとして運用せざるを得ない… そう
いったものこそ手間がかかるし,気をつかう
Y Masatani, National Institute of Informatics
現実の問題として..
CI が適用できるようなケースも重要だけど..
すべてが Immutable, Idempotent という訳にはゆかな
い… 副作用積み重ねとして運用せざるを得ない… そう
いったものこそ手間がかかるし,気をつかう
相互にスキルセットが異なる状況..
•  運用担当... スキルセットの継承, ひとりですべてが解る訳ではない..
•  利用者… 目的に合わせてインフラをカスタマイズしたい..
/サポート担当… 手解き,問合せに効率的に対応したい
ユーザの自立を促したい.. セルフ・アドミン
Y Masatani, National Institute of Informatics
Continuous Integration
•  Maintain a code repository – Revision Control
•  Automated Build
•  Make the build self-testing
–  Everyone commits to the baseline (every day.. Nightly build… )
–  Every commit to baseline should be build and tested
•  Keep the build FAST
–  Test in a clone of the production deployment
–  Make it easy to get the latest deliverables
–  Everyone can see the results of the latest build
•  Automate deployment – Continuous deployment
http://en.wikipedia.org/wiki/Continuous_integration
Y Masatani, National Institute of Informatics
実現したいこと
•  作業の信頼性向上
•  手順の再利用
•  ポータブルな手順
•  環境に依存しない…
•  環境の変更に追従できる…
Y Masatani, National Institute of Informatics
実現したいこと
•  作業の信頼性向上
•  手順の再利用
•  ポータブルな手順
•  環境に依存しない…
•  環境の変更に追従できる…
Infrastructure でも Social Coding / Design Review のような..
情報の共有「綺麗なコード」を意識.. 美意識 à
architecture (operation込) における rationality /
cardinality of design を 対象化
Y Masatani, National Institute of Informatics
やってみたこと
Ansible + IPython Jupyter Notebook + Github
•  記述 à Ansible と Notebook で書き分け(再現性・斉一性の粒度など.. )
•  手順 à Github Pull Request を活用したワークフロー
•  “Who” (誰が) - “When did” (いつ) - “in What operation” (何をどうし
て) with “intention; Why” (どういうつもりが), then “Consequences
happened” (どうなった)
•  Narrative History of .. everything rationale
Y Masatani, National Institute of Informatics
運用作業者のための「追随可能な手順書」
http://localhost:8888/notebooks/実行例/運用者向_手順書%20-%20ACC開始.ipynb
http://localhost:8888/notebooks/実行例/運用者向_手順書%20-%20CentOS6.5マシン準備(必
要ソフトウェアのインストール).ipynb
Y Masatani, National Institute of Informatics
利用者のための「追随可能な指示書・作業確認書」
内容の確認
カスタマイズに必要な情報の提供
セルフ・アドミニストレーション
http://localhost:8888/notebooks/実行例/ユーザ向_指示書・作業確認書-仮想マシン起動例.ipynb 
http://localhost:8888/notebooks/実行例/ユーザ向_先生用仮想マシン起動.ipynb 
Y Masatani, National Institute of Informatics
委託作業者による作業の「追試可能な作業報告書」
システムの構築作業を委託
→ 作業報告書や システムの保守・運用手順が
紙,電子ファイルとして納入される…
報告書 → 実作業の証跡としての有効
手順書 → 再利用する機会
Y Masatani, National Institute of Informatics
再利用性を重視したHadoopクラスタの構築手順書
http://localhost:8888/tree/murmur/notebooks/default
Y Masatani, National Institute of Informatics
Anywhere Aggregation: なんでも、どこにでも配置できる
HDFS HDFS
YARN YARNPresto
HBase
Tez, Hive, Storm, Spark
Pre-Condition (Requirement for Serv)
•  Ansibleが操作できるノード
•  管理系ネットワークが設定済
•  Bootstrap OSがインストール済
Serv Serv Serv Serv Serv Serv Serv Serv Serv Serv Serv
http://localhost:8888/tree/murmur/notebooks/default
Hadoop族を対象に Ansible + Notebook で..
HDFS
Presto
Y Masatani, National Institute of Informatics
Sample & DEMO
Y Masatani, National Institute of Informatics
Ansible と Notebook の使い分け
Ansibleを選択する場合:
•  作業単位に冪等性がある,ないしは作業後の状態が一意に確定するなど再利用性が高い作業単位
•  複数の文脈で顕れる類似する作業群をパラメタ化によってひとつに集約して記述できる作業単位
•  複数の対象,サーバ群などに対する作業単位
Notebookを選択する場合:
•  依存関係のある一連の文脈を伴う作業の記述.例えば,事前・事後処理のあるひとまとまり作業単位
•  作業結果に基づいて一定の判断,確認が必要な作業単位
•  一部,機械化できない状態,人での作業を伴う作業単位
Y Masatani, National Institute of Informatics
再利用性を重視したHadoopクラスタの構築手順書
Y Masatani, National Institute of Informatics
再利用性を重視したHadoopクラスタの構築手順書
Y Masatani, National Institute of Informatics
再利用性を重視したHadoopクラスタの構築手順書
構造化はどのように進展するか?
Y Masatani, National Institute of Informatics
構造に関するもの
Ansible と Notebook の使い分け
• 文脈に依存しない手順はAnsibleで構造化
インフラの環境構成とシステムのあるべき姿としてのソフトウェア
構成を記述
• 副作用を把握しなければならない手順,文脈を伴う手順については
Notebookで構造化する
Y Masatani, National Institute of Informatics
構造に関するもの
Ansible と Notebook の使い分け
• 文脈に依存しない手順はAnsibleで構造化
インフラの環境構成とシステムのあるべき姿としてのソフトウェア
構成を記述
• 副作用を把握しなければならない手順,文脈を伴う手順については
Notebookで構造化する
• すべての作業はNotebookから実行
Ansibleの動作を含めすべてのコマンドによる作業の経緯を記録
• Ansibleのpleybookとrole,Notebookをバージョン管理
Y Masatani, National Institute of Informatics
経緯に関するもの
インフラ運用において伝達・共有したいこと…
過去に起こった経緯(いきさつ)これから起こるであろう経緯(なりゆき)
トレーサビリティの把握
複数作業間の依存関係,文脈の把握
Y Masatani, National Institute of Informatics
経緯に関するもの
インフラ運用において伝達・共有したいこと…
過去に起こった経緯(いきさつ)これから起こるであろう経緯(なりゆき)
トレーサビリティの把握
ü  Who (誰が) - When did (いつ) - in What operation (何をどうして) with intention; Why (どう
いうつもりが), then Consequences happened (どうなった)
ü  作業対象としてのインフラが,現在どうなっているか理解したい
複数作業間の依存関係,文脈の把握
ü  When(どういう時に)Why(なんのために)What operation(何をどうして)Consequence(どう
なって欲しいのか)
ü  やり直しの効く範囲はどこまでか,戻せるのか
ü  (状況が変わったら,失敗したら)どこまで戻ればよいのか
ü  回復できないポイントとその回避可能性
ü  依存関係が恒常的なのか一時的なのか
ü  事前,事後の依存する作業
ü  分離できる条件と範囲, 作業の構造を見通したい
Y Masatani, National Institute of Informatics
どのような構造を把握すべきか
記述・ドキュメントの..「形」は何にしたがう..
ソフトウェアのアーキテクチャ
収容構成
運用の体制
当事者たる人間の関係性
蓄積と発展
Y Masatani, National Institute of Informatics
どのような構造を把握すべきか
記述・ドキュメントの..「形」は何にしたがう..
ソフトウェアのアーキテクチャ
収容構成
運用の体制
当事者たる人間の関係性
蓄積と発展
機能に従う
失敗に従う
Social な “Literacy”
Y Masatani, National Institute of Informatics
Notebookを作成する際の指針
•  インフラの状況を把握・確認する作業に対しては,予めコマンド群とその利用手順を
まとめた定型Notebookを用意すると供に,正常時の実行結果を記録した状態で保存
しておいたものを用いて作業する.既知のトラブル対応の作業等も同等.
•  非定型の運用作業は,原則Notebookをフロントとして実施し,実行コマンドとその
出力結果を記録した状態で保存する.作業が何のために行われたかなど,機械的に記
録されない内容はNotebookの中に直接記載する.定型的な運用作業は業務ごとに
Notebookとして予め記述しておき手順書として利用する.
•  独立性のある一連の作業をひとつのNotebookとして記述する,Notebook間(作業
間)に依存関係が存在する場合はNotebook上に説明する
•  環境情報,構成管理情報,複数のAnsibleのプレイブックにおいて共通化可能なパラ
メタ情報は,それらを設定管理するNotebookを独立に設ける
•  設計上の依存関係がある構成と作業についてはパラメタ化したAnsibleプレイブック
として記述する,あるいは共通のプレイブックを参照する類似・派生Notebookとし
て構造化を図る
模索中
Y Masatani, National Institute of Informatics
まとめ
•  設計/運用情報を、再利用を考慮して構造化することができた,これにより構造化された
手順の依存関係を考慮して作業を実施できる
•  開発初期から運用中も含めて「あるべき姿」「現状」「過去の変更履歴」をトレースでき
る状態にある
•  手順書と実際に実行されるコマンドが一体とな à スキルの異なるメンバが作業しても,作
業結果に乖離が発生しづらい「追随可能な手順書」というコンセプトは有効
•  Notebook化された手順を使って、開発者・運用者同士,あるいは利用者とコミュニケー
ションできる状態にある
•  NotebookやAnsibleプレイブックをGit管理することで履歴管理ができた
•  コラボレーションツールとして複数人が共同編集するのは難しい
 
「追随可能な手順書」∼ Literate Computing for Infrastructure というコンセプトは運用者,
利用者どちらからも受け入れられ得ることを確認できたと考える
今後 .. より分かりやすい記述,実行環境の配布方法,Gitとの連携,Jenkinsなどのテスト駆動
ツールと連携するワークフローの在り方…
Y Masatani, National Institute of Informatics
まとめ
•  設計/運用情報を、再利用を考慮して構造化することができた,これにより構造化された
手順の依存関係を考慮して作業を実施できる
•  開発初期から運用中も含めて「あるべき姿」「現状」「過去の変更履歴」をトレースでき
る状態にある
•  手順書と実際に実行されるコマンドが一体とな à スキルの異なるメンバが作業しても,作
業結果に乖離が発生しづらい「追随可能な手順書」というコンセプトは有効
•  Notebook化された手順を使って、開発者・運用者同士,あるいは利用者とコミュニケー
ションできる状態にある
•  NotebookやAnsibleプレイブックをGit管理することで履歴管理ができた
•  コラボレーションツールとして複数人が共同編集するのは難しい
 
「追随可能な手順書」∼ Literate Computing for Infrastructure というコンセプトは運用者,
利用者どちらからも受け入れられ得ることを確認できたと考える
今後 .. より分かりやすい記述,実行環境の配布方法,Gitとの連携,Jenkinsなどのテスト駆動
ツールと連携するワークフローの在り方…
Y Masatani, National Institute of Informatics

Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Notebookの適用

  • 1.
    Y Masatani, NationalInstitute of Informatics インフラ・コード化の実践における IPython Notebookの適用 政谷 好伸 谷沢 智史 横山 重俊 吉岡 信和 合田憲人 国立情報学研究所 Towards “Literate Computing for Infrastructure” – 6/3/2015
  • 2.
    Y Masatani, NationalInstitute of Informatics IPython Notebook http: //ipython.org 1991: Python 1995: Numeric → NumPy (~2006) 2001: SciPy 2001: IPython 2003: Matplotlib … 2011: IPython Notebook 2015: Jupyter
  • 3.
    Y Masatani, NationalInstitute of Informatics IPython Notebook •  Python の Rich Web client な対話インターフェース •  実行Code,実行結果(計算の結果や,結果を埋め込んだ図表),自然言語による手 順や経緯の説明を ひとつにまとめて記述 •  The purpose of Computing is insight, not numbers – Hamming [Numerical Methods for Scientists and Engineers (1962) Preface] •  数理系研究者のツールとして発展 http: //ipython.org 1991: Python 1995: Numeric → NumPy (~2006) 2001: SciPy 2001: IPython 2003: Matplotlib … 2011: IPython Notebook 2015: Jupyter アイデアの探索課程の記録,共同開発,再現可能な成果の公開,教育
  • 4.
    Y Masatani, NationalInstitute of Informatics Jupyter – Language Agnostic Notebook - Interactive Python shell - Network protocol and Rich Web clients - Kernel for Python - Notebook file format and tools - Tools for Interactive Parallel - Nbviewer Computing
  • 5.
    Y Masatani, NationalInstitute of Informatics Jupyter – Language Agnostic Notebook http: //jupyter.org - Interactive Python shell - Network protocol and Rich Web clients - Kernel for Python - Notebook file format and tools - Tools for Interactive Parallel - Nbviewer Computing Jupyter = Julia, Python & R † Github でもサポート - Language Agnostic † https://github.com/jupyter/design/wiki/Jupyter-Logo
  • 6.
    Y Masatani, NationalInstitute of Informatics Literate Computing Notebook という形 •  ... inspired by open language of science •  計算機 = computation と 人間=communication が役割分担 ü 実際の実行結果が、説明に埋め込まれている.. 手順や経緯 が具体的に,再現可能な形で表現・伝達 → reproducibility ü Technical と Non-Technical で 理解を共有
  • 7.
    Y Masatani, NationalInstitute of Informatics Literate Computing Notebook という形 •  ... inspired by open language of science •  計算機 = computation と 人間=communication が役割分担 ü 実際の実行結果が、説明に埋め込まれている.. 手順や経緯 が具体的に,再現可能な形で表現・伝達 → reproducibility ü Technical と Non-Technical で 理解を共有 Literate Computing というアプローチ ü  The Notebook: Literate Computing – Fernando Perez [ http://blog.fperez.org/2013/04/literate-computing-and-computational.html ] インフラの構築・運用の場面に適用
  • 8.
    Y Masatani, NationalInstitute of Informatics Literate Computing Notebook という形 •  ... inspired by open language of science •  計算機 = computation と 人間=communication が役割分担 ü 実際の実行結果が、説明に埋め込まれている.. 手順や経緯 が具体的に,再現可能な形で表現・伝達 → reproducibility ü Technical と Non-Technical で 理解を共有 Literate Computing というアプローチ ü  The Notebook: Literate Computing – Fernando Perez [ http://blog.fperez.org/2013/04/literate-computing-and-computational.html ] インフラの構築・運用の場面に適用.. It shall be applicable to Infrastructure / DevOps
  • 9.
    Y Masatani, NationalInstitute of Informatics Infrastructure as Code Orchestration with “Coding Style” •  CFEngine (1993~): http: //en.wikipedia.org/wiki/CFEngine •  Puppet (2005~): http: //en.wikipedia.org/wiki/Puppet_(software) •  Chef (2009~): https: //www.chef.io/blog/2009/01/15/announcing-chef/ •  Ansible (2012~): http: //en.wikipedia.org/wiki/Ansible_(software)
  • 10.
    Y Masatani, NationalInstitute of Informatics Infrastructure as Code Orchestration with “Coding Style” •  CFEngine (1993~): http: //en.wikipedia.org/wiki/CFEngine •  Puppet (2005~): http: //en.wikipedia.org/wiki/Puppet_(software) •  Chef (2009~): https: //www.chef.io/blog/2009/01/15/announcing-chef/ •  Ansible (2012~): http: //en.wikipedia.org/wiki/Ansible_(software) DSL DSL + ruby DSL + ad-hoc
  • 11.
    Y Masatani, NationalInstitute of Informatics Infrastructure as Code Orchestration with “Coding Style” •  CFEngine (1993~): http: //en.wikipedia.org/wiki/CFEngine •  Puppet (2005~): http: //en.wikipedia.org/wiki/Puppet_(software) •  Chef (2009~): https: //www.chef.io/blog/2009/01/15/announcing-chef/ •  Ansible (2012~): http: //en.wikipedia.org/wiki/Ansible_(software) Benefit of “Coding Style” : –  Validation, Auditing, cross OS … –  CI (Continuous Integration), Automation … –  Code vs. Config (Hiera, DSL DSL + ruby DSL + ad-hoc
  • 12.
    Y Masatani, NationalInstitute of Informatics Automation だけではなく.. as Code (コード化)= Coding Style を適用する •  作業手順が Code になる •  作業手順の正当性がプログラムコードのように検証可能 •  実行結果も機械的に検証可能 •  記述言語の能力 •  記述に基づく機械化・自動化ツールの利便性
  • 13.
    Y Masatani, NationalInstitute of Informatics Automation だけではなく.. as Code (コード化)= Coding Style を適用する •  作業手順が Code になる •  作業手順の正当性がプログラムコードのように検証可能 •  実行結果も機械的に検証可能 •  記述言語の能力 •  記述に基づく機械化・自動化ツールの利便性 現場的には Communication が大切… •  スキルセットが異なる当事者間においても.. 個々の作業の再現性を担保したい.. •  インフラの状態やそこに至るまでの経緯を理解し易くする.. •  その上で作業をカスタマイズ・再利用すると言ったプロセス自体も(Code として)見える化 •  伝達可能にすること,蓄積・発展させること Automation ?
  • 14.
    Y Masatani, NationalInstitute of Informatics Automation だけではなく.. as Code (コード化)= Coding Style を適用する •  作業手順が Code になる •  作業手順の正当性がプログラムコードのように検証可能 •  実行結果も機械的に検証可能 •  記述言語の能力 •  記述に基づく機械化・自動化ツールの利便性 現場的には Communication が大切… •  スキルセットが異なる当事者間においても.. 個々の作業の再現性を担保したい.. •  インフラの状態やそこに至るまでの経緯を理解し易くする.. •  その上で作業をカスタマイズ・再利用すると言ったプロセス自体も(Code として)見える化 •  伝達可能にすること,蓄積・発展させること Literate Computing for Infrastructure – Open Communication about Design and Process through Notebook Automation ?
  • 15.
    Y Masatani, NationalInstitute of Informatics 現実の問題として.. CI が適用できるようなケースも重要だけど.. すべてが Immutable, Idempotent という訳にはゆかな い… 副作用積み重ねとして運用せざるを得ない… そう いったものこそ手間がかかるし,気をつかう
  • 16.
    Y Masatani, NationalInstitute of Informatics 現実の問題として.. CI が適用できるようなケースも重要だけど.. すべてが Immutable, Idempotent という訳にはゆかな い… 副作用積み重ねとして運用せざるを得ない… そう いったものこそ手間がかかるし,気をつかう 相互にスキルセットが異なる状況.. •  運用担当... スキルセットの継承, ひとりですべてが解る訳ではない.. •  利用者… 目的に合わせてインフラをカスタマイズしたい.. /サポート担当… 手解き,問合せに効率的に対応したい ユーザの自立を促したい.. セルフ・アドミン
  • 17.
    Y Masatani, NationalInstitute of Informatics Continuous Integration •  Maintain a code repository – Revision Control •  Automated Build •  Make the build self-testing –  Everyone commits to the baseline (every day.. Nightly build… ) –  Every commit to baseline should be build and tested •  Keep the build FAST –  Test in a clone of the production deployment –  Make it easy to get the latest deliverables –  Everyone can see the results of the latest build •  Automate deployment – Continuous deployment http://en.wikipedia.org/wiki/Continuous_integration
  • 18.
    Y Masatani, NationalInstitute of Informatics 実現したいこと •  作業の信頼性向上 •  手順の再利用 •  ポータブルな手順 •  環境に依存しない… •  環境の変更に追従できる…
  • 19.
    Y Masatani, NationalInstitute of Informatics 実現したいこと •  作業の信頼性向上 •  手順の再利用 •  ポータブルな手順 •  環境に依存しない… •  環境の変更に追従できる… Infrastructure でも Social Coding / Design Review のような.. 情報の共有「綺麗なコード」を意識.. 美意識 à architecture (operation込) における rationality / cardinality of design を 対象化
  • 20.
    Y Masatani, NationalInstitute of Informatics やってみたこと Ansible + IPython Jupyter Notebook + Github •  記述 à Ansible と Notebook で書き分け(再現性・斉一性の粒度など.. ) •  手順 à Github Pull Request を活用したワークフロー •  “Who” (誰が) - “When did” (いつ) - “in What operation” (何をどうし て) with “intention; Why” (どういうつもりが), then “Consequences happened” (どうなった) •  Narrative History of .. everything rationale
  • 21.
    Y Masatani, NationalInstitute of Informatics 運用作業者のための「追随可能な手順書」 http://localhost:8888/notebooks/実行例/運用者向_手順書%20-%20ACC開始.ipynb http://localhost:8888/notebooks/実行例/運用者向_手順書%20-%20CentOS6.5マシン準備(必 要ソフトウェアのインストール).ipynb
  • 22.
    Y Masatani, NationalInstitute of Informatics 利用者のための「追随可能な指示書・作業確認書」 内容の確認 カスタマイズに必要な情報の提供 セルフ・アドミニストレーション http://localhost:8888/notebooks/実行例/ユーザ向_指示書・作業確認書-仮想マシン起動例.ipynb  http://localhost:8888/notebooks/実行例/ユーザ向_先生用仮想マシン起動.ipynb 
  • 23.
    Y Masatani, NationalInstitute of Informatics 委託作業者による作業の「追試可能な作業報告書」 システムの構築作業を委託 → 作業報告書や システムの保守・運用手順が 紙,電子ファイルとして納入される… 報告書 → 実作業の証跡としての有効 手順書 → 再利用する機会
  • 24.
    Y Masatani, NationalInstitute of Informatics 再利用性を重視したHadoopクラスタの構築手順書 http://localhost:8888/tree/murmur/notebooks/default
  • 25.
    Y Masatani, NationalInstitute of Informatics Anywhere Aggregation: なんでも、どこにでも配置できる HDFS HDFS YARN YARNPresto HBase Tez, Hive, Storm, Spark Pre-Condition (Requirement for Serv) •  Ansibleが操作できるノード •  管理系ネットワークが設定済 •  Bootstrap OSがインストール済 Serv Serv Serv Serv Serv Serv Serv Serv Serv Serv Serv http://localhost:8888/tree/murmur/notebooks/default Hadoop族を対象に Ansible + Notebook で.. HDFS Presto
  • 26.
    Y Masatani, NationalInstitute of Informatics Sample & DEMO
  • 27.
    Y Masatani, NationalInstitute of Informatics Ansible と Notebook の使い分け Ansibleを選択する場合: •  作業単位に冪等性がある,ないしは作業後の状態が一意に確定するなど再利用性が高い作業単位 •  複数の文脈で顕れる類似する作業群をパラメタ化によってひとつに集約して記述できる作業単位 •  複数の対象,サーバ群などに対する作業単位 Notebookを選択する場合: •  依存関係のある一連の文脈を伴う作業の記述.例えば,事前・事後処理のあるひとまとまり作業単位 •  作業結果に基づいて一定の判断,確認が必要な作業単位 •  一部,機械化できない状態,人での作業を伴う作業単位
  • 28.
    Y Masatani, NationalInstitute of Informatics 再利用性を重視したHadoopクラスタの構築手順書
  • 29.
    Y Masatani, NationalInstitute of Informatics 再利用性を重視したHadoopクラスタの構築手順書
  • 30.
    Y Masatani, NationalInstitute of Informatics 再利用性を重視したHadoopクラスタの構築手順書 構造化はどのように進展するか?
  • 31.
    Y Masatani, NationalInstitute of Informatics 構造に関するもの Ansible と Notebook の使い分け • 文脈に依存しない手順はAnsibleで構造化 インフラの環境構成とシステムのあるべき姿としてのソフトウェア 構成を記述 • 副作用を把握しなければならない手順,文脈を伴う手順については Notebookで構造化する
  • 32.
    Y Masatani, NationalInstitute of Informatics 構造に関するもの Ansible と Notebook の使い分け • 文脈に依存しない手順はAnsibleで構造化 インフラの環境構成とシステムのあるべき姿としてのソフトウェア 構成を記述 • 副作用を把握しなければならない手順,文脈を伴う手順については Notebookで構造化する • すべての作業はNotebookから実行 Ansibleの動作を含めすべてのコマンドによる作業の経緯を記録 • Ansibleのpleybookとrole,Notebookをバージョン管理
  • 33.
    Y Masatani, NationalInstitute of Informatics 経緯に関するもの インフラ運用において伝達・共有したいこと… 過去に起こった経緯(いきさつ)これから起こるであろう経緯(なりゆき) トレーサビリティの把握 複数作業間の依存関係,文脈の把握
  • 34.
    Y Masatani, NationalInstitute of Informatics 経緯に関するもの インフラ運用において伝達・共有したいこと… 過去に起こった経緯(いきさつ)これから起こるであろう経緯(なりゆき) トレーサビリティの把握 ü  Who (誰が) - When did (いつ) - in What operation (何をどうして) with intention; Why (どう いうつもりが), then Consequences happened (どうなった) ü  作業対象としてのインフラが,現在どうなっているか理解したい 複数作業間の依存関係,文脈の把握 ü  When(どういう時に)Why(なんのために)What operation(何をどうして)Consequence(どう なって欲しいのか) ü  やり直しの効く範囲はどこまでか,戻せるのか ü  (状況が変わったら,失敗したら)どこまで戻ればよいのか ü  回復できないポイントとその回避可能性 ü  依存関係が恒常的なのか一時的なのか ü  事前,事後の依存する作業 ü  分離できる条件と範囲, 作業の構造を見通したい
  • 35.
    Y Masatani, NationalInstitute of Informatics どのような構造を把握すべきか 記述・ドキュメントの..「形」は何にしたがう.. ソフトウェアのアーキテクチャ 収容構成 運用の体制 当事者たる人間の関係性 蓄積と発展
  • 36.
    Y Masatani, NationalInstitute of Informatics どのような構造を把握すべきか 記述・ドキュメントの..「形」は何にしたがう.. ソフトウェアのアーキテクチャ 収容構成 運用の体制 当事者たる人間の関係性 蓄積と発展 機能に従う 失敗に従う Social な “Literacy”
  • 37.
    Y Masatani, NationalInstitute of Informatics Notebookを作成する際の指針 •  インフラの状況を把握・確認する作業に対しては,予めコマンド群とその利用手順を まとめた定型Notebookを用意すると供に,正常時の実行結果を記録した状態で保存 しておいたものを用いて作業する.既知のトラブル対応の作業等も同等. •  非定型の運用作業は,原則Notebookをフロントとして実施し,実行コマンドとその 出力結果を記録した状態で保存する.作業が何のために行われたかなど,機械的に記 録されない内容はNotebookの中に直接記載する.定型的な運用作業は業務ごとに Notebookとして予め記述しておき手順書として利用する. •  独立性のある一連の作業をひとつのNotebookとして記述する,Notebook間(作業 間)に依存関係が存在する場合はNotebook上に説明する •  環境情報,構成管理情報,複数のAnsibleのプレイブックにおいて共通化可能なパラ メタ情報は,それらを設定管理するNotebookを独立に設ける •  設計上の依存関係がある構成と作業についてはパラメタ化したAnsibleプレイブック として記述する,あるいは共通のプレイブックを参照する類似・派生Notebookとし て構造化を図る 模索中
  • 38.
    Y Masatani, NationalInstitute of Informatics まとめ •  設計/運用情報を、再利用を考慮して構造化することができた,これにより構造化された 手順の依存関係を考慮して作業を実施できる •  開発初期から運用中も含めて「あるべき姿」「現状」「過去の変更履歴」をトレースでき る状態にある •  手順書と実際に実行されるコマンドが一体とな à スキルの異なるメンバが作業しても,作 業結果に乖離が発生しづらい「追随可能な手順書」というコンセプトは有効 •  Notebook化された手順を使って、開発者・運用者同士,あるいは利用者とコミュニケー ションできる状態にある •  NotebookやAnsibleプレイブックをGit管理することで履歴管理ができた •  コラボレーションツールとして複数人が共同編集するのは難しい   「追随可能な手順書」∼ Literate Computing for Infrastructure というコンセプトは運用者, 利用者どちらからも受け入れられ得ることを確認できたと考える 今後 .. より分かりやすい記述,実行環境の配布方法,Gitとの連携,Jenkinsなどのテスト駆動 ツールと連携するワークフローの在り方…
  • 39.
    Y Masatani, NationalInstitute of Informatics まとめ •  設計/運用情報を、再利用を考慮して構造化することができた,これにより構造化された 手順の依存関係を考慮して作業を実施できる •  開発初期から運用中も含めて「あるべき姿」「現状」「過去の変更履歴」をトレースでき る状態にある •  手順書と実際に実行されるコマンドが一体とな à スキルの異なるメンバが作業しても,作 業結果に乖離が発生しづらい「追随可能な手順書」というコンセプトは有効 •  Notebook化された手順を使って、開発者・運用者同士,あるいは利用者とコミュニケー ションできる状態にある •  NotebookやAnsibleプレイブックをGit管理することで履歴管理ができた •  コラボレーションツールとして複数人が共同編集するのは難しい   「追随可能な手順書」∼ Literate Computing for Infrastructure というコンセプトは運用者, 利用者どちらからも受け入れられ得ることを確認できたと考える 今後 .. より分かりやすい記述,実行環境の配布方法,Gitとの連携,Jenkinsなどのテスト駆動 ツールと連携するワークフローの在り方…
  • 40.
    Y Masatani, NationalInstitute of Informatics