InfoQ

News

密結合とその意図しない結果

作者 Mark Figley, 翻訳者 編集部 投稿日 2007年11月17日 午前12時53分

コミュニティ
Architecture
トピック
.NETフレームワーク,
REST,
方法論
タグ
Component Based Architecture,
サービスデザイン

Neal Ford氏(source)は密結合と意図しない結果に関する興味深い記事(source)を掲載している。同氏はWindows PowerShellとその密結合の悪夢の一例として、ヘッドレスのWindows Serverからの不可欠な除外を使用している。

彼らはWindows Power Shell(旧姓:Monad)という名の素晴らしいWindows用の新たなバッチを構築しました。彼らはこれでシェル言語の可能性を上げたと言えるでしょう。ひとつだけ小さな問題があります。彼らはWindows Serverのヘッドレスバージョンの形跡をVista(現在約8GbでOSにおいてのみ)の形跡よりも小さくしたいのです。問題は.NETフレームワー クとライブラリがWindowsのいたるところで結合しているので、.NET 2は含まれていないということです。もし.NET2を含むとWindows全体を含むことになってしまうのです。そしてそこで摩擦が生じるのです。 Windows Power Shellは.NET2上で記述されています。それはこのタスクマネージ、サービス、そしてオペレーティングシステムの一般的なスクリプティング用の素晴らしいツールが、それから最も恩恵を受け得るシステム用には有効にならないということなのです(source)

.NETの開発中デザインチームにとっては、コンポーネントの再開発をする代わりにWindowsのオペレーティングシステムによって提供された基礎的な資産を再利用したほうが賢明であっただろう。また同様に分離したメッセージの代わりに最適化された直接的インヴォケーションによって、これらの資産と会話するほうが賢明であっただろう。そう、もしなにもなかったらその場しのぎの方法しかなかったのである。またそれが重要ポイントなのである。特に私たちがコ ンポーネントアーキテクチャからサービス指向のアーキテクチャに移行するに連れて、自然で効率的な資産の再利用と独立した分離システムのバランスが本当の戦いなるのである。そしてその戦いはいろいろな顔を持っているのである。WS-* vs. REST、同期vs.非同期コミュニケーションモデル等だ。Jim Webber氏はStefan Tilkov氏とのインタビューにおいてサービスアーキテクチャに適用する結合を取り上げている。下記はそのインタビューからの引用である(source)

私たちは自分たちが実装しているプロセスを比較的孤立させることによって、サービスエコシステムを成長させ再利用することができるのです。それには私たちが まったく予期していなかったビヘイビアが含まれています。一方もし私たちが全てを一つの大きなSOAプラットフォーム内で育てるのを許容すれば、密結合を得やすく今後の進化へのオプションを制限することになり、またこのタイプの興味深い急なビヘイビアへのオプションを制限してしまうことになります。私たちはこれと同様のことをIDLを通して密結合したCORBAアプリケーションの時代に経験し、また今日WSDLと呼ばれるもうひとつのIDLを通して密結合したWebサービスにおいてそれを経験しているのです。もし私たちがタイプシステムを共有していたら、私は支障をきたす影響のあるプログラム内のタイプシステムを変更したいのです。だから私があなたに”変更を施します”という時にはあなたは”やめてください、私を壊さないで!”というリアクションを起こすのです。そして私たちはこの麻痺状態に突入し、お互いを傷つけるのが恐くて前に進めなくなってしまうのです。

更なる情報に関してはJim Webber氏のインタビュー(英語)を見てほしい。

原文はこちらです:http://www.infoq.com/news/2007/11/tight-coupling-consequences

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

クラウドコンピューティング ~ EC2、Mosso、GoGrid

クラウドコンピューティングのプロバイダーであるEC2、Mosso、GoGridの新しいユーザーエクスペリエンスと、それぞれの機能の違いについて学びます。

仮想化入門

このArticleでは仮想化に関する利点と欠点を見ながら、仮想化の違いについて詳しく追っていきます。

Java 6のスレッド最適化は実際に動作しているのか? - パートII

パート2では、ベンチマークの結果を検証するために用いられるテクニックについてさらに深く見ていきたいと思います。最後に、「なぜプロセッサが異なるとロックのコストも大きく異なるのか」と言う真の疑問に答えます。

RESTアンチパターン

本稿では、Stefan Tilkov氏が「RESTful」な設計であると主張するアプリケーションに見受けられる最も一般的なアンチパターンのいくつかについて説明し、それらを避けるための方法を提案しています。

モデル駆動ソフトウェア開発のためのベストプラクティス

Sven Efftinge氏、Peter Friese氏とJan Köhnlein氏が、MDDを取り入れて成功した経験から、ベストプラクティスの解説を行います。

スケーラビリティの構築とパフォーマンスの達成:バーチャルパネル

Our panel of leading experts explores some of the challenges and thought processes that go into making their apps as scalable and performant as possible.

Spring 2.5:Spring MVCの新機能

この記事は、Spring 2.5で導入されたアノテーションを探究する3部作の第2弾です。Web層におけるアノテーションのサポートを扱います。最後の論文では、統合と検査で利用できる追加機能を説明する予定です。

"YUKATA"から始まるコミュニケーション(Agile2008 ライトニングトークより)

私は「浴衣」を着てパーティーに参加したことで、たくさん声を掛けていただけました。 そこで感じたことは、このカンファレンスが人との繋がりを生み出し、また言葉の壁を越えて積極的に交流する場所であることです。民族衣装はそれらを助けてくれるものでした。きっとこの交流が、新たなムーブメントをアジア圏の仲間たちにも与えてくれると確信しています。