オープンソースカンファレンス2008(OSC2008 Tokyo/Spring)に行ってきました(1日目)

OSC2008 Tokyo/Spring


結構楽しかったです、OSC2008。今回の隠れテーマは「.web」だそうです。

普段オープンソースを業務で使うことが多い自分には、興味深い話題ばかりで、どのセッションに出ようか迷いましたが、とりあえず自分の気持ちに任せて、"現在"聞きたいセッションに出てきました。

オープンソースカンファレンス2008 Tokyo/Spring
http://www.ospn.jp/osc2008-spring/


1日講演を聞いてみて、個人的に、GlassFishに関心を持ったことと、Xenに対してもう少し足を踏み入れようかなという気持ちになりました。
あと、最後に聞いた楽天のOSS活用事例の話(というか、OSS活用に対する方針の話)は、もっと時間をかけて聞きたかったセッションです。


GlassFishは、自分自身業務でRuby on Railsを使っていることもあり、JRuby(on Rails)には注目していて、Javaプラットフォームで稼動させるアプリケーションサーバの1つとして、性能・運用管理性ともに注目する価値は十分にあるな、と。

Xenのクラスタの仕組みについては、十分に実現方法が自分で理解できている(Virtual Iron等の商用プロダクトに触れていることもあって)こともあって、そこまで目新しい話ではないのですが、商用製品ではなくてフルオープンソースプロダクトな構成でも、商用製品と同レベルの機能実現が出来そうだと感じました。(あ、運用とかの話は一旦置いておいてね)


聴衆は様々な年齢層の方がいらしてたように思います。外国の方も。あと、ノートPC率が意外と低かったなぁ。1割に満たないくらい?でも「Linux crush dump 読み方入門」のセッションだけは、半数近くいた気も。なんとなく頷ける。


せっかくなので、以下に自分が出席したセッションのメモ書きを貼り付けておきます。出席したセッションは以下です。

  • Innovation and the Open Web
  • Linux/OSSの最新技術動向とLPICによるスキルアップとは
  • 世界で今一番ホットなオープンソースアプリケーションサーバ:GlassFish
  • Xenのクラスタってどうするのさ!?
  • Linux crush dump 読み方入門
  • 楽天株式会社におけるOSS活用の現状と今後の展開について(サード・リアリティ時代に向けて)

# 2日目は、d:id:rx7:20080301:p2 へどうぞ。
# ところどころ省略したり端折ったりしていますが、メモってことでご了承ください。にしても長くてすみません。

Innovation and the Open Web

Opening Speech

講演者

  • Christopher Beard 氏
    • Vice President, Mozilla Labs
      • (ラボの責任者、だそうです)

Mozilla

  • 10年前の2/13にネットスケープがソースコードを開示
    • このことが、今のMozillaの基盤となっている
  • Firefoxのユーザ数は2億人、毎日50万ダウンロード、50言語に対応
    • 今後は、Firefox3のリリース、およびモバイル版のリリースも検討している
  • Thunderbirdのユーザ数は世界で500万人
    • OLEのオープンソース版的な位置づけとして認識されている
    • Calender機能、サーチの強化、Extend Module機能を加えたThnderbird3をリリースしたいと考えている
    • 今年、日本でもThunderbirdコミットを開催し、今後についてディスカッションしたい
  • Mozilla Labsについて
    • mozillaの中でも先端のテクノロジを扱う機関
    • 世界各地のコミュニティや教育機関と検討をすすめながら、ラボの構築を進めている
  • Mozillaの役割
    • インターネット上でのイノベーション
      • ブラウザの開発も含め、Webでは、まだまだ出来ることはたくさんある
      • 新たなテクノロジー、コミュニティへの投資を継続している
  • 過去はインターネットそのものをAOL等の企業がコントロールしようとしていた
    • こういった組織がコントロールを諦め、ソースコードを開示し始めることでカオスが発生した
    • このことは、今日のインターネットの反映をもたらす結果となった
  • 秩序とカオス、コントロールとオープンの間のバランスをとることが重要だと我々は考えている
    • オープンソースはこの部分の鍵となると考えている

mozilla labsが探索しているもの

  • User Experience
    • インタフェース、Webブラウザ、インターネットの境界線をさらに曖昧なものにすることをテーマにしている
    • インターネット上で、より自然に、より人間的に振舞えるようにするには、どのようにするべきか
      • その中でインターネットブラウザはどうあるべきか、何の役割を果たすものなのかを探求
    • その一例がPersona
      • CoreのブラウザそのものをWebサービスとして提供するプロトタイプ的な位置付け
      • ブラウザはUIに対してコンパイラ的な役割を果たしていると考える
    • もう1つの例は、Prism
      • OSとWebブラウザの境界線を曖昧にしたもの
      • Webサイトをデスクトップアプリケーションの1つに変化させることができる
      • 今後は、どのブラウザでも適用することを可能として、さらにデスクトップとのインテグレーションを進めていく
    • Natural Language Interface
      • ブラウザに対して、言語で命令することが可能になるようなものも開発している
        • 例えば、犬の写真を挿入しろ、と命令するとFlickrから犬のタグがついたデータを自動で探し挿入してくれるような機能
  • Extending the Platform
    • Weave
      • サービスをブラウザにインテグレーションするプロジェクト
      • 単純なユースケースとしてはバックアップとリストア
        • ブラウザには各ユーザがカスタマイズしたデータがある。それをブラウザがバックアップやリストアを実施するのは、自然の流れである
      • ブラウザでの各ユーザプロファイル(ブックマーク、履歴、カスタマイズデータ等)を外部に抜き出して利用する
        • 複数のデバイスで同じブラウザ環境を利用することを可能とする
        • 仕組みは新しいものではないが、新しい試みの1つとして、プロファイルのデータを暗号化している
        • Mozillaがそれらのプロファイルにアクセスするようなことはないし、したいとも思わない
    • プロファイルをWeaveへ抜き出し、firefox3にはMessagingとデータ同期の仕組みを入れる
    • Weaveに持たせたブックマーク等のデータは友人に公開することも出来る
    • Bookmarkを外部のWebサービスで使いたい場合は、それらの委託している情報の管理も可能になる
    • 3月には、Weaveのサードパーティ向けのAPIをリリース予定

最後に

  • 今後、さらに探索していく上で、一緒に検討したい方は、是非ともPJ・コミュニティに参加してほしい

Linux/OSSの最新技術動向とLPICによるスキルアップとは

講演者

  • 嘉村 健 氏
    • 富士通株式会社/サーバシステム事業本部/Linux技術開発統括部プロジェクト課長

Linux/OSSの最新技術動向

  • 世界中で使用されITインフラの主流として確実に定着している
  • OSSヘビーユーザ企業は急成長している
    • Google、Yahoo!、eBay
  • OSSの高性能・高機能化により既存ソフトの置き換えが発生している
    • PostgreSQL7.4と8.2では約10倍の性能差がある
  • 近年は運用管理も注目されている
  • OSSに対する問題点や不安点
    • 人材不足が断トツで課題として上がっている
      • 次点でサポートに不安、互換性不足、実績不足で信頼性に不安、など


あまりに、ありきたりな話が続いたので、この辺でメモをとるのをやめてしまいました。以下、割愛します。

世界で今一番ホットなオープンソースアプリケーションサーバ:GlassFish

講演者

  • 寺田 佳央 氏
    • サン・マイクロシステムズ株式会社 ソリューションアーキテクト

GlassFishは本当にホットなのか

  • 日本ではまだまだ知名度が低い、なのでこれから!
    • 日本では、何故か長野でホット(利用者多)らしい
  • アメリカでは、全土でかなりホットらしい
  • ヨーロッパでは、もっとホット。かなり使われているそうだ

製品紹介

  • Sunのアプリケーションサーバの歴史は長い
    • Netscape Application Server(NAS) 1999〜
  • GlassFish
      • 2005/6: GlassFishのプロジェクト立ち上げの発表
      • 2006/5: 9.0(v1)リリース
      • 2007/9: 9.1(v2)
      • 2008/2: 9.1 update1 マルチリンガル版
        • 管理画面・ヘルプ等でも日本語環境が使えるようになっている
      • 2008/4: 10.0TP2(テクニカル・プレビュー版)
      • 2009/4: 10.0FCS(製品版)
  • Sun Java System Application Server 9.0/ GlassFish v1
    • JavaEE5準拠
  • GlassFish v3(予定)
    • JavaEE6準拠
    • モジュール化されたカーネル(HK2)
      • 数百キロバイトで動くカーネル
      • ニーズに応じてモジュールをロードして使う
      • 軽いので、起動速度も速い(1秒以下、数百msec)
      • 将来的に携帯電話などでも動かせるようになるかもしれない
    • 先進のWeb2.0エンジン

GlassFishとSun Java System Application Serverの比較

  • GlassFish
    • オープンソース/無料
    • GlassFishコミュニティで開発
    • コミュニティによるサポート
  • Sun Java System Application Server
    • 無料で利用可能
    • GlassFishと内容は同等
    • HADBの使用により、最大99.999%の高可用性
    • ライセンス購入により、商用サポート

性能

稼動プラットフォーム

  • Microsoft Windows
  • Sun Solaris
  • Linux
  • Mac(GlassFishのみ)

GlassFish機能紹介(開発者向け)

  • 統合開発環境との連携
    • NetBeans5.5.1, 6.0
    • Eclipse3.2, 3.3
    • MyEclipse
  • EJB3.0/JPAサポート
  • TopLink Essencialサポート
  • Java Persistence APIサポート
  • Web2.0向けの機能
    • Ajaxの動作環境
    • Cometアプリケーションの実行可能
    • RestfulなWebサービスに対応
  • Java Web Start & Application Client Containerに対応

GlassFish機能紹介(運用者向け)

  • 日本語化された管理コンソールとヘルプ
  • CLIで簡易画面同様の管理(asadmin)
  • JConsole
    • Java VMに付属しているツール。GlassFishにアタッチして監視可能
  • AMX API
    • JMXベースの管理APIも提供
  • 問題解決をサポートするツール
    • 呼び出しフロー
      • GlassFishに配備したアプリケーションの監視ツール
      • APサーバの各コンテナ間で実行されたメソッド呼び出し、ユーザが作成したメソッド呼び出しのスタックトレースが可能
      • どこに問題があるかの切り分けが出来る(APサーバに問題があるか、コードに問題があるか)
      • 監視データはJavaDBに格納
    • ログ統計の監視
      • ロガー単位で見ることも出来る
    • 診断サービス
      • 障害時の問題を診断するために、システムの情報収集を行って、サポートやコミュニティに送ることが出来る
    • アップデートセンター
      • コンポーネントの追加/更新が簡単に出来る
      • デフォルトではSunに接続するが、独自のアップデートセンターを作成して、接続しに行くことも出来る
    • 拡張性/高可用性の実現
      • 負荷分散機能
        • ロードバランサ・プラグイン、クラスタ機能
      • デプロイも自動で複数台に対して可能
      • インメモリ・レプリケーション
        • 標準機能で利用可能、HADBに比べパフォーマンス重視
      • HADB
        • セッション情報を共有するための専用DB
        • APサーバの機能として提供
  • インメモリ・レプリケーションとHADBの使い分け
    • インメモリはパフォーマンス重視
    • HADBは可用性重視

GlassFishのサブプロジェクト

  • 今、全部で30くらいある
  • Grizzly
    • ハイパフォーマンスのネットワークサーバエンジン
      • APサーバの各コンテナに処理を転送するHTTPコネクタ
  • Shoal
    • 汎用的クラスタフレームワーク
    • 独自に開発したアプリケーションのクラスタ化が可能
  • Woodstck
    • 次世代Web UIコンポーネント開発
  • jMaki
    • 次世代型簡易Ajaxフレームワーク
    • JavaScriptの知識なしでAjaxアプリケーションの開発が可能
    • Ajaxを実現する簡易カスタムタグライブラリを提供

Xenのクラスタってどうするのさ!?

講演には出てきませんでしたが、「Xenによる仮想化と使用例」と呼ばれるテクニカルホワイトペーパーが付いていました。
Xenによる仮想化の導入において、ケースと解決策のセットが複数あるカタログ的なペーパーで興味深い一品。これで無料って本当にいいのだろうか?ノベルさんありがとうございました!

講演者

  • 岡本 剛和 氏
    • ノベル株式会社 Linuxテクノロジー・エバンジェリスト

概要

  • High Availability Storage Infrastructure(HASI)
    • Oracle Cluster File System 2(OCFS2) + Heartbeat v2 の組み合わせ
  • デモ(Movie)を見せてもらった
    • 実際に、障害を検地し、別の場所にフェイルオーバするというもの
  • 今日は、概要などではなく、あくまで実際に動かすところまでのHOWTOを紹介

ノードのインストール

  • Xenノードのインストール(SUSE)
    • 以下のパッケージを追加
      • 高可用性、Xen仮想マシンホストサーバ、open-iscsi
    • パケットフィルタなし
      • 監視時、LiveMigrate時に使用
      • 最新のパッチを適用しておくこと!

ストレージのインストール

  • ストレージサーバのインストール
    • 以下のパッケージを追加
      • iscsitarget

Heartbeatでクラスタの設定

  • XenノードにHeartbeat2.1.3を導入
  • Heartbeatとは
    • オープンソース
    • クラスタリングソフトウェアパッケージ
    • 今回は、ノード、共有ディスク、DomUの監視に利用
  • Hearteatの設定
  • Heartbeatの見える化
    • GUIで設定・運用できるツールがある。「hb_gui」

iSCSIでストレージを接続

  • iSCSIで共有ディスクを接続
  • iSCSIターゲットの設定
  • iSCSIイニシエータとパーティションの設定

ストレージを共有ファイルシステムOCFS2でフォーマット&Heartbeatで監視対象のリソースを設定

  • OCFS2
    • 同時に複数のノードから読み書き可能なファイルシステム
    • kernelツリーに入ってる
      • NFSのループバックマウントを使っていると、時々障害を引き起こす可能性があるらしい(Linux kernelの問題)
      • そこで、OCFS2を使う。こっちだと問題は起こらないらしい
    • 別途クラスタソフトウェアを利用できる
    • ここに、DomUの設定ファイルとイメージを置いて共有する
  • OCFS2の設定
  • STONITH
    • STONITHの設定
      • 有効化
      • sshの設定
      • ssh管理
      • リソース定義
  • OCFS2ファイルシステムリソースの定義
    • イメージ保管場所
    • 設定保管場所

Xenのセットアップ&仮想マシンのセットアップ

  • Xenの設定
  • DomUの作成
  • DomUのポータブル化
  • Xen RAにパッチを適用
    • 監視するための設定
  • DomUリソースの定義
  • リソースの起動順序(依存関係)を定義

Linux crush dump 読み方入門

講演者

  • 吉田 俊輔 氏
    • ミラクル・リナックス株式会社 プロダクトサポートグループ プリンシパルエンジニア

Dumpとは/解析する目的

  • Linuxが管理するデータ、プログラムは全てメモリに保存
  • 異常が発生し、再起動した場合、dumpをとっていないと消失してしまう
    • で、Kernel Panic発生時やフリーズ時、スローダウン時などのメモリ状態を残すのがdump
  • Kernel Panicの原因
    • ハードウェア障害
    • Kernel Bug
    • (アプリケーションのバグ)

