Categorie
Guide News

Come progettare sistemi distribuiti davvero scalabili

Sembra facile ormai, uso servizi IaaS o PaaS, e col cloud scalo quanto voglio. In realtà però scalare non è così semplice come sembra, soprattutto se l’architettura di un software non è fatta come si deve. Per il design di sistemi distribuiti esistono molti accorgimenti che è necessario considerare, di questi ne citiamo alcuni fondamentali.

Avere un piano B

Come dice Murphy, se una cosa può andare male, lo farà. Quindi è chiaro che un sistema distribuito dovrà andare incontro a delle cadute (succede anche ai migliori), anche se i provider cloud vi dicono che questo è davvero improbabile. Le vostre applicazioni devono tenere conto comunque di questa eventualità, e sapere come comportarsi in caso di interruzioni in un servizio. Questo può essere realizzato tramite diverse tecniche quali distribuire un’applicazione in più di una zona di disponibilità. Netflix ad esempio ha un approccio interessante per testare i propri software per rintracciare errori, ovvero l’impiego di un’arma chiamata “Chaos Monkeys”. Si tratta di un software che tramite un processo random fa cadere una alla volta differenti istanze. Netflix produce errori per verificare come il proprio sistema reagisce e se continua ad essere eseguito in maniera performante. La domanda quindi da porsi è non se ci sarà un errore o una caduta nel servizio, ma piuttosto quando questa avverrà, e come si comporta il sistema in tal caso.

Per i sistemi on-premise viene spesso utilizzato il design N+1, e questo viene usato anche per il cloud. Ci dovrebbe cioè essere sempre un sistema in più a disposizione di quanti ne siano realmente richiesti. Nel cloud questo può essere realizzato eseguendo le vostre istanze in diverse località geografiche e zone disponibili: nel caso cada la connessione con una regione, le altre regioni verranno in soccorso. Alcune piattaforme offrono un routing intelligente e possono dirigere facilmente il traffico ad ad un’altra zona, se quella prediletta subisce un’interruzione. In ogni caso esiste una regola chiamata “rule of three”, che dice sostanzialmente che sarebbe necessario avere tre sistemi a disposizione: uno per me, uno per il cliente ed uno in caso di errori. Questo minimizzerà il rischio di dover affrontare un’interruzione significativa nel servizio.

Monitoraggio

Tutto ciò che abbiamo bisogno di sapere è cosa stia succedendo in questo momento nei nostri data center e nei nostri sistemi. Quindi il monitoraggio è un aspetto importante da tenere d’occhio anche dal momento in cui si costruisce un’applicazione. Per progettare un monitoraggio intelligente, le uniche cose importanti a cui pensare non sono le performance I/O o altre metriche di questo genere. La cosa migliore sarebbe che il vostro sistema possa prevedere il carico futuro, e questo potrebbe essere svolto tramite dati statistici ricavati dallo storico delle applicazioni. Esemplificando questo concetto, se la vostra applicazione riguarda le scommesse sportive, è quasi certo che i picchi di carico siano posizionati durante eventi sportivi di grande portata. Se si tratta di videogiochi online, il vostro carico potrebbe aumentare durante certe ore diurne o quando fuori c’è cattivo tempo.

Rollback

I sistemi di grandi dimensioni sono tipicamente gestiti da diversi team in una compagnia. Questo significa che un sacco di persone lavorano su questi sistemi in tempo reale e vengono spesso effettuate operazioni e modifiche nel sistema. E’ quindi probabile che succeda che nuove funzionalità influiscano su altri servizi della vostra applicazione. Per prevenire comportamenti indesiderati causati da questo la nostra applicazione dovrebbe prevedere un meccanismo forte di rollback.

Non appesantire il carico con gli stati sul lato server

Se memorizzate tutti gli stati sul vostro sistema, questo renderà il bilanciamento del carico un affare esponenzialmente più complicato da trattare. Le info di stato dovrebbero essere eliminate ogni qual volta sia possibile. Ci sono diverse tecniche per ridurre o rimuovere lo stato nella vostra applicazione. Dispositivi moderni quali smartphone o tablet hanno performance sufficienti per memorizare le informazioni di stato sul client. Ogni chiamata al servizio dovrebbe essere indipendente e non dovrebbe necessariamente avere uno stato di sessione sul server. Tutti gli stati di sessione dovrebbero essere trasferiti al client, come descritto da Roy Fielding in questo paper. Gli stili architetturali quali ROA supportano questa idea e aiutano a rendere i vostri servizi privi di stato.

Possibilità di disabilitare i servizi

Dovrebbe essere semplice disabilitare servizi con prestazioni che non rispondano alle esigenze richieste, o che penalizzino il sistema intralciando il corretto funzionamento dell’intera applicazione. Sarà quindi importante garantire l’isolamento di ogni servizio dagli altri.

Prevedere ruoli differenti

Come descritto da Bertram Meyer nella Command Query Separation, la vostra applicazione dovrebbe essere suddivisa in diversi ruoli. Questa è una caratteristica fondamentale per applicazioni supportate da Service Oriented Architecture (SOA).

Ovviamente una trattazione puntuale dell’argomento richiederebbe decine di pagine, se non libri, ma l’importante è avere sempre bene chiare in mente queste problematiche, e giocare d’anticipo nella fase di progettazione delle applicazioni, evitando di dover intervenire quando il servizio è on line, andando il più delle volte alla cieca nella riparazione degli errori.

high escorts

оффшорный счет

siteвзять деньги в долг на картускачать wireshark для windows 8скачать программу для андроид взлом wi fiэкспресс карта credit story что этоonline slot oynamerit crystal girneвозьму деньги в долг самаратурагентсво килиманджаропрограмма сафари что этокредитная карта мужская картакредит на начало бизнеса с нуляaltezza climbing limited отзывыtranslator german to englishгорящие туры в черногорию будвамагазины товары для домараскрутка сайтов в yandexbrem plattПоларсипseo продвижение и оптимизация сайтаканализации деревянный домраскрутка сайта заказатьСолнцезащитный экран McLaren для автоуправление поисковыми системамимужские ремни купить

Lascia un commento