Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hassaku/6739181 to your computer and use it in GitHub Desktop.
Save hassaku/6739181 to your computer and use it in GitHub Desktop.
興味のあるRubyConf2013プログラムのアブスト http://rubyconf.org/program
■ Promiscuous: A robust service-oriented architecture framework
Nicolas Viennot & Kareem Kouddous
小さなチームで、比較的巨大なアプリを数ヶ月で作成したことのある人達にとって、
乱雑なコードや遅いテスト、新規開発者の習得時間の長さなどのせいで、
RailsやSinatraを使ったときの幸福感といったものは、すぐに失われてしまうものだ。
サービスオブジェクトを抽出したり、MVCをMOVEなどにしたところで、コードが複雑になり、
シンプルにし損ねるだけだし、Javascript MVCは、多くのviewロジックを抽出するのに役立つものの、
巨大なバックエンドサーバはそのまま残ってしまうだろう。
そこで我々は、巨大なアプリを、メンテがしやすい、多くの小さなアプリに分割する方法を提案する。
様々な理由により、アプリケーションの分割は難しい。最も難しい課題は、
全てのアプリケーションのデータを同期しておくことである。
我々が提案するオープンソースライブラリのPromiscuousは、アプリケーション間のデータ複製を、
安全に、一貫性をもって実現するフレームワークである。
MoSQL(MongoDBからPostgresへのストリーミング)やDatabus(LinkedINで使われているデータ更新通知)
といった従来のデータベースレベルで動作するものと違って、Promiscuousは、RedisやRabbitMQを使い、
ARレベルで透過的にモデル操作を複製する。これにより、関心事の分離や、不均一なデータベースの複製、
データセンターでの非同期なトリガ(事象)をも処理することができる。
Promiscuousの仕組みと、ある実際の巨大なアプリから小さな8つのアプリへと、
どのように分割したかをお話し、また、スケーラビリティや開発環境、migration、
各種テストや実際に即したアーキテクチャーのベストプラクティスについても紹介する予定である。
■ A Lightweight SOA Framework using Ruby, Apache Thrift and AMQP
Stephen Henrie
Service-oriented architecture (SOA)は、RPCに基づく分散コンピューティングの進化系である。
その中で、独立したシステム要素は、それぞれのサービスをうけもつビジネスロジックを包括し、
機能的にモジュラー化されている。
これら各Serviceで重要なのは、ゆるいカップリングの性質である。それはつまり、
インターフェースはその実装とは独立であり、また、開発者は複数のSeviceを組み合わせる際、
その実装について理解する必要はない。分散したServiceコンポーネント間にメッセージを採用することは、
一貫性のあるコミュニケーションプラットフォームとしての、スケーラビリティや独立性、信頼性に寄与し、
既存システムへの影響を最小限にもする。
本セッションでは、Apache ThriftとAMQPをベースにした軽量RPC、Rubyで実装したSOAについて、アプローチを紹介する。
これにより、複雑で、高度に分散したSOAを、いかにして簡単に構築できるか示す。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment