私たちは現在、Force.comプラットフォームを開発プラットフォームとして使用することを検討しています。営業担当者とforce.com Webサイトには、世界で最高のプラットフォームである理由がたくさんあります。しかし、私が探しているのは、このようなプラットフォームを使用することの実際の欠点です。
回答:
ここにあなたが始めるための10があります。
免責事項/開示:force.comなどのホストされたプラットフォームには多くのメリットがあります。Force.comは定期的にプラットフォームを強化しています。好きなことがたくさんあります。force.comで収益を上げる
いくつかの回答を得たと思いますが、プラットフォームのガバナーのさまざまな制限を回避するためにどれだけの時間を無駄にしているかを繰り返し説明したいと思います。特定のレベルのプラットフォームが好きなだけでなく、一般的なアプリケーション開発プラットフォームとしては非常に強く、強く、強くお勧めします。それが必要な場合は、非常に構成可能で拡張可能な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週間ほどプラットフォームでの開発にかなりの時間を費やした後で、私があなたに与えることができるいくつかのことを次に示します。
RESTful APIはありません。彼らはあなたが呼び出すことができる石鹸ベースのAPIを持っていますが、本当の安らかな呼び出しを行う方法はありません
SObjectを取得してJSONオブジェクトに変換する簡単な方法はありません。
あなたがそれらをカスタマイズしたいと思うまで視覚力のページは大丈夫です、そしてそれからそれは痛みの全世界です。
ビジュアルフォースページはSObjectsにバインドする必要があります。そうしないと、日付ピッカーや選択リストなどの標準入力フィールドを機能させる方法がありません。
Eclipseプラグインは、自分で作業したい場合は問題ありませんが、Eclipseプラグインを使用して大規模なチームで作業したい場合は、忘れてください。サーバーとの間の同期を処理しません。クラッシュして、まったく役に立ちません。
デバッガはありません!デバッグしたい場合は、system.debugステートメントによって文字通りデバッグされます。これはおそらく私が見つけた最大の問題です
彼らの「MVC」モデルは実際にはMVCではありません。ASP.NET Webformsにかなり近いです。ビューはモデルだけでなくコントローラーにも密接に結びついています。
大量のドキュメントを保存することはできません。100 GBを超えるドキュメントを保存する必要があり、とんでもない数字が引用されました。アマゾンS3インフラストラクチャにドキュメントストレージを実装することを決定しました
言語がJavaベースであっても、Javaではありません。外部のパッケージやライブラリをインポートすることはできません。また、利用できるベースライブラリは厳しく制限されているため、大量のものを外部で実装し、それらのビットをforce.comによって呼び出されるサービスとして公開していることに気づきました。
外部のSOAPまたはRESTベースのサービスを呼び出すことができますが、メッセージ本文は100kbに制限されているため、呼び出すことができる内容が非常に制限されています。
正直なところ、force.comプラットフォームのようなもので開発することには潜在的な利点がありますが、私にとって、真のエンタープライズレベルのアプリケーションにforce.comプラットフォームを使用することはできませんでした。せいぜい基本的なクラッドスタイルのアプリケーションを作成できますが、リモートで複雑なものに移動すると、ペストのようにそれを回避できます。
うわー、ここ数年プラットフォームに取り組んだ後、制限があることさえ知らなかったことがたくさんあります。
しかし、他のことを追加するだけです...
行ごとのデバッガーがない理由は、それがマルチテナントプラットフォームであるためです。少なくともそれがSFDCの発言です-スレッドが豊富なプログラミングのこの時代のようですが、それは言い訳にはなりませんが、それが明らかに理由です。コードを記述する必要がある場合、デバッガーとして「System.debug(String)」を使用します。Java12には、約12年前に、より洗練されたサーバーデバッグツールがあったことを覚えています。
私がシステムについて本当に嫌いなもう1つのことは、バージョン管理です。Springフレームワークは、Springの通常の用途には使用されません。バージョン管理ではなく、SFDCの構成ツールに依存します。SFDCはZEROバージョン管理を提供します。
たとえば、SFDCレポートをCSVファイルにエクスポートし、受信者のリストに電子メールで送信するようにスケジュールするなど、とんでもないほど簡単に思える作業を何日も続けていることに気付く場合があります。そうする最も簡単な方法は、カスタムフィールド、ワークフロールール、およびVisualforceメールテンプレートを使用してカスタムオブジェクトを作成します。次に、コードについて、レポートデータを添付ファイルとしてVisualforceメールテンプレートにストリーミングするVisualforceコンポーネントを作成し、匿名のAPEXを作成します。カスタムオブジェクトのコードスケジュールフィールド更新... SFDC開発者にとって、これはほぼ毎日のタスクです...約5つの異なるテクノロジーを組み合わせて非常に単純に見えるタスクを実行しようとしています...そして、これは管理の頭痛の原因となる可能性があります。そして緊張も-通常、あなたは何かをするための提案を得た後にこれを見つけるでしょう(既に誰かが言ったように)ユーザーコミュニティで働いて、それから多くのことを試してみると、それらを開発した後、「スケジュールを立てることができない」などの奇妙な理由でそれらが機能しないことがわかります。 VisualForceページ」、「スケジュール可能なコンテキストからgetContentを呼び出すことができない」、またはその他の難解な理由。
SFDCプラットフォームには、非常に多くの厄介な問題があります。なぜそれらが存在するのかを理解したら、それは理にかなっています...しかし、それでも、必要なことを実行できないようにする非常に悪い制限です。これが私のものです。
ほとんどすべての種類のレコードについて「そのまま」のレコード所有者情報を取得することはできません。レコードの作成時に所有者を挿入するレコードにリンクするトリガーを作成する必要があります。どうして?所有者は「人物」または「キュー」のいずれかであり、2つは大幅に異なるエンティティであるため、短い答えです...理にかなっていますが、プロジェクトを文字通り上下逆にすることができます。
マデンディングセキュリティモデル。例:「パブリックレポートの管理」権限は「レポートの作成とカスタマイズ」とは大きく異なり、基本的にはプラットフォーム上のすべてのもの、特にあらゆる種類のフォルダに適用されます。
前述のように、サポートは基本的に存在しません。あなたが非常に自給自足の個人であるか、多くの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に書き込む内容とページの内容を同期させるために、奇妙な旋回を繰り返す必要があります。 。
Force.comが「クラウド」プラットフォームであることを考えると、外部のWSDL定義サービスのクライアントとして機能するその能力は非常に圧倒されます。最終的に何をしなければならないかについては、http://force201.wordpress.com/2010/05/20/when-generate-from-wsdl-fails-hand-coding-web-service-calls/を参照してください。
上記すべてに対して、JavaプログラマーがForce.comのコードを記述できるようにするVMforceのリリースが、上記の欠点をどのように変えるのか興味がありますか?
http://www.zdnet.com/blog/saas/vmforcecom-redefines-the-paas-landscape/1071
彼らはこれらの問題に対処しようとしていると思います。ドリームフォースで、ガバナーの制限を4つだけに下げようとしていると彼らは述べました。詳細はわかりません。彼らは早期アクセスのためのREST APIを備えており、クラウドでのルビー開発であるherokuを購入しました。それらは、database.comを使用してデータベースを分割しているので、database.comを使用してすべてのWeb開発とdb呼び出しを行うことができます。
彼らはそれを可能な限り不可知論者にしようとしていると思います。しかし、現時点では、これらはすべて発表と早期アクセスであるため、セーフハーバーの声明のように、発言内容を購入するのではなく、現在の内容についてのみ購入します。