Skip to content

Instantly share code, notes, and snippets.

@hatappo
Last active August 29, 2015 14:09
Show Gist options
  • Save hatappo/8fccfedcd6eca4ecf065 to your computer and use it in GitHub Desktop.
Save hatappo/8fccfedcd6eca4ecf065 to your computer and use it in GitHub Desktop.

この文章は、以下の文章の私的な和訳です。

原文:http://www.reactivemanifesto.org/


The Reactive Manifesto リアクティブ宣言

2014年9月16日(v2.0)発行

本質的に異なるドメインの組織活動が、似たソフトウェア構築のパターンをそれぞれに独立して発見していっています。 これらのシステムは、より堅牢で、より復元力があり、より柔軟で、現代的な要求に合致した位置付けにあります。

これらの変化は、ここ数年のアプリケーションの要件のドラマティックな変化によって起きています。 たった数年前まで、大規模アプリケーションというのは、数10のサーバと、秒レベルのレスポンスタイム、数時間レベルのオフラインメンテナンス、そして数ギガバイトのレベルのデータ量でした。 今日のアプリケーションはというと、あらゆる場所にデプロイされます。モバイルデバイスからクラウドベースの数千のマルチコアプロセッサが走るクラスタまで。 ユーザはミリ秒レベルのレスポンスタイムと、100%の稼働を期待します。 データはペタバイトのレベルで計測されます。 今日のアプリケーションに対する要求は、これまでのアーキテクチャでは単純に満たされません。

システムアーキテクチャに対する一貫性のあるアプローチが必要とされていると私達は信じています。 そして、必要な全ての観点は既に認識されていると信じています。 私達は、応答性があり、復元力があり、伸縮性があり、メッセージドリブンなシステムを欲しています。 私達は、これらをリアクティブシステムと呼びます。

リアクティブシステムとして構築されたシステムは、より柔軟で、疎結合であり、そしてスケーラブルです。 リアクティブシステムは、開発と変化に対する対応をより容易にしてくれます。 著しく大きな耐障害性を持ち、障害が発生した時に厄介さよりむしろ優雅さをもってそれに対処します。 リアクティブシステムは応答性が高く、効果的なインタラクティブフィードバックをユーザに提供します。

リアクティブストリームとは:

Responsive 応答性のある : 応答性のあるシステムは可能な限りタイムリーに応答します。 応答性は、ユーザビリティとユーティリティ(有用性)の基盤です。 しかしそれ以上に、応答性は、素早く検知され効果的に取り除かれるだろう問題を意味します。 応答性のあるシステムは、一貫した素早いレスポンスタイムを提供することに焦点をあてます。 そして信頼性のある上限を確立することにより、サービスの一貫した品質を提供します。 この一貫した挙動は、次にエラー制御を単純化し、そしてエンドユーザの信用を構築し、さらにより一層のインタラクションを促進します。 Resilient 復元性のある : 復元性のあるシステムは、障害に直面しても応答性を保ち続けます。 高可用システムだけでなくミッションクリティカルなシステム ー 障害の後には応答性を失ってしまうだろう復元力のないいかなるシステム ー においても適用できます。 復元性は、複製、抑制、分離、そして委譲によって達成されます。 障害はそれぞれのコンポーネントの中で自身によって制御される。 コンポーネント群は互いに独立しており、それゆえシステムの各箇所が、障害とそこからの復旧をシステム全体を傷つけることなくできることが保証されます。 各コンポーネントの復旧は他の(外部の)コンポーネントに委譲され、必要な箇所で複製が作られることによって高可用性が保証されます。 コンポーネントのクライアントは、そのコンポーネントの障害の制御の役割を負いません。 Elastic 弾力性のある : 弾力性のあるシステムは、様々なワークロード下においても応答性を保ち続けます。 リアクティブシステムは、入力量の変化に対応(react)することができます。その入力をサービスするためにアロケートされたリソースを増減させることによって。 これは、リアクティブシステムが、中心的なボトルネックや論点を持たないことを示しています。 そして、結果的に、コンポーネントを分散または複製し、入力をそれらへ振り分ける能力をもたらします。 リアクティブシステムは、適切に生のパフォーマンスを計測をすることによって、リアクティブ性やスケーリングアルゴリズムと同様に予測を容易にします。 ソフトウェアプラットフォームとコモディティハードウェアによるコスト効率の柔軟性を獲得します。 Message Driven メッセージドリブン : リアクティブシステムは、疎結合、独立性、位置透過性、そしてメッセージとしてエラーを委譲する手段の提供を保証するコンポーネント間で、その境界を確立するための非同期のメッセージパッシングによって成り立っています。 明示的なメッセージパッシングの採用は、システム内のメッセージキューの監視及び成形と必要に応じたバックプレッシャーの適用によって、負荷の管理、柔軟性、そして流量制御を手に入れます。 コミュニケーションの手段としての位置透過なメッセージングは、障害の管理において、同様の構成での動作と単一ホストなのかクラスタなのかを超えたセマンティクスを可能にします。 ノンブロッキングなコミュニケーションは、その受け手に稼働したままリソースの消費のみを許可します。そしてシステムのオーバーヘッドの縮小をもたらします。

TODO それぞれの要素の関係図

大規模システムというのはより小規模なシステムによって構成され、それゆえにその構成要素のリアクティブな特性に依存します。 これは、リアクティブシステムが設計原理を適用するので、リアクティブな特性はスケールの全ての側面に適用しそれらを構成可能とすることを意味しています。

世界で最も大規模なシステムは、これらの特性に基づいたアーキテクチャに頼っており、毎日数十億の人々のニーズに応えています。 これらの設計原理を、それぞれの局面において都度再発見するのではなく意識的に最初から採用する段階に来ています。

リアクティブ宣言にサインしよう

〜人が既にサインアップしました(一覧


用語集

PDFでダウンロード

改良を指摘する

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment