SlideShare a Scribd company logo
1 of 55
【19-E-4】
       】
クラウド開発に役立つ OSS あれこれ
                   2010.2.19



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

   水野 正隆 (みずの まさたか)
   – 1999 年 株式会社オージス総研入社
   – 開発・保守の現場を渡り歩くおっさん
       • 出身: OODB (Objectivity DB)
       • 母国語: C/C++
       • ひとこと: OO厨じゃないよ




   奥垣内 喬 (おくがうち たかし)
   – 後ほど出てきます。
オブジェクトの広場

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


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

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

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




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

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


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

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

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

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

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


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

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

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

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

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

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


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


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


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

 意外な盲点はないか?

   実例
   – チームの責任者が代表として AWS の契約を
     した。チームメンバがサービスを利用するとき
     に困った。
         • ID & シークレットキー共有でなんとかしたけど…
テスト!

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

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

 実例
 社内にもテスト環境が欲しかった。
   • テスト実行にお金かかるし。
よい子のテストの習慣は? (2/2)
                     コードはいつでも
テストの自動化              リリース可能?

• これまでのように、ビルド・
  テストをバックグラウンドで
  やるような仕掛けは
  クラウド環境で作れる?

 実例
 – PaaS で CI が困った。
デプロイ!

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

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

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




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


    - 先に出てきました。




    - 2006年 株式会社オージス総研入社
    - 調査・企画、OSS製品のプリセールスなどに従事
      出身: MIDI
      母国語: AppleScript
      ひとこと: OOってなんですか?
課題を解決する OSS

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



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



エレガントにつなげる
     - 相手の(またはこちらの)都合に合わせて臨機応変に対応しなければ
      いけない部分を、如何に労力をかけずに実現できるか。
     - 再利用可能な、または移植可能な部品化を促進するインフラや
      アーキテクチャがあるかどうか。
「とりあえずつながる」
分類としてこんなものが…


 ▼サービス / プラットフォームの API を使いやすく
    WSDL などを入力とする自動生成された静的型付け言語用の
    サービスコンシューマやメッセージのテンプレートが同梱されてたりとか
    DSLっぽく文法が定義されてたり、マクロが定義されてたり


 ▼目的・用途別のツール
    主に上記の「使いやすく」系ツールキットを利用して作られた、特定用途
    向けのアプリケーションとか。UI があったり
    逆に既存の便利ツールがクラウド環境にも対応しました、など。
「とりあえずつながる」
                                 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
                           …すごくたくさんある!
サービス / プラットフォームの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 でテンプレートの文字列中にそれらの
     情報を埋め込んで送信しているだけというシンプルな作りなので
     送信時の諸々の妥当性の検証は利用者におまかせです。
どうするの?




  1.   手軽に連携したい
  2.   複数のサービスの連携
  3.   共同開発
  4.   テスト
  5.   デプロイを簡単に
目的・用途別のツール
                    調査時のバージョン : 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 サーバだけっぽい。
設定自動化
                 調査時のバージョン : 0.25.4
                 実行環境 : Ruby 1.8.7 / OS X, POSIX
                 ライセンス : GPL v2
                 Web : http://reductivelabs.com/trac/puppet



 概要・ユースケース
    システム管理を自動化するツール。管理対象である複数台のマシンに
    対してOS/ミドルウェア/アプリケーション等の設定を自動更新するのに
    有用なツール。
    設定のためのスクリプトを書くのではなく、環境のあるべき姿をマニフェ
    ストとして書くのが特徴。抽象化レイヤの存在により、OSやディストリ
    ビューションの違いを意識することなくマニフェストを記述することがで
    きる。

 なかみ
   クライアント/サーバ構成になっていて、クライアントが定期的にサーバ
   にあるマニフェストと自分の環境との差分を見て、環境を更新する仕掛
   け。
設定自動化
                       調査時のバージョン : 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 が生成されるしかけ 。
どうするの?




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


 ▼雲の向こうに理想的なインタフェースをつくるための
   フレームワーク
     プラットフォームの制約がある中で、雲の向こう側にがんばって理想的な
     (こちら側に都合の良い)インタフェースをこしらえたり


 ▼プロキシとかフィルタとかそれっぽいサービスの実行基盤
     サービスやプラットフォーム毎に異なる制約を意識させないための中継層
     をこしらえ、それらの諸々の処理を分離・独立させて隔離し、再利用可能に
     する仕組みがあったり


 ▼プライベートクラウド構築の素
     こちら側の資産を、雲の向こう側にあわせる形で互換性を持たせたり
「エレガントにつなげる」
                         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


                             …そこそこある
都合の良い?インタフェースをつくれるかも
                       調査時のバージョン : 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 の利用による力技?で回避。
プロキシ? フィルタ?
とりあえず                             エレガント




                                   権力




 1 アド・ホックで   2 コンポーネント化             3 共通処理の分離
     カオス       分散         λ. . . . .  集中配備
プロキシ?フィルタ?サービスの実行基盤
                        調査時のバージョン : 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)実装。内部に配置された各サービスには独立したスレッドと
   イベントのキューが割り当てられ、複数サービスのシーケンシャルな処理
   を最適化する。
どうするの?




  1.   手軽に連携したい
  2.   複数のサービスの連携
  3.   共同開発
  4.   テスト
  5.   デプロイを簡単に
パブリックな 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 などが利用されてたりする。
どうするの?




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


• OSS と SI
  – ツールの仕組みを読み解くのは、クラウドとの付き合い方を
    模索するのに好都合かも。
  – 成熟度の高い一部のツールに淘汰されきってない今だから
    こそできることがきっとあるはず。それが SI のネタになりそ
    う。
ご清聴ありがとうございました

More Related Content

What's hot

PowerShell DSC と連携して監視を効率化してみる
PowerShell DSC と連携して監視を効率化してみるPowerShell DSC と連携して監視を効率化してみる
PowerShell DSC と連携して監視を効率化してみるika ika
 
JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)taskie
 
できる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャできる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャazuma satoshi
 
Azure Functions 入門
Azure Functions 入門Azure Functions 入門
Azure Functions 入門jz5 MATSUE
 
JavaScript.Next
JavaScript.NextJavaScript.Next
JavaScript.Nextdynamis
 
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみましたYahoo!デベロッパーネットワーク
 
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版junichi anno
 
Windows PowerShell 5.0 と Windows Server vNext の管理
Windows PowerShell 5.0 と Windows Server vNext の管理Windows PowerShell 5.0 と Windows Server vNext の管理
Windows PowerShell 5.0 と Windows Server vNext の管理Kazuki Takai
 
Sd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 WhiteSd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 WhiteAkio Katayama
 
それでも僕はユニットテストを書きたい - Pester powered by PowerShell
それでも僕はユニットテストを書きたい - Pester powered by PowerShellそれでも僕はユニットテストを書きたい - Pester powered by PowerShell
それでも僕はユニットテストを書きたい - Pester powered by PowerShellHidari Ikw
 
JavaScript.Next Returns
JavaScript.Next ReturnsJavaScript.Next Returns
JavaScript.Next Returnsdynamis
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識shigeya
 
Java scriptの進化
Java scriptの進化Java scriptの進化
Java scriptの進化maruyama097
 
.NET Compiler Platform
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform信之 岩永
 
XPages 開発 Tips 百連発
XPages 開発 Tips 百連発XPages 開発 Tips 百連発
XPages 開発 Tips 百連発Mitsuru Katoh
 
Chef windows linux環境構築
Chef windows linux環境構築Chef windows linux環境構築
Chef windows linux環境構築靖 小田島
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Tokuhiro Matsuno
 

What's hot (19)

PowerShell DSC と連携して監視を効率化してみる
PowerShell DSC と連携して監視を効率化してみるPowerShell DSC と連携して監視を効率化してみる
PowerShell DSC と連携して監視を効率化してみる
 
JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)
 
できる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャできる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャ
 
Azure Functions 入門
Azure Functions 入門Azure Functions 入門
Azure Functions 入門
 
JavaScript.Next
JavaScript.NextJavaScript.Next
JavaScript.Next
 
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
 
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
 
.NET vNext
.NET vNext.NET vNext
.NET vNext
 
Windows PowerShell 5.0 と Windows Server vNext の管理
Windows PowerShell 5.0 と Windows Server vNext の管理Windows PowerShell 5.0 と Windows Server vNext の管理
Windows PowerShell 5.0 と Windows Server vNext の管理
 
Sd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 WhiteSd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 White
 
それでも僕はユニットテストを書きたい - Pester powered by PowerShell
それでも僕はユニットテストを書きたい - Pester powered by PowerShellそれでも僕はユニットテストを書きたい - Pester powered by PowerShell
それでも僕はユニットテストを書きたい - Pester powered by PowerShell
 
JavaScript.Next Returns
JavaScript.Next ReturnsJavaScript.Next Returns
JavaScript.Next Returns
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
 
Java scriptの進化
Java scriptの進化Java scriptの進化
Java scriptの進化
 
.NET Compiler Platform
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform
 
XPages 開発 Tips 百連発
XPages 開発 Tips 百連発XPages 開発 Tips 百連発
XPages 開発 Tips 百連発
 
Chef windows linux環境構築
Chef windows linux環境構築Chef windows linux環境構築
Chef windows linux環境構築
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 

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

Introduction to web development 1
Introduction to web development 1Introduction to web development 1
Introduction to web development 1hideaki honda
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShiftEtsuji Nakai
 
Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発Yuki Hattori
 
Azure DevOps と開発管理
Azure DevOps と開発管理Azure DevOps と開発管理
Azure DevOps と開発管理Tsukasa Kato
 
PHP on Windows Azure
PHP on Windows AzurePHP on Windows Azure
PHP on Windows AzureMicrosoft
 
AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)Akio Katayama
 
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-public20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-publicAmazon Web Services Japan
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説Daisuke Nishino
 
PHP on Windows Azure in Open Source Conference
PHP on Windows Azure in Open Source ConferencePHP on Windows Azure in Open Source Conference
PHP on Windows Azure in Open Source ConferenceMicrosoft
 
2010 04クラウド技術講座
2010 04クラウド技術講座2010 04クラウド技術講座
2010 04クラウド技術講座sisawa
 
Google Compute EngineとPipe API
Google Compute EngineとPipe APIGoogle Compute EngineとPipe API
Google Compute EngineとPipe APImaruyama097
 
Google Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline APIGoogle Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline APImaruyama097
 
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-Hiroki Kondo
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるdavid9142
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Akira Inoue
 

Similar to クラウド開発に役立つ OSS あれこれ (20)

PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
Introduction to web development 1
Introduction to web development 1Introduction to web development 1
Introduction to web development 1
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
 
Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発
 
Azure DevOps と開発管理
Azure DevOps と開発管理Azure DevOps と開発管理
Azure DevOps と開発管理
 
PHP on Windows Azure
PHP on Windows AzurePHP on Windows Azure
PHP on Windows Azure
 
PHP on Windows Azure
PHP on Windows AzurePHP on Windows Azure
PHP on Windows Azure
 
AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)
 
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-public20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
 
PHP on Windows Azure in Open Source Conference
PHP on Windows Azure in Open Source ConferencePHP on Windows Azure in Open Source Conference
PHP on Windows Azure in Open Source Conference
 
JAWS-UG Meets Windows (JAWS Days 2017)
JAWS-UG Meets Windows (JAWS Days 2017)JAWS-UG Meets Windows (JAWS Days 2017)
JAWS-UG Meets Windows (JAWS Days 2017)
 
2010 04クラウド技術講座
2010 04クラウド技術講座2010 04クラウド技術講座
2010 04クラウド技術講座
 
Google Compute EngineとPipe API
Google Compute EngineとPipe APIGoogle Compute EngineとPipe API
Google Compute EngineとPipe API
 
Google Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline APIGoogle Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline API
 
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 
CMDBあれこれ
CMDBあれこれCMDBあれこれ
CMDBあれこれ
 

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

  • 1. 【19-E-4】 】 クラウド開発に役立つ OSS あれこれ 2010.2.19 水野 正隆 / 奥垣内 喬
  • 2. 自己紹介 水野 正隆 (みずの まさたか) – 1999 年 株式会社オージス総研入社 – 開発・保守の現場を渡り歩くおっさん • 出身: OODB (Objectivity DB) • 母国語: C/C++ • ひとこと: OO厨じゃないよ 奥垣内 喬 (おくがうち たかし) – 後ほど出てきます。
  • 3. オブジェクトの広場 http://www.ogis-ri.co.jp/otc/hiroba/ – OO/UML, モデリングなどを扱う – オンラインマガジン – もう11年目 – 継続は力なり
  • 5. こんなことを考えてみる。 。 企業内システムを クラウドサービスで 再構築する。
  • 6. 話したいこと 1. クラウドでアプリを開発するときの 疑問・課題:「クラウドではどうするの?」 2. 課題を解決する OSS
  • 7. クラウドで開発するときの どうするの? 注) しばし、SIer 的な話にお付き合いください…
  • 10. データは社内にある! 社内システムが主で、 従業員スキル管理 クラウド上のアプリが 従の関係にある システムの場合 人事DB ・従業員情報
  • 12. クラウド – オンプレミス連携 オンプレミス 【on-premise】 】 • 原義は「構内の」などの意 • 情報サービスを,自社内のハードウエアとソフトウエアに よって運用する方式。自社運用型。「—型」 -- goo 辞書より
  • 13. どうするの? 1 簡単に連携したい。 サービスに依存する おまじないや アラビンドビン …じゃなかった。 決まった手順を アブラ いちいち実装したくない。 カタブラ…
  • 20. どうするの? 2 クラウドインテグレーション 厄介な問題が多い。 • プロトコルにギャップ • 接続数が多い
  • 21. システム開発ってそれだけじゃない。 • 共 同開発 • テスト • デプロイ …
  • 22. 共同開発! どうやったら 一緒にやって いけるかしら?
  • 23. どうするの? 3 クラウド環境で共同開発 意外な盲点はないか? 実例 – チームの責任者が代表として AWS の契約を した。チームメンバがサービスを利用するとき に困った。 • ID & シークレットキー共有でなんとかしたけど…
  • 24. テスト! どうやって テストする気よ?
  • 25. どうするの? 4 クラウド環境でテストする これまでのプラクティスは使える? • 雲の向こうにありますが… – SaaS をカスタマイズしたアプリ – PaaS 環境に作ったアプリ • ローカルで同じ環境を作ればOK? – IaaS 環境に作ったアプリ
  • 26. よい子のテストの習慣は? (1/2) 転ばぬ先 “自分”のテスト環境を持つ の杖ね。 • 本番と同じ環境は作れそう。 • 単体テスト環境? • テストスイート? 実例 社内にもテスト環境が欲しかった。 • テスト実行にお金かかるし。
  • 27. よい子のテストの習慣は? (2/2) コードはいつでも テストの自動化 リリース可能? • これまでのように、ビルド・ テストをバックグラウンドで やるような仕掛けは クラウド環境で作れる? 実例 – PaaS で CI が困った。
  • 29. どうするの? 5 デプロイを簡単にしたい うまい方法を見つけないと失敗しそう。 • デプロイ先が多い – 異なるクラウドサービス – 複数の仮想マシン • 仮想マシンの増減
  • 30. よい子のデプロイの習慣は? 1クリックが 嬉しいな。 デプロイを自動化する • 最新のテストされたコードを、 簡単にデプロイするには どうすれば良い? • 沢山ある環境に対して、 人の手でデプロイしていく なんて怖くてできない。
  • 32. 状況 • 連携が避けられないケースがある – 社内にデータがある • 連携は 1 対 1 とは限らない • 我々の仕事の一番泥臭いところ – 共同開発、テスト、デプロイ – やはりクラウド環境にもつきまとう
  • 33. どうするの? 1. 手軽に連携したい 2. 複数のサービスの連携 3. 共同開発 4. テスト 5. デプロイを簡単に
  • 35. あらためて自己紹介 - 先に出てきました。 - 2006年 株式会社オージス総研入社 - 調査・企画、OSS製品のプリセールスなどに従事 出身: MIDI 母国語: AppleScript ひとこと: OOってなんですか?
  • 36. 課題を解決する OSS 部品はいっぱいそろっている!
  • 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. デプロイを簡単に
  • 46. 「エレガントにつなげる」 分類としてこんなものが... ▼雲の向こうに理想的なインタフェースをつくるための   フレームワーク プラットフォームの制約がある中で、雲の向こう側にがんばって理想的な (こちら側に都合の良い)インタフェースをこしらえたり ▼プロキシとかフィルタとかそれっぽいサービスの実行基盤 サービスやプラットフォーム毎に異なる制約を意識させないための中継層 をこしらえ、それらの諸々の処理を分離・独立させて隔離し、再利用可能に する仕組みがあったり ▼プライベートクラウド構築の素 こちら側の資産を、雲の向こう側にあわせる形で互換性を持たせたり
  • 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 の利用による力技?で回避。
  • 49. プロキシ? フィルタ? とりあえず エレガント 権力 1 アド・ホックで 2 コンポーネント化 3 共通処理の分離 カオス 分散 λ. . . . . 集中配備
  • 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 のネタになりそ う。