Platform by Salesforce.com and their development process

2,385 views

Published on

2009年8月7日
クラウド研究会での発表資料(一部削除)

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,385
On SlideShare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
74
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide
  • 5807210 search globe, people, clouds
  • Platform by Salesforce.com and their development process

    1. 1. セールスフォース・ドットコムの プラットフォーム ( とその開発プロセス ) 株式会社セールスフォース・ドットコム 岡本 充洋
    2. 2. Salesforce のプラットフォームについて <ul><li>Overview </li></ul>
    3. 3. Overview : Force.com のスタック CRM を中心としたビジネスアプリケション群 開発プラットフォーム、コアフレームワーク インフラストラクチャ
    4. 4. Overview : Force.com のスタック マルチテナントカーネル 信頼性 自由自在に カスタマイズ きめ細かいセキュリティ、共有ルール クラウドロジックの プログラミング ワークフロー、承認 プログラム 制御可能な UI モバイル端末への展開 Web サイト コンテンツ ライブラリ 分析機能 750 以上の連携済み アプリケーション クエリの最適化 高い信頼性 アップグレード ISO 27001 認定 柔軟な拡張性 システムの 稼働状況の公開 3 ヶ所のグローバル データセンター、障害復旧 インテグレーション Sandbox 環境 Salesforce to Salesforce 1 日 1 億件超の API コールを処理 99.9% の 稼働率 300ms 以下のレスポンス
    5. 5. Overview : データセンターの所在地 運用データセンター、 アーカイブ用データセンター 運用データセンター ( バックアップ ) 運用データセンター ( メイン ) ラボラトリ用データセンター ( 運用レベルの開発 ) 、アーカイブ用データセンター セールスフォース・ドットコムのデータセンター所在地 お客様はイノベーションに注力 インフラは当社が管理 複数の拠点に分散、ミラーリングされたデータセンター ほぼリアルタイムで実行されるデータ複製 シームレスな障害復旧 パスダイバシティを利用した専用のネットワークバックボーン 単一障害点を回避 特定の通信業者に依存しないネットワーク戦略
    6. 6. Overview : Force.com Pod アーキテクチャ 検索 データベース クラスタ サーバ マルチテナント クラスタ API APP スケーラブル “ Pod” アーキテクチャ Pod アーキテクチャ マルチテナントクラスタを一定ノード毎に分けて管理 コードベースは単一 Pod の追加によって事実上無制限にスケールアップ NA4 NA1 NA2 NA3 NA5 NA6 EMEA AP0 “ N” Pod
    7. 7. Overview : データリカバリーストラテジー <ul><li>データセンタ内リアルタイムレプリケーション </li></ul><ul><li>データセンタ間もほぼリアルタイムに レプリケーション </li></ul><ul><li>Disk-To-Disk-To-Tape 戦略 </li></ul><ul><ul><li>レプリケートディスクにバックアップ </li></ul></ul><ul><ul><li>基本的にはディスクのバックアップ で事足りる </li></ul></ul><ul><ul><li>テープドライブへの保存にも対応 </li></ul></ul><ul><ul><li>テープは弊社設備から持つ出され事は無い </li></ul></ul><ul><li>ディザスタリカバリストラテジ : フェイルオーバー用の バックアップデータセンタ設備を Northern Virginia に施設 </li></ul>高い冗長性、パフォーマンス
    8. 8. Overview : Security <ul><li>アプリケーション </li></ul><ul><ul><li>全てのパスワードは暗号化 </li></ul></ul><ul><ul><li>よりセキュアなセッションキー管理 </li></ul></ul><ul><ul><li>マルチテナントデータアクセスコントロール </li></ul></ul><ul><ul><li>アプリケーション自身のセキュリティ違反モニタリング </li></ul></ul><ul><li>ファイヤーウォール </li></ul><ul><li>強固なファイアーウォール群 </li></ul><ul><li>侵入検知 </li></ul><ul><li>プロアクティブなログ監視 </li></ul><ul><li>インターネット </li></ul><ul><li>全てのトランザクションが 128-bit SSL で暗号化 </li></ul><ul><li>Verisign による Certificates </li></ul><ul><li>物理的 </li></ul><ul><li>完全にセキュアなデータセンタ </li></ul><ul><li>24x7 のオンサイトセキュリティガード </li></ul><ul><li>バイオメトリクス認証 </li></ul><ul><li>物理アクセスは常に監視される </li></ul><ul><li>企業 </li></ul><ul><li>セールスフォース社員はエンドユーザーのパスワードやデータを見ることは出来ない </li></ul><ul><li>ユーザー </li></ul><ul><ul><li>パスワードポリシー </li></ul></ul><ul><ul><li>アクセスコントロール </li></ul></ul><ul><ul><li>ログイン履歴の追跡 </li></ul></ul><ul><ul><li>優れたデータの共有モデル </li></ul></ul><ul><ul><li>フィールドレベルのセキュリティ </li></ul></ul><ul><li>ネットワーク / ホスト </li></ul><ul><li>最小の IP をルーティンング </li></ul><ul><li>強固なオペレーティングシステム </li></ul><ul><li>セキュアサービス </li></ul>
    9. 9. Force.com の動作原理
    10. 10. Force.com の動作原理 共有 データベース アプリケーション 描画 共有 マルチテナント カーネル
    11. 11. すべてのカスタマイズはデータベースに保存 共有データ カスタマイズ ピボットデータ
    12. 12. 全ての企業のデータは共有データベースへ The Telegraph’s Advertisers BT’s Accounts Dell’s Products
    13. 13. 共有データベース
    14. 14. Index はどうする? Multi-Tenant Index Multi-Tenant Table Optimization ID Data 1 Data 2 10002 unus erat toto naturae 10003 vultus in orbe 10004 quem dixere chaeos 10005 rudis indigestaque 10006 meis perpetuum 10007 deducite temopra 10008 carmen ante 10009 mare et terras 10010 tegit et quod 10011 omnia caelum 10012 unus erat toto naturae 10013 vultus in orbe 10014 quem dixere chaeos 10015 rudis indigestaque 10016 meis perpetuum 10017 deducite temopra 10018 carmen ante 10019 mare et terras 10020 tegit et quod 10021 omnia caelum 10022 unus erat toto naturae
    15. 15. Question Michael Dell が英国でどれぐらいサーバが売れているのかを知りたい場合 どのようにしてこの要求を処理するか ?
    16. 16. Multi-Tenant Query Optimizer Shared Visibility Shared Indexes Run pre-queries pre-queries の結果に基づいてクエリを発行 実クエリの実行 Stop Go Multi-tenant Optimizer ID Data 1 Data 2 10002 unus erat toto naturae 10003 vultus in orbe 10004 quem dixere chaeos 10005 rudis indigestaque 10006 meis perpetuum 10007 deducite temopra 10008 carmen ante 10009 mare et terras 10010 tegit et quod 10011 omnia caelum 10012 unus erat toto naturae 10013 vultus in orbe 10014 quem dixere chaeos 10015 rudis indigestaque 10016 meis perpetuum 10017 deducite temopra 10018 carmen ante 10019 mare et terras 10020 tegit et quod 10021 omnia caelum 10022 unus erat toto naturae 10023 vultus in orbe 10024 quem dixere chaeos 10025 rudis indigestaque 10026 meis perpetuum 10027 deducite temopra 10028 carmen ante 10029 mare et terras 10030 tegit et quod 10031 omnia caelum 10032 unus erat toto naturae 10033 vultus in orbe ID Data 1 Data 2 10002 unus erat toto naturae 10003 vultus in orbe 10004 quem dixere chaeos 10005 rudis indigestaque 10006 meis perpetuum 10007 deducite temopra 10008 carmen ante 10009 mare et terras 10010 tegit et quod 10011 omnia caelum 10012 unus erat toto naturae 10013 vultus in orbe 10014 quem dixere chaeos 10015 rudis indigestaque 10016 meis perpetuum 10017 deducite temopra 10018 carmen ante 10019 mare et terras 10020 tegit et quod 10021 omnia caelum 10022 unus erat toto naturae 10023 vultus in orbe 10024 quem dixere chaeos 10025 rudis indigestaque 10026 meis perpetuum 10027 deducite temopra 10028 carmen ante 10029 mare et terras 10030 tegit et quod 10031 omnia caelum 10032 unus erat toto naturae 10033 vultus in orbe ユーザーの アクセス権 抽出条件の確認 Multi-tenant optimization
    17. 17. Multi-tenant Query Optimizer Visibility Indexes Millions of Sales Line Items The fastest path to the answer M. Dell Servers England ID Data 1 Data 2 10002 unus erat toto naturae 10003 vultus in orbe 10004 quem dixere chaeos 10005 rudis indigestaque 10006 meis perpetuum 10007 deducite temopra 10008 carmen ante 10009 mare et terras 10010 tegit et quod 10011 omnia caelum 10012 unus erat 10013 vultus in orbe 10014 quem dixere chaeos 10015 rudis indigestaque 10016 meis perpetuum 10017 deducite temopra 10018 carmen ante 10019 mare et terras 10020 tegit et quod 10021 omnia caelum 10022 unus erat toto naturae 10023 vultus in orbe 10024 quem dixere chaeos 10025 rudis indigestaque 10026 meis perpetuum 10027 deducite temopra 10028 carmen ante 10029 mare et terras 10030 tegit et quod 10031 omnia caelum 10032 unus erat toto naturae 10033 vultus in orbe ID Data 1 Data 2 10002 unus erat toto naturae 10003 vultus in orbe 10004 quem dixere chaeos 10005 rudis indigestaque 10006 meis perpetuum 10007 deducite temopra 10008 carmen ante 10009 mare et terras 10010 tegit et quod 10011 omnia caelum 10012 unus erat toto naturae 10013 vultus in orbe 10014 quem dixere chaeos 10015 rudis indigestaque 10016 meis perpetuum 10017 deducite temopra 10018 carmen ante 10019 mare et terras 10020 tegit et quod 10021 omnia caelum 10022 unus erat toto naturae 10023 vultus in orbe 10024 quem dixere chaeos 10025 rudis indigestaque 10026 meis perpetuum 10027 deducite temopra 10028 carmen ante 10029 mare et terras 10030 tegit et quod 10031 omnia caelum 10032 unus erat toto naturae 10033 vultus in orbe
    18. 18. Force.com のデータモデル
    19. 19. メタデータ , 実データ , ピボットテーブルを格納する仮想データ構造
    20. 20. Objects テーブルはカスタムオブジェクトのメタデータを格納
    21. 21. Fields テーブルはカスタムフィールドのメタデータを格納
    22. 22. Data ヒープテーブルはカスタムオブジェクト内の全ての構造化データを格納する
    23. 23. 単一のテーブルに様々なタイプのデータを格納し、組織毎に別個のオブジェクトを管理
    24. 24. Indexes ピボットテーブルは組織毎のインデックスを管理
    25. 25. UniqueFields ピボットテーブルはカスタムフィールドのユニーク性を担保
    26. 26. Relationships ピボットテーブルは参照関係の定義と join の最適化を行う
    27. 27. Force.com の コアフレームワーク
    28. 28. コアフレームワーク <ul><li>強力な Force.com に備え付けのフレームワーク </li></ul><ul><ul><li>Builder 機能 ( マウスクリックによる画面作成 ) </li></ul></ul><ul><ul><li>バルクプロセス </li></ul></ul><ul><ul><li>ゴミ箱 </li></ul></ul><ul><ul><li>フルテキストサーチ </li></ul></ul><ul><ul><li>バルク DML </li></ul></ul><ul><ul><li>Web サービス API </li></ul></ul><ul><ul><li>等 </li></ul></ul>
    29. 29. Force.comBuilder コーディングレスの宣言的開発を提供
    30. 30. バリデーションルールとシンプルな数式 ビジネスユーザーが“ code” を書ける
    31. 31. 簡単すぎず強力 : オブジェクトをまたがる集計によってフィールド合計値の算出も可能
    32. 32. バルクプロセスオプティマイザはデータロードのオーバヘッドを軽減
    33. 33. データ定義処理はパフォーマンス低下や並列性を下げない様に最適化処理を行う <ul><li>例えば : </li></ul><ul><ul><li>DML の前に主キーによる全レコードのソートを行う </li></ul></ul><ul><ul><li>順番にデータを処理 </li></ul></ul><ul><ul><li>フィールドのデータタイプ変更でスロット再配分 </li></ul></ul><ul><ul><li>新しいロールアップサマリフィールドの遅延計算処理 </li></ul></ul><ul><ul><li>大規模変更のバックグラウンド処理 </li></ul></ul>
    34. 34. ゴミ箱 : 誤って消した物を戻す Restore <ul><li>個々のオブジェクトインスタンス </li></ul><ul><li>関連オブジェクトのインスタンス ( 親 / 子レコード )‏ </li></ul><ul><li>全てのフィールドとオブジェクト ( 削除したカラムやテーブル )‏ </li></ul>
    35. 35. Force.com フルテキスト検索エンジン <ul><li>非同期に全てのテキストフィールドのインデクシングを行う </li></ul><ul><li>MRU キャッシュは直近のアップロードしたオブジェクトを含む </li></ul><ul><li>現在のユーザーの編集履歴や設定情報から検索結果にランク付けを行う </li></ul>
    36. 36. クエリの最適化 クエリ最適化エンジン Web クライアント API コール <ul><li>複数ディメンションにまたがる場合も高い処理能力を発揮 </li></ul><ul><li>企業 </li></ul><ul><li>役職 </li></ul><ul><li>メタデータ </li></ul><ul><li>セキュリティ </li></ul><ul><li>共有ルール </li></ul><ul><li>検索機能 </li></ul>300 ミリ秒以下の レスポンスタイム 高速データアクセス 大規模データにも対応
    37. 37. クエリオプティマイザは内部データ間をまたがるデータの最適化を行う Multi-tenant optimizer statistics
    38. 38. オプティマイザはデータの実際のクエリを実行する前に組織の統計値によってロジッックを選択 Pre-Query Selectivity Measurements … use of index related to filter. High High … ordered hash join; drive using Data table. Low High … use of index related to filter. High Low … nested loops join; drive using view of rows that the user can see. Low Low Write final database access query, forcing … Filter User
    39. 39. Apex : Force.com 上のプログラミング言語
    40. 40. Apex の実行原理
    41. 41. Apex はプラットフォームと深く統合 <ul><li>バルク DML </li></ul><ul><li>Email とメッセージング </li></ul><ul><li>非同期処理 (Futures) </li></ul><ul><li>XmlStream / HTTP (RESTful) サービスクラス </li></ul><ul><li>新規 Web サービスの宣言的な作成 </li></ul>
    42. 42. Salesforce の開発について <ul><li>オマケ </li></ul>
    43. 43. ADM とは ? ADM は Salesforce 内で利用されている Scrum/XP スタイルのプロダクト開発スタイル。 Scrum のプロジェクト管理手法に XP のプラクティスを追加したもの。
    44. 44. Scrum Lifecycle Daily Scrum Meeting Sprint Review: Demo Potentially Releasable New Functionality Product Backlog Sprint Backlog Retrospective 24 Hours 2 - 4 Weeks
    45. 45. Autobuild Page
    46. 46. Scrumforce : Easy way to manage your Agile Teams
    47. 47. All-in-one view of your Scrum Team and Sprints
    48. 48. Salesforce は継続的にアップグレード = Agile 29 Major Releases Every Customization & Integration Automatically Upgraded Always have the Latest Innovations & Technology Painless, No Hassle Upgrades
    49. 49. Force.com のスタック マルチテナントカーネル 信頼性 自由自在に カスタマイズ きめ細かいセキュリティ、共有ルール クラウドロジックの プログラミング ワークフロー、承認 プログラム 制御可能な UI モバイル端末への展開 Web サイト コンテンツ ライブラリ 分析機能 750 以上の連携済み アプリケーション クエリの最適化 高い信頼性 アップグレード ISO 27001 認定 柔軟な拡張性 システムの 稼働状況の公開 3 ヶ所のグローバル データセンター、障害復旧 インテグレーション Sandbox 環境 Salesforce to Salesforce 1 日 1 億件超の API コールを処理 99.9% の 稼働率 300ms 以下のレスポンス
    50. 50. ただの Platform では様々な部分にコストがかかる マルチテナントカーネル 信頼性 自由自在に カスタマイズ きめ細かいセキュリティ、共有ルール クラウドロジックの プログラミング ワークフロー、承認 プログラム 制御可能な UI モバイル端末への展開 Web サイト コンテンツ ライブラリ 分析機能 750 以上の連携済み アプリケーション クエリの最適化 高い信頼性 アップグレード ISO 27001 認定 柔軟な拡張性 システムの 稼働状況の公開 3 ヶ所のグローバル データセンター、障害復旧 インテグレーション Sandbox 環境 Salesforce to Salesforce 1 日 1 億件超の API コールを処理 99.9% の 稼働率 300ms 以下のレスポンス
    51. 51. 生産性のコアは強力なフレームワーク群 マルチテナントカーネル 信頼性 自由自在に カスタマイズ きめ細かいセキュリティ、共有ルール クラウドロジックの プログラミング ワークフロー、承認 プログラム 制御可能な UI モバイル端末への展開 Web サイト コンテンツ ライブラリ 分析機能 750 以上の連携済み アプリケーション クエリの最適化 高い信頼性 アップグレード ISO 27001 認定 柔軟な拡張性 システムの 稼働状況の公開 3 ヶ所のグローバル データセンター、障害復旧 インテグレーション Sandbox 環境 Salesforce to Salesforce 1 日 1 億件超の API コールを処理 99.9% の 稼働率 300ms 以下のレスポンス

    ×