Azure Service Fabric: cosa devi sapere

I servizi cloud come Azure sono essenzialmente sistemi distribuiti di massa, che ospitano tutti i tipi di servizi. Alcuni di questi sono infrastrutture ospitate, alcuni sono contenitori e microservizi, alcuni sono piattaforme di sviluppo e altri sfruttano modelli senza server.

Hanno tutti bisogno di una cosa: una piattaforma di gestione e orchestrazione. Gli strumenti cross-cloud generici come Kubernetes offrono una strada per fornire un ambiente container gestito, ma c'è anche un posto per ambienti personalizzati che si concentrano sulle esigenze di una specifica piattaforma cloud. Per Azure, è gestito da uno strumento presente sin dai primi giorni del cloud pubblico di Microsoft: Azure Service Fabric.

Presentazione di Azure Service Fabric

Nascosto nelle fondamenta di Azure, Service Fabric può essere difficile da descrivere. Ma lo vediamo sempre, negli strumenti che utilizziamo per creare il nostro software nativo per il cloud. È al centro dell'hub eventi e della piattaforma IoT di Azure, dei suoi database SQL e Cosmos DB e di molti dei servizi aziendali e consumer che utilizziamo ogni giorno. Con Azure Service Fabric hai accesso agli stessi strumenti che Microsoft usa per eseguire e gestire i propri servizi, integrandoli nel tuo codice.

Lo scopo di Azure Service Fabric è semplificare la distribuzione e la gestione dei microservizi, gestendo operazioni con stato e senza stato in un'istanza di PaaS di Azure. Non è solo per Azure, perché lo strumento di sviluppo locale è una versione completa di Azure Service Fabric, il che significa che verrà eseguito su qualsiasi sistema Windows. Una versione Linux lo rende portabile anche su più cloud, gestendo codice esistente e personalizzato.

Azure Service Fabric gestisce il ciclo di vita dell'applicazione, con API che forniscono ulteriore accesso alla piattaforma oltre al codice puramente autonomo. Supporta anche i propri microservizi attore / messaggio e ospita il codice ASP.Net Core. I servizi possono essere eseguiti in modo nativo come processi oppure è possibile ospitarli in contenitori, offrendo la possibilità di trasferire rapidamente il codice esistente al PaaS di Azure. I contenitori si combinano con altri modelli di applicazioni di Azure Service Fabric, consentendo di includere rapidamente le funzionalità esistenti tramite lift-and-shift o includendo specifiche applicazioni in pacchetto.

Inizia con Azure Service Fabric

Forse il modo più rapido per iniziare a sviluppare con Service Fabric è il suo framework Reliable Services. Si tratta di un set di API che si integrano con le funzionalità di gestione del ciclo di vita delle applicazioni di Azure Service Fabric. Puoi scrivere codice in qualsiasi lingua supportata o nella tua scelta del framework dell'applicazione. I servizi possono essere senza stato o con stato, con servizi senza stato che utilizzano l'archiviazione esterna per gestire lo stato. L'opzione stateful è più interessante, perché usa gli strumenti di Service Fabric per gestire lo stato dell'applicazione. Non è necessario considerare il ridimensionamento o l'alta disponibilità; è tutto gestito per te.

Se hai usato le raccolte di C #, troverai familiare le raccolte affidabili di Reliable Service. Sono anche conservati nella stessa istanza del tuo calcolo, riducendo la latenza. Se un servizio non riesce, può riprendere lo stato al riavvio. Avere diversi modelli di stato ti consente di scegliere il modello che funziona meglio per il tuo servizio. I servizi semplici che richiedono solo dati di input per funzionare possono essere senza stato, ma se stai lavorando con codice che deve conoscere lo stato precedente, dovrai creare un servizio affidabile.

Microsoft semplifica la creazione di back-end web e applicazioni familiari su Azure Service Fabric con il supporto per ASP.Net Core. Sebbene non sia compatibile al 100% con il codice con ASP.Net MVC, è possibile migrare il codice esistente sulla nuova piattaforma. È disponibile il supporto per la creazione di servizi sia senza stato che con stato, per il trasferimento dell'orchestrazione e del ridimensionamento delle applicazioni ad Azure Service Fabric.

Concorrenza scalabile con gli attori

Le applicazioni nate nel cloud dovrebbero trarre vantaggio dal framework Reliable Actor. Questo estende Reliable Services per implementare attori virtuali (come utilizzato dal framework aperto Project Orleans che è popolare nei back-end di gioco). L'utilizzo del modello attore / messaggio per gestire i microservizi funziona bene, perché il modello di sistemi simultanei sottostanti scala rapidamente e può gestire molti attori che operano contemporaneamente.

Attore affidabile non è per ogni scenario. Funziona meglio quando il codice può essere suddiviso in semplici blocchi di calcolo che possono essere implementati come oggetti a thread singolo non bloccanti che non hanno stato o mantengono il proprio stato. È ideale per applicazioni completamente nuove, perché è difficile decomporre il codice esistente. La creazione di un'applicazione utilizzando Reliable Actor può essere complessa, anche dopo aver definito gli attori. È necessario tenere presente che, sebbene gli attori possano essere raccolti in modo indesiderato, il loro stato persisterà e sarà possibile accedervi quando in futuro chiami un attore con lo stesso ID.

Reliable Actor risolve molti problemi di elaborazione distribuita complessi, anche se dovrai riflettere attentamente su come mappare gli oggetti agli attori e su come li utilizzerai nelle tue applicazioni.

Azure Service Fabric diventa open source

Microsoft ha recentemente annunciato che è Service Fabric open source, cambiando il modello di sviluppo in uno che accetti le richieste pull di terze parti, oltre a consentire un processo di progettazione aperto e pubblico.

Il passaggio a un modello di sviluppo open source, insieme a un processo di progettazione aperto, è un'impresa enorme per una tecnologia di base come Azure Service Fabric. Sebbene la tranche iniziale di codice open source sia basata su Linux, il team di sviluppo Microsoft ha indicato che il codice basato su Windows attualmente in esecuzione su Azure seguirà presto. Lo sviluppo avverrà su GitHub, con gran parte del lavoro iniziale incentrato sul completamento della transizione dalle piattaforme interne di Microsoft a un processo rivolto al pubblico.

Microsoft ha pianificato di offrire un Azure Service Fabric open source da qualche tempo, almeno dall'inizio del ramo Linux del codice. Poiché è sia un codice più recente che utilizza uno strumento diverso dalla versione di Windows, è stato molto più facile dare forma a quel ramo per il rilascio pubblico. Lo strumento Windows è più complesso, con circa un decennio di storia che deve essere svelato e modificato. Gran parte di ciò è dovuto all'uso di strumenti di sviluppo esclusivamente Microsoft non disponibili al mondo esterno, oltre alla rielaborazione necessaria per spostarlo su strumenti disponibili pubblicamente.

Avere a disposizione uno strumento come Azure Service Fabric offre molte più opzioni rispetto al tradizionale PaaS, soprattutto quando si creano nuove applicazioni da zero. Il supporto per i contenitori aggiunge la possibilità di inserire applicazioni in pacchetto insieme al codice. Allo stesso modo, l'utilizzo di framework e modelli familiari può abbreviare la curva di apprendimento. Con un futuro open source davanti a sé, Azure Service Fabric potrebbe essere il framework per applicazioni multicloud che stai cercando.