Dumo取得ツールの種類

  • LKCD
    • Swapパーティションなどのdumpデバイスにdumpを出力
    • Kernel障害時に、Kernel自身が専用パーティションに書き出す
    • dumpが取れないケースもあり信頼性に欠ける
  • diskdump
    • Kernel障害時に、Kernel自身が専用パーティションに書き出す
    • LKCDよりは、dumpが取れる可能性が高い
  • netdump
    • ssh経由で別マシンにdumpを取得
    • NICが限られてしまう(選ぶ必要がある)
  • Kdump
    • 起動時にdump専用のKernel(セカンド・カーネル)を準備する
    • セカンド・カーネルは普段は使われないので綺麗なまま
      • ディスク・N/Wへの回避が可能

設定

  • OSで設定して、再起動
    • grubにパラメータが書かれているはずなので、確認する
      • crashkernel

注意点

  • OS側で、kernel panic時にリブートする/しないの設定が出来る
    • 障害時にコンソールに出力されているメッセージが再起動されると見れなくなるので、注意
  • oops時の動作の設定
  • nmi_watchdogの有効化
    • 一部のストールを検地してOopsメッセージを出力
  • sysreqの有効化
  • /varの空き容量に注意
      • dumpが出力されるたびにメモリ容量分のディスクが必要になる

dumpのテスト

  • NMIスイッチ(ボタン)を押下
  • sysq-keyの同時押し
    • Alt + SysRq + s
      • 'S'ync
    • Alt + SysRq + c
      • 'C'rush
    • Alt + SysRq + b
      • re'B'oot
  • dumpで出力されるファイル
    • Kdump,diskdump,netdump
      • vmcore(メモリサイズ分)
  • dump解析ツール
  • lcrash
    • LKCD
  • crash
    • Kdump, diskdump, netdump

kernel解析に必要となる知識

  • 以下3つ
    • IAプロセッサの知識
    • C言語、アセンブラの知識
    • kernel構造の知識
  • CPUの知識
    • プログラムコードがCPUで実行される仕組み
    • 対象が32bitか64bitか
      • i386〜i686,x86_64,amd64...etc
    • レジスタ名称と役割
  • C言語
    • GCCやプリプロセッサ、マクロの理解
  • アセンブラ
    • ニーモニック
  • kernel構造の知識
    • 動作原理、該当機能、ソースコードを追える、パッケージ構成、LKMLのアーカイブ、Bugzilla

事例をもとに解析手順をトレースして説明

  • lcrash
    • lcrash trace
    • lcrash ps
    • lcrash bt
      • バックトレース
    • lcrash dis
      • ディスアセンブル
  • crash
    • debug版のvmlinuxが必要
    • dumpの発生したマシンと別ディストリビューションでも良い。ただしCPUアーキテクチャは揃える

まとめ

  • kernel panic発生時にdumpをとっておくと再発防止しやすい
  • 深い知識がなくても、眺めているだけで原因がわかる場合もある
    • kernel panicの原因はダンプとソースを見れば大抵わかる
  • dump取得ツールも進化している

楽天株式会社におけるOSS活用の現状と今後の展開について(サード・リアリティ時代に向けて)

講演者

  • 森 正弥 氏
    • 楽天株式会社 開発・編成統括本部 楽天技術研究所代表
    • (楽天技術研究所を立ち上げられた方)

オレゴン州

  • アメリカでオープンソースの聖地はオレゴン州らしい
    • LinuxやWikiを作った人達は、オレゴン州に住んでいる
    • オレゴン州立大学には、多くのオープンソースプロダクトのマスタがあるらしい
    • 70年代は半導体で有名だった
  • 日本でも、オレゴン州のような土地からOSSが発展していく・・・?

楽天

  • 現在、60000万店、商品2000万点、ユーザ数4000万人
    • 社員数も日々増加。毎月100人ほど採用しているらしい
  • 創業時のコンセプト
    • Empowerment 日本を元気にしたい!
  • Amazonの競合だけど、ビジネスのやり方は全然違う
    • 逆ロングテール
      • 本当にインターネットはロングテールである
        • 地方でやっている特産品なんかが普通に買える
      • Amazonは基本的に大型店でかつ、整然とされている(本⇒家電⇒DVD)
      • 楽天は何でもアリ状態。日本全国の小さなお店がたくさんある状態。
        • これは、日本のお家芸だ!
  • 楽天のコア・経済圏
    • 経済圏を確立するビジネスを展開
      • あくまで楽天市場が中心で、そのまわりを支えるもの(トラベル、証券、コンテンツ)によってECコンテンツを充実させている
    • こうして様々なサービスのデータを集約した後に、分析・利用する
  • 日本から世界へ
    • 27カ国へ展開していく予定

