【19-E-4】
       】
クラウド開発に役立つ OSS あれこれ
                   2010.2.19



           水野 正隆 / 奥垣内 喬
自己紹介

   水野 正隆 (みずの まさたか)
   – 1999 年 株式会社オージス総研入社
   – 開発・保守の現場を渡り歩くおっさん
       • 出身: OODB (Objectivity DB)
       • 母国語:...
オブジェクトの広場

http://www.ogis-ri.co.jp/otc/hiroba/
  – OO/UML, モデリングなどを扱う
  – オンラインマガジン
  – もう11年目
  – 継続は力なり
今回のデブサミのキャッチコピー


世界は変わった。
開発の現場はどうか?
こんなことを考えてみる。
           。

企業内システムを
クラウドサービスで
再構築する。
話したいこと

1. クラウドでアプリを開発するときの
   疑問・課題:「クラウドではどうするの?」
2. 課題を解決する OSS
クラウドで開発するときの         どうするの?




注) しばし、SIer 的な話にお付き合いください…
よくある議論ですが、

「世の中のシステム
全部がクラウドに
なるわけではない」
と言われています。
なぜか?


(大きな)会社では、
社内のシステムが
既にある。
データは社内にある!

社内システムが主で、   従業員スキル管理

クラウド上のアプリが
従の関係にある
システムの場合      人事DB
             ・従業員情報
つなげなくちゃ。

社内システムと
クラウド上のアプリを
連携させる。
クラウド – オンプレミス連携

 オンプレミス 【on-premise】
                   】
• 原義は「構内の」などの意
• 情報サービスを,自社内のハードウエアとソフトウエアに
  よって運用する方式。自社運用型。「...
どうするの?   1   簡単に連携したい。


 サービスに依存する
 おまじないや            アラビンドビン
                   …じゃなかった。
 決まった手順を
                      ...
だけど、話はそれだけじゃない…
嫌よ。

あんまり仲良くなくても
つなげなくちゃいけない。
たとえば、プロトコルにギャップ

連携しようとしたものの
• 社内システムが独自のプロトコルでしか
  通信できない。
• クラウドは SOAP/WSDL を話す。
さらに…

クラウドサービス毎に得意分野は違う。
• 向き・不向きがある。
• 用途に応じてクラウドを使い分ける。
クラウドを組み合わせる

いくつかのクラウドサービスを
統合したシステムを構築する
ことになるでしょう。
クラウドインテグレーション

= オンプレミス連携 + クラウド間連携
どうするの?   2   クラウドインテグレーション


 厄介な問題が多い。
 • プロトコルにギャップ
 • 接続数が多い
システム開発ってそれだけじゃない。


           • 共 同開発
            • テスト
             • デプロイ
            …
共同開発!


  どうやったら
 一緒にやって
 いけるかしら?
どうするの?   3   クラウド環境で共同開発

 意外な盲点はないか?

   実例
   – チームの責任者が代表として AWS の契約を
     した。チームメンバがサービスを利用するとき
     に困った。
         • ...
テスト!

   どうやって
 テストする気よ?
どうするの?   4   クラウド環境でテストする

 これまでのプラクティスは使える?
 • 雲の向こうにありますが…
   – SaaS をカスタマイズしたアプリ
   – PaaS 環境に作ったアプリ
 • ローカルで同じ環境を作ればOK...
よい子のテストの習慣は? (1/2)
                     転ばぬ先
“自分”のテスト環境を持つ        の杖ね。
• 本番と同じ環境は作れそう。
• 単体テスト環境?
• テストスイート?

 実例
 社内にもテスト...
よい子のテストの習慣は? (2/2)
                     コードはいつでも
テストの自動化              リリース可能?

• これまでのように、ビルド・
  テストをバックグラウンドで
  やるような仕掛けは...
デプロイ!

  どうやって
デプロイする気よ?
どうするの?   5   デプロイを簡単にしたい

 うまい方法を見つけないと失敗しそう。
 • デプロイ先が多い
   – 異なるクラウドサービス
   – 複数の仮想マシン
 • 仮想マシンの増減
よい子のデプロイの習慣は?
               1クリックが
               嬉しいな。
デプロイを自動化する
• 最新のテストされたコードを、
  簡単にデプロイするには
  どうすれば良い?
• 沢山ある環境に対して...
まとめると
状況

• 連携が避けられないケースがある
 – 社内にデータがある
• 連携は 1 対 1 とは限らない
• 我々の仕事の一番泥臭いところ
 – 共同開発、テスト、デプロイ
 – やはりクラウド環境にもつきまとう
