[Italia-pm] Microservizi e disintegrazione
Ferruccio Zamuner
nonsolosoft at diff.org
Wed Jan 17 00:02:58 PST 2018
Ciao Guido,
circa 3 anni fa, anche io ho avuto la tua stessa reazione quando ho
letto per la prima volta questa novità dei microservizi.
L'esperienza maturata, le soluzioni scelte con cura negli anni, ma chi
ce lo fa fare di cambiare qualcosa?
In particolare investire per ottenere forse non troppo di più.
Scomporre i problemi lo sapevamo già fare, risolverli è il nostro
mestiere, programmazione modulare e ad oggetti l'abbiamo appresa;
perché atomizzarli quando per anni abbiamo puntato all'integrazione e
alla scalabilità verticale?
I container: da anni uso le jail su BSD, in particolare per software che
so ben gestire in sicurezza sui miei server, come PostgreSQL o sendmail,
un web server.
Inscatolarli ulteriormente non mi è mai parso un passo avanti.
L'autore di Docker ha tratto ispirazione dalla jail BSD: una sorta di
chroot on steroids, uno strato di sicurezza e isolamento anche dello
stack tcp simile alla macchina virtuale, e grazie alla condivisione
dello stesso sistema operativo arrivano a contenere migliaia di jail su
un server fisico quasi senza overhead.
Tuttavia Docker e simili propongono interfacce piu' semplici.
Su FreeBSD stanno adottando l'interfaccia Docker per manipolare le jail
(lavoro quasi completato).
Mi sono chiesto: cosa si può ottenere, almeno in teoria, di buono dai
microservzi o da questa architettura?
1) esistono microservizi con API ben definite, forse possiamo almeno
ispirarci o renderci "compatibili".
Ad esempio lo storage il cliente può acquistarlo da chi preferisce e non
dobbiamo più "rifatturarlo" nè conteggiargli l'uso e limiti della banda
in uscita.
2) alcuni componenti, estratti dalle applicazioni, possono costituire
mattoni pronti all'uso per nuove applicazioni.
Se l'interfaccia è compatibile con microservizi esistenti, è possibile
che anche altri li considerino.
Mantenendo l'esempio dello storage, ci sono più soluzioni di backup che
ora considerano come target ogni servizio compatibile con Amazon S3.
3) i progetti possono essere realizzati con linguaggi via via "alla
moda", con persone entusiaste di usarli.
Posso commissionare microservizi a terzi, o a sviluppatori nuovi senza
formali sul resto del nostro ambiente di sviluppo, tanto li metto in un
container dedicato e non rischio di "sporcare" fuori o introdurre grossi
problemi di sicurezza.
4) ogni microservizio è specializzato per risolvere un solo problema, in
modo lineare e semplice, non mi interessa come, mi basta che passi i
test che definisco per la qualità dei sorgenti, per l'interfaccia (API),
per le prestazioni.
Un servizio è specializzato per risolvere un solo problema in un modo
semplice e senza "feature", dato che dietro ogni feature si nascondono
bug anche difficili da scovare.
5) un nuovo concetto di fault tollerant: il sistema deve accorgersi che
non funziona qualcosa e reagire se possibile in modo non catastrofico,
ad esempio passando dai protocolli di autodiscovery per capire se è
attiva un'istanza diversa dei servizi con cui si deve connettere, se non
è possibile tracciare e segnalare il disguido gestendo l'eccezione.
6) verifica continua di livello di servizio: posso avere test che
verificano periodicamente ogni servizio nell'ambiente di produzione,
gli stessi posso usarli come stress test sull'ambiente di sviluppo.
6) scalabilità orizzontale. Ho sempre ritenuto la scalabilità verticale
più economica, ma quella orizzontale pare regga meglio gli spike.
Mi piacerebbe avere occasione di affrontare un progetto che abbia picchi
di traffico.
7) cambiare un servizio, non è catastrofico, le altre parti
possono/devono ignorare il cambiamento, ma eventualmente (re)agire se un
microservizio non è disponibile.
Probabilmente non ho esaurito gli argomenti.
Abbiamo visto questa architettura al lavoro per software come servizio
(Saas) rivolto ai soluzione business to consumer (B2C).
A quali condizioni questa architettura porta un vantaggio competitivo
nel business to business (B2B)?
Guido, che ne pensi?
Ciao, \ferz
On 12/01/2018 10:14, Guido Brugnara wrote:
> ----- Il 11-gen-18, alle 11:01, Ferruccio Zamuner nonsolosoft at diff.org ha scritto:
>> I microservizi ===CUT===
>>
>> Mi piacerebbe capire se avete maturato già esperienze in quest'ottica di
>> microservizi e quanto il perl è stato utilizzato per la loro realizzazione.
>> ===CUT===
>
> E' una valutazione che ho fatto ma che nella mia realtà non porta vantaggi perché l'utilizzo di microservices di terze parti è più costoso e/o crea dipendenza.
>
> Certamente le competenze necessarie per il loro utilizzo sono inferiori e difatti sono utili per coloro che sistemisti non sono, ma fintanto che un'azienda ha al suo interno queste competenze difficile che troverà conveniente "fare lo spezzatino" delle loro applicazioni.
>
> bye
> gdo
>
--
Oggi e' sempre un giorno migliore di ieri.
More information about the Italia-pm
mailing list