最近、salesforce.com の信頼性エンジニアが Salesforce のコアプラットフォームとアプリケーションのアーキテクチャ概要を発表しました。Heroku の Dyno、work.com などの他の製品のサブシステムは対象外ですが、database.com は対象になっています:
セールスフォース・ドットコムは、1999 年の設立以来、インターネット技術に注力し、従来の企業向けソフトウェアを置き換えることに専念しています。まず、セールスフォース・ドットコムの用語について説明します:
用語の定義
1.インスタンス- Salesforce のサービスをユーザが利用可能なサブセットにパッケージ化した、共有および非共有両方のシステム、ネットワーク、およびストレージ設備の完全なコレクション。たとえば、na14.salesforce.com はインスタンスです。
2.スーパーポッド- 複数のインスタンスをサポートするアウトバウンドプロキシサーバー、ロードバランサー、メールサーバー、SANデバイス、その他のインフラを含むシステム、ネットワーク、ストレージ設備の集合体 スーパーポッドはデータセンターレベルのサービス分離を提供し、共有コンポーネントや複雑なコンポーネントで発生した問題がデータセンター上のすべてのインスタンスに影響しないようにします。Superpodはデータセンターレベルのサービス分離を提供し、共有コンポーネントや複雑なコンポーネントで発生した問題がデータセンター内のすべてのインスタンスに影響しないようにします。
3. org (組織)- Salesforce アプリケーションの **** ユーザ。www.salesforce.com或者developer.force.com上的每次访问都会产生一个新的org. org は高度にカスタマイズでき、標準の salesforce.com CRM オブジェクトに異なるセキュリティ設定、レコードの可視性、共有設定、UI インタフェースの外観、ワークフロー、トリガーを設定できます、Orgはあらゆるシナリオをサポートし、100万から100万のユニークな認証ユーザ、ポータルユーザ、Force.com Sitesユーザをサポートするために使用することができます。
4.サンドボックス- セールスフォース・ドットコムのインスタンスの一種で、顧客のアプリケーション展開のために、完全な製品組織の完全なコピーをホストします。ユーザは、Salesforce アプリケーションプラットフォーム上で完全なアプリケーション開発サイクルを実行できます。製品の変更をデプロイする前に、アプリケーションのテスト環境を提供します。
統計データ
-北米:18台、欧州・中東・アフリカ:4台、アジア太平洋:2台
-20 サンドボックスの例
-1日13億件以上の取引
-ピーク時に毎秒24,000件のデータベース・トランザクションを処理
-15,000台以上のハードウェアシステム
-22PB以上の保存容量
-5000以上のSANポート
使用技術
-開発および主要製品システムとしてのLinux
-Solaris10とZFS
-ジェティ
-ソラー
-メモキャッシュ
-Apache QPID
-QFS
-パペット、レイザー
-Perl、Python
-ナギオス
-Perforce、Git、Subversion
-ハードウェアとソフトウェアのアーキテクチャ
1.ログインのサポート
Salesforce では、インスタンスへのログインをサポートするために多数のサーバを実行しており、これらのサーバの一部は、ログイン要求を処理してセッションをユーザ自身のインスタンスに再定義するために使用されます。
ユーザトラフィックは Salesforce の外部 DNS で開始され、インスタンスが IP アドレスを受信すると、標準的なインターネットルーティングを介して適切なデータセンターに直接送信されます。
このトラフィックが特定のデータセンターに入ると、IPアドレスに対応するロードバランサーに誘導され、インターネットからのすべてのIPがアクティブ/スタンバイサーバーのVIPとして設定されます。
2.インスタンス内
ロードバランサーはトラフィックをアプリケーション層の指定されたインスタンスに誘導します。標準的なウェブトラフィックとAPIトラフィックはこの層に配置されます。
3.コアアプリケーション
コアアプリケーション層では10台から40台のサーバーを使用しますが、その台数はインスタンスによって大きく異なります。各サーバーは、サーバーのハードウェア構成に応じて、最大14 GBのヒープ構成を持つ個別のHotspot JVMを実行します。
バッチサーバは、主にデータベースレベルで確立された自動化プロセスを担当します。一例として、Weekly Export プロセスは、ユーザーデータを単一のアーカイブファイル形式でエクスポートするバックアップとして使用されます。
セールスフォース・ドットコムでは、基本的なコンテンツ管理から高度なコンテンツ管理まで、さまざまなサービスを提供しています。コンテンツアプリケーションレイヤの非同期プロセスを管理するために、コンテンツ検索サーバとバッチサーバが使用されます。コンテンツバッチサーバは、コンテンツタイプのプロセスのスケジューリングを担当し、指定されたファイルタイプのプレビューのレンダリングやファイルタイプの変換などの機能を備えています。
4.データベース
主なデータフローは一般的にコアアプリケーション層とデータベース層の間で発生し、ソフトウェアの観点からは、すべての処理はデータベースを通過するため、データベースのパフォーマンスは非常に重要です。各メイン・インスタンスは、1 つの 8 ノード・クラスタ化データベース層を使用します。CS インスタンスなどのユーザ・サンドボックスは、1 つの 4 ノード・クラスタ化データベース層を使用します。
セールスフォース・ドットコムのシステムはデータベース駆動に偏っているため、データベースの負荷を軽減することが重要です。負荷を軽減するために、ACS - API Cursor Server を開発しました。これは、データベースのパフォーマンスを向上させる上で、2つの問題を解決するのに役立ちます。第一に、カーソルをデータベースに保存していましたが、削除操作がパフォーマンスに影響していました。次に、カーソルを処理するためにデータベースのテーブルを使用した後、DDLのオーバーヘッドが悪影響を及ぼしていました。 ACSは、2台のサーバ上で動作するカーソルキャッシングシステムで、カーソル処理のためにデータベースを解放します。
5.検索
Salesforce の検索層は、商用の Linux ホスト上で実行され、それぞれ 640 GB の PCI-E フラッシュメモリに拡張可能で、通常は検索結果のキャッシュに使用されます。これらのホストは、NFS ファイルシステム経由で共有 SAN アレイからデータを読み込み、検索インデックスをフラッシュに保存することで、より高いパフォーマンスを実現し、検索スループットを向上させます。
これらのLUNはQFSファイルシステムを構成し、シングルライトとマルチリードが可能です。他のコアシステムと同様に、アクティブ/パッシブ・モードが使用され、パッシブ・ノードは優先度の低いインデックス検索を数回のみ実行します。検索結果はアクティブノードに返され、QFSファイルシステムに書き込まれます。
この変換は、SPARC上でSolaris 10を実行している4台のNFSサーバーが同じLUNを読み取り専用でマウントし、マウントされたすべてのSANファイルシステムがNFS経由で記述された検索レイヤーに共有される場合に発生します。
6.ファイルフォース
Fileforceは、AmazonのS3やOpenStackのSwiftプロジェクトと同様に、DB層の負荷を軽減するために自社開発されました。Fileforceでは、バイナリラージオブジェクト(BLOB)が直接データベースに格納されます。Fileforce が使用されると、32 KB より大きな BLOB はすべて移行されますが、それよりも小さな BLOB はデータベースに保存されたままになります。データベース内の
Fileforce には、Filfeforce サーバのディスク検索を削減するためのバンドル機能もあります。32KB 未満のオブジェクトが 100 個以上データベースに保存されている場合、アプリケーションサーバ上で実行されているプロセスが、それらをすべて 1 つのファイルに統合します。統合ファイルへの参照はデータベースに保存され、統合ファイル内のファイルのオフセットが記録されます。
7.サポート
各インスタンスには、"Hammer testing "と呼ばれるアプリケーション層のアプリケーションデバッグサーバ、各インスタンスの健全性を監視するハブサーバ、Nagiosを実行する監視サーバなど、さまざまなタスクをサポートするさまざまなサーバが含まれています。インスタンスの外部には、ストレージ管理、データベース管理、ログ集計、製品認証などの機能をサポートするサーバもあります。