どうするの?




 1.   手軽に連携したい
 2.   複数のサービスの連携
 3.   共同開発
 4.   テスト
 5.   デプロイを簡単に
課題を解決する OSS
あらためて自己紹介


    - 先に出てきました。




    - 2006年 株式会社オージス総研入社
    - 調査・企画、OSS製品のプリセールスなどに従事
      出身: MIDI
      母国語: AppleScri...
課題を解決する OSS

  部品はいっぱいそろっている!
連携?



とりあえずつながる
     - サービス/プラットフォーム毎に要求される固有のメッセージ交換手順や
      データの型を扱える。
     - とりあえず相手と話ができる能力があるかどうか。



エレガントにつなげる
  ...
「とりあえずつながる」
分類としてこんなものが…


 ▼サービス / プラットフォームの API を使いやすく
    WSDL などを入力とする自動生成された静的型付け言語用の
    サービスコンシューマやメッセージのテンプレートが同梱さ...
「とりあえずつながる」
                                 boto           Beatbox
 rforce
                                 SWDC-WSC     ...
サービス / プラットフォームのAPI を使いやすく
                         調査時のバージョン : 0.4β
  rforce                 実行環境 : Ruby 1.8.x, 1.9.x / ク...
どうするの?




  1.   手軽に連携したい
  2.   複数のサービスの連携
  3.   共同開発
  4.   テスト
  5.   デプロイを簡単に
目的・用途別のツール
                    調査時のバージョン : 0.0.1
                    実行環境 : Python 2.6.x 以上 / クロスプラットフォーム
                ...
設定自動化
                 調査時のバージョン : 0.25.4
                 実行環境 : Ruby 1.8.7 / OS X, POSIX
                 ライセンス : GPL v2...
設定自動化
                       調査時のバージョン : 0.5.0
                       実行環境 : Ruby 1.8.7 / POSIX
                       ライセ...
どうするの?




  1.   手軽に連携したい
  2.   複数のサービスの連携
  3.   共同開発
  4.   テスト
  5.   デプロイを簡単に
「エレガントにつなげる」
分類としてこんなものが...


 ▼雲の向こうに理想的なインタフェースをつくるための
   フレームワーク
     プラットフォームの制約がある中で、雲の向こう側にがんばって理想的な
     (こちら側に都合の良...
「エレガントにつなげる」
                         Restlet     GAE-json-rest
 Atomosphere
                      OpenSocial Java      Re...
都合の良い?インタフェースをつくれるかも
                       調査時のバージョン : 0.5.2
                       実行環境 : Java 5.0 以上/クロスプラットフォーム
 Atomo...
プロキシ? フィルタ?
とりあえず                             エレガント




                                   権力




 1 アド・ホックで   2 コンポーネント化 ...
プロキシ?フィルタ?サービスの実行基盤
                        調査時のバージョン : 3.0 M1 Community Edition
                        実行環境 : Java SE 5....
どうするの?




  1.   手軽に連携したい
  2.   複数のサービスの連携
  3.   共同開発
  4.   テスト
  5.   デプロイを簡単に
パブリックな IaaS と API 互換のインフラを構築する
                    調査時のバージョン : 1.6.2
                    実行環境 : Linux
                    ...
どうするの?




  1.   手軽に連携したい
  2.   複数のサービスの連携
  3.   共同開発
  4.   テスト
  5.   デプロイを簡単に
まとめ
• 企業システムとクラウドと SI
  – 連携必須。
  – 現場的には、テストやデプロイ等にも見通しを持ちたい。


• OSS と SI
  – ツールの仕組みを読み解くのは、クラウドとの付き合い方を
    模索するのに好都合か...
ご清聴ありがとうございました
Upcoming SlideShare
Loading in...5
×

クラウド開発に役立つ OSS あれこれ

3,804

Published on

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,804
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

クラウド開発に役立つ OSS あれこれ

  1. 1. 【19-E-4】 】 クラウド開発に役立つ OSS あれこれ 2010.2.19 水野 正隆 / 奥垣内 喬
  2. 2. 自己紹介 水野 正隆 (みずの まさたか) – 1999 年 株式会社オージス総研入社 – 開発・保守の現場を渡り歩くおっさん • 出身: OODB (Objectivity DB) • 母国語: C/C++ • ひとこと: OO厨じゃないよ 奥垣内 喬 (おくがうち たかし) – 後ほど出てきます。
  3. 3. オブジェクトの広場 http://www.ogis-ri.co.jp/otc/hiroba/ – OO/UML, モデリングなどを扱う – オンラインマガジン – もう11年目 – 継続は力なり
  4. 4. 今回のデブサミのキャッチコピー 世界は変わった。 開発の現場はどうか?
  5. 5. こんなことを考えてみる。 。 企業内システムを クラウドサービスで 再構築する。
  6. 6. 話したいこと 1. クラウドでアプリを開発するときの 疑問・課題:「クラウドではどうするの?」 2. 課題を解決する OSS
  7. 7. クラウドで開発するときの どうするの? 注) しばし、SIer 的な話にお付き合いください…
  8. 8. よくある議論ですが、 「世の中のシステム 全部がクラウドに なるわけではない」 と言われています。
  9. 9. なぜか? (大きな)会社では、 社内のシステムが 既にある。
  10. 10. データは社内にある! 社内システムが主で、 従業員スキル管理 クラウド上のアプリが 従の関係にある システムの場合 人事DB ・従業員情報
  11. 11. つなげなくちゃ。 社内システムと クラウド上のアプリを 連携させる。
  12. 12. クラウド – オンプレミス連携 オンプレミス 【on-premise】 】 • 原義は「構内の」などの意 • 情報サービスを,自社内のハードウエアとソフトウエアに よって運用する方式。自社運用型。「—型」 -- goo 辞書より
  13. 13. どうするの? 1 簡単に連携したい。 サービスに依存する おまじないや アラビンドビン …じゃなかった。 決まった手順を アブラ いちいち実装したくない。 カタブラ…
  14. 14. だけど、話はそれだけじゃない…
  15. 15. 嫌よ。 あんまり仲良くなくても つなげなくちゃいけない。
  16. 16. たとえば、プロトコルにギャップ 連携しようとしたものの • 社内システムが独自のプロトコルでしか 通信できない。 • クラウドは SOAP/WSDL を話す。
  17. 17. さらに… クラウドサービス毎に得意分野は違う。 • 向き・不向きがある。 • 用途に応じてクラウドを使い分ける。
  18. 18. クラウドを組み合わせる いくつかのクラウドサービスを 統合したシステムを構築する ことになるでしょう。
  19. 19. クラウドインテグレーション = オンプレミス連携 + クラウド間連携
  20. 20. どうするの? 2 クラウドインテグレーション 厄介な問題が多い。 • プロトコルにギャップ • 接続数が多い
  21. 21. システム開発ってそれだけじゃない。 • 共 同開発 • テスト • デプロイ …
  22. 22. 共同開発! どうやったら 一緒にやって いけるかしら?
  23. 23. どうするの? 3 クラウド環境で共同開発 意外な盲点はないか? 実例 – チームの責任者が代表として AWS の契約を した。チームメンバがサービスを利用するとき に困った。 • ID & シークレットキー共有でなんとかしたけど…
  24. 24. テスト! どうやって テストする気よ?
  25. 25. どうするの? 4 クラウド環境でテストする これまでのプラクティスは使える? • 雲の向こうにありますが… – SaaS をカスタマイズしたアプリ – PaaS 環境に作ったアプリ • ローカルで同じ環境を作ればOK? – IaaS 環境に作ったアプリ
  26. 26. よい子のテストの習慣は? (1/2) 転ばぬ先 “自分”のテスト環境を持つ の杖ね。 • 本番と同じ環境は作れそう。 • 単体テスト環境? • テストスイート? 実例 社内にもテスト環境が欲しかった。 • テスト実行にお金かかるし。
  27. 27. よい子のテストの習慣は? (2/2) コードはいつでも テストの自動化 リリース可能? • これまでのように、ビルド・ テストをバックグラウンドで やるような仕掛けは クラウド環境で作れる? 実例 – PaaS で CI が困った。
  28. 28. デプロイ! どうやって デプロイする気よ?
  29. 29. どうするの? 5 デプロイを簡単にしたい うまい方法を見つけないと失敗しそう。 • デプロイ先が多い – 異なるクラウドサービス – 複数の仮想マシン • 仮想マシンの増減
  30. 30. よい子のデプロイの習慣は? 1クリックが 嬉しいな。 デプロイを自動化する • 最新のテストされたコードを、 簡単にデプロイするには どうすれば良い? • 沢山ある環境に対して、 人の手でデプロイしていく なんて怖くてできない。
  31. 31. まとめると
  32. 32. 状況 • 連携が避けられないケースがある – 社内にデータがある • 連携は 1 対 1 とは限らない • 我々の仕事の一番泥臭いところ – 共同開発、テスト、デプロイ – やはりクラウド環境にもつきまとう
  33. 33. どうするの? 1. 手軽に連携したい 2. 複数のサービスの連携 3. 共同開発 4. テスト 5. デプロイを簡単に
  34. 34. 課題を解決する OSS
  35. 35. あらためて自己紹介 - 先に出てきました。 - 2006年 株式会社オージス総研入社 - 調査・企画、OSS製品のプリセールスなどに従事 出身: MIDI 母国語: AppleScript ひとこと: OOってなんですか?
  36. 36. 課題を解決する OSS 部品はいっぱいそろっている!
  37. 37. 連携? とりあえずつながる - サービス/プラットフォーム毎に要求される固有のメッセージ交換手順や    データの型を扱える。 - とりあえず相手と話ができる能力があるかどうか。 エレガントにつなげる - 相手の(またはこちらの)都合に合わせて臨機応変に対応しなければ  いけない部分を、如何に労力をかけずに実現できるか。 - 再利用可能な、または移植可能な部品化を促進するインフラや  アーキテクチャがあるかどうか。
  38. 38. 「とりあえずつながる」 分類としてこんなものが… ▼サービス / プラットフォームの API を使いやすく WSDL などを入力とする自動生成された静的型付け言語用の サービスコンシューマやメッセージのテンプレートが同梱されてたりとか DSLっぽく文法が定義されてたり、マクロが定義されてたり ▼目的・用途別のツール 主に上記の「使いやすく」系ツールキットを利用して作られた、特定用途 向けのアプリケーションとか。UI があったり 逆に既存の便利ツールがクラウド環境にも対応しました、など。
  39. 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. 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. 41. どうするの? 1. 手軽に連携したい 2. 複数のサービスの連携 3. 共同開発 4. テスト 5. デプロイを簡単に
  42. 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. 43. 設定自動化 調査時のバージョン : 0.25.4 実行環境 : Ruby 1.8.7 / OS X, POSIX ライセンス : GPL v2 Web : http://reductivelabs.com/trac/puppet 概要・ユースケース システム管理を自動化するツール。管理対象である複数台のマシンに 対してOS/ミドルウェア/アプリケーション等の設定を自動更新するのに 有用なツール。 設定のためのスクリプトを書くのではなく、環境のあるべき姿をマニフェ ストとして書くのが特徴。抽象化レイヤの存在により、OSやディストリ ビューションの違いを意識することなくマニフェストを記述することがで きる。 なかみ クライアント/サーバ構成になっていて、クライアントが定期的にサーバ にあるマニフェストと自分の環境との差分を見て、環境を更新する仕掛 け。
  44. 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. 45. どうするの? 1. 手軽に連携したい 2. 複数のサービスの連携 3. 共同開発 4. テスト 5. デプロイを簡単に
  46. 46. 「エレガントにつなげる」 分類としてこんなものが... ▼雲の向こうに理想的なインタフェースをつくるための   フレームワーク プラットフォームの制約がある中で、雲の向こう側にがんばって理想的な (こちら側に都合の良い)インタフェースをこしらえたり ▼プロキシとかフィルタとかそれっぽいサービスの実行基盤 サービスやプラットフォーム毎に異なる制約を意識させないための中継層 をこしらえ、それらの諸々の処理を分離・独立させて隔離し、再利用可能に する仕組みがあったり ▼プライベートクラウド構築の素 こちら側の資産を、雲の向こう側にあわせる形で互換性を持たせたり
  47. 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. 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 の利用による力技?で回避。
  49. 49. プロキシ? フィルタ? とりあえず エレガント 権力 1 アド・ホックで 2 コンポーネント化 3 共通処理の分離 カオス 分散 λ. . . . . 集中配備
  50. 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. 51. どうするの? 1. 手軽に連携したい 2. 複数のサービスの連携 3. 共同開発 4. テスト 5. デプロイを簡単に
  52. 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. 53. どうするの? 1. 手軽に連携したい 2. 複数のサービスの連携 3. 共同開発 4. テスト 5. デプロイを簡単に
  54. 54. まとめ • 企業システムとクラウドと SI – 連携必須。 – 現場的には、テストやデプロイ等にも見通しを持ちたい。 • OSS と SI – ツールの仕組みを読み解くのは、クラウドとの付き合い方を 模索するのに好都合かも。 – 成熟度の高い一部のツールに淘汰されきってない今だから こそできることがきっとあるはず。それが SI のネタになりそ う。
  55. 55. ご清聴ありがとうございました

×