楽天とOSS

  • OSSをどう活用すべきか
    • 適材適所Happy、サードリアリティ(ビジョン)
  • 楽天の開発は、手作り、かつオープンソースの活用が基本
    • 立ち上げ当時(1999年)
      • 13店舗
      • はじめはSUN + informix
      • OSはFreeBSD、RAIDも秋葉で購入して手組みで作った
    • 2000年
      • 2000店舗に
      • 商用もオープンソースもハイブリッドに活用していく方針に
      • オープンソースは適材適所で使い分けるべき
      • インターネットの普及により、サーバやCPU増設が必要となり、商用製品のライセンスの高さを少しずつ理解
  • 開発スタイル
    • きわめてオープンソース的に
      • 共通ライブラリは存在するが、絶対に使用しなくてはいけないわけではない
    • LAMP推進部による展開
  • そして今(2008年)
    • サーバは数千台(6000台以上らしい)
    • 開発体制は1200人規模、全て内製
  • OS
    • Soralis
      • DBサーバを中心に
      • UNIX + Oracle RAC + VCS
    • FreeBSD
      • もう今はあまり使われていない
    • Linux
      • 主にWebサーバ、メールサーバに利用
      • Debian多い
      • コストメリット有り、問題にならないほど安定している
  • OSSと商用の違い
    • 信頼性について
      • 当初は、信頼性が必要な箇所は商用
      • 今は区別なし
    • パフォーマンス
      • スケーラビリティとライセンス料
      • 区別は無い
    • データベースやアーキテクチャ上の高機能
      • アプリケーションを機能単位でわければ特に問題なし
    • 保守
      • バグはどちらでも出る
      • 商用DBMSのベンダーが買収されたことがある
        • そのプロダクトを扱えるエンジニアを確保することが重要
    • 結論
      • サービスをタイムリーに適切に作ることが大事
      • 技術者のスキル、人材確保が大事
        • エンジニアがそのプロダクトを使いたいかどうかが重要
  • PHP/MySQLは2002年頃から導入

今後

  • 今はRubyとSennaがホットな存在
    • 商品サーチに今は他社のものを使っているが、Sennaを一部で取り入れ始めている
  • 本当に大事なのは、会社もエンジニアもお客様もHappyになること

話題のOSSであるRuby on Railsと楽天

  • 経緯
    • 2006/8〜まつもとさんとブレスト(Rubyにエンタープライズでの実績を作りたい)/メンバー結集/勉強会など
    • 2006/11 有志十数名によるRubyプロジェクト始動
  • 実は、RoRは楽天のフロントサービスの一部で既に使われている
    • プラットフォーム
      • Rails
      • Apache
      • FastCGI
      • Debian
      • MySQL
  • 使ってみて考察
    • 生産性
      • Good!工数で他言語の1.6倍〜3倍
    • セキュリティ
      • 問題なし。監査はOKだった
    • パフォーマンス
      • 問題なし。使われ方次第
    • 運用
      • まだ課題有り。これから成熟させる

次世代

  • インターネットの成長は止まらない
  • 「巨大知」の登場
    • RoRに必要なのは大規模向けのスケーラビリティ
    • 大規模処理ができるかどうかが企業の生命線

大規模への2つの取り組み

  • failyとROMA
    • faily
      • 処理分散、CPU分散
      • 誰でも手軽に使える、Ruby分散フレームワーク
    • ROMA
      • データ分散、メモリ分散
      • いきなり大きい規模でも使える、大規模グリッド

サードリアリティ

  • 時間切れ。ネットで検索したら資料があるよ!

http://www.rakuten.co.jp/event/10th/tech/conference/doc/third_reality_20071113.pdf

かな?