Force.comプラットフォームの欠点[終了]


89

私たちは現在、Force.comプラットフォームを開発プラットフォームとして使用することを検討しています。営業担当者とforce.com Webサイトには、世界で最高のプラットフォームである理由がたくさんあります。しかし、私が探しているのは、このようなプラットフォームを使用することの実際の欠点です。


この投稿は非常に古いものですが、Salesforceはまだ開発するのが非常に恐ろしいです。8年経っても、多くの欠点を回避するためにどれだけの時間と労力を費やさなければならないか、それでも驚かされます。
NickJ 2017

回答:


142

ここにあなたが始めるための10があります。

  1. Apexは独自の言語です。force.com Eclipseプラグイン以外には、リファクタリング、コード分析などのツールはほとんどありません。
  2. ApexはJava 5でモデル化されました。Java5は他の言語よりも遅れていると考えられており、ツールなし(#1を参照)がないと、非常に扱いにくい場合があります。
  3. 展開はまだかなり手動で行われ、多くの問題と手動の手順が必要です。この状況は時間とともに徐々に改善していますが、自動化されたデプロイメントに慣れているとがっかりします。
  4. Apexにはパッケージ/名前空間がありません。クラス、インターフェースなどはすべて、サーバー上の1つのフォルダーにあります。これにより、コードが整理されなくなり、クラス/インターフェース名が名前の衝突を回避してコンテキストを提供するために必然的に長くなります。これは私の最大の不満の1つであり、私はこの理由だけでforce.comを構築することを自由に選択しません。
  5. "force.com IDE"、別名force.com Eclipseプラグインは、信じられないほど遅いです。クラスファイル、テキストファイルなどのファイルの保存には、組織内のオブジェクト、データ型、クラスファイルなどの数に応じて、通常、少なくとも5秒、場合によっては最大30秒かかります。保存はブロッキングアクションでもあり、コンパイルだけでなく、ローカルプロジェクトとサーバーの完全な同期が必要です。Javaや.NETよりも桁違いに遅い。
  6. オンラインの開発者コミュニティはあまり健康的ではないようです。多くのフォーラム投稿が未回答または未解決になることに気づきました。これは、salesforce.comが使用するフォーラムソフトウェアと関係があるのではないかと思います。
  7. ApexのデータアクセスDSLには、多くの課題があります。(N)Hibernate、JPAなどのようなものとリモートで競争することさえできません。
  8. Apex / VisualForceでアプリを開発することは、ガバナ制限エンジニアリングの課題です。プログラマーの時間の半分は、多数のガバナーの制限や、Visualforceのビューステートの制限などのその他の問題を回避するための最適化に費やされています。効率的なコードを最初から作成すれば、この問題は発生しないと言えるかもしれません。これはある程度当てはまります。ただし、セッションでxを超えるクエリを実行したり、xを超えるレコードをループしたりする正当な理由がある場合が多くあります。
  9. 保存->コンパイル->実行サイクルは非常に遅くなります。静的なリソースバンドル全体を圧縮してアップロードするだけで、CSSやJavaScriptのマイナーな変更をテストするような場合。
  10. 一般に、オープンソースであることの利点がない、若くて生まれたばかりのプラットフォームの痛み。プラットフォームのバグを検証または修正する方法はありません。彼らはそれをIdeaExchangeに投稿すると言っています。うん、頑張ってね。

免責事項/開示:force.comなどのホストされたプラットフォームには多くのメリットがあります。Force.comは定期的にプラットフォームを強化しています。好きなことがたくさんあります。force.comで収益を上げる


4
それはあなたがそこに持っている素晴らしいリストです
lomaxx 2009年

1
サイトホスティングを管理していて、エクストラだけでなく、APIを使用するだけでなく、毎晩のデータも取得できる場合は、force.comが大好きです。Oracleデータセットのバックアップ。営業担当者はこれを提供していますか?私は彼らの営業担当者からまっすぐな答えを得ることはできませんでした。
Chris K

3
それらはあなたにあなたのデータへのそのような「生の」アクセスを与えません。組織のCSVを定期的に圧縮するバックアップサービスがあります。疑似リアルタイムで独自のサイドバイサイドバックアップを維持できるレプリケーションAPIもあります。
ジェレミー・ロス

@Jeremyは好奇心から... Eclipseアプリケーションのプラグインで、Salesforceアプリケーション内の「セットアップ」メニューで設定するだけでどれだけの時間を費やしていますか?
lomaxx 2009年

1
私は自分の時間の90%を日食またはテキストエディター(私の場合はTextMate)で費やしています。しかし、それは通常、他の誰かが多くの基本的なデータ構成を行うためです。force.comの世界にはDDLがないため、カスタムオブジェクトとフィールドの設定は、コードではなくsalesforce.comで行われます。メタデータapiがありますが、データ設計中に使用することはありません。
ジェレミー・ロス

38

いくつかの回答を得たと思いますが、プラットフォームのガバナーのさまざまな制限を回避するためにどれだけの時間を無駄にしているかを繰り返し説明したいと思います。特定のレベルのプラットフォームが好きなだけでなく、一般的なアプリケーション開発プラットフォームとしては非常に強く、強く、強くお勧めします。それが必要な場合は、非常に構成可能で拡張可能なCRMアプリケーションとして最適です。彼らのマーケティングは、一般的な開発プラットフォームとしてのForce.comのアイデアを推進する点で並外れたものですが、まだそれほど遠くまでは至っていません。

安定したプラットフォームを持ち、大きなパフォーマンスと安定性の問題を回避する効率は、人々が言及する制限の周りにコーディングしようとすると、簡単に無駄になります。プラットフォームには非常に多くの制限があり、完全に厄介なものになります。これらの制限は、多くのユーザーがいるときにヒットする上限ではなく、すぐにヒットします。

通常、それらを回避する手法はありますが、実際のアプリケーションのビジネスロジックを開発しようとしているときに、それらを回避するための戦略を理解することは非常に困難です。

開発者が環境に好意的でないことを簡単に理解するには、上記の「デバッグ環境の欠如」を取り上げます。それよりも悪いです。デバッグログでは、サーバーへの最新のリクエストを最大20件まで確認できます。したがって、アプリケーション内で開発しているときに、「新しい」デバッグリクエストを作成し、名前を選択して[保存]をクリックし、アプリに戻り、ページを更新して、デバッグタブに戻り、検索してみます。デバッグログを格納するリクエスト。[検索]をクリックして、探しているテキストを検索します。これは、デバッグ出力を確認するために10回クリックするようなものです。些細なことのように思えるかもしれませんが、これは開発者の経験にほとんど注意と配慮が払われていない例にすぎません。

開発プラットフォームに関するすべてが移植された後付けです。それが何であるかは注目に値しますが、大部分は合計PITAです。何をしているのか正確にわからない場合(認定されており、Apexを非常によく理解している場合など)、別の環境で実行する場合よりも10〜20倍以上の時間がかかります成功することさえできれば、それは途方もなく単純なことのように思えます。

知事の制限は確かに悪い。さまざまな制限(データベースクエリ、返される行、「スクリプトステートメント」、今後の呼び出し、コールアウトなど)の組み合わせがあり、これらを回避するため何をしているのかを正確に知る必要があります。たとえば、オブジェクトに計算されたロールアップ「式」フィールドがあり、子オブジェクトにトリガーがある場合、親オブジェクトのトリガーを実行し、それらを制限に対してカウントします。そのようなことは、試行錯誤の痛みを伴うプロセスを経験するまでは明らかではありません。

1つの制限を回避するために1つのことを試み、「制限を打つ」という終わることのないゲームで別のものをヒットします。このプロセスでは、アプリとアプローチ全体を大幅に再構築し、すべてのテストコードを書き直す必要があります。本番環境にデプロイするには75%のテストコードカバレッジが必要です。これは実際には非常に良いことですが、他のすべての制限と組み合わせると、非常に負担になります。実際のテストでは、通常のユーザーシナリオでは発生しないガバナ制限に達しますが、カバレッジを達成できなくなります。

それは他の多くの問題全体については言うまでもありません。パッケージングは​​あなたが期待するものではありません。アプリをパッケージ化してユーザーに配信することは、組織の管理者の側で大幅なユーザーの介入や設定を行わずに行うことはできません。AppExchangeはまったくの冗談であり、アプリをリストに載せるためだけに5Kも請求し始めています。データローダーを使用したインポートは、特にトリガーがある場合は問題があります。1つのステップで別の組織(たとえば、開発組織)に簡単に再インポートできるような方法で、関係を含む1つのステップですべてのデータをエクスポートすることはできません。サンドボックスの更新は本番環境から月に1回のみ可能で、例外はありません。また、アカウントエグゼクティブにその機能のロックを解除するよう依頼していない限り、デフォルトでデータを更新に含めることはできません。あなたはできる' tカスタムオブジェクトのデータを一括削除します。パッケージ名を変更することはできません。特定のことは非常に多くをとることができますアプリをデプロイする前のデータバックアップなど、リクエストしてから完了するまでの日数。途中の進捗状況レポートはなく、エクスポートが正確にいつ行われたかはあまりわかりません。データ間に関係がある場合、データの同期性の問題があることを考えると、単一のステップで多数のオブジェクトをエクスポートできる「トランザクション」などがないという点で、深刻なデータの整合性の問題があります。おそらくこれを容易にする商用ツールがいくつかありますが、これらは、多額の予算を持っていない可能性のある通常の開発者には届きません。

他の人々がここで言った他のすべては本当です。ファイルの保存には、5秒から1分程度かかる場合があります。

プラットフォームがいくつかの点で非常にクールであり、他の人が行っていないマルチテナント環境で物事を実行しようとしているため、私はそれほど否定的であるとは限りません。これは非常に革新的な環境であり、一部のレベルでは強力です(実際にはVisualForceが大好きです)が、もう1、2年はかかります。彼らはVMwareと提携している。おそらくそれは、開発者が刑務所の独房ではなく遊び場を提供することにつながるかもしれない。


この回答から2年以上経過しましたが、最近のプラットフォームはどうですか?それは改善されましたか、この厄介な問題のいくつかは解決されたか、少なくとも解消されましたか?
Yaroslav

バンプ、私は物事がこれらの2年間に変更されたかどうかも知りたいです。
magallanes 2012

5
AppExchangeについてコメントすることはできませんが、 "salesforce.com sucks"をグーグルにマッシュした後、トリガーとガバナ制限に欲求不満になり、非常に単純なデータを処理するためにフープをジャンプした後、このスレッドを見つけました。あなたがそうするようにそれを取りなさい;)
BLSully

1
@Yaroslav私はあなたの2年を見て、さらに3年を追加して変更します。それはいくつかのトークンの改善を行いましたが、概してこの答えはまだ正しいです。

25

ここ2週間ほどプラットフォームでの開発にかなりの時間を費やした後で、私があなたに与えることができるいくつかのことを次に示します。

  1. RESTful APIはありません。彼らはあなたが呼び出すことができる石鹸ベースのAPIを持っていますが、本当の安らかな呼び出しを行う方法はありません

  2. SObjectを取得してJSONオブジェクトに変換する簡単な方法はありません。

  3. あなたがそれらをカスタマイズしたいと思うまで視覚力のページは大丈夫です、そしてそれからそれは痛みの全世界です。

  4. ビジュアルフォースページはSObjectsにバインドする必要があります。そうしないと、日付ピッカーや選択リストなどの標準入力フィールドを機能させる方法がありません。

  5. Eclipseプラグインは、自分で作業したい場合は問題ありませんが、Eclipseプラグインを使用して大規模なチームで作業したい場合は、忘れてください。サーバーとの間の同期を処理しません。クラッシュして、まったく役に立ちません。

  6. デバッガはありません!デバッグしたい場合は、system.debugステートメントによって文字通りデバッグされます。これはおそらく私が見つけた最大の問題です

  7. 彼らの「MVC」モデルは実際にはMVCではありません。ASP.NET Webformsにかなり近いです。ビューはモデルだけでなくコントローラーにも密接に結びついています。

  8. 大量のドキュメントを保存することはできません。100 GBを超えるドキュメントを保存する必要があり、とんでもない数字が引用されました。アマゾンS3インフラストラクチャにドキュメントストレージを実装することを決定しました

  9. 言語がJavaベースであっても、Javaではありません。外部のパッケージやライブラリをインポートすることはできません。また、利用できるベースライブラリは厳しく制限されているため、大量のものを外部で実装し、それらのビットをforce.comによって呼び出されるサービスとして公開していることに気づきました。

  10. 外部のSOAPまたはRESTベースのサービスを呼び出すことができますが、メッセージ本文は100kbに​​制限されているため、呼び出すことができる内容が非常に制限されています。

正直なところ、force.comプラットフォームのようなもので開発することには潜在的な利点がありますが、私にとって、真のエンタープライズレベルのアプリケーションにforce.comプラットフォームを使用することはできませんでした。せいぜい基本的なクラッドスタイルのアプリケーションを作成できますが、リモートで複雑なものに移動すると、ペストのようにそれを回避できます。


16
RESTful APIが強制的に利用可能になりました
mirezus

3
JSONのシリアル化と非シリアル化は、非SObjectで使用できます。
kadalamittai 2012年

AmazonドキュメントストレージをSalesforceとどのように統合しましたか(前提として)。
Michael Paulukonis、2012

デバッガは現在ありますが、追加料金がかかります。Winter '16リリースノート
2017年

14

うわー、ここ数年プラットフォームに取り組んだ後、制限があることさえ知らなかったことがたくさんあります。

しかし、他のことを追加するだけです...

行ごとのデバッガーがない理由は、それがマルチテナントプラットフォームであるためです。少なくともそれがSFDCの発言です-スレッドが豊富なプログラミングのこの時代のようですが、それは言い訳にはなりませんが、それが明らかに理由です。コードを記述する必要がある場合、デバッガーとして「System.debug(String)」を使用します。Java12には、約12年前に、より洗練されたサーバーデバッグツールがあったことを覚えています。

