ファイルシステムでHello World
この連載では"ファイルシステムの作り方"をご紹介します。第1回目の今回は簡単なイントロダクションと単純なHello Worldファイルシステムの作り方を説明します。次回以降で詳しい解説と本格的なファイルシステムの作り方をご紹介しようと思います。
作者 Steven Robbins, 翻訳者 編集部 投稿日 2008年3月13日 午後6時0分
Mark Turansky氏は、彼独自のTerracottaとJava 5を使用した、POJOメッセージバスアーキテクチャの実装の詳細(source)を明らかにした。Mark氏は、POJOメッセージバスを作成するのに、MQまたはJMSベースの配置を使用するのではなく、Terracottaアーキテクチャ(参考記事一覧)を利用している。これにより、彼のメッセージが必要とする、簡潔であり、単純であり、さらに安価であるインフラストラクチャソリューションが可能となった。この経緯の一部が、以下のように述べられている。
私達の2番目の実装は、JMSを使用していました。(なぜなら)ActiveMQも、オープンソースであり、成熟しています。Camelは、キュー間でルールをルーティングするための小さなドメイン固有言語を提供するという点においてとても優れているように思えました。
ActiveMQを正常に機能させるには、いくつかの問題があった。このため、Terracottaを使用できないかを再調査することになった。設計が優れていたため、チームは、比較的簡単に古いメッセージング構造を新しい構造に切り替えることができた。
JMS関連のすべてのコードは、ハンドラおよびリスナのインターフェイスによって隠されていました。私達のコンシューマ側のロジックは、メッセージ (私達独自のドメインオブジェクト) が何に基づいているかを認識していません。ハンドラおよびリスナの実装は、Springによって注入されています。このため、わずか90分で、Terracottaを使用する効率的なキューイングおよびルーティングシステムにほぼ切り替えることができました。その後、整理をして、堅牢性を向上させ、ビジネス可視性を得るための機能を追加し、さらに徹底的な負荷テストを実施しました。こうして、すべてがすばらしく機能するようになりました。
このメッセージングシステムは、主に、以下のような要素から成る。
残りの部分は、クラスローダ、クラスタ化メモリ内のオブジェクト、および並行性をTerracottaがどのように処理するかの調査および理解に基づいている。Terracotta自体は、メッセージングの骨格、および接着剤のようなものとして機能する。
最後に重要なことになりますが、複数のキューやマルチJVMコンシューマは、必須のものです。また、重大な障害が発生しても消えることのない永続的データ (メッセージストア) も必要になります。すべてのキューおよびコンシューマの状態や進行状況を把握できるビジネス可視性も必要です。さらに、それらのすべてをまとめることも必要です。Terracottaサーバは、これらの要件に十分に対応することができます。
最終的に、Terracottaは、Java 5並行性APIを使用して、プロデューサの送信先、および競合するコンシューマの取得元となる「インメモリ」POJOメッセージキューを提供することを可能にした。コンシューマを、ブートストラップローダーカ(source)を使用する長時間実行デーモンプロセスとして実装することにより、このアーキテクチャは、POJOの単純性を保ちながらグリッドコンピューティング機能を提供できるようになった。
Mark氏は、このアーキテクチャが開発者にとってどれほど扱いやすいものであるかを次のように述べている。
「Terracotta」は、すばらしい機能を持つPOJOシステム全体をIntelliJで作成することを可能にします。1つの「コンテナ」型のメインプログラムは、単純に、各種すべてのSpring configをロードすることによって、すべてのコンポーネントを単一のJVMで実行できます。開発者は、メッセージングシステム全体を各自のデスクトップ上、つまり各自のIDEで稼動させ、そこでコードを実行することができます。このメッセージングシステムの中で、127.0.0.1でリッスンするエンドポイントにメッセージを送り、メッセージ用のコードをデバッグすることができるのです。
この実装によって、ほとんど犠牲を払うことなく、単純性、スケーラビリティ、および信頼性を得ることが可能となった。Mark氏は、彼独自の最小限のフレームワークを利用することによって、チームが、実装において大きな自由度と柔軟性を得ることができたとも述べている。重いアプリケーションサーバAPIへの依存に縛られることがなくなり、容量を少なく抑えることもできるようになった (全体の実装は、100KBのjarファイルである)。
Terracotta FAQでは、JMSをTerracottaに置き換えることは推奨しない(source)と述べられている。しかし、Terracotta社のCTOであるAri Zilka氏は、Mark氏の意見(source)を支持している。
関連のニュースとして、フォーク/ジョインまたはマスタ/ワーカーの処理を行うためにScalaアクタをクラスタ化するのにTerracottaを使用する(source)というJonas Boner氏による記述もある。
原文はこちらです:http://www.infoq.com/news/2008/03/terracotta-as-message-bus
セキュアなIT基盤と付帯運用サービス”SecureOnline”
アグレックス 「MDMマスター統合セミナー」~WOWOWコミュニケーションズ様CRM事例紹介~
この連載では"ファイルシステムの作り方"をご紹介します。第1回目の今回は簡単なイントロダクションと単純なHello Worldファイルシステムの作り方を説明します。次回以降で詳しい解説と本格的なファイルシステムの作り方をご紹介しようと思います。
あなたのチームが、既存アプリケーションを「シングルトンの入れ子」設計から依存性注入(DI)へ移行しようとしているなら、この論文に心引かれるでしょうが、DIへの移行は難しいことが分かっています。論文にはGoogleのJava DIコンテナ(Guice)の名を入れていますが、Javaや.NET、Python、Rubyなどにも当てはまります。
アジャイルの「自己組織化チーム」のパラダイムでは、チームのメンバに新しいスキルが要求されます。この記事では、発展しつつあるチームの自己組織化を壊さずに、新たなスキルを伝えるためのいくつかの戦略を提案します。そして、新しいスキルを身につけるのに役立つ資料のありかを提示しています。
今回の記事では、非同期ワークフローと呼ばれるワークフロー機能の面白い使用法を考察しますが、非同期ワークフローは.NETの非同期プログラミングモデルを単純化することを目的としています。
アーキテクチャは一般に、Word文書に主として見られるような極めて実体のない、ソフトウェアシステムの概念的な側面であるか、または完全に技術によって駆動されるものかのいずれかです。そのどちらも間違っています。では、どう対処すればよいでしょうか? この記事ではアイデアを説明します、そしてアプローチのキーポイントを要約します。
Werner Schuster氏が、簡単な例を示しながら、Javaのようなプロパティをメタプログラミングを使ってRubyに追加する方法を示します。
現在のRIAアーキテクチャにおいて、クライアント/サーバーの通信は重要な位置を占めています。本稿では、James WardとShashank TiwariがアドビによるオープンソースのBlazeDSメッセージングサーバーの世界へ飛び込みます。
ウィルス対策ソフトや情報漏えい防止用のソフトは、いわば影の存在です。ユーザの操作性やGUIを工夫する以上に、いかに目立たない存在となるかにその技術を注ぎ込んでいます。ここでは日立ソフトが開発した「秘文」の事例を紹介します。
No comments
返信