L'architettura orientata ai servizi richiede il principio di robustezza?

1

Cerco di migrare sempre più la nostra infrastruttura IT in un'architettura orientata ai servizi , ovvero separazione delle attività indipendenti e implementazione di queste attività come servizi disaccoppiati, semplicemente accessibile tramite HTTP . Se non ti piace il termine SOA, inseriscilo in un altro - l'idea di base è mettere la funzionalità in piccoli moduli ed esporli tramite interfacce ben definite.

Significa anche molta documentazione e comunicazione, perché le persone tendono a pensare nei sistemi integrati. Quando unisco più servizi a un nuovo componente, mi prendo sempre cura di rilevare gli errori: se un servizio fallisce, il resto del sistema dovrebbe continuare a funzionare nel miglior modo possibile. Probabilmente conosci la Scimmia del caos , che tengo a mente . Tuttavia, se altre persone usano i servizi, tendono a pensare in parti affidabili. La buona SOA richiede il principio di robustezza? In breve, se usi un servizio, non dovresti aspettarti molta qualità: fai attenzione a qualsiasi tipo di errore: la risposta del servizio potrebbe non contenere tutte le informazioni (campi mancanti), potrebbe includere parti aggiuntive e sconosciute, potrebbe rispondere molto lento, o potrebbe non funzionare affatto. Si tratta di una proprietà di accoppiamento lento o sono solo pigro per garantire una severa qualità del servizio? ; -)

    
posta Jakob 07.03.2012 - 13:18
fonte

2 risposte

2

Penso che tu stia confondendo il principio di robustezza e la robustezza nei sistemi distribuiti .

Il principio di robustezza dice:

Be liberal in what you accept, and conservative in what you send.

Se si applica il principio di robustezza, è molto difficile fornire una descrizione chiara e accurata di ciò che l'applicazione accetterà. In altre parole, sarà più difficile e la tua applicazione più complicata e più difficile da mantenere. Ancora peggio è quando i clienti iniziano a supporre che l'input "cattivo ma accettato" sia un input "buono". Penso che un buon esempio del principio di robustezza andato male sia le prime versioni di HTML e la sua interpretazione da parte dei browser web. Non consiglierei di applicare questo principio a meno che tu non sappia davvero cosa stai facendo.

Tuttavia, la robustezza nei sistemi distribuiti, come discusso nell'articolo di Jeff e nei commenti sottostanti, significa che ci si aspetta un fallimento e si progettano di conseguenza, facendo cose come:

  • fornire più server nel caso in cui uno si spenga
  • man mano che i servizi falliscono, altri servizi che dipendono da essi subiscono un degrado graduale

Per rispondere alla domanda originale: sì, penso che questo tipo di robustezza sia (o dovrebbe essere) necessaria nei sistemi orientati ai servizi.

    
risposta data 07.03.2012 - 14:49
fonte
0

Penso che tu debba sbagliare sul lato della robustezza.

Considera questo: in questo momento tutti gli sviluppatori coinvolti possono ricordare il sistema come un insieme integrato. Tuttavia, se l'approccio SOA è effettivamente utile, si dovrebbe finire con diversi servizi che possono essere utilizzati in modi nuovi. Utilizzato dai nuovi utenti che non conoscono la cronologia, o ancora meglio dagli utenti esterni, che sarebbero molto delusi se non ricevessero un servizio ragionevole, cancellassero i messaggi di errore e analizzassero facilmente le risposte. Il principio di minimo stupore dovrebbe guidarti qui.

Nota bene: alcune aziende fanno sì che SOA sia conforme alle parole d'ordine. O forse solo un componente deve essere esposto e scala. O leggono che Amazon lo fa in questo modo. Costruire ciascun componente come un servizio solido e autonomo può essere una perdita di tempo.

Ci saranno sempre componenti che richiedono servizi secondari x, yez per fare un lavoro utile. Potresti non fare alcun favore a nessuno se cerca di combattere con dipendenze mancanti. A volte fallire è meglio che catturare tutto al limite del servizio e nascondere i problemi.

    
risposta data 07.03.2012 - 14:18
fonte

Leggi altre domande sui tag