私がシステムについて本当に嫌いなもう1つのことは、バージョン管理です。Springフレームワークは、Springの通常の用途には使用されません。バージョン管理ではなく、SFDCの構成ツールに依存します。SFDCはZEROバージョン管理を提供します。

たとえば、SFDCレポートをCSVファイルにエクスポートし、受信者のリストに電子メールで送信するようにスケジュールするなど、とんでもないほど簡単に思える作業を何日も続けていることに気付く場合があります。そうする最も簡単な方法は、カスタムフィールド、ワークフロールール、およびVisualforceメールテンプレートを使用してカスタムオブジェクトを作成します。次に、コードについて、レポートデータを添付ファイルとしてVisualforceメールテンプレートにストリーミングするVisualforceコンポーネントを作成し、匿名のAPEXを作成します。カスタムオブジェクトのコードスケジュールフィールド更新... SFDC開発者にとって、これはほぼ毎日のタスクです...約5つの異なるテクノロジーを組み合わせて非常に単純に見えるタスクを実行しようとしています...そして、これは管理の頭痛の原因となる可能性があります。そして緊張も-通常、あなたは何かをするための提案を得た後にこれを見つけるでしょう(既に誰かが言ったように)ユーザーコミュニティで働いて、それから多くのことを試してみると、それらを開発した後、「スケジュールを立てることができない」などの奇妙な理由でそれらが機能しないことがわかります。 VisualForceページ」、「スケジュール可能なコンテキストからgetContentを呼び出すことができない」、またはその他の難解な理由。

SFDCプラットフォームには、非常に多くの厄介な問題があります。なぜそれらが存在するのかを理解したら、それは理にかなっています...しかし、それでも、必要なことを実行できないようにする非常に悪い制限です。これが私のものです。

  1. ほとんどすべての種類のレコードについて「そのまま」のレコード所有者情報を取得することはできません。レコードの作成時に所有者を挿入するレコードにリンクするトリガーを作成する必要があります。どうして?所有者は「人物」または「キュー」のいずれかであり、2つは大幅に異なるエンティティであるため、短い答えです...理にかなっていますが、プロジェクトを文字通り上下逆にすることができます。

  2. マデンディングセキュリティモデル。例:「パブリックレポートの管理」権限は「レポートの作成とカスタマイズ」とは大きく異なり、基本的にはプラットフォーム上のすべてのもの、特にあらゆる種類のフォルダに適用されます。

  3. 前述のように、サポートは基本的に存在しません。あなたが非常に自給自足の個人であるか、多くのSFDCリソースを持っているか、または多くの時間と非常に寛容なマネージャーを持っているか、またはうまく機能しているSFDCシステムを担当しているなら、あなたはかなり良いです形状。これらのポジションのいずれにもいない場合、深刻な問題に直面する可能性があります。

SFDCは非常に魅力的なビジネス提案です...機器の設置面積がなく、セキュリティが非常に高く、固定価格で、インフラストラクチャがなく、バッチ処理可能なスケジュール可能な処理を備えたWebベースのCRMを利用できます...しかし、他のポスターが言っているように、それは本当に開発学習のかなりの増加であり、あなたがコンサルティングに行くなら、私が見た最低の価格は1時間あたり200ドルだったと思います。

Salesforceは、いくつかのテクノロジーが一般的になった数年後、JSONとjqueryが頭に浮かび、他のものと統合する傾向があります...そして、JIRAのように統合したい他の一般的なインフラストラクチャがある場合、多くの追加料金を期待します、そして、彼らはかなりバギーになることができます。

そして、他のポスターの1つが述べたように、あなたは常にあなたを狂わせるガバナ制限と戦っています...添付ファイルは5MBを超えることはできません。限目。3 MB未満の場合もあります(base64でエンコードされている場合)。クラス内の10個のHTTPコールアウト。限目。公開されているガバナ制限には何十もの制限があり、その多くは間違いなく見つけられ、あなたのオフィスを絶叫したいだけです。

私は本当に、本当にプラットフォームが好きですが、私を信じてください-それは本当に残酷な愛人になることができます。

しかし、SFDCに公平に言えば、私はこれを言います。プラットフォームに関して私が見つける最大の問題はプラットフォーム自体ではありませんが、プラットフォームを見てほとんどの人がそれを開発していないという巨大な期待です...そしてそれらの人々はビジネス組織で大きな権威のある立場にいる傾向があります。マーケティング、販売、管理などです。巨大な切断が発生し、頭が転がるか、または毎日転がると脅迫されています。これは、この素晴らしいプラットフォームがあり、奇妙な問題や何千人もの人々が毎日うまく機能する理由を理解するために日々奮闘しているためです。彼らはしないし、しない。

編集:
MVCに関するlomaxxのコメントに追加するだけです。SFDCの用語では、これは密接に「ビューステート」として知られているものに関連している- A及びVFページ上にあるものつまり、それは、本当にバグができないページ用のコントローラクラスにあるもの。したがって、「保存」ボタンをクリックしたとき(またはHTTPコールアウトを作成したとき)にコントローラーがSFに書き込む内容とページの内容を同期させるために、奇妙な旋回を繰り返す必要があります。 。


バージョン管理について言及する場合は+1。
リンドンフォックス2013

7

他の人が不利な点をより深くカバーしていると思いますが、私には、MVCパラダイムを使用したり、コードの再利用の方法をあまりサポートしていないようです。ASP.Net MVCのようなものを使用してアプリケーションを開発するのに比べて、単純なアプリケーションを超えて何かを行うことはフラストレーションの課題です。

さらに、ツール、データレイヤー、および開発プロセス中にコードをリファクタリングしたりフィールドの名前を変更したりする欲求不満は役に立ちません。

CMSとしてはかなりクールだと思いますが、CMS以外のアプリケーションのプラットフォームとしては、私には意味がありません。


6

セキュリティモデルも非常に限定的です...しかし、これは最悪の部分ではありません。現在、ユーザーが特定のアクションを実行できるかどうかをアサートすることはできません。

それらの役割が何であるかを確認することはできますが、その役割に現在のアクションを実行する権限があるかどうかを確認することはできません。

さらに悪いのは、「アクションを試し、例外がある場合はそれをキャッチする」というテクニカルサポートからの応答です。



3

上記すべてに対して、JavaプログラマーがForce.comのコードを記述できるようにするVMforceのリリースが、上記の欠点をどのように変えるのか興味がありますか?

http://www.zdnet.com/blog/saas/vmforcecom-redefines-the-paas-landscape/1071


一部の問題は軽減されますが、Force.comデータベースにバインドされることになり、これはひどいものであり、実際の展開を実際に制御することはできません。それはまだ初期の段階であり、これは将来的に変更される可能性がありますが、現在のところ、それは過度に説得力のある選択肢とは思われません。
lomaxx


3

彼らはこれらの問題に対処しようとしていると思います。ドリームフォースで、ガバナーの制限を4つだけに下げようとしていると彼らは述べました。詳細はわかりません。彼らは早期アクセスのためのREST APIを備えており、クラウドでのルビー開発であるherokuを購入しました。それらは、database.comを使用してデータベースを分割しているので、database.comを使用してすべてのWeb開発とdb呼び出しを行うことができます。

彼らはそれを可能な限り不可知論者にしようとしていると思います。しかし、現時点では、これらはすべて発表と早期アクセスであるため、セーフハーバーの声明のように、発言内容を購入するのではなく、現在の内容についてのみ購入します。


7年経ちましたが、彼らは上記のリストの1つのことを扱っていません。
el n00b 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.