More Related Content
Similar to クラウド開発に役立つ OSS あれこれ
Similar to クラウド開発に役立つ OSS あれこれ (20)
クラウド開発に役立つ OSS あれこれ
- 1. 【19-E-4】
】
クラウド開発に役立つ OSS あれこれ
2010.2.19
水野 正隆 / 奥垣内 喬
- 2. 自己紹介
水野 正隆 (みずの まさたか)
– 1999 年 株式会社オージス総研入社
– 開発・保守の現場を渡り歩くおっさん
• 出身: OODB (Objectivity DB)
• 母国語: C/C++
• ひとこと: OO厨じゃないよ
奥垣内 喬 (おくがうち たかし)
– 後ほど出てきます。
- 12. クラウド – オンプレミス連携
オンプレミス 【on-premise】
】
• 原義は「構内の」などの意
• 情報サービスを,自社内のハードウエアとソフトウエアに
よって運用する方式。自社運用型。「—型」
-- goo 辞書より
- 13. どうするの? 1 簡単に連携したい。
サービスに依存する
おまじないや アラビンドビン
…じゃなかった。
決まった手順を
アブラ
いちいち実装したくない。 カタブラ…
- 20. どうするの? 2 クラウドインテグレーション
厄介な問題が多い。
• プロトコルにギャップ
• 接続数が多い
- 23. どうするの? 3 クラウド環境で共同開発
意外な盲点はないか?
実例
– チームの責任者が代表として AWS の契約を
した。チームメンバがサービスを利用するとき
に困った。
• ID & シークレットキー共有でなんとかしたけど…
- 25. どうするの? 4 クラウド環境でテストする
これまでのプラクティスは使える?
• 雲の向こうにありますが…
– SaaS をカスタマイズしたアプリ
– PaaS 環境に作ったアプリ
• ローカルで同じ環境を作ればOK?
– IaaS 環境に作ったアプリ
- 26. よい子のテストの習慣は? (1/2)
転ばぬ先
“自分”のテスト環境を持つ の杖ね。
• 本番と同じ環境は作れそう。
• 単体テスト環境?
• テストスイート?
実例
社内にもテスト環境が欲しかった。
• テスト実行にお金かかるし。
- 27. よい子のテストの習慣は? (2/2)
コードはいつでも
テストの自動化 リリース可能?
• これまでのように、ビルド・
テストをバックグラウンドで
やるような仕掛けは
クラウド環境で作れる?
実例
– PaaS で CI が困った。
- 29. どうするの? 5 デプロイを簡単にしたい
うまい方法を見つけないと失敗しそう。
• デプロイ先が多い
– 異なるクラウドサービス
– 複数の仮想マシン
• 仮想マシンの増減
- 30. よい子のデプロイの習慣は?
1クリックが
嬉しいな。
デプロイを自動化する
• 最新のテストされたコードを、
簡単にデプロイするには
どうすれば良い?
• 沢山ある環境に対して、
人の手でデプロイしていく
なんて怖くてできない。
- 33. どうするの?
1. 手軽に連携したい
2. 複数のサービスの連携
3. 共同開発
4. テスト
5. デプロイを簡単に
- 35. あらためて自己紹介
- 先に出てきました。
- 2006年 株式会社オージス総研入社
- 調査・企画、OSS製品のプリセールスなどに従事
出身: MIDI
母国語: AppleScript
ひとこと: OOってなんですか?
- 37. 連携?
とりあえずつながる
- サービス/プラットフォーム毎に要求される固有のメッセージ交換手順や
データの型を扱える。
- とりあえず相手と話ができる能力があるかどうか。
エレガントにつなげる
- 相手の(またはこちらの)都合に合わせて臨機応変に対応しなければ
いけない部分を、如何に労力をかけずに実現できるか。
- 再利用可能な、または移植可能な部品化を促進するインフラや
アーキテクチャがあるかどうか。
- 38. 「とりあえずつながる」
分類としてこんなものが…
▼サービス / プラットフォームの API を使いやすく
WSDL などを入力とする自動生成された静的型付け言語用の
サービスコンシューマやメッセージのテンプレートが同梱されてたりとか
DSLっぽく文法が定義されてたり、マクロが定義されてたり
▼目的・用途別のツール
主に上記の「使いやすく」系ツールキットを利用して作られた、特定用途
向けのアプリケーションとか。UI があったり
逆に既存の便利ツールがクラウド環境にも対応しました、など。
- 39. 「とりあえずつながる」
boto Beatbox
rforce
SWDC-WSC salesforcealchemy
ActiveSalesforce Salesforce
Three Sharp
Python Toolkit
AWS::S3 netflexity-* lits3 amazon-cxf
WWW::Salesforce Amazon * PHP Class
Wakame
cloud loader
fabulatr
s3funnel
Puppet
…すごくたくさんある!
- 40. サービス / プラットフォームのAPI を使いやすく
調査時のバージョン : 0.4β
rforce 実行環境 : Ruby 1.8.x, 1.9.x / クロスプラットフォーム
ライセンス : MIT/X Consortium Licence
Web : http://rforce.rubyforge.org/
概要・ユースケース
Force.com の Web サービス API (Partner API)を容易に扱える Ruby
ライブラリ。SOQL のクエリをコマンドラインで実行して結果を確認
するなどの、ちょっとしたツールを作成するのに有用そう。
なかみ
WSDL の operation をメソッド名に、引数として SOAP の BODY に
格納される XML と等価な構造の、入れ子になった Hash を指定して
実行する。method_missing でテンプレートの文字列中にそれらの
情報を埋め込んで送信しているだけというシンプルな作りなので
送信時の諸々の妥当性の検証は利用者におまかせです。
- 41. どうするの?
1. 手軽に連携したい
2. 複数のサービスの連携
3. 共同開発
4. テスト
5. デプロイを簡単に
- 42. 目的・用途別のツール
調査時のバージョン : 0.0.1
実行環境 : Python 2.6.x 以上 / クロスプラットフォーム
ライセンス : BSD Software Licence
Web : http://code.google.com/p/fabulatr/
概要・ユースケース
Amazon EC2 を、代表者のAWSアカウント1つで多人数で利用する際に
有用なツール。Web ページのフォームよりメールアドレスを入力すると、
AMI 起動ボタンのあるページへのリンクとそのユーザー用の秘密鍵が
添付されたメールが届く。クレジットカード情報と紐づいた AWS
アカウントや、各種クレデンシャル情報を末端の利用者に一切知らせる
ことなく運用可能。
なかみ
boto というプラットフォーム特化型ライブラリと、 Pylons という Web
フレームワークに依存。easy_install でのインストールの際には、Pylons
が依存する webhelpers のバージョンを 0.6.4 に指定しないと動かない。
SMTP サーバとして指定できるのは GMail の SMTP サーバだけっぽい。
- 43. 設定自動化
調査時のバージョン : 0.25.4
実行環境 : Ruby 1.8.7 / OS X, POSIX
ライセンス : GPL v2
Web : http://reductivelabs.com/trac/puppet
概要・ユースケース
システム管理を自動化するツール。管理対象である複数台のマシンに
対してOS/ミドルウェア/アプリケーション等の設定を自動更新するのに
有用なツール。
設定のためのスクリプトを書くのではなく、環境のあるべき姿をマニフェ
ストとして書くのが特徴。抽象化レイヤの存在により、OSやディストリ
ビューションの違いを意識することなくマニフェストを記述することがで
きる。
なかみ
クライアント/サーバ構成になっていて、クライアントが定期的にサーバ
にあるマニフェストと自分の環境との差分を見て、環境を更新する仕掛
け。
- 44. 設定自動化
調査時のバージョン : 0.5.0
実行環境 : Ruby 1.8.7 / POSIX
ライセンス : Apache Software License
Web : http://wakame.axsh.jp/
概要・ユースケース
Amazon EC2 のインスタンス数を自動的に増減させるのに有用なツー
ル。Ruby で書かれた日本製のエンジン。負荷状況に応じてシステムを
スケールするよりも (Reactive Scaling)、あらかじめ計画したようにス
ケールさせる (Proactive Scaling) 方を重要視しているのが特徴的。
名前は“ふえるわかめ○ゃん“からきている?
なかみ
Master と Agent と呼ばれるクライアント/サーバ構成で、ノード間を
AMQP (Advanced Message Queuing Protocol) によるメッセージ
ングハブでつないでスケール時の処理の同期を取っている。あらかじめ
Wakame をフルセットでセットアップしておいた AMI を作っておき、そ
こから役割に応じた Agent が生成されるしかけ 。
- 45. どうするの?
1. 手軽に連携したい
2. 複数のサービスの連携
3. 共同開発
4. テスト
5. デプロイを簡単に
- 47. 「エレガントにつなげる」
Restlet GAE-json-rest
Atomosphere
OpenSocial Java Reflex
AppEngine Gifts framework
OpenESB SnapLogic
mule ESB
Synapse Camel
JBoss Enterprise
Tuscany
SOA Platform
Eucalyptus
Nimbus OpenNebula
AppScale APSales
…そこそこある
- 48. 都合の良い?インタフェースをつくれるかも
調査時のバージョン : 0.5.2
実行環境 : Java 5.0 以上/クロスプラットフォーム
Atomosphere ライセンス : GPL v2
Web : https://atmosphere.dev.java.net/
概要・ユースケース
Servlet 3.0 仕様による非同期 IO の標準化を待たずに実装された
様々なComet (Ajax サーバプッシュ)関連 API を抽象化するライブラリ
GAE/J 上でも動く。
なかみ
GAEのサンドボックスって制約上スレッドの操作ができないのでは?と
いう素人な疑問を、Non-Brocking IO 非対応なサーバ向けの実装および
java.util.concurrent.CountDownLatch の利用による力技?で回避。
- 50. プロキシ?フィルタ?サービスの実行基盤
調査時のバージョン : 3.0 M1 Community Edition
実行環境 : Java SE 5.0 以上
ライセンス : Common Public Attribution License 1.0
Web : http://www.mulesoft.org/display/MULE/Home
概要・ユースケース
その名の通り、SOA における中核インフラらしい「ESB」として利用できる
POJO サービスコンテナ。プロトコルブリッジング/ルーティング/データ
変換などの機能を持ち、書籍 “Enterprise Integration Pattern” にある
主要なパターンを実装することができる。OSS ESB としては最古の部類。
なかみ
Spring frameworkを利用して設定を行う、SEDA(Staged Event-Driven
Architecture)実装。内部に配置された各サービスには独立したスレッドと
イベントのキューが割り当てられ、複数サービスのシーケンシャルな処理
を最適化する。
- 51. どうするの?
1. 手軽に連携したい
2. 複数のサービスの連携
3. 共同開発
4. テスト
5. デプロイを簡単に
- 52. パブリックな IaaS と API 互換のインフラを構築する
調査時のバージョン : 1.6.2
実行環境 : Linux
(+ ディストリビューションにより Xen または KVM)
ライセンス : GPL v3
Web : http://eucalyptus.cs.ucsb.edu/
概要・ユースケース
Amazon EC2, S3, EBS互換のインフラサービスを構築可能なツール。
コマンドラインツールに加え、設定管理用の Web アプリケーションも
利用できる。NASA での採用実績がある。
なかみ
API まわりの実装など、結構な部分が Java で書かれており、mule ESB、
Drools、Axis2、Jetty などが利用されてたりする。
- 53. どうするの?
1. 手軽に連携したい
2. 複数のサービスの連携
3. 共同開発
4. テスト
5. デプロイを簡単に
- 54. まとめ
• 企業システムとクラウドと SI
– 連携必須。
– 現場的には、テストやデプロイ等にも見通しを持ちたい。
• OSS と SI
– ツールの仕組みを読み解くのは、クラウドとの付き合い方を
模索するのに好都合かも。
– 成熟度の高い一部のツールに淘汰されきってない今だから
こそできることがきっとあるはず。それが SI のネタになりそ
う。