Azure di Windows: Ristrutturazione dei costi di Windows Azure

La progettazione di soluzioni e applicazioni per il cloud computing e Windows Azure richiede un approccio completamente diverso nei confronti dei costi operativi.

Maarten Balliauw

Cloud computing e piattaforme come Windows Azure vengono addebitate come “ cosa grande successiva ” nella IT. Questo sembra true certamente se si considera i vantaggi miriade di cloud computing.

Computing e archiviazione diventano un brano su richiesta in qualsiasi momento, è possibile utilizzare solo a pagamento effettivamente utilizzati. Ciò comporta tuttavia anche un problema. Se un'applicazione cloud è progettata come un'applicazione normale, è probabile che di applicazione del costo prospettiva non sarà come previsto.

Diversi parametri di valutazione

Nella tradizionale IT, uno sarebbe acquistare un insieme di componenti hardware (infrastruttura di rete, server e così via), impostarlo, passare attraverso il processo di configurazione e connessione a Internet. È un investimento occasionale, con un dipendente per attivare il knobs e Bulloni, che è.

Con area informatica, un modello di costi sostituisce tale modello di investimento. Si paga per risorse come server potenza e memoria in base al loro utilizzo efficacia. Piattaforma di nuvola come Azure di Windows, è possibile prevedere le misure seguenti per calcolare il pagamento mensile:

  • Numero di ore che è stata prenotata una macchina virtuale (VM), ovvero si paga per un'applicazione distribuita, anche se non è attualmente in esecuzione
  • Numero di CPU in una macchina virtuale
  • Larghezza di banda, misurata per GB in / out.
  • Spazio di archiviazione GB utilizzati
  • Numero di transazioni su archiviazione
  • Dimensioni del database in SQL Azure
  • Numero di connessioni su piattaforma Windows Azure AppFabric

È possibile trovare tutti i dettagli sui prezzi nel sito Windows Azure Web all' microsoft.com/windowsazure/offers . Come si vede dall'elenco qui, che è molto da considerare.

Limitazione di macchine virtuali

Ecco come suddivide dal punto di vista pratico. Mentre limitando la quantità di macchine virtuali è in esecuzione è efficace per ridurre i costi, per i ruoli del Web, è opportuno disporre di almeno due macchine virtuali per la disponibilità e bilanciamento del carico. Utilizzare l'API di diagnostica Windows Azure per misurare l'utilizzo della CPU, la quantità di richieste HTTP e utilizzo della memoria in questi casi e scalabilità dell'applicazione verso il basso quando appropriato.

Ogni istanza di qualsiasi ruolo in esecuzione su Windows Azure mensilmente raddoppia la quantità di ore nella distinta base. Ad esempio la presenza di tre istanze del ruolo in esecuzione in Media (talvolta due, quattro volte) sarà più economico rispetto all'esecuzione di tutti i tempi quattro istanze con quasi alcun carico di lavoro del 25%.

Per i ruoli di lavoro rende inoltre opportuno disporre di almeno due istanze del ruolo per l'elaborazione in background. Questo consentirà di verificare quando si verifica un riavvio di ruolo o uno è inattivo per gli aggiornamenti, l'applicazione sia ancora disponibile. Utilizzando strumenti disponibili per Windows Azure, è possibile configurare un ruolo di lavoro fuori di-pronti per l'esecuzione di un'unica attività.

Se si esegue un sito Web di condivisione delle foto, ad esempio, si intende avere un ruolo di lavoro per il ridimensionamento delle immagini e l'altro per l'invio di notifiche tramite posta elettronica. La regola “ almeno due istanze ” significherebbe di quattro istanze di ruoli di lavoro, provocherebbero un notevole effetto in esecuzione. Ridimensionamento di immagini e l'invio di messaggi di posta elettronica non richiedono effettivamente tale quantità di potenza di CPU con solo due ruoli di lavoro per l'esecuzione di entrambe le attività dovrebbero essere sufficienti. Che è un risparmio del 50 percento della distinta per l'esecuzione di Windows Azure mensile. Inoltre è abbastanza semplice implementare un meccanismo di threading in un ruolo di lavoro, dove ciascun thread esegue dedicato parte del lavoro.

