WorksheetsMicroservices - Patterns
Total questions: 11
Worksheet time: 22mins
Name
Class
Date
1.
Come gestire al meglio un'applicazione a microservizi ?
a)
Ogni servizio dovrebbe leggere la propria configurazione da variabili d'ambiente.
b)
Ogni servizio dovrebbe verificare che il numero di richieste ricevute non superi delle soglie configurate.
c)
Ogni servizio dovrebbe eseguire un denial of service sulla porta su cui ascolta in modo da minimizzare il numero di richieste in arrivo.
d)
Ogni servizio dovrebbe essere sviluppato in modalità stateful.
e)
Ogni servizio dovrebbe avere embedded la propria configurazione in modo da girare nella stessa maniera in vari ambienti.
2.
Ipotizzando che tutti i servizi di un'ipotetica applicazione a microservices espongano un entrypoint HTTP sulla porta 8080, applicando quale pattern di depoy si avrebbe un problema di binding ?
a)
Single Service per Host
b)
Service per VM
c)
Multiple Service per Host
d)
Service per Container
e)
Function / Lambda
3.
Quale affermazione è vera nel contesto del pattern Saga ?
a)
Ogni azione svolta verso i servizi gestiti deve essere memorizzata per poter riprendere il processo dal punto interrotto.
b)
Ad ogni azione svolta verso i servizi gestiti deve poter essere associata un'azione contraria che annulla l'effetto dell'azione, tranne che per l'azione finale poichè chiude il processo.
c)
E' ragionevole che il componente che implementa Saga sia invocato in maniera sincrona.
d)
E' necessario che il datastore utilizzato dal componente che implementa il saga patern sia di tipo ad eventi.
e)
Saga Pattern prescrive l'utilizzo transazionale dei servizi che gestisce.
4.
Quale deployment pattern scegliere per sfruttare appieno un'ipotetica infrastruttura VMWare ?
a)
Single Service per Host
b)
Service per VM
c)
Multiple Service per Host
d)
Service per Container
e)
Function / Lambda
5.
Come responsabilità dovrebbero essere in carico ad un microservizio ?
a)
Tutte quelle proprie di una singola business capability.
b)
Tutte quelle di un layer tecnologico, ad esempio: persistenza, business logic, user interface.
c)
Quelle conosciute dal team di sviluppo che si prende in carico lo sviluppo del microservizio.
d)
Disponibilità di piattaforme elastic cloud quali AWS, Google Cloud.
e)
Librerie per l'I/O non bloccante come quelle utilizzate da webserver quali Nginx.
6.
Si ipotizzi un'applicazione a microservice in cui un servizio in particolare è soggetto a scale up in base al carico misurato su di esso. Qual'è il modo migliore per accedere a tale servizio, tra quelli elencati qui di seguito ?
a)
Predisporre uno short circuit breaker per evitare che un possibile problema in una delle istanze del servizio di diffonda alle altre.
b)
Predisporre un registry a cui le istanze del servizio di registrano e in caso di chiamata accedere al registry per ottenere l'indirizzo di una delle istanze.
c)
Far si che ogni servizio, allo start up, pubblichi un messaggio con le coordinate necessarie alla sua invocazione: IP e porta. I client interessati possono stare in ascolto e scoprire così il nuovo servizio.
d)
Instrumentare opportunamente le istanze dei servizi perchè loggino le chiamare ricevute, in modo da poter tracciare eventuali problemi.
e)
Anteporre davanti alle varie istanze un api gateway che nasconda ai client i dettagli delle varie istanze e che esponga ad essi un unico entry point.
7.
Quale componente si prende normalmente in carico il controllo che il numero di richieste provenienti da un client esterno non superi un limite predefinito ?
a)
Service Registry
b)
Netflix Ribbon
c)
Api Gateway
d)
Circuit Breaker
e)
Netflix Eureka
8.
Avendo applicato ad un servizio il pattern "Event Sourcing", quale pattern si dovrà ragionevolmente utilizzare per garantire la scrittura e la lettura di dati verso e dal microservice ?
a)
Events Generated by Application
b)
API Composition
c)
Saga
d)
Command Query Responsibility Segregation
e)
Event Retrieval
9.
Quale di queste affermazioni è vera ?
a)
Un test end-to-end di un monolite e più complicato del test end-to-end di un'app a microservizi.
b)
L'utilizzo di stub nel test di servizi è sconsigliato.
c)
L'Anti Breakdown pattern garantisce, compatibilmente con la copertura che si riesce ad ottenere, che un servizio non venga meno alla retro compatibilità.
d)
E' complicato garantire che un servizio, durante la sua evoluzione non cambi il contratto dell'API esposta in una maniera non retrocompatibile. Per questo ci sono metodologie basati sui contratti definiti dai client.
e)
E' possibile mitigare l'effetto dell'evoluzione delle API applicando l'Ontology Test alle strutture dati dei messaggi scambiati tra i servizi.
10.
In un'applicazione a microservizi dedicata alle forze dell'ordine è previsto un servizio che gestisce tutti i contatti avvenuti tra individui sospetti e un servizio che associa ad ogni individuo le targhe delle auto che possiede. Quale pattern utilizzeresti ?
a)
Database per Service. Per il primo un database relazionale, per il secondo un sistema LDAP.
b)
Shared Database, utilizzare lo stesso Database con l'accortezza di utilizzare schemi diversi.
c)
Database per Service. Entrambi potrebbero però utilizzare un key store.
d)
Shared Database, utilizzare lo stesso Database con le tabelle "CONTATTI" e "AUTO_POSSEDUTE".
e)
Database per Service. Il primo servizio potrebbe utilizzare un DB a grafi, il secondo un database relazionale.
11.
Come gestire al meglio un'applicazione a microservizi ?
a)
Applicando un sistema di auditing che permetta di tracciare quando un'istanza del servizio è stata lanciata.
b)
Garantendo che ogni servizio abbia un accesso remoto, ad esempio SSH, attraverso il quale il personale DevOps possa accedere ai log.
c)
Richiedere che tutti i team afferenti ai vari servizi utlizzino uno stack tecnologico simile, in modo da poter garantire il passaggio degli sviluppatori da un gruppo all'altro.
d)
Migrare l'applicazione a microservizi verso uno stile architetturale monolitico.
e)
Facendo si che tutti i log siano convogliati in un sistema centralizzato e che tutte le richieste tra i servizi afferenti ad una singola richiesta proveniente dall'esterno siano raggruppate.
100 %
