2012-01-16 4 views
1

Ruby on RailsやDjangoのような標準のWebフレームワークで構築された大規模なWebアプリケーションを小さな断片に分割し、どのように機能を別々のサービスに分割するのですか

  • パーティションの論理機能
  • 上:私たちはRESTfulサービスでのパーティショニングと service-oriented designまたはアーキテクチャを検討する場合には、一つは彼の本の中でメソッドポール・ディックス名「はRuby on Railsでのサービス指向設計」のいずれかを使用することができます 最小限に抑えること
  • パーティショニングは、反復速度で
  • パーティション

がLOGIに区分することがpreferrableです参加読み取り/書き込み頻度に

  • パーティショニング読み取り/書き込み頻度を分割する、または結合やデータベースへのアクセスを最小限に抑えるためにパーティション化するにはどうすればよいですか?別の選択肢としては、ID、ソーシャルグラフ、地図、ファイル、画像などの異なるコンテンツタイプがあります。たとえば、Amazon S3で画像を保存したり、Googleマップを使用して地図を取得したりするのが一般的です。ベストプラクティスは何ですか?

  • +0

    あまりにも主観的です。これに対する「最良の」答えは、あなたが提供してきたものよりも、あなたのソフトウェア、システム、データ、そして意図についてもっと多く知っている必要があります。 – SpliFF

    +0

    私はより具体的な情報を追加しました。これが質問を明確にするのに役立つことを願っています。 – 0x4a6f4672

    +0

    @ 0x4a6f4672質問は依然として広いです。答えるのは本当に難しいです。ほとんどの場合、結合を最小限に抑えれば、結合を最小限に抑えることができます。ほとんどの場合、書き込みを最適化することは意味がありません。構築したいアプリケーションのアイデアを共有できますか?あなたの質問のパフォーマンスの問題を突き止めることができれば、おそらくあなたの答えがあります。 –

    答えて

    2

    多分インターネットの巨人を見てみる価値があります。 AmazonとeBayはサービス指向のアプローチとして知られています。これらはすべてをサービスに分割するインターネット巨人です。

    eBayの: ランディ・シャウプは、このプレゼンテーションについてeBay's Architectural Principlesと対応article about lessons from eBay、例えば、大規模なWebサイトを構築するためにイーベイでのベストプラクティスの数について説明します。 Ebayはすべてを仕切ります。あらゆる問題は、データ、負荷、および/または使用パターンによって、複数の次元で管理可能なチャンクに分割されます。 2つの基本的なパーティションパターンは、(1)機能分割と(2)水平分割です。データベースとアプリケーション層の両方が、機能によって最初に分割され、2番目が水平に分割されます。ランディ氏によれば、機能的なセグメンテーションと機能的分解が最も重要な方法であり、機能の関連する部分は互いに関連していますが、無関係な機能は分かれています。 Paul Dix氏は彼の本で同じことを言っています。「一般的に、論理機能に基づいてサービスを分割したいと思っています。 ebay's architectureには約200個の機能グループ「アプリ」があります。 16,000のアプリケーションサーバー上で動作するアプリケーション層は、ebay's architectureで220個の個別アプリケーションプール(販売、検索、アイテムの表示、入札、チェックアウトなど)に分割されています。 eBayデータベース層には、データベースが機能領域に分割されている400のホスト上の1000種類以上の論理データベースがあります。 ebayは、データベース分割を処理するデータアクセスレイヤー(DAL)と呼ばれる独自のORMレイヤーを作成しました。

    アマゾン: アマゾンではすべてがサービスで分割されています。サービス指向アーキテクチャ(SOA)は、Amazonテクノロジの基本的な建物抽象化です。 Amazon.com architectureは、サービスに分割されるだけでなく、Amazonの開発者もサービスを中心にチーム化されています。 Amazonは実際には独自のデータと独自のAPIを持つ多くの社内ベンチャーのエコシステムです。サービスは、開発者の小さなチームによって運営され、所有されているものです。 Amazon.com platformは、基本的な低レベルの基礎サービス(ストレージ、コンピューティング、キューイングなど)から、アイデンティティ管理、コンテンツの生成などの集約された高水準のサービスまで数多くのサービスで構成されています&ディスカバリ製品とオファー管理、お支払いまたはフルフィルメント&カスタマーサービス。 Amazon.comにアクセスしている顧客の製品詳細ページを構築するために、ソフトウェアは200〜300のサービスを呼び出して、その顧客に高度にパーソナライズされたエクスペリエンスを提示します。

    Twitterは、異なるコンテンツタイプ、ID、グラフ、URLなどに対応するサービスを使用します。ID生成にはSnowflakeを使用します。 Snowflakeは、一意のID番号を高いスケールで生成するためのネットワークサービスです。 TwitterはFlockDBをソーシャルグラフストレージとして使用しています。 FlockDBは、Twitterで使用される隣接関係リストを格納する分散グラフデータベースです。 SpiderDuckをURLフェッチャーとして使用します。 SpiderDuckは、リアルタイムでツイートで共有されているすべてのURLを取得し、ダウンロードしたコンテンツを解析して目的のメタデータを抽出し、他のTwitterサービスで利用可能なメタデータを数秒以内に利用できるようにします。

    関連する問題