Windows Azure offre quattro formati di VM: piccola, Media, grande e molto grandi. Le differenze tra ogni dimensione sono il numero di CPU disponibili, la quantità di memoria disponibile e archiviazione locale e le prestazioni di I/O. È consigliabile considerare la dimensione VM appropriata prima di distribuire effettivamente in Windows Azure. Non è possibile modificarlo quando si esegue l'applicazione.

Quando si riceve l'estratto conto mensile, si noterà che tutti calcolare ore vengono convertiti in piccole ore di istanza presentato nella fattura. Un'ora di entrata di un supporto, ad esempio, calcolare istanza può essere presentato come due ore di istanza compute piccola a velocità ridotta istanza. Se si dispone di due istanze di medie dimensioni in esecuzione, sta fatturate per 720 ore x 2 x 2.

Considerare questo ridimensionamento le macchine virtuali. È possibile realizzare quasi la stessa potenza calcolo utilizzando istanze di piccole dimensioni. Si supponga Let’s che avere quattro fatturato 720 ore x 4. Tale prezzo è uguale. È possibile adattare a due istanze quando appropriato, portare ore 720 x 2. Se non occorre più CPU, memoria o più memoria, osserva istanze di piccole dimensioni poiché la scalabilità in maniera più granulare dalle istanze di dimensioni maggiori.

Fatturazione per Windows servizi azzurro inizia dopo che è stata distribuita un'applicazione e si verifica se le istanze del ruolo sono attivi o attivi disattivato. È possibile notarlo facilmente nel portale Windows Azure. È disponibile un'immagine di grandi dimensioni di una finestra. “ Quando la casella è grigio, si è OK. Quando la casella blu, una distinta base è scaduta. ” (Grazie a Brian h Prince per tale riga.)

Quando si esegue la distribuzione delle applicazioni di gestione temporanea o di produzione e disattivandoli dopo l'utilizzo, non dimenticare di annullamento - anche l'applicazione distribuita. Non si desidera pagare per tutte le applicazioni inattive. Ricordarsi inoltre di scalare verso il basso quando appropriato. Ciò ha un impatto diretto sul mensili dei costi operativi.

La scalabilità verso l'alto e verso il basso, è consigliabile disporre di un'istanza del ruolo eseguito per almeno un'ora perché si paga base oraria. Selezione di più thread di lavoro in un ruolo di lavoro. In questo modo un ruolo di lavoro può eseguire più attività anziché uno. Se non occorre più CPU, memoria o più memoria, osserva con istanze di piccole dimensioni. E ancora, assicurarsi di annullare - distribuire le applicazioni quando si utilizza non li.

Larghezza di banda, archiviazione e transazioni

Larghezza di banda e le transazioni sono due metriche difficile. Nessun ideale per misurare, ad eccezione di osservando il pagamento mensile è attualmente. Non esiste alcun monitoraggio in tempo reale è possibile consultare e utilizzare per adattare l'applicazione. Larghezza di banda è più semplice di questi due metriche per misurare. La minore quantità di traffico mettere in rete, minore sarà il costo da. È semplice come che.

Cose ottenere più complicate quando si distribuiscono applicazioni su più aree di Windows Azure. Si supponga Let’s che avere un ruolo Web in esecuzione nell'area “ Italia ” e un conto di archiviazione nella regione “ Europa occidentale ”. In questo caso, larghezza di banda per le comunicazioni tra il ruolo Web e l'archiviazione verrà addebitato sulla.

Se il ruolo Web e archiviazione si trovavano nella stessa area (entrambi in “ Nord America ”, ad esempio), non vi sarà alcun pagamento della larghezza di banda per le comunicazioni tra il ruolo Web e archiviazione. Tenere presente che quando geograficamente la progettazione di applicazioni distribuite, è consigliabile mantenere servizi strettamente collegati all'interno della stessa area Windows Azure.

Quando si utilizza Windows Azure Content Delivery Network (CDN), è possibile sfruttare un altro interessante misure di riduzione dei costi. CDN è metered nello stesso modo in archiviazione blob, vale a dire per GB memorizzato al mese. Una volta che si avvia una richiesta per il CDN, esso verrà agganciare il contenuto originale dall'archiviazione blob (incluso il consumo di larghezza di banda, pertanto fatturato) e memorizzare nella cache localmente.

Se si impostano la cache delle intestazioni di scadenza troppo breve, consuma larghezza di banda maggiore poiché la cache CDN stesso aggiornerà più frequentemente. Quando la scadenza della cache è impostata troppo lungo, Windows Azure memorizzerà contenuto il CDN per un tempo più lungo e distinta per ogni GB memorizzato al mese. Considerare questo per ogni applicazione in modo da poter determinare il miglior tempo di scadenza della cache.

Monitor di diagnostica di Windows Azure utilizza anche archiviazione blob di dati diagnostici, ad esempio i contatori delle prestazioni, i registri traccia, registri eventi e così via. Scrive i dati a un'applicazione su un intervallo predefinita. Scrivere ogni minuto aumenta il conteggio delle transazioni archiviazione iniziali dei costi aggiuntivi. Impostando un intervallo, ad esempio ogni 15 minuti comporta meno transazioni di archiviazione. Lo svantaggio di che, tuttavia, è la diagnostica dei dati sono sempre almeno 15 minuti.

Inoltre, Windows Azure diagnostica Monitor non pulisce i dati. In caso contrario questo personalmente, è probabile che fatturazione per una grande quantità di archiviazione contenente nulla ma scaduti, vecchi dati diagnostici.

Le transazioni vengono addebitate per 10.000. Può sembrare un numero elevato, ma verrà corrisposto, in realtà. Ogni operazione su un account di archiviazione è una transazione. Creazione di un contenitore di blob, elencare il contenuto di un contenitore di blob, memorizzazione dei dati in una tabella di archiviazione, lettura di messaggi in una coda, queste sono tutte le transazioni. Durante un'operazione, ad esempio archiviazione blob, ad esempio, si potrebbe verificare innanzitutto se è presente il contenitore blob. In caso contrario, sarà necessario crearla e quindi memorizzare un blob. È almeno due, possibilmente tre transazioni.

Lo stesso conteggio per ospitare contenuto statico nel blob di archiviazione. Se il sito Web ospita 40 piccole immagini su una sola pagina, questo significa 40 transazioni. Questo possibile sommare rapidamente con le applicazioni con traffico elevato. Verificando semplicemente un blob contenitore presente all'avvio dell'applicazione e ignorando che controlla in ogni operazione successiva, è possibile ridurre il numero di transazioni quasi 50 percento. Essere smart su questo ed è possibile ridurre il pagamento.

Gli indici possono essere costosi

SQL Azure è un prodotto interessante. È possibile avere un database di 1 GB, 5 GB, 10 GB, 20 GB, 30 GB, 40 GB o 50 GB a un prezzo mensile estremamente basso. È sufficiente passare per un database SQL Azure di 5 GB inizialmente e sicuro. Se si utilizza solo 2 GB di tale capacità, tuttavia, non si è realmente in un modello di retribuzione per l'uso corretto?

In alcuni casi può essere più conveniente per distribuire i dati tra diversi database SQL Azure, anziché un database di grandi dimensioni. Ad esempio, potrebbe avere un 5 GB e un database di 10 GB, invece di un database di 20 GB con 5 GB di capacità inutilizzata. Questo tipo di archiviazione strategici influenzerà il pagamento se si smartly e interagisce con il tipo di dati.

Ogni oggetto consuma memoria. Indici e tabelle possono occupare una grande quantità di capacità di archiviazione del database. Tabelle di grandi dimensioni possono occupare il 10% di un database e alcuni indici potrebbero consumare 0,5% di un database.

Se si divide il costo mensile dell'abbonamento SQL Azure per le dimensioni del database, sarà necessario unità di costo per l'archiviazione. Considerare gli oggetti nel database. Se indice X costo 50 centesimi al mese e veramente non aggiunge un lotto di miglioramento delle prestazioni, quindi generare semplicemente assente. Metà di un euro non è che molte, ma se si eliminano alcune tabelle e alcuni indici, possibile sommare. È disponibile un esempio interessante su questo su SQL Azure team blog post, “ il reale costo di indici ” (blogs.msdn.com/b/sqlazure/archive/2010/08/19/10051969.aspx ).

È presente un movimento nello sviluppo di applicazioni per non utilizzare le stored procedure in un database non è più sicuro. La tendenza è invece utilizzare mappers relazionali a oggetti e di eseguire molti calcoli sui dati nella logica dell'applicazione.

Non c'è niente che problemi, ma ottenere interessante quando si pensa Windows Azure e SQL Azure. Eseguire calcoli dei dati dell'applicazione potrebbe richiedere istanze ruolo Web o ruolo di lavoro supplementare. Se si spostano questi calcoli SQL Azure, si salva su un'istanza del ruolo in questa situazione. Poiché nella memoria e della CPU non è metered SQL Azure, si ottiene effettivamente i cicli della CPU disponibili nel database.

Sviluppatore di impatto

Lo sviluppatore che sta scrivendo il codice può avere un impatto diretto sui costi. Quando si crea un sito ASP.NET Web che ospiterà Azure di Windows, è possibile distribuire tra le istanze del ruolo utilizzando il provider di stato sessione con supporto di archiviazione Azure di Windows. Il provider memorizza i dati della sessione nel servizio Windows Azure tabella in cui vengono misurate la quantità di spazio di archiviazione utilizzato, la quantità di larghezza di banda utilizzata e il numero di transazione per la fatturazione. Si consideri il frammento di codice seguente viene utilizzato per la determinazione della lingua dell'utente a ogni richiesta:

if (Session["culture"].ToString() == "en-US") {
  // .. set to English ...
}
if (Session["culture"].ToString() == "nl-BE") {
  // .. set to Dutch ...
}

Niente che problemi? Tecnicamente non, ma è possibile ottimizzare il 50 percento dal punto di vista dei costi:

string culture = Session["culture"].ToString();
if (culture == "en-US") {
  // .. set to English ...
}
if (culture == "nl-BE") {
  // .. set to Dutch ...
}

Entrambi i frammenti fare esattamente la stessa cosa. Il primo frammento di codice legge i dati di sessione due volte, mentre i dati di sessione letture secondo una sola volta. Ciò significa che un 50 percento win costo nel conteggio delle transazioni e larghezza di banda. Lo stesso vale per le code. Lettura di un messaggio alla volta 20 volte sarà più costoso rispetto a lettura 20 messaggi contemporaneamente.

Come si può vedere, cloud computing introduce diversi aspetti economici e prezzi dettagli per l'hosting di un'applicazione. Durante la nuvola di elaborazione può essere un miglioramento notevole dei costi operativi rispetto a un tradizionale datacenter, è necessario prestare attenzione alle considerazioni di architettura dell'applicazione durante la progettazione per l'area.

Maarten Balliauw

Maarten Balliauw è un consulente tecnico in tecnologie Web RealDolmen, una delle società ICT maggiori del Belgio. Suoi interessi sono ASP.NET MVC, PHP e Windows Azure. È un Microsoft Most Valuable Professional ASP.NET e ha pubblicato numerosi articoli nella documentazione PHP e. NET, ad esempio MSDN Magazine, Belgio e architetto PHP. Balliauw è spesso come relatore a vari eventi nazionali e internazionali. Trovare il suo blog all'indirizzo blog.maartenballiauw.be .

 

Contenuto correlato