BT

リアクティブな世界におけるスケーラビリティ

| 作者: Jan Stenberg フォローする 37 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2014年5月7日. 推定読書時間: 2 分 |

原文(投稿日:2014/04/28)へのリンク

システムを本当にスケーラブルにするには,参照の局所性の最大化とコンテンションの最小化が必要だ – 初開催のReact Conferenceで行われたスケーラビリティに関するプレゼンテーションで,Jonas Bonér氏はこう説明した。
Akkaプロジェクトの創設者であり,TypesafeのCTOでもある氏は,シェア・ナッシング・アーキテクチャを採用し,イベント駆動を基盤として構築することで,真にスケーラブルなシステムが開発できると考えている。

氏はパフォーマンスを,一定の応答時間を提供するシステムの能力と定義する。それは本質的に3つのものからなる – レイテンシ,スループット,スケーラビリティである。氏の定義するスケーラビリティとは,その応答時間を維持するシステムの能力だ。
スケールアップには,マルチコア・アーキテクチャを効果的に活用する方法が必要である。氏にとって,ひとつの処理を行う小さなメソッドとシンプルなロジックを使った,クリーンなコードと優れたプラクティスがこれを達成する手段なのだ。本当に重要なことが2つある。ひとつは,データの所在をその処理コンテキスト内に限定するという,参照の局所性の最大化の問題であり,もうひとつは,同期ロックの過剰な利用のように,スケーラビリティを阻害するコンテンションの問題だ。

原則は"ブロックをしないこと"だ。非同期を徹底し,非同期メッセージパッシングを全面的に採用することで,並列処理設計のシステムが実現できる。低いレベルのスレッドやロックに頼るのではなく,システムのイベントフロー処理の抽象化レベルを上げることができるのだ。
非同期プログラミングは,最初はその基本的な複雑さに苦労するが,それを一度越えてしまえば,以降に発生する問題のほとんどはごく単純なものに限られてくるはずだ。逆に同期システムでは,基本的な複雑性の低さから最初の難易度は低いものの,システムが拡大するにつれて,すぐに手に負えなくなってくる。状態の相互保持や密接に絡みあったシステムの複雑さに圧倒されてしまうかも知れない。

本当のスケーリングには,システムにリソースを追加する手段も必要だ。つまるところスケールアウトとは,ノードやリソースの追加を柔軟に管理することに他ならない。
スケール・オン・デマンドも重要な要素だ。クラスタあるいはクラウドコンピューティングアーキテクチャを効果的に利用して,オン・ザ・フライのリソース追加を実現することで,アプリケーションはロードの増加のみならず,減少にも対処できるようになる。

実績の積み重ねによって証明された基本原則を忠実に守ってこそ,本当にスケーラブルなシステムを作ることができる,というのが氏の結論だ。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT