Ci sono molte buone risorse su μServices che si concentrano su concetti come Single Purpose, REST, Implementation and Deployment, CI / CD, Incapsulamento e isolamento, Separazione dell'interfaccia utente dall'API, ecc.
Tuttavia, dopo aver fatto tutte le promesse su μServices (plurale), tutti entrano immediatamente nella progettazione di un μService (singolare). Oppure, se posso essere snarky, "Scrivere monoliti software molto piccoli."
Dove sono le migliori pratiche per l'utilizzo di μServices con μServices?
Esempio:
La mia azienda mi dice di scrivere un clone di Craigslist interno per vendere regali di Natale indesiderati ai colleghi di lavoro. Le risorse sono abbastanza evidenti: persona, posizione, oggetto. Solo Elemento rientra pienamente nello scopo di questo μService, quindi inizio a concentrarmi sulle operazioni REST per questo:
GET /v1/items/7443fc08-51c3-11e6-9c77-3c15c2c9fbf8
{ "title": "Book for Sale",
"body": "Selling my well-used copy of 'Functional Programming with Cobol'",
"price": "$10 OBO",
"contact": {
"type": "ref",
"ref": "ldaps://ad.example.com/eid=51214,dc=example,dc=com"
},
"location": {
"type": "ref",
"ref": "https://facilities.example.com/v1/locations/3182"
}
}
Tutti lo esaminano e dicono "Sì, è gustoso e RESTY", quindi andiamo avanti. Lo sviluppatore della UI ha bisogno di una mano perché non ha mai avuto a che fare con LDAP prima. Quando le dico di "Aggiungi"? Cn "alla fine dell'URL per ottenere il nome della persona" , lei mi chiede perché non l'ho inserito nell'URL in primo luogo, o almeno fornire un link [] con un campo "rel" .
Spiego che è solo la selezione del campo, esattamente come la selezione ? include = , per esempio nessuno usa rel per la selezione del campo, e mandarla a casa con una copia di RFC 4512, dicendole che imparare ASN.1 le renderà uno sviluppatore migliore.
Avanti veloce diversi giorni; Ho terminato l'API, ma mentre l'interfaccia utente è in grado di visualizzare elementi ed elenchi di elementi, mostra solo dati di fabbrica; la funzionalità POST non funziona ancora ...
Lo sviluppatore dell'interfaccia utente sta ancora cercando di capire come ottenere il valore eid (per l'URI LDAP) dal token OAuth che ha ricevuto dal login federato μService. Discutiamo di creare un altro μService solo per farlo ...
Quindi dove è andato storto? Quali sono le best practice attuali sul bilanciamento del principio di "Single Responsibility" al di fuori del contesto di un solo Single μService?