Svantaggi della piattaforma Force.com [chiusa]


89

Al momento stiamo cercando di utilizzare la piattaforma Force.com come piattaforma di sviluppo e gli addetti alle vendite e il sito web force.com sono pieni di motivi per cui è la migliore piattaforma al mondo. Quello che cerco, tuttavia, sono alcuni veri svantaggi nell'utilizzo di una piattaforma del genere.


Questo post è molto vecchio, ma Salesforce è ANCORA assolutamente terribile da sviluppare. Anche 8 anni dopo, trovo ancora sbalorditivo quanto tempo e impegno debbano essere impiegati per aggirare le sue numerose carenze.
NickJ

Risposte:


142

Eccone 10 per iniziare.

  1. Apex è un linguaggio proprietario. Oltre al plug-in Eclipse di force.com, non sono disponibili strumenti come refactoring, analisi del codice, ecc.
  2. Apex è stato modellato su Java 5, che è considerato in ritardo rispetto ad altri linguaggi, e senza strumenti (vedere # 1), può essere piuttosto macchinoso.
  3. La distribuzione è ancora abbastanza manuale con molti trucchi e passaggi manuali. Questa situazione sta lentamente migliorando nel tempo, ma rimarrai deluso se sei abituato ad avere distribuzioni automatizzate.
  4. Apex manca di pacchetti / spazi dei nomi. Tutte le tue classi, interfacce, ecc. Risiedono in una cartella sul server. Ciò rende il codice molto meno organizzato e i nomi di classe / interfaccia necessariamente lunghi per evitare conflitti di nome e fornire contesto. Questa è una delle mie più grandi lamentele e non sceglierei liberamente di costruire su force.com solo per questo motivo.
  5. Il "force.com IDE", noto anche come plug-in force.com eclipse, è incredibilmente lento. Il salvataggio di qualsiasi file, che si tratti di un file di classe, di testo e così via, in genere richiede almeno 5 secondi e talvolta fino a 30 secondi, a seconda di quanti oggetti, tipi di dati, file di classe e così via sono presenti nell'organizzazione. Il salvataggio è anche un'azione di blocco, che richiede non solo la compilazione, ma una sincronizzazione completa del progetto locale con il server. Ordini di grandezza più lenti di Java o .NET.
  6. La comunità degli sviluppatori online non sembra molto sana. Ho notato che molti post del forum rimangono senza risposta o non risolti. Penso che questo possa avere qualcosa a che fare con il software del forum utilizzato da salesforce.com, che sembra fare schifo.
  7. L'accesso ai dati DSL in Apex lascia molto a desiderare. Non è nemmeno lontanamente competitivo con artisti del calibro di (N) Hibernate, JPA, ecc.
  8. Lo sviluppo di un'app su Apex / VisualForce è un esercizio di ingegneria dei limiti del governatore. Facilmente metà del tempo del programmatore viene speso cercando di ottimizzare per evitare i numerosi limiti del governor e altri trucchi come i limiti dello stato di visualizzazione di Visualforce. Si potrebbe sostenere che se si scrive un codice efficiente per cominciare non si avrà questo problema, il che è vero fino a un certo punto. Tuttavia, ci sono molte volte in cui hai validi motivi per eseguire più di x query in una sessione, o scorrere più di x record, ecc.
  9. Il ciclo save-> compile-> run è estremamente lento, specialmente. quando si tratta di zippare e caricare l'intero bundle di risorse statiche solo per fare qualcosa come testare una piccola modifica CSS o javascript.
  10. In generale, il dolore di una piattaforma giovane e alle prime armi senza i vantaggi di essere open source. Non hai modo di convalidare e / o correggere i bug nella piattaforma. Dicono di pubblicarlo su IdeaExchange. Sì, buona fortuna con quello.

Disclaimer / Disclosures: ci sono molti vantaggi in una piattaforma ospitata come force.com. Force.com migliora regolarmente la piattaforma. Ci sono molte cose che mi piacciono. Faccio soldi costruendo su force.com


4
Questa è un'ottima lista che hai lì
lomaxx

1
Mi piacerebbe force.com se gestissero l'hosting del sito e potessi ottenere i miei dati, non solo gli extra o tramite alcune API, ma un aumento notturno. backup del mio set di dati Oracle. I ragazzi della forza vendita lo offrono? Non sono mai stato in grado di ottenere una risposta diretta dai loro venditori, cosa che prendo sempre come un no.
Chris K

3
Non ti danno un accesso così "grezzo" ai tuoi dati. Esiste un servizio di backup che ti fornisce regolarmente file CSV compressi della tua organizzazione. C'è anche un'API di replica che ti consente di mantenere il tuo backup fianco a fianco in pseudo tempo reale.
Jeremy Ross

@ Jeremy per curiosità ... quanto tempo dedichi al plug-in ide di eclissi rispetto alla semplice impostazione delle cose nel menu "setup" all'interno di un'applicazione salesforce?
lomaxx

1
Personalmente passo il 90% del mio tempo in eclipse o in un editor di testo (TextMate, nel mio caso). Ma questo perché qualcun altro di solito esegue gran parte della configurazione dei dati di base. La configurazione di oggetti e campi personalizzati viene eseguita in salesforce.com, non in codice, poiché non esiste un DDL nel mondo force.com. Esiste un'API dei metadati, ma non la uso mai durante la progettazione dei dati.
Jeremy Ross

38

Vedo che hai ottenuto alcune risposte, ma vorrei ribadire quanto tempo è sprecato per aggirare i vari limiti del governatore sulla piattaforma. Per quanto mi piaccia la piattaforma a certi livelli, la sconsiglio vivamente, vivamente, enfaticamente come piattaforma di sviluppo di applicazioni generali. È fantastico come applicazione CRM super configurabile ed estensibile se è quello che vuoi. Sebbene il loro marketing sia eccezionale nel promuovere l'idea di Force.com come piattaforma di sviluppo generale, non è nemmeno lontanamente vicino.

L'efficienza di avere una piattaforma stabile ed evitare grandi problemi di prestazioni e stabilità viene facilmente sprecata nel tentativo di codificare intorno ai limiti a cui le persone si riferiscono. Ci sono così tanti limiti alla piattaforma, diventa completamente esasperante. Questi limiti non sono limiti di fascia alta che raggiungerai quando avrai molti utenti, li raggiungerai quasi subito.

Sebbene di solito ci siano tecniche per aggirarle, è molto difficile capire strategie per evitarle mentre stai anche cercando di sviluppare la logica di business della tua applicazione effettiva.

Per darti un'idea semplice di quanto l'ambiente sia poco amichevole per gli sviluppatori, prendi la "mancanza di ambiente di debug" di cui sopra. È peggio di così. È possibile visualizzare solo fino a 20 delle richieste più recenti al server nei registri di debug. Quindi, mentre sviluppi all'interno dell'applicazione, devi creare una richiesta di debug "Nuova", selezionare il tuo nome, premere "Salva", tornare alla tua app, aggiornare la pagina, fare clic di nuovo sulla scheda di debug, provare a trovare la richiesta che ospiterà il tuo log di debug, premi "trova" per cercare il testo che stai cercando. Sono come dieci clic per guardare un output di debug. Anche se può sembrare banale, è solo un esempio di quanto poca cura e considerazione sia stata data all'esperienza dello sviluppatore.

Tutto ciò che riguarda la piattaforma di sviluppo è un ripensamento innato. È notevole per quello che è, ma per la maggior parte una PITA totale. Se non sai esattamente cosa stai facendo (dato che sei certificato e hai una comprensione molto intima di Apex), ti porterà facilmente verso l'alto di 10-20 volte il tempo che sarebbe in un altro ambiente per farlo qualcosa che sembra ridicolmente semplice, se puoi anche avere successo.

I limiti del governatore sono davvero così gravi. Hai una combinazione di vari limiti (query al database, righe restituite, "istruzioni di script", chiamate future, callout, ecc.) E devi sapere esattamente cosa stai facendo per evitarli. Ad esempio, se si dispone di un campo "formula" di rollup calcolato su un oggetto e si dispone di un trigger su un oggetto figlio, eseguirà i trigger dell'oggetto padre e li conterà rispetto ai propri limiti. Cose del genere non sono ovvie fino a quando non hai attraversato il doloroso processo di provare e fallire.

Proverai una cosa per evitare un limite e ne raggiungerai un altro in un gioco infinito di "colpisci un limite". Nel processo dovrai riprogettare drasticamente l'intera app e l'approccio, oltre a riscrivere tutto il codice di test. È necessario disporre di una copertura del codice di test del 75% per la distribuzione in produzione, che in realtà è una cosa molto buona, ma combinata con tutti gli altri limiti, è molto onerosa. Raggiungerai effettivamente i limiti del governatore scrivendo il tuo codice di prova che non si presenterebbe nei normali scenari utente, ma che ti impedirà di raggiungere la copertura.

Questo per non parlare di tutta una serie di altre questioni. Il packaging non è quello che ti aspetti. Non è possibile impacchettare la tua app e distribuirla agli utenti senza un intervento e una configurazione significativi da parte dell'amministratore dell'organizzazione. AppExchange è uno scherzo totale e hanno persino iniziato a caricare 5K solo per elencare la tua app. L'importazione con il caricatore di dati fa schifo, soprattutto se hai dei trigger. Non è possibile esportare tutti i dati in un passaggio che includa le relazioni in modo tale da poter essere facilmente reimportati in un'altra organizzazione in un unico passaggio (ad esempio un'organizzazione di sviluppo). Puoi aggiornare un sandbox solo una volta al mese dalla produzione, senza eccezioni, e non puoi includere i tuoi dati in un aggiornamento per impostazione predefinita a meno che tu non abbia chiamato il tuo account executive per sbloccare quella funzione. Puoi' t elimina in massa i dati negli oggetti personalizzati. Non puoi modificare i nomi dei pacchetti. Alcune cose possono richiedere numerosegiorni da completare dopo averli richiesti, ad esempio un backup dei dati prima di voler distribuire un'app, senza alcun rapporto sullo stato di avanzamento lungo il percorso e non molto senso di quando è avvenuta esattamente l'esportazione. Dato che ci sono problemi di sincronicità dei dati se ci sono relazioni tra i dati, ci sono seri problemi di integrità dei dati in quanto non esiste una "transazione" in grado di esportare numerosi oggetti in un unico passaggio. Probabilmente ci sono alcuni strumenti commerciali per facilitare alcuni di questi, ma questi non sono alla portata dei normali sviluppatori che potrebbero non avere un budget enorme.

Tutto il resto che le altre persone hanno detto qui è vero. A volte possono essere necessari da cinque secondi a un minuto per salvare un file.

Non voglio essere così negativo perché la piattaforma è molto interessante in un certo senso e stanno cercando di fare cose in un ambiente multi-tenant che nessun altro sta facendo. È un ambiente molto innovativo e potente su alcuni livelli (in realtà mi piace molto VisualForce), ma dagli un altro anno o due. Stanno collaborando con VMware, forse questo porterà a dare agli sviluppatori un po 'più di un box piuttosto che una cella di prigione in cui lavorare.


Più di 2 anni dopo questa risposta, che dire della piattaforma in questi giorni? È migliorato, alcuni di questi ingombranti problemi sono stati risolti o almeno resi vivibili?
Yaroslav

Bump, voglio anche sapere se le cose sono cambiate durante quei 2 anni.
magallanes

5
Non posso commentare su AppExchange, ma ho trovato questo thread dopo aver schiacciato "salesforce.com fa schifo" in Google in preda alla frustrazione per i trigger e i limiti del governatore e saltando attraverso i cerchi per gestire dati molto semplici ... solo molti. Prendilo come vuoi;)
BLSully

1
@Yaroslav vedrò i tuoi due anni e ne aggiungerò altri tre e cambierò. Ha apportato alcuni miglioramenti ai token, ma nel complesso questa risposta è ancora corretta.

25

Ecco alcune cose che posso darti dopo aver trascorso un bel po 'di tempo a sviluppare sulla piattaforma nelle ultime due settimane circa:

  1. Non esiste un'API RESTful. Hanno un'API basata sul sapone che puoi chiamare, ma non c'è modo di fare chiamate vere e riposanti

  2. Non esiste un modo semplice per prendere i loro SObject e convertirli in oggetti JSON.

  3. Le pagine della forza visiva sono ok finché non le vuoi personalizzare e poi è un intero mondo di dolore.

  4. Le pagine di forza visiva devono essere associate a SObjects altrimenti non c'è modo di far funzionare i campi di input standard come il datepicker o l'elenco di selezione.

  5. Il plugin eclipse va bene se vuoi lavorare da solo, ma se vuoi lavorare in una grande squadra con il plugin eclipse dimenticalo. Non gestisce la sincronizzazione da e verso il server, si arresta in modo anomalo e non è affatto utile.

  6. NON C'È DEBUGGER! Se si desidera eseguire il debug, viene letteralmente eseguito il debug dalle istruzioni system.debug. Questo è probabilmente il problema più grande che ho riscontrato

  7. Il loro modello "MVC" non è realmente MVC. È molto più vicino a ASP.NET Webforms. Le tue visualizzazioni sono strettamente collegate non solo ai modelli ma anche ai controller.

  8. Non è possibile archiviare un numero elevato di documenti. Abbiamo bisogno di archiviare oltre 100 GB di documenti e siamo stati citati in una cifra ridicola. Abbiamo deciso di implementare il nostro archivio di documenti sull'infrastruttura S3 di Amazon

  9. Anche se la lingua è basata su Java, non è Java. Non è possibile importare pacchetti o librerie esterni. Inoltre, le librerie di base disponibili sono fortemente limitate, quindi ci siamo ritrovati a implementare un sacco di cose esternamente e quindi a esporre quei bit come servizi chiamati da force.com

  10. Puoi chiamare servizi esterni basati su SOAP o REST ma il corpo del messaggio è limitato a 100kb, quindi è molto restrittivo in ciò che puoi chiamare.

In tutta onestà, sebbene ci siano potenziali vantaggi nello sviluppo su qualcosa come la piattaforma force.com, per me non potresti usare la piattaforma force.com per vere app di livello aziendale. Nella migliore delle ipotesi potresti scrivere alcune applicazioni di base in stile grezzo, ma una volta che ti muovi in ​​qualcosa di remotamente complicato lo eviterei come la peste.


16
L'API RESTful è ora disponibile per force
mirezus

3
La serializzazione e deserializzazione JSON è disponibile per Non SObject.
kadalamittai

Come hai integrato l'archiviazione dei tuoi documenti Amazon con Salesforce (ammesso che tu l'abbia fatto)?
Michael Paulukonis

Adesso c'è un debugger, ma costa di più. Note sulla versione per l'inverno '16
martin

14

Wow, ci sono molte cose qui che non sapevo nemmeno fossero limitazioni, dopo aver lavorato sulla piattaforma per alcuni anni.

Ma solo per aggiungere altre cose ...

Il motivo per cui non si dispone di un debugger riga per riga è proprio perché si tratta di una piattaforma multi-tenant. Almeno questo è quello che dice SFDC - sembra che in questa epoca di programmazione ricca di thread, non sia una gran scusa, ma a quanto pare è questo il motivo. Se devi scrivere codice, hai "System.debug (String)" come debugger - Ricordo di avere strumenti di debug del server più sofisticati in Java 1.2 circa 12 anni fa.

Un'altra cosa che odio davvero del sistema è il controllo della versione. Il framework Spring non viene utilizzato per ciò per cui viene solitamente utilizzato Spring: in realtà è più uno strumento di configurazione in SFDC piuttosto che il controllo della versione. SFDC fornisce il controllo della versione ZERO.

Puoi ritrovarti bloccato per giorni a fare qualcosa che dovrebbe sembrare così ridicolmente facile, come, ad esempio, pianificare un rapporto SFDC da esportare in un file CSV e inviare un'e-mail a un elenco di destinatari ... Bene, il modo più semplice per farlo è creare un oggetto personalizzato con un campo personalizzato, con una regola del flusso di lavoro e un modello di e-mail Visualforce ... quindi per il codice è necessario scrivere un componente Visualforce che trasmette i dati del report al modello e-mail Visualforce come allegato e si scrive APEX anonimo programmazione del codice aggiornamento del campo dell'oggetto personalizzato ... Per gli sviluppatori SFDC, questa è un'attività quasi quotidiana ... cercare di mettere insieme circa cinque diverse tecnologie per svolgere attività che sembrano così semplici ... E questo può causare grattacapi alla gestione e anche le tensioni: in genere, lo scopriresti dopo aver ricevuto un suggerimento per fare qualcosa che non funzionat lavorare nella comunità degli utenti (come qualcuno ha già detto), quindi provando molte cose che, dopo averle sviluppate, scopriresti che non funzionano per qualche motivo strano, come "non puoi programmare un Pagina VisualForce ", o" non è possibile chiamare getContent da un contesto pianificabile "o qualche altro motivo arcano.

Ci sono così tanti, tanti piccoli trucchi esasperanti sulla piattaforma SFDC, che una volta che sai PERCHÉ sono lì, ha senso ... ma sono ancora limitazioni molto gravi che ti impediscono di fare ciò che devi fare. Ecco alcuni dei miei;

  1. Non puoi ottenere le informazioni sul proprietario del record "fuori dagli schemi" praticamente su qualsiasi tipo di record: devi scrivere un trigger che colleghi il proprietario alla creazione del record al record che stai inserendo. Perché? Risposta breve perché un proprietario può essere una "persona" o una "coda", e le due sono entità drasticamente diverse ... Ha senso, ma può letteralmente capovolgere un progetto.

  2. Modello di sicurezza esasperante. Esempio: l'autorizzazione "Gestisci rapporti pubblici" è molto diversa da "Crea e personalizza rapporti" e vale praticamente per tutto sulla piattaforma ... specialmente per cartelle di qualsiasi tipo.

  3. Come accennato, il supporto è praticamente inesistente. Se sei un individuo estremamente autosufficiente, o hai molte risorse SFDC, o hai molto tempo e / o un manager molto indulgente, o sei responsabile di un sistema SFDC che funziona bene, sei abbastanza bravo forma. Se non ti trovi in ​​nessuna di queste posizioni, potresti trovarti in guai seri.

SFDC è una proposta aziendale molto seducente ... nessuna impronta di apparecchiature, sicurezza abbastanza buona, prezzo fisso, nessuna infrastruttura E ottieni CRM basato sul web con elaborazione batchabile e programmabile ... Ma come hanno detto gli altri poster, è davvero piuttosto un aumento nell'apprendimento dello sviluppo e, se vai con la consulenza, penso che il prezzo più basso che ho visto sia stato di $ 200 / ora.

Salesforce tende a integrarsi con altre cose anni dopo che alcune tecnologie sono diventate un luogo comune - vengono in mente JSON e jquery ... e se hai altre infrastrutture comuni con cui vuoi fare un'integrazione, come JIRA, aspettati di pagare molto di più, e possono essere abbastanza buggy.

E come menzionato in uno degli altri poster, combatti costantemente i limiti del governatore che possono semplicemente farti impazzire ... un allegato NON può essere> 5 MB. Periodo. E a volte <3 MB (se codificato in base64). Dieci callout HTTP in una classe. Periodo. Ci sono dozzine di limiti del governatore pubblicati, e molti non lo sono che senza dubbio troverai e vorrai solo correre fuori dal tuo ufficio urlando.

Mi piace davvero, VERAMENTE la piattaforma, ma credimi: può essere un'amante davvero crudele.

Ma in tutta onestà con SFDC, direi questo: il problema più grande che trovo con la piattaforma non è la piattaforma stessa, ma le aspettative gigantesche che quasi chiunque vede la piattaforma, ma non si è sviluppato su di essa, ha ... e quelle persone tendono ad essere in posizioni di grande autorità nelle organizzazioni imprenditoriali; marketing, vendite, gestione ecc. semplicemente non lo fanno e non lo faranno.

EDIT:
solo per aggiungere ai commenti di lomaxx su MVC; Nella terminologia SFDC, questo è strettamente correlato a ciò che è noto come "viewstate" - e può essere davvero pieno di bug, in quanto ciò che è sulla pagina VF non è ciò che è nella classe controller per la pagina. Quindi, devi passare attraverso strane rotazioni per sincronizzare ciò che è sulla pagina con ciò che il controller scriverà su SF quando fai clic sul pulsante "salva" (o fai il tuo callout HTTP o qualsiasi altra cosa) .... amico, è fastidioso .


+1 per aver menzionato il controllo della versione.
lindon fox

7

Penso che altre persone abbiano coperto gli svantaggi in modo più approfondito, ma a me sembra che non utilizzi il paradigma MVC o che supporti molto il riutilizzo del codice. Fare qualsiasi cosa oltre alle semplici applicazioni è un esercizio di frustrazione rispetto allo sviluppo di un'applicazione utilizzando qualcosa come ASP.Net MVC.

Inoltre, gli strumenti, il livello dati e la frustrazione di provare a rifattorizzare il codice o rinominare i campi durante il processo di sviluppo non aiutano.

Penso che come CMS sia piuttosto interessante, ma come piattaforma per applicazioni non CMS, non ha senso per me.


6

Il modello di sicurezza è anche molto molto restrittivo ... ma questa non è la parte peggiore. Al momento non puoi affermare se un utente ha la capacità di eseguire una determinata azione.

Puoi verificare qual è il loro ruolo, ma non puoi verificare se quel ruolo dispone delle autorizzazioni per eseguire l'azione corrente.

Ancora peggio è la risposta del supporto tecnico per "provare l'azione e se c'è un'eccezione, prenderla"



3

A quanto sopra, sono curioso di come il rilascio di VMforce, che consente al programmatore Java di scrivere codice per Force.com, modifichi gli svantaggi di cui sopra?

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


allevierà alcuni problemi, ma sarai comunque legato al database Force.com, il che è terribile e non avrai un vero controllo sulle tue distribuzioni. È ancora agli inizi e questo potrebbe cambiare in futuro, ma in questo momento non sembra essere un'alternativa eccessivamente convincente.
lomaxx


3

Immagino stiano cercando di affrontare questi problemi. Alla Dreamforce hanno detto che stiamo cercando di ridurre i limiti del Governatore a solo 4. Non sono sicuro di quali siano i dettagli. Hanno un'API REST per l'accesso anticipato e hanno acquistato heroku, che è uno sviluppo rubino nel cloud. Hanno suddiviso il database, con database.com in modo che tu possa fare tutto il tuo sviluppo web e le tue chiamate db usando database.com.

Immagino stiano cercando di renderlo il più agnostico possibile. Ma in questo momento questi sono tutti annunci e accesso anticipato, così come le loro dichiarazioni Safe Harbor non acquistano su ciò che dicono, solo su ciò che hanno attualmente.


7 anni e non hanno affrontato una sola cosa nell'elenco sopra.
el n00b
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.