第3回「エンタープライズの現在」JJUG+クラウド研究会 にいってきた(2012-02-24)

CloudBees Platform

川口 耕介氏( CouldBees Inc.)
Hudson→Jenkinsな人

  1. CloudBees
    • 2010/4 創業
    • PaaS
    • JBoss,Sunの人
    • 8000+アカウント
    • LoseIt(iPhoneApp)
    • Groupe adeo (AWS EC2)
    • BULLHORN (AWS EC2)
  1. なぜPaaSなの?
    • 自分のサーバ管理の問題
    • 調達時の時間、コスト
    • 負荷があったときの伸縮
    • アプリ開発以外の開発環境構築、運用環境構築、運用などなどイロイロ手間がかかる
  1. 答え
    1. その1。仮想VM+クローン
      • ハードはOKだが構築の手間は同じ
    2. その2。スクリプト化 Chef,Puppet
      • 初期コストがかかる(前金を積んで利息を下げる仕組み)
      • 同じ環境を展開する仕組み
      • でも異なれば毎回コストがかかる
      • SIとサービス会社は前提条件が違う
  1. CloudBeesPlanformでは簡単に
    1. Run@Cloud
    2. DEV@Cloud
  1. Run@Cloud
    1. Java,Play,JRuby
    2. Platform core service
    3. IaaS
  1. IaaSじゃなんでダメなの?
    • 簡単になったのかな?
    • OSの設定、パッケージのインストールAppServer,MiddleWare構築などなど
  1. SaaSではだめなの?
    • パッケージで提供されているので、カスタマイズで済むならOKだがフィットアプリは作れない
  1. ECO System
    • XAMLなど一発でサービスを追加する
    • 適宜組み合わせてつかえる
  1. メール送信サービス
    • スパム対策
    • 再送、中継対策
    • SaaSに任せるほうがいい
  1. その他
  1. これからのソフトウェアの開発モデル
    • SaaS=運用いらずのらいぶらり
    • 簡単な課金システム
    • 単一・従量制
    • 固定費用が小さい
    • 自分たちの時間を有効に使おう!
  1. DEV@Cloud
    • Git,SVN
    • Jenkins
      • →CIツールは負荷は均一でない。段階にしたがってリソースの消費量が異なる。一日の中でも
    • Selenium
    • JFrog
    • Wiki
  1. Java開発者のためのプラットフォーム

Node.js on Windows Azure

さとうなおき氏(MS)

WindowsAzure
    • usage based
    • automated
    • managed resource
    • always up, always on
    • elastic
    • economics
    • Azure=PaaS
    • multi language platform
Node.js
  1. Node.jsとは
    • サーバで動くJavascript
    • イベント駆動IOのサーバサイドJS
    • スレッドベースでなく、各接続が使うヒープはわずか
    • 効率的で、スケーラブル
  1. JSサーバ
    • @ryahが2009年に開始
    • OSS(MITライセンス)
    • Joyentがスポンサー
  1. 非同期モデル
    • シングルスレッドのイベントループ
  1. Node.jsの適用領域
    • 最適:
      • リアルタイム通信(ソケット、ポーリング)
      • カスタムネットワークサービス(メディアサービス、プロクシ)
      • JSONWebサービス(データストア上での軽量なアプリそう)
      • クライアント思考WebUI
    • 適さないもの:
      • フォームを使うWebUI
      • 重い処理(シングルスレッドなので)
    • メリット
      • JS
      • クリーンで一貫したAPI
      • シンプルな同時実行性モデル
      • アイドル接続のコストがほぼゼロ
      • モジュール化
  1. Node.js on Windows
    • ネイティブのNode.exe
    • →それまではWindowsではcygwinサポートのみだった。MSからも開発者を出している
    • IINode-IIS内にnode.jsをホスト可能にする、ネイティブIIS 7.xモジュール
    • ほとんどのモジュールは、そのまま動作
    • パフォーマンスは、Linux実装と同程度
  1. IISNode
    • プロセス管理
    • マルチコアプロセッサでのスケーラビリティ
    • Node.jsの自動アップデート
    • 他のコンテンツとの並列動作
    • Node.jsアプリのコード変更は最小限(あるのか)
    • 統合管理(IISのもの)
  1. Nodeパッケージマネージャ(NPM)
  1. Node.js on WindowsAzure
    • Webロール
      • IISNodeを利用(WebSocketは現在未対応。IIS8 on WindowsServer8 で利用可能)
    • ワーカーロール
      • RoleEntryPointとしてnode.exeを実行
    • PowerShellコマンドレット
    • WindowsAzureSDK for Node.js
  1. Visual Stadioは不要
  1. Cloud9IDE
    • ブラウザ内で動くエディタ・実行環境付き
    • herokuなどへのデプロイができる
    • MSとパートナーシップを結び、Azureへのデプロイも可能となった

エンタープライズクラウドと 並列・分散・非同期処理

丸山先生

資料
http://dl.dropbox.com/u/19096475/20120224Data.pdf

要旨
  • キャリアの相次ぐ不具合にもあるように、スマホの普及によりネットのトラフィック量が爆発的に増加し帯域を大きく消費している。そのためキャリアは数千億の投資をおこなって回線の増強を図っている。
  • 爆発的に全世界に普及した携帯がスマホに置き換わったとき、次に起きるのはサーバリソース不足
  • 解決策としてはサーバのスケールアウト(水平展開)がとられているが、スケールアップも考えられる
  • CPUコアの増加により、サーバの能力アップがはかれる。PCやスマホはほぼデュアルコア化したし、100コアのCPUの発売も予告されている
  • マルチコアの恩恵を受けるには、並列・分散処理がかかせない。
  • イデアのひとつがParallelArray。
  • Javaでは対応(JSR166)が遅れている。ForkjoinがJavaSE7で導入されたが、ProjectLambdaはJavaSE8で検討がすすめられている。
  • 一方.NETでは導入が進んでいる。IntelOpenCLは並列プログラミングのフレームワークである。
  • 非同期処理も対策のひとつ。
  • StatelessServerは、WebServerやAppServerでSessionを管理せずDBで管理するやり方。RESTFul APIやPlay2.0はこの戦略。
  • HTTPは、ヘッダが大きくデータ転送時のオーバーヘッドが大きい。ドキュメント全体を転送するために開発されたが、Ajaxなどにより、構成文書の一部(DOMなど)を送信するのに使われている。またPolling/LongPollingは帯域の消費や、レイテンシ低下の要因のひとつである。
  • WebSocketはHTML5の規格でひとつであるが、最初のハンドシェークのみ通常のHTTPを用い、以降はヘッダを省略する。
  • Googleの提唱するSPDYは、HTTPを再定義しようというもの
  • 言語では、JavaではFuture(JavaSE5.0から)、.NETではAsync、Scala/AkkaではFuture、Promise、またJMS2.0で対応が行われている。