immutable...

29
Cloud Specialist Program Initiative for Realitybased Advanced Learning 分野・地域を越えた実践的情報教育協働ネットワーク Immutable Infrastructureを利用した ソフトウェア工学教育のためのサーバ 運用手法の検討 ○井垣 1 ,福安 直樹 2 ,楠本 真二 1 1 大阪大学大学院情報科学研究科 2 和歌山大学システム工学部

Upload: hiroshi-igaki

Post on 22-May-2015

834 views

Category:

Technology


2 download

DESCRIPTION

Winter Workshop2014@大洗での発表資料

TRANSCRIPT

Page 1: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

Cloud Specialist Program Initiative for Reality‐based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク

Immutable Infrastructureを利用した

ソフトウェア工学教育のためのサーバ運用手法の検討

○井垣 宏1,福安 直樹2,楠本 真二1

1 大阪大学大学院情報科学研究科

2 和歌山大学システム工学部

Page 2: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

Cloud Specialist Program Initiative for Reality‐based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク

enPiT(Education Network for Practical Information Technologies)

2© Cloud Spiral partners 2013

Page 3: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

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

Page 4: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

Cloud Specialist Program Initiative for Reality‐based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク© Cloud Spiral partners 2013 4

クラウド基礎PBL(夏合宿)の風景

Page 5: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

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

Page 6: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

Cloud Specialist Program Initiative for Reality‐based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク

R1.環境設定の容易化

サーバ環境設定の試行(サーバ起動‐>設定試行‐>OK/NG判断‐>やり直し)や段階的な設定変更を時間をかけずに実施したい

1つのサーバへの設定を他サーバへも適用したい

R2.設定内容の共有

サーバ環境設定内容を文書化し,共有したい

R3.バックアップ

Disaster Recoveryのためのバックアップ

同一のデータと設定をもつ別サーバを迅速に立ち上げられる

終了後の評価や研究のためのバックアップ

リソースをできる限り消費せずに,データやログを残しておきたい

© Cloud Spiral partners 2013

サーバ環境構築・運用に対する我々の要求

6

Page 7: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

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

Page 8: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

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

Page 9: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

Cloud Specialist Program Initiative for Reality‐based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク

環境設定をいつ,何回実行しても結果が同じになる性質

© Cloud Spiral partners 2013

サーバ構成管理における冪等性

$ echo “hoge = true” >> /path/config

冪等性が考慮されていれば,環境設定を何回実行してもエラーにならない整備された構成定義ファイルがあれば,誰でもサーバを定

義された状態にできる

すべての環境依存が解決できるわけではないいつでも常に同じサーバ環境が再現できるわけではない

あらゆる状況に対応した冪等な定義ファイルの作成は困難である 9

Page 10: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

Cloud Specialist Program Initiative for Reality‐based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク

R1.環境設定の容易化(△) サーバごとの差を考慮した設定の展開が可能となった

設定試行に要する時間は変わらず

R2.設定内容の共有(△) ツールを用いて定義した部分は設定内容として残る

構成定義の継続的な整備(環境変化への追従等)が難しい

R3.バックアップ(△)

構成管理ツールはバックアップに対しては余り役に立たない

サーバ設定をバックアップサーバに展開することはできる

© Cloud Spiral partners 2013

サーバ構成管理ツール(fabric)の導入R1,R2についてはツールに習熟すれば改善が見込めるが・・

10

Page 11: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

Cloud Specialist Program Initiative for Reality‐based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク

R1.環境設定の容易化設定の試行を時間をかけずに実施したい

R2.設定内容の共有

常にサーバの現状態と設定文書の内容が等価であってほしい

設定文書の作成が容易であるとなお良い

R3.バックアップIaaS基盤をまたがったバックアップ

リソースをできる限り消費しないバックアップ

© Cloud Spiral partners 2013

残課題

11

Page 12: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

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

Page 13: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

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

Page 14: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

Cloud Specialist Program Initiative for Reality‐based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク

R1.環境設定の容易化(○)

設定の試行に要する時間が大幅に改善される

R2.設定内容の共有(○)

環境設定の際に定義ファイルがまず作成されるためサーバ環境と構成定義ファイルは常に等価

R3.バックアップ(○)

LXCさえ動作すればどこにでも環境を移行できる

© Cloud Spiral partners 2013

LXCとImmutable Infrastructureの導入

14

Page 15: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

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

Page 16: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

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

Page 17: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

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

Page 18: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

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

Page 19: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

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

Page 20: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

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

Page 21: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

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

Page 22: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

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

バックアップに移行

再チーム分け(データは新規)

Page 23: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

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

Page 24: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

Cloud Specialist Program Initiative for Reality‐based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク

高度なソフトウェア工学教育に求められるサーバ構築・運用に関する要求の整理したIaaS,構成管理ツール,LXC等の組み合わせによるサーバアーキテクチャ及び運用ポリシーを提案した

実環境で実施し,ポリシーやアーキテクチャに改善の余地が無いか検討する

運用・構築に必要なスキルセットを整理し,管理者向け教育カリキュラムを構築する

© Cloud Spiral partners 2013 24

おわりに

Page 25: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

Cloud Specialist Program Initiative for Reality‐based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク

運用に関するノウハウは重要だと思われるが論文化事例が少ない

どうすれば研究論文として評価されるのか?

© Cloud Spiral partners 2013 25

今後の課題

Page 26: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

Cloud Specialist Program Initiative for Reality‐based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク

おまけ

© Cloud Spiral partners 2013 26

Page 27: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

Cloud Specialist Program Initiative for Reality‐based Advanced Learning

分野・地域を越えた実践的情報教育協働ネットワーク

名前:井垣 宏(IGAKI Hiroshi) Twitter: @hirocell

博士(工学)奈良先端科学技術大学院大学で取得

現所属:大阪大学大学院情報科学研究科役職:特任准教授 「ソフトウェアイノベーション先導のための研究教育プログラム

の開発」プロジェクト

専門分野 クラウド環境を用いたソフトウェア工学教育 ユーザインタフェース クラウドコンピューティング,SOA

© Cloud Spiral partners 2013 27

自己紹介

Page 28: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

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

近の論文

Page 29: Immutable Infrastructureを利用したソフトウェア工学教育のためのサーバ運用手法の検討

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