immutable...
DESCRIPTION
Winter Workshop2014@大洗での発表資料TRANSCRIPT
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
Immutable Infrastructureを利用した
ソフトウェア工学教育のためのサーバ運用手法の検討
○井垣 宏1,福安 直樹2,楠本 真二1
1 大阪大学大学院情報科学研究科
2 和歌山大学システム工学部
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
enPiT(Education Network for Practical Information Technologies)
2© Cloud Spiral partners 2013
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
こんなことを教えています
3
DaaS(Desk top as a Service)を利用した開発
CIツール(jenkins)を利用した継続的統合とテスト可視化
チケットシステムと版管理システム(svn)を利用したタスク管理
Scrum
4つのイベント
3つのプロダクト
プロジェクトの透明化
プロジェクトの適応
チケット駆動開発
チケットシステム(Trac)
タスクの記録,抽出
ファシリテーションスキル
プレゼンテーション
MVCモデルの理解と各層の実装
Java,JavaScriptによるWebアプリケーション実装
MongoDB
テスト技法
単体テスト,カバレッジ
結合テスト
アプリケーションサーバ(Tomcat)
Webアプリケーションフレームワーク(DWR)の利用
Scrum+チケット駆動開発 クラウド環境を利用した開発手法
Webアプリケーション開発
チームビルディング
3つのロール
会議の進め方,議事録のまとめ方
プロジェクトの検査
概要設計書(ドメインモデル,クラス図,シーケンス図,ロバストネス図)の書き方,読み方
詳細設計書 (ロバストネス図,クラス図,シーケンス図,javadoc,DB仕様書,
テスト仕様等)の読み方
QADにもとづくプロジェクト管理
Quality(プロダクト・プロセス品質)
Assignment(タスク割り当て,知識伝達)
Delivery(納期計画)
© Cloud Spiral partners 2013
3
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク© Cloud Spiral partners 2013 4
クラウド基礎PBL(夏合宿)の風景
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク© Cloud Spiral partners 2013
教員による各種サーバ環境の構築・運用の流れ
fluentd+mongo(全体向け)
5月 6月 7月 8月
svn+httpd(全体向け)
trac+mysql+httpd(チーム向け)
tomcat+mongo(チーム向け)
チーム分け
jenkins(チーム向け)
再チーム分け(新しくチームサーバ立ち上げ直し)
新チームサーバでproject開始
fluentd+mongo(チーム向け)
svn(チーム向け)
5
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
R1.環境設定の容易化
サーバ環境設定の試行(サーバ起動‐>設定試行‐>OK/NG判断‐>やり直し)や段階的な設定変更を時間をかけずに実施したい
1つのサーバへの設定を他サーバへも適用したい
R2.設定内容の共有
サーバ環境設定内容を文書化し,共有したい
R3.バックアップ
Disaster Recoveryのためのバックアップ
同一のデータと設定をもつ別サーバを迅速に立ち上げられる
終了後の評価や研究のためのバックアップ
リソースをできる限り消費せずに,データやログを残しておきたい
© Cloud Spiral partners 2013
サーバ環境構築・運用に対する我々の要求
6
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
R1.環境設定の容易化(△) テンプレート機能を用いることで,サーバ設定を途中からやり直せる
VM破棄,VM作成,VM起動といったVM操作に時間が掛かる
1つのサーバ設定内容を他のサーバに展開することができる
サーバ間で異なる部分は個別に設定しなければならない
R2.設定内容の共有(△) サーバ環境設定の文書化の役には立たない
R3.バックアップ(△) DRについてはVMの定期バックアップで対応可能
IaaS基盤全体が不具合の場合は対応不可(他基盤への環境移行は容易ではない)
授業終了後のリソースを消費しないバックアップには対応不可
一部のIaaSでVMごとダウンロードできるものはあるが,容易ではない
© Cloud Spiral partners 2013
IaaSの導入 IaaSだけで解決できることは意外と少ない
7
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
サーバ環境設定の自動化を支援するツール Chef, puppet, fabric, ansible, etc.ユーザはDSLやシェルスクリプト拡張等の形式でサーバの構成を定義する冪等性に対応したツールが多い
© Cloud Spiral partners 2013
サーバ構成管理ツール
sshで設定 tomcat
httpd
svn
VMごとcopy
sshで微調整 構成定義ファイル作成
tomcathttpdsvn
ツールが設定を展開
変数等を用いてサーバごとに異なる設定を記述することも可能
tomcat
httpd
svn
tomcat
httpd
svn
tomcat
httpd
svn
tomcat
httpd
svn
tomcat
httpd
svn 8
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
環境設定をいつ,何回実行しても結果が同じになる性質
© Cloud Spiral partners 2013
サーバ構成管理における冪等性
$ echo “hoge = true” >> /path/config
冪等性が考慮されていれば,環境設定を何回実行してもエラーにならない整備された構成定義ファイルがあれば,誰でもサーバを定
義された状態にできる
すべての環境依存が解決できるわけではないいつでも常に同じサーバ環境が再現できるわけではない
あらゆる状況に対応した冪等な定義ファイルの作成は困難である 9
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
R1.環境設定の容易化(△) サーバごとの差を考慮した設定の展開が可能となった
設定試行に要する時間は変わらず
R2.設定内容の共有(△) ツールを用いて定義した部分は設定内容として残る
構成定義の継続的な整備(環境変化への追従等)が難しい
R3.バックアップ(△)
構成管理ツールはバックアップに対しては余り役に立たない
サーバ設定をバックアップサーバに展開することはできる
© Cloud Spiral partners 2013
サーバ構成管理ツール(fabric)の導入R1,R2についてはツールに習熟すれば改善が見込めるが・・
10
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
R1.環境設定の容易化設定の試行を時間をかけずに実施したい
R2.設定内容の共有
常にサーバの現状態と設定文書の内容が等価であってほしい
設定文書の作成が容易であるとなお良い
R3.バックアップIaaS基盤をまたがったバックアップ
リソースをできる限り消費しないバックアップ
© Cloud Spiral partners 2013
残課題
11
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
Linux Container(LXC)とは ホスト上にホストのプロセスやリソースを利用可能な隔離領域
(Container)を構成する仮想化技術
完全仮想化に求められるような命令解釈機構やエミュレーションを必要としない
超軽量.ホスト上でContainerを起動するのに数秒しかかからない
カーネルレベルでの対応が進んでいる jail, openvz等と類似
Immutable Infrastructureとは Immutable(不変な)サーバ
サーバ環境を一度定義したら変更しないというポリシーにもとづくサーバ管理手法
© Cloud Spiral partners 2013
Linux Container*とImmutable Infrastructure†
* Helsley, M.: LXC: Linux container tools, IBM devloperWorks Technical Library. (2009).† Chad Fowler:Trash Your Servers and Burn Your Code: Immutable Infrastructure and Disposable Components, http://chadfowler.com/blog/2013/06/23/immutable‐deployments/ (2013).
12
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
Immutable Infrastructureにもとづくサーバ管理
冪等性を十分に考慮した定義ファイルを常に構築する必要がある
特定の環境でしか動作しない定義ファイルができることは良くある
設定変更=Containerの新規作成
冪等性を考慮する必要がない
LXCが動く環境であればどこにでも移行可能
記録されたデータ類をどうするかを考慮する必要がある
© Cloud Spiral partners 2013
構成定義ファイル編集
tomcatツールが設定を展開
tomcat
httpd
svn
tomcathttpdtomcathttpdsvn
構成定義ファイル編集
tomcat
Container作成
tomcat
廃棄
tomcathttpd
tomcat
httpd
Container作成
廃棄
tomcat
httpd
svn
tomcathttpdsvn Container
作成
13
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
R1.環境設定の容易化(○)
設定の試行に要する時間が大幅に改善される
R2.設定内容の共有(○)
環境設定の際に定義ファイルがまず作成されるためサーバ環境と構成定義ファイルは常に等価
R3.バックアップ(○)
LXCさえ動作すればどこにでも環境を移行できる
© Cloud Spiral partners 2013
LXCとImmutable Infrastructureの導入
14
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
原則としてContainerはすべてImmutable設定変更が求められる場合は常に作りなおす
Containerには同時に利用するサービスのみが導入されるContainerに保存されるデータをどう扱うか考慮しなければならない 3種類のアーキテクチャについて考察する
© Cloud Spiral partners 2013
CloudSpiralサーバアーキテクチャ
Xen, KVM, etc.
Cent, ubuntu, etc..(Team Server)
Cent, ubuntu, etc..(Team Server)
httpd tracmysql mon
go
IaaS
VM
LinuxContainer
Data
httpd tracmysql
Pattern1 Pattern2
Cent, ubuntu, etc..(Team Server)
httpd tracmysql
Pattern3
Datasvn
mon
go
svn
mon
go
svn
15
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
全てのContainerはデータを一切持たないログ出力等もホストに保存する
Containerは完全にImmutableいつでも差し替えられる
バックアップ時の可搬性が少し低いホストのDataも同時に正しく移行しなければならない
© Cloud Spiral partners 2013
Pattern1:データをホストが管理
Cent, ubuntu, etc..(Team Server)
httpd tracmysql m
ongo
VM
LinuxContainer
Data
svn
Pattern1
16
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
Container内のサービスに登録されたデータは全てContainer内に保存される
Containerはデータに関してはImmutableではない
Container差し替え時にはデータの複製が必要
可搬性が非常に高い
Containerごと移行するだけで良い
© Cloud Spiral partners 2013
Pattern2:データをContainer自身で管理
Pattern2
Cent, ubuntu, etc..(Team Server)
httpd tracmysql m
ongo
svn
17
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
全てのContainerはデータを専用のDataContainerに保存する
Containerは完全にImmutableいつでも差し替えられる
可搬性はPattern1よりは高くPattern2よりは低いDataContainerも常に
一緒に移動しなければならない
© Cloud Spiral partners 2013 18
Pattern3:データをDataContainerが管理
Cent, ubuntu, etc..(Team Server)
httpd tracmysql Datam
ongo
svn
Pattern3
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
Pattern2をベースにする
可搬性を重視したのと,類似環境間のデータ移行は容易であると考えたため
カリキュラムの進行にあわせて,Container単位でサービスを追加する
Container作成後の授業に必要なデータの追加・変更は構成管理ツールを用いて行う
Containerに教員は原則ログインしない
© Cloud Spiral partners 2013 19
現状の構築・運用ポリシー(1/2)
Pattern2
Cent, ubuntu, etc..(Team Server)
httpd tracmysql m
ongo
svn
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
Containerの設定ファイル及び構成管理ツールの設定ファイルによって設定を共有する環境変更時には新Container作成,データを旧環境から移行,Container差し替え,旧コンテナ廃棄の手順で実施するバックアップもContainerを利用して実施する Containerのバージョン管理(Disaster
Recovery対策) Containerのexportにより教員の
ローカル環境でContainerを稼働させられる ‐>サーバリソースを消費しない
© Cloud Spiral partners 2013 20
現状の構築・運用ポリシー(2/2)
Pattern2
Cent, ubuntu, etc..(Team Server)
httpd tracmysql m
ongo
svn
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
LXCDocker (https://www.docker.io/ )
構成管理ツール
fabric
IaaSCloudStackedubaseCloudAWS
© Cloud Spiral partners 2013 21
試行中の環境
CloudStack, edubase Cloud, AWSのIaaSを利用IaaS
VM
Docker
CentOS6.5 or CoreOS
httpd tracmysql m
ongo
svn
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
授業の進捗にあわせてコンテナを作成し,入れ替える
80/8080を必要とするサービスにはhttpd経由でアクセスする
© Cloud Spiral partners 2013 22
試行中の構築・運用の流れ
httpd
httpdtracmysql
tomcatmongo jenkins
mongo(ログ取得用)
httpsvntracmysql廃棄
httpd tomcatmongo jenkins
mongo(ログ取得用)
httpdsvntracmysql
バックアップに移行
再チーム分け(データは新規)
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク© Cloud Spiral partners 2013 23
設定ファイル例(Docker)FROM centos:6.4MAINTAINER igaki version:0.1RUN yum update ‐yRUN cp ‐p /usr/share/zoneinfo/Japan /etc/localtime
# Install and configure ntpdRUN yum ‐y install ntpRUN sed ‐i ‐e "s/server 0.centos.pool.ntp.org/server ‐4 ntp.nict.jp/g" /etc/ntp.conf;sed ‐i ‐e "s/server 1.centos.pool.ntp.org/server ‐4 ntp1.jst.mfeed.ad.jp/g" /etc/ntp.conf;sed ‐i ‐e "s/server 2.centos.pool.ntp.org/server ‐4 ntp2.jst.mfeed.ad.jp¥nserver ‐4 ntp3.jst.mfeed.ad.jp/g" /etc/ntp.conf
#wget and localinstall jre7 and add tomcat userRUN mkdir /home/rep;cd /home/rep/;wget ‐O jre‐7u51‐linux‐x64.rpm ‐‐no‐cookies ‐‐header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com" "http://download.oracle.com/otn‐pub/java/jdk/7u51‐b13/jre‐7u51‐linux‐x64.rpm" ‐‐no‐check‐certificate;yum localinstall ‐y jre‐7u51‐linux‐x64.rpm;useradd ‐s /sbin/nologin tomcat
EXPOSE 8080
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
高度なソフトウェア工学教育に求められるサーバ構築・運用に関する要求の整理したIaaS,構成管理ツール,LXC等の組み合わせによるサーバアーキテクチャ及び運用ポリシーを提案した
実環境で実施し,ポリシーやアーキテクチャに改善の余地が無いか検討する
運用・構築に必要なスキルセットを整理し,管理者向け教育カリキュラムを構築する
© Cloud Spiral partners 2013 24
おわりに
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
運用に関するノウハウは重要だと思われるが論文化事例が少ない
どうすれば研究論文として評価されるのか?
© Cloud Spiral partners 2013 25
今後の課題
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
おまけ
© Cloud Spiral partners 2013 26
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
名前:井垣 宏(IGAKI Hiroshi) Twitter: @hirocell
博士(工学)奈良先端科学技術大学院大学で取得
現所属:大阪大学大学院情報科学研究科役職:特任准教授 「ソフトウェアイノベーション先導のための研究教育プログラム
の開発」プロジェクト
専門分野 クラウド環境を用いたソフトウェア工学教育 ユーザインタフェース クラウドコンピューティング,SOA
© Cloud Spiral partners 2013 27
自己紹介
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
Hiroshi Igaki, Naoki Fukuyasu, Sachio Saiki, ShinsukeMatsumoto, and Shinji Kusumoto, "Quantitative Project Assessment for Teaching Scrum Using Ticket Driven Development," In Proceedings of the 2014 International Conference on Software Engineering(ICSE2014), 採録済.
高先修平,井垣宏,肥後芳樹,楠本真二 , “タスクボードとオンラインストレージを用いたソフトウェア開発PBLのためのタスク記録支援環境の構築,” 情報処理学会論文誌, volume 55, number 1, pages 199‐209, 2014年1月(情報処理学会特選論文)
© Cloud Spiral partners 2013 28
近の論文
Cloud Specialist Program Initiative for Reality‐based Advanced Learning
分野・地域を越えた実践的情報教育協働ネットワーク
カリキュラムの基本方針
2929
クラウド開発基礎時期:4~7月
コマ:10日×4コマ
クラウド基礎PBL時期:8月
コマ:5日×4コマ
クラウド開発応用時期:9月
コマ:5日×4コマ
クラウド発展PBL(対面講義と分散開発)
時期:10~12月コマ:4日×4コマ(+分散)
クラウドを利用したアジャイル開発(Scrum)の学習-チーム開発(ファシリテーション)-プロセス・プロダクト品質を意識したScrum開発-IaaS,SaaS,DaaSの利用-MongoDB, Java, JavaScriptを用いたWebアプリ開発-テスト・レビュー技法,CI技術
© Cloud Spiral partners 2013