Archive for 9月, 2013
GlassFish コミュニティセッション&楽天株式会社の事例
9/22(日) AM 9:15 – 11:15 にGlassFish Community: The Foundation for Opportunityが開催されました。
このセッションは、GlassFish の利用者にが今後の方向性について理解したり世界における GlassFish の利用事例を把握するためにセッションです。このセッションをとりまとめたのは Arun Gupta と共に、US Oracle で Java EE や GlassFish のエバンジェリストを勤める Reza Rahman と Sun の頃から GlassFish のプロダクト・マネージャを勤めているJohn Clingan でした。
まず、冒頭で John Clingan よりJava EE の歴史を過去から現在にわたって説明しました。2013年6月に正式リリースされた Java EE 7 について詳しく触れ、改めて Java EE 7 の3つのテーマである「開発生産性の向上」、「HTML 5 対応」、「エンタープライズニーズへの対応」を説明しました。説明中では、Java EE 7 に含まれる各テクノロジーについてそれぞれ下記のような概要を示しました。
JAX-RS ではクライアント用の API や非同期用の API が追加された他、標準の JSON ライブラリも追加されました、これは現在 20 以上ある Java 用の JSONライブラリに対し、
標準の JSON ライブラリを提供した物でストレーミングAPI,オブジェクトモデルを提供しています。また開発生産性の向上として、アノテーション・ベースで POJO(Plain Old Java Object) による開発がよりすすみ、開発容易性も向上している他、Java でメッセージングを扱う JMS においてもメッセージ送信におけるコード記述量が大幅に削減される事が説明されました。
また、ビューの開発テクノロジーとして提供される JSF(JavaServer Faces)については、Java EE 6 で導入された CDI(context dependency injection)が、今後 Java EE にとってより重要になり、JSF のデータ・バインディングやイベント処理などでは CDI を使うべきだという事も強調されました。
Java EE 7 のローンチ・イベントを 2013年6月 にオンラインで開催しましたが、このローンチ・イベントの参加者数も発表されました。ローンチ・イベントのコンテンツは、イベント終了後も、オンラインで視聴できるようになっていますが、当日の参加者数とイベント終了後にコンテンツを参照した開発者数は、1ヶ月で延べ1万人以上にのぼることが発表されました。
また、世界ではローンチ後、既に Java EE 7 に関連した書籍は 14 冊も提供されている事を示しました。
また、Java EE のチュートリアルも Java EE 7 に対応した内容が提供されており、すでに、世界では Java EE 7 の情報が豊富にあり、いつでも Java の開発者は Java EE 7 の詳細な情報を得られる状況になっている事を報告しました。
また、Java EE 7 は正式リリース後3ヶ月を経過していますが、この間 Java EE のダウンロード数は、Java EE SDK, GlasFish、OpenMQ など関連製品も含め、総ダウンロード数は 150 万を超えている事も報告しました。
さらに、Java EE 7 に準拠したアプリケーション・サーバは GlassFish 以外にも既に登場している事も報告しました。過去、Java EE 6 に準拠したアプリケーション・サーバは、正式リリース以降、15 以上ありましたが、Java EE 7 では、リリース以降3ヶ月で、参照実装の GlassFish 以外に、TmaxSoft も対応し、Java EE 7 への対応は EE 6 に比べより進む事が期待されている点についても述べられました。
開発環境としては、NetBeans, Eclipse, Intellij 等がすでに Java EE 7 の開発に対応し、GlassFish v4 も利用できるようになっています。さらに Oracle Enterprise
Manager も GlassFish を管理できるようになっている事を報告しました。
Java EE の将来について、Java EE 7 以降、NoSQL, HTML 5 対応の拡張、PaaS, キャッシュなどを含める事を現在検討していますが、それ以外にも、JSON-B(JSONバインディング)、Web アプリケーションの配備により柔軟性を持たせるための新しい設定、また CDI の利用範囲をさらに広げる点、Adopt A JSR プログラムへの適用、透明性を持った開発をより進めるといった内容も報告されました。
ロードマップは、本番環境への適用が可能となる GlassFish v4.1は 2014 年中にリリースされる事を報告した。
最後に、
GlassFish v4.0 をご利用頂き、バグを見つけたり、機能拡張のご要望がある場合、Issue Tracker やメーリング・リストなどを通じてご報告ください。皆様のフィードバックがとても重要ですとして締めくくった。開場からは、早速 Java EE のテストの容易性・標準化についても要望があがった。
その後、Q&A に応えるためプロダクト・マネージメントの Vice President Mike Lehmann も加わり参加者からの生の質問に応えていきました。
これらの中でも、印象的だったのは、Java EE 7/GlassFish のローンチ以降の世界的な盛り上がりは Java EE 6 ローンチ時に比べ、素晴らしい勢いで増え Java の開発者の皆様に幅広く浸透していっている事を感じ、とても興味深く、幸せに感じるといった Mike Lehmannの言葉でした。また、Java EE/GlassFish はオラクルのビジネスにとっても、とても重要である点も強調されました。
これらの質疑・応答を終えた後、GlassFish の世界的な事例について報告がありました。
********************************************************************
橋山 牧人 – Rakuten Ichiba Development Department, Rakuten, Inc.
David Heffelfinger ー Ensode Technology LLC,
Jaromir Hamala – Consultant, C2B2 CONSULTING LIMITED
Kerry Wilson – Software Engineer, Vanderbilt Univ Medical Center
********************************************************************
合計 126 インスタンスで楽天市場を運用する楽天株式会社
この中でも特に特筆すべきは、楽天株式の事例です。楽天株式会社より、楽天におけるGlassFishの適用事例について橋山 牧人氏から報告がありました。橋山氏は Web アプリケーションのエンジニアとして楽天に4年間勤め、現在楽天市場におけるお買い物カートのチェックアウトのシステムの開発に携わっています。現在、楽天市場では GlassFish v3.1.2.2 を3つのクラスタ構成を構築し運用されており、1つのクラスタあたり 42 インスタンス、つまりトータルで 126 インスタンスで運用している報告がありました。これは日本国内における大規模事例というだけでなく、世界的にみても最大級の事例といっても過言ではないでしょう。
橋山氏は、GlassFish を採用した理由を次のように語りました。
選択理由は2つあり、一つはGlassFish がJava EE の参照実装であることがポイントだったと語りました。2007 年の頃に JAX-WS の新機能を評価したのですが、その時標準でその新機能をサポートしていたのが GlassFish だけであった事からGlassFish を採用したと語っていました。またもう一つの理由として、GlassFish の管理のしやすさが挙げられると語りました。楽天では EC のサービスを提供するために24 時間 365日、巨大なクラスタを管理
しています。その際、GlassFish は巨大なクラスタを管理するために、強力な管理コンソールをを持っているため、管理コストが大幅に削減できたと語りました。
一方で、GlassFish コミュニテイの一員としても活躍している点を報告しました。過去 GlassFish v2 が持っていたバグに対して複数のパッチを提供してき GlassFish の品質改善にも寄与している点をあげました。具体的な一例として、GlassFish v2 の JSESSIONID に起因したバグのパッチを提供し、提供したパッチが次のバージョンに実際に含まれた点なども報告しました。
その後、実際にどのような所で GlassFish が使われているのか説明しました。楽天では GlassFish を楽天市場のチェックアウト部分の機能を動作させるための環境で使用しています。チェックアウト機能は SOA の サービス・バスのような振る舞いをし、15 以上の外部 API をマッシュアップして呼び出し、クライアントにサービスを提供しています。これはステートフルで管理されており、セッション情報をサーバ・サイドで保存しますが、パフォーマンスを向上するために、GlassFishと Oracle Coherence を組み合わせる事でパフォーマンス向上をはかっている点なども説明しました。
また、楽天市場における、巨大トラフィックへ対応するために、GlassFish の内部構造を正しく理解し、実際にパフォーマンス・ボトルネックがどこにあるのか、CPU が高負荷になった際に、どの部分に影響が発生しているのかを解析した経験もある事をあかしました。調査の結果、ワーカ・スレッドを少くする事で、パフォーマンスが大幅に改善した事なども報告しました。
こうした、日々の様々な努力を積み重ね、楽天セール時の巨大トラフィックをさばく環境を築き上げ、現在では、ピーク時12,000 トランザクション/分を達成し、負荷テスト時では 20,000 トランザクションが利用可能となっているという。
楽天において、Glassfish は信頼性と可用性があり大規模 EC サイトを構築できていると語りました。
※ 楽天市場のお買い物カートのチェックアウト・システムのように非常にミッション・クリティカルな環境で GlassFish が適用されている事は、本当に使えるのだろうか?と思われていた方にとって、とても貴重な情報だと思います。日本での発表に先駆けて、本場 JavaOne で世界のエンジニアに対して英語でご紹介いただいた楽天株式会社、そして橋山氏に心より感謝しています。橋山さん、ありがとうございました。
日本もすごい事をやっているんだという事を世界に対して示す事ができたのではないかと思います。