SlideShare a Scribd company logo
1 of 40
Download to read offline
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

More Related Content

What's hot

Py datameetup1
Py datameetup1Py datameetup1
Py datameetup1shiroyagi
 
Kuberflow Kubernetes上の機械学習プラットフォーム
Kuberflow Kubernetes上の機械学習プラットフォームKuberflow Kubernetes上の機械学習プラットフォーム
Kuberflow Kubernetes上の機械学習プラットフォームKosuke Kikuchi
 
Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Takami Sato
 
Summercamp2020 group4
Summercamp2020 group4Summercamp2020 group4
Summercamp2020 group4openrtm
 
東北大学講義資料 実世界における自然言語処理 - すべての人にロボットを - 坪井祐太 
東北大学講義資料 実世界における自然言語処理 - すべての人にロボットを - 坪井祐太 東北大学講義資料 実世界における自然言語処理 - すべての人にロボットを - 坪井祐太 
東北大学講義資料 実世界における自然言語処理 - すべての人にロボットを - 坪井祐太 Preferred Networks
 
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステムPython, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステムJunichi Kakisako
 
Tensor flow勉強会3
Tensor flow勉強会3Tensor flow勉強会3
Tensor flow勉強会3tak9029
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門Hironori Sekine
 
Tensor flow勉強会 (ayashiminagaranotensorflow)
Tensor flow勉強会 (ayashiminagaranotensorflow)Tensor flow勉強会 (ayashiminagaranotensorflow)
Tensor flow勉強会 (ayashiminagaranotensorflow)tak9029
 
Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Katsuhiro Morishita
 
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化Yutaka Kato
 
第3回メドレー読書会後半
第3回メドレー読書会後半第3回メドレー読書会後半
第3回メドレー読書会後半Kazuhiro Himoto
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版Katsuhiro Morishita
 
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpYoshifumi Yamaguchi
 
FPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うにはFPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うにはHideki Takase
 
2013 summercamp 02
2013 summercamp 022013 summercamp 02
2013 summercamp 02openrtm
 
IntelliJ IDEAで快適なPython生活
IntelliJ IDEAで快適なPython生活IntelliJ IDEAで快適なPython生活
IntelliJ IDEAで快適なPython生活敦志 金谷
 

What's hot (20)

Py datameetup1
Py datameetup1Py datameetup1
Py datameetup1
 
Kuberflow Kubernetes上の機械学習プラットフォーム
Kuberflow Kubernetes上の機械学習プラットフォームKuberflow Kubernetes上の機械学習プラットフォーム
Kuberflow Kubernetes上の機械学習プラットフォーム
 
Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門
 
Summercamp2020 group4
Summercamp2020 group4Summercamp2020 group4
Summercamp2020 group4
 
東北大学講義資料 実世界における自然言語処理 - すべての人にロボットを - 坪井祐太 
東北大学講義資料 実世界における自然言語処理 - すべての人にロボットを - 坪井祐太 東北大学講義資料 実世界における自然言語処理 - すべての人にロボットを - 坪井祐太 
東北大学講義資料 実世界における自然言語処理 - すべての人にロボットを - 坪井祐太 
 
14対話bot発表資料
14対話bot発表資料14対話bot発表資料
14対話bot発表資料
 
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステムPython, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
Python, RaspberryPi, Arduinoで作る消費電力モニタリングシステム
 
Tensor flow勉強会3
Tensor flow勉強会3Tensor flow勉強会3
Tensor flow勉強会3
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
 
Tensor flow勉強会 (ayashiminagaranotensorflow)
Tensor flow勉強会 (ayashiminagaranotensorflow)Tensor flow勉強会 (ayashiminagaranotensorflow)
Tensor flow勉強会 (ayashiminagaranotensorflow)
 
PyCharm入門
PyCharm入門PyCharm入門
PyCharm入門
 
Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版
 
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
 
第3回メドレー読書会後半
第3回メドレー読書会後半第3回メドレー読書会後半
第3回メドレー読書会後半
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
 
青本勉強会2章
青本勉強会2章青本勉強会2章
青本勉強会2章
 
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjp
 
FPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うにはFPGAをロボット(ROS)で「やわらかく」使うには
FPGAをロボット(ROS)で「やわらかく」使うには
 
2013 summercamp 02
2013 summercamp 022013 summercamp 02
2013 summercamp 02
 
IntelliJ IDEAで快適なPython生活
IntelliJ IDEAで快適なPython生活IntelliJ IDEAで快適なPython生活
IntelliJ IDEAで快適なPython生活
 

Viewers also liked

Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Etsuji Nakai
 
DevOps Practices: Configuration as Code
DevOps Practices:Configuration as CodeDevOps Practices:Configuration as Code
DevOps Practices: Configuration as CodeDoug Seven
 
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
Configuration As Code - Adoption of the Job DSL Plugin at NetflixConfiguration As Code - Adoption of the Job DSL Plugin at Netflix
Configuration As Code - Adoption of the Job DSL Plugin at NetflixJustin Ryan
 
Jupyter勉強会 20160701 at NII
Jupyter勉強会 20160701 at NIIJupyter勉強会 20160701 at NII
Jupyter勉強会 20160701 at NIIaxsh co., LTD.
 
Introduction of skippbox
Introduction of skippboxIntroduction of skippbox
Introduction of skippboxGo Chiba
 
TeXの後継として、HTML5&CSS組版〜Vivliostyleプロジェクト
TeXの後継として、HTML5&CSS組版〜VivliostyleプロジェクトTeXの後継として、HTML5&CSS組版〜Vivliostyleプロジェクト
TeXの後継として、HTML5&CSS組版〜VivliostyleプロジェクトShinyu Murakami
 
Jupyter Notebookでscikit-learnを使った機械学習・画像処理の基本
Jupyter Notebookでscikit-learnを使った機械学習・画像処理の基本Jupyter Notebookでscikit-learnを使った機械学習・画像処理の基本
Jupyter Notebookでscikit-learnを使った機械学習・画像処理の基本Norihiko Nakabayashi
 
OSC2016 Kyoto Heat + Ansible + Jupyter
OSC2016 Kyoto Heat + Ansible + JupyterOSC2016 Kyoto Heat + Ansible + Jupyter
OSC2016 Kyoto Heat + Ansible + Jupyteririx_jp
 
RDOとPackstackのご紹介
RDOとPackstackのご紹介RDOとPackstackのご紹介
RDOとPackstackのご紹介Etsuji Nakai
 
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~The Japan DataScientist Society
 
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecマニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecYukihiko SAWANOBORI
 
2557 โครงงาน คอม
2557 โครงงาน คอม2557 โครงงาน คอม
2557 โครงงาน คอมJaturaphun
 
ใบงานที่ 6 เรื่อง โครงงานประเภท “การทดลองทฤษฎี”
ใบงานที่ 6 เรื่อง โครงงานประเภท “การทดลองทฤษฎี”ใบงานที่ 6 เรื่อง โครงงานประเภท “การทดลองทฤษฎี”
ใบงานที่ 6 เรื่อง โครงงานประเภท “การทดลองทฤษฎี”taioddntw
 
ใบงานสำรวจตนเอง
ใบงานสำรวจตนเองใบงานสำรวจตนเอง
ใบงานสำรวจตนเองtaioddntw
 

Viewers also liked (19)

Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
 
DevOps Practices: Configuration as Code
DevOps Practices:Configuration as CodeDevOps Practices:Configuration as Code
DevOps Practices: Configuration as Code
 
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
Configuration As Code - Adoption of the Job DSL Plugin at NetflixConfiguration As Code - Adoption of the Job DSL Plugin at Netflix
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
 
Jupyter勉強会 20160701 at NII
Jupyter勉強会 20160701 at NIIJupyter勉強会 20160701 at NII
Jupyter勉強会 20160701 at NII
 
Introduction of skippbox
Introduction of skippboxIntroduction of skippbox
Introduction of skippbox
 
TeXの後継として、HTML5&CSS組版〜Vivliostyleプロジェクト
TeXの後継として、HTML5&CSS組版〜VivliostyleプロジェクトTeXの後継として、HTML5&CSS組版〜Vivliostyleプロジェクト
TeXの後継として、HTML5&CSS組版〜Vivliostyleプロジェクト
 
Jupyter Notebookでscikit-learnを使った機械学習・画像処理の基本
Jupyter Notebookでscikit-learnを使った機械学習・画像処理の基本Jupyter Notebookでscikit-learnを使った機械学習・画像処理の基本
Jupyter Notebookでscikit-learnを使った機械学習・画像処理の基本
 
OSC2016 Kyoto Heat + Ansible + Jupyter
OSC2016 Kyoto Heat + Ansible + JupyterOSC2016 Kyoto Heat + Ansible + Jupyter
OSC2016 Kyoto Heat + Ansible + Jupyter
 
RDOとPackstackのご紹介
RDOとPackstackのご紹介RDOとPackstackのご紹介
RDOとPackstackのご紹介
 
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
データ分析に必要なスキルをつけるためのツール~Jupyter notebook、r連携、機械学習からsparkまで~
 
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecマニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
 
Pat1 (1)
Pat1 (1)Pat1 (1)
Pat1 (1)
 
2557 โครงงาน คอม
2557 โครงงาน คอม2557 โครงงาน คอม
2557 โครงงาน คอม
 
K5
K5K5
K5
 
Tai lieu ve phan cung
Tai lieu ve phan cungTai lieu ve phan cung
Tai lieu ve phan cung
 
ใบงานที่ 6 เรื่อง โครงงานประเภท “การทดลองทฤษฎี”
ใบงานที่ 6 เรื่อง โครงงานประเภท “การทดลองทฤษฎี”ใบงานที่ 6 เรื่อง โครงงานประเภท “การทดลองทฤษฎี”
ใบงานที่ 6 เรื่อง โครงงานประเภท “การทดลองทฤษฎี”
 
Arrae Media Kit
Arrae Media KitArrae Media Kit
Arrae Media Kit
 
ใบงานสำรวจตนเอง
ใบงานสำรวจตนเองใบงานสำรวจตนเอง
ใบงานสำรวจตนเอง
 
K6
K6K6
K6
 

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

Cytoscapeの現状とCyberinfrastructure
Cytoscapeの現状とCyberinfrastructureCytoscapeの現状とCyberinfrastructure
Cytoscapeの現状とCyberinfrastructureKeiichiro Ono
 
Deep Learning reading club at SWEST 2017 interactive session
Deep Learning reading club at SWEST 2017 interactive session Deep Learning reading club at SWEST 2017 interactive session
Deep Learning reading club at SWEST 2017 interactive session Kiyoshi Ogawa
 
Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演
Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演
Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演Hironori Washizaki
 
東京工業大学「ロボット技術・ロボットミドルウェア」
東京工業大学「ロボット技術・ロボットミドルウェア」東京工業大学「ロボット技術・ロボットミドルウェア」
東京工業大学「ロボット技術・ロボットミドルウェア」NoriakiAndo
 
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保するDNA Data Bank of Japan center
 
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)Naoki Matsumoto
 
皆さん!ふくてんが来ましたよ!!
皆さん!ふくてんが来ましたよ!!皆さん!ふくてんが来ましたよ!!
皆さん!ふくてんが来ましたよ!!ru pic
 
2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open sourceYoshiyuki Nakamura
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Tadahiro Ishisaka
 
IoTとOpenFlowのライトニングトーク
IoTとOpenFlowのライトニングトークIoTとOpenFlowのライトニングトーク
IoTとOpenFlowのライトニングトークTomoya Hibi
 
Rtミドルウェア講習会 第2部資料
Rtミドルウェア講習会 第2部資料Rtミドルウェア講習会 第2部資料
Rtミドルウェア講習会 第2部資料openrtm
 
深層学習フレームワークChainerの特徴
深層学習フレームワークChainerの特徴深層学習フレームワークChainerの特徴
深層学習フレームワークChainerの特徴Yuya Unno
 
konashi Make-a-thon "What's konashi"
konashi Make-a-thon "What's konashi"konashi Make-a-thon "What's konashi"
konashi Make-a-thon "What's konashi"Reo Matsumura
 
TensorFlowで音声認識
TensorFlowで音声認識TensorFlowで音声認識
TensorFlowで音声認識祐太 上岡
 
相互運用可能な作文計測システムの設計 - リアルタイムモニタリングに向けて -
相互運用可能な作文計測システムの設計 - リアルタイムモニタリングに向けて -相互運用可能な作文計測システムの設計 - リアルタイムモニタリングに向けて -
相互運用可能な作文計測システムの設計 - リアルタイムモニタリングに向けて -yamahige
 
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化Fujio Kojima
 
新しいソフトウェアエンジニアリングのためのパターンランゲージに向けて
新しいソフトウェアエンジニアリングのためのパターンランゲージに向けて新しいソフトウェアエンジニアリングのためのパターンランゲージに向けて
新しいソフトウェアエンジニアリングのためのパターンランゲージに向けてHironori Washizaki
 

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

Cytoscapeの現状とCyberinfrastructure
Cytoscapeの現状とCyberinfrastructureCytoscapeの現状とCyberinfrastructure
Cytoscapeの現状とCyberinfrastructure
 
Deep Learning reading club at SWEST 2017 interactive session
Deep Learning reading club at SWEST 2017 interactive session Deep Learning reading club at SWEST 2017 interactive session
Deep Learning reading club at SWEST 2017 interactive session
 
Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演
Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演
Pythonを含む多くのプログラミング言語を扱う処理フレームワークとパターン、鷲崎弘宜、PyConJP 2016 招待講演
 
東京工業大学「ロボット技術・ロボットミドルウェア」
東京工業大学「ロボット技術・ロボットミドルウェア」東京工業大学「ロボット技術・ロボットミドルウェア」
東京工業大学「ロボット技術・ロボットミドルウェア」
 
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
[DDBJing31] 軽量仮想環境を用いてNGSデータの解析再現性を担保する
 
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
Qt名古屋勉強会へのお誘い(OSC名古屋2017LT)
 
皆さん!ふくてんが来ましたよ!!
皆さん!ふくてんが来ましたよ!!皆さん!ふくてんが来ましたよ!!
皆さん!ふくてんが来ましたよ!!
 
2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境
 
IoTとOpenFlowのライトニングトーク
IoTとOpenFlowのライトニングトークIoTとOpenFlowのライトニングトーク
IoTとOpenFlowのライトニングトーク
 
Rtミドルウェア講習会 第2部資料
Rtミドルウェア講習会 第2部資料Rtミドルウェア講習会 第2部資料
Rtミドルウェア講習会 第2部資料
 
ソフトウェアとは
ソフトウェアとはソフトウェアとは
ソフトウェアとは
 
深層学習フレームワークChainerの特徴
深層学習フレームワークChainerの特徴深層学習フレームワークChainerの特徴
深層学習フレームワークChainerの特徴
 
konashi Make-a-thon "What's konashi"
konashi Make-a-thon "What's konashi"konashi Make-a-thon "What's konashi"
konashi Make-a-thon "What's konashi"
 
TensorFlowで音声認識
TensorFlowで音声認識TensorFlowで音声認識
TensorFlowで音声認識
 
相互運用可能な作文計測システムの設計 - リアルタイムモニタリングに向けて -
相互運用可能な作文計測システムの設計 - リアルタイムモニタリングに向けて -相互運用可能な作文計測システムの設計 - リアルタイムモニタリングに向けて -
相互運用可能な作文計測システムの設計 - リアルタイムモニタリングに向けて -
 
Spring I/O 2015 報告
Spring I/O 2015 報告Spring I/O 2015 報告
Spring I/O 2015 報告
 
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
 
新しいソフトウェアエンジニアリングのためのパターンランゲージに向けて
新しいソフトウェアエンジニアリングのためのパターンランゲージに向けて新しいソフトウェアエンジニアリングのためのパターンランゲージに向けて
新しいソフトウェアエンジニアリングのためのパターンランゲージに向けて
 

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

  • 1. Y Masatani, National Institute of Informatics インフラ・コード化の実践における IPython Notebookの適用 政谷 好伸 谷沢 智史 横山 重俊 吉岡 信和 合田憲人 国立情報学研究所 Towards “Literate Computing for Infrastructure” – 6/3/2015
  • 2. 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
  • 3. 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 アイデアの探索課程の記録,共同開発,再現可能な成果の公開,教育
  • 4. 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
  • 5. 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
  • 6. Y Masatani, National Institute of Informatics Literate Computing Notebook という形 •  ... inspired by open language of science •  計算機 = computation と 人間=communication が役割分担 ü 実際の実行結果が、説明に埋め込まれている.. 手順や経緯 が具体的に,再現可能な形で表現・伝達 → reproducibility ü Technical と Non-Technical で 理解を共有
  • 7. 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 ] インフラの構築・運用の場面に適用
  • 8. 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
  • 9. 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)
  • 10. 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
  • 11. 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
  • 12. Y Masatani, National Institute of Informatics Automation だけではなく.. as Code (コード化)= Coding Style を適用する •  作業手順が Code になる •  作業手順の正当性がプログラムコードのように検証可能 •  実行結果も機械的に検証可能 •  記述言語の能力 •  記述に基づく機械化・自動化ツールの利便性
  • 13. Y Masatani, National Institute of Informatics Automation だけではなく.. as Code (コード化)= Coding Style を適用する •  作業手順が Code になる •  作業手順の正当性がプログラムコードのように検証可能 •  実行結果も機械的に検証可能 •  記述言語の能力 •  記述に基づく機械化・自動化ツールの利便性 現場的には Communication が大切… •  スキルセットが異なる当事者間においても.. 個々の作業の再現性を担保したい.. •  インフラの状態やそこに至るまでの経緯を理解し易くする.. •  その上で作業をカスタマイズ・再利用すると言ったプロセス自体も(Code として)見える化 •  伝達可能にすること,蓄積・発展させること Automation ?
  • 14. 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 ?
  • 15. Y Masatani, National Institute of Informatics 現実の問題として.. CI が適用できるようなケースも重要だけど.. すべてが Immutable, Idempotent という訳にはゆかな い… 副作用積み重ねとして運用せざるを得ない… そう いったものこそ手間がかかるし,気をつかう
  • 16. Y Masatani, National Institute of Informatics 現実の問題として.. CI が適用できるようなケースも重要だけど.. すべてが Immutable, Idempotent という訳にはゆかな い… 副作用積み重ねとして運用せざるを得ない… そう いったものこそ手間がかかるし,気をつかう 相互にスキルセットが異なる状況.. •  運用担当... スキルセットの継承, ひとりですべてが解る訳ではない.. •  利用者… 目的に合わせてインフラをカスタマイズしたい.. /サポート担当… 手解き,問合せに効率的に対応したい ユーザの自立を促したい.. セルフ・アドミン
  • 17. 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
  • 18. Y Masatani, National Institute of Informatics 実現したいこと •  作業の信頼性向上 •  手順の再利用 •  ポータブルな手順 •  環境に依存しない… •  環境の変更に追従できる…
  • 19. Y Masatani, National Institute of Informatics 実現したいこと •  作業の信頼性向上 •  手順の再利用 •  ポータブルな手順 •  環境に依存しない… •  環境の変更に追従できる… Infrastructure でも Social Coding / Design Review のような.. 情報の共有「綺麗なコード」を意識.. 美意識 à architecture (operation込) における rationality / cardinality of design を 対象化
  • 20. 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
  • 21. Y Masatani, National Institute of Informatics 運用作業者のための「追随可能な手順書」 http://localhost:8888/notebooks/実行例/運用者向_手順書%20-%20ACC開始.ipynb http://localhost:8888/notebooks/実行例/運用者向_手順書%20-%20CentOS6.5マシン準備(必 要ソフトウェアのインストール).ipynb
  • 22. Y Masatani, National Institute of Informatics 利用者のための「追随可能な指示書・作業確認書」 内容の確認 カスタマイズに必要な情報の提供 セルフ・アドミニストレーション http://localhost:8888/notebooks/実行例/ユーザ向_指示書・作業確認書-仮想マシン起動例.ipynb  http://localhost:8888/notebooks/実行例/ユーザ向_先生用仮想マシン起動.ipynb 
  • 23. Y Masatani, National Institute of Informatics 委託作業者による作業の「追試可能な作業報告書」 システムの構築作業を委託 → 作業報告書や システムの保守・運用手順が 紙,電子ファイルとして納入される… 報告書 → 実作業の証跡としての有効 手順書 → 再利用する機会
  • 24. Y Masatani, National Institute of Informatics 再利用性を重視したHadoopクラスタの構築手順書 http://localhost:8888/tree/murmur/notebooks/default
  • 25. 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
  • 26. Y Masatani, National Institute of Informatics Sample & DEMO
  • 27. Y Masatani, National Institute of Informatics Ansible と Notebook の使い分け Ansibleを選択する場合: •  作業単位に冪等性がある,ないしは作業後の状態が一意に確定するなど再利用性が高い作業単位 •  複数の文脈で顕れる類似する作業群をパラメタ化によってひとつに集約して記述できる作業単位 •  複数の対象,サーバ群などに対する作業単位 Notebookを選択する場合: •  依存関係のある一連の文脈を伴う作業の記述.例えば,事前・事後処理のあるひとまとまり作業単位 •  作業結果に基づいて一定の判断,確認が必要な作業単位 •  一部,機械化できない状態,人での作業を伴う作業単位
  • 28. Y Masatani, National Institute of Informatics 再利用性を重視したHadoopクラスタの構築手順書
  • 29. Y Masatani, National Institute of Informatics 再利用性を重視したHadoopクラスタの構築手順書
  • 30. Y Masatani, National Institute of Informatics 再利用性を重視したHadoopクラスタの構築手順書 構造化はどのように進展するか?
  • 31. Y Masatani, National Institute of Informatics 構造に関するもの Ansible と Notebook の使い分け • 文脈に依存しない手順はAnsibleで構造化 インフラの環境構成とシステムのあるべき姿としてのソフトウェア 構成を記述 • 副作用を把握しなければならない手順,文脈を伴う手順については Notebookで構造化する
  • 32. Y Masatani, National Institute of Informatics 構造に関するもの Ansible と Notebook の使い分け • 文脈に依存しない手順はAnsibleで構造化 インフラの環境構成とシステムのあるべき姿としてのソフトウェア 構成を記述 • 副作用を把握しなければならない手順,文脈を伴う手順については Notebookで構造化する • すべての作業はNotebookから実行 Ansibleの動作を含めすべてのコマンドによる作業の経緯を記録 • Ansibleのpleybookとrole,Notebookをバージョン管理
  • 33. Y Masatani, National Institute of Informatics 経緯に関するもの インフラ運用において伝達・共有したいこと… 過去に起こった経緯(いきさつ)これから起こるであろう経緯(なりゆき) トレーサビリティの把握 複数作業間の依存関係,文脈の把握
  • 34. Y Masatani, National Institute of Informatics 経緯に関するもの インフラ運用において伝達・共有したいこと… 過去に起こった経緯(いきさつ)これから起こるであろう経緯(なりゆき) トレーサビリティの把握 ü  Who (誰が) - When did (いつ) - in What operation (何をどうして) with intention; Why (どう いうつもりが), then Consequences happened (どうなった) ü  作業対象としてのインフラが,現在どうなっているか理解したい 複数作業間の依存関係,文脈の把握 ü  When(どういう時に)Why(なんのために)What operation(何をどうして)Consequence(どう なって欲しいのか) ü  やり直しの効く範囲はどこまでか,戻せるのか ü  (状況が変わったら,失敗したら)どこまで戻ればよいのか ü  回復できないポイントとその回避可能性 ü  依存関係が恒常的なのか一時的なのか ü  事前,事後の依存する作業 ü  分離できる条件と範囲, 作業の構造を見通したい
  • 35. Y Masatani, National Institute of Informatics どのような構造を把握すべきか 記述・ドキュメントの..「形」は何にしたがう.. ソフトウェアのアーキテクチャ 収容構成 運用の体制 当事者たる人間の関係性 蓄積と発展
  • 36. Y Masatani, National Institute of Informatics どのような構造を把握すべきか 記述・ドキュメントの..「形」は何にしたがう.. ソフトウェアのアーキテクチャ 収容構成 運用の体制 当事者たる人間の関係性 蓄積と発展 機能に従う 失敗に従う Social な “Literacy”
  • 37. Y Masatani, National Institute of Informatics Notebookを作成する際の指針 •  インフラの状況を把握・確認する作業に対しては,予めコマンド群とその利用手順を まとめた定型Notebookを用意すると供に,正常時の実行結果を記録した状態で保存 しておいたものを用いて作業する.既知のトラブル対応の作業等も同等. •  非定型の運用作業は,原則Notebookをフロントとして実施し,実行コマンドとその 出力結果を記録した状態で保存する.作業が何のために行われたかなど,機械的に記 録されない内容はNotebookの中に直接記載する.定型的な運用作業は業務ごとに Notebookとして予め記述しておき手順書として利用する. •  独立性のある一連の作業をひとつのNotebookとして記述する,Notebook間(作業 間)に依存関係が存在する場合はNotebook上に説明する •  環境情報,構成管理情報,複数のAnsibleのプレイブックにおいて共通化可能なパラ メタ情報は,それらを設定管理するNotebookを独立に設ける •  設計上の依存関係がある構成と作業についてはパラメタ化したAnsibleプレイブック として記述する,あるいは共通のプレイブックを参照する類似・派生Notebookとし て構造化を図る 模索中
  • 38. Y Masatani, National Institute of Informatics まとめ •  設計/運用情報を、再利用を考慮して構造化することができた,これにより構造化された 手順の依存関係を考慮して作業を実施できる •  開発初期から運用中も含めて「あるべき姿」「現状」「過去の変更履歴」をトレースでき る状態にある •  手順書と実際に実行されるコマンドが一体とな à スキルの異なるメンバが作業しても,作 業結果に乖離が発生しづらい「追随可能な手順書」というコンセプトは有効 •  Notebook化された手順を使って、開発者・運用者同士,あるいは利用者とコミュニケー ションできる状態にある •  NotebookやAnsibleプレイブックをGit管理することで履歴管理ができた •  コラボレーションツールとして複数人が共同編集するのは難しい   「追随可能な手順書」∼ Literate Computing for Infrastructure というコンセプトは運用者, 利用者どちらからも受け入れられ得ることを確認できたと考える 今後 .. より分かりやすい記述,実行環境の配布方法,Gitとの連携,Jenkinsなどのテスト駆動 ツールと連携するワークフローの在り方…
  • 39. Y Masatani, National Institute of Informatics まとめ •  設計/運用情報を、再利用を考慮して構造化することができた,これにより構造化された 手順の依存関係を考慮して作業を実施できる •  開発初期から運用中も含めて「あるべき姿」「現状」「過去の変更履歴」をトレースでき る状態にある •  手順書と実際に実行されるコマンドが一体とな à スキルの異なるメンバが作業しても,作 業結果に乖離が発生しづらい「追随可能な手順書」というコンセプトは有効 •  Notebook化された手順を使って、開発者・運用者同士,あるいは利用者とコミュニケー ションできる状態にある •  NotebookやAnsibleプレイブックをGit管理することで履歴管理ができた •  コラボレーションツールとして複数人が共同編集するのは難しい   「追随可能な手順書」∼ Literate Computing for Infrastructure というコンセプトは運用者, 利用者どちらからも受け入れられ得ることを確認できたと考える 今後 .. より分かりやすい記述,実行環境の配布方法,Gitとの連携,Jenkinsなどのテスト駆動 ツールと連携するワークフローの在り方…
  • 40. Y Masatani, National Institute of Informatics