Condividi tramite


Eseguire la migrazione della soluzione di e-commerce ad Azure

Introduzione

Lo spostamento di una soluzione di e-commerce esistente nel cloud presenta molti vantaggi per un'organizzazione: permette una maggiore scalabilità, offre ai clienti accessibilità 24 ore su 24 e 7 giorni su 7 e permette di integrare più facilmente i servizi cloud. Come prima cosa, va ricordato che lo spostamento di una soluzione di e-commerce nel cloud è un'operazione complessa; i responsabili delle decisioni devono tenere in considerazione i costi correlati. Questo documento illustra l'ambito di una migrazione di Azure con l'obiettivo informare sulle varie opzioni disponibili. La prima fase inizia con lo spostamento dei componenti nel cloud da parte dei professionisti IT. Una volta in Azure, vengono descritti i passaggi che un team di e-commerce può eseguire per aumentare il ritorno sugli investimenti (ROI) e sfruttare i vantaggi del cloud.

A un bivio

Anche se le transazioni di e-commerce globali rappresentano solo una frazione delle vendite al dettaglio totali, questo canale continua a crescere stabilmente anno su anno. A partire dal 2024, le vendite di e-commerce costituiscono un quinto delle vendite totali al dettaglio, fino all'8,6% nel 2016 ( fonte). Di pari passo con il miglioramento dell'e-commerce si è diffuso anche il cloud computing, ponendo i rivenditori al dettaglio davanti a un bivio. È possibile scegliere varie opzioni. I rivenditori possono ideare un modello di business con nuove funzionalità rese possibili dalle tecnologie in evoluzioni, oltre a pianificare la modernizzazione in base al footprint delle capacità attuali.

Miglioramento del percorso del cliente

L'e-commerce, incentrato principalmente sul percorso dei clienti, dispone di molti attributi diversi. Questi attributi possono essere raggruppati in quattro aree principali: rilevamento, valutazione, acquisto e dopo l'acquisto.

Il comportamento dei clienti viene acquisito sottoforma di dati. L'imbuto di acquisto è una raccolta di punti di connessione alle applicazioni usate per visualizzare i dati dei prodotti, le transazioni, l'inventario, la spedizione, l'evasione degli ordini, il profilo del cliente, il carrello acquisti e le raccomandazioni sui prodotti, per citarne alcuni.

Un'azienda di vendita al dettaglio tipica si basa su una vasta raccolta di soluzioni software che vanno dalle applicazioni rivolte ai clienti, fino allo stack alle applicazioni di base. Nella figura seguente è indicata una visualizzazione delle funzionalità presenti in un'azienda di rivendita al dettaglio tipica.

Il diagramma confronta le funzionalità visibili esternamente con le funzionalità di base.

Il cloud rappresenta un'opportunità per modificare il modo in cui un'organizzazione ottiene, usa e gestisce la tecnologia. Altri vantaggi includono: costi ridotti per la manutenzione dei data center, più affidabilità e prestazioni e flessibilità per aggiungere altri servizi. In questo caso d'uso, si esamina un percorso che un'azienda di rivendita al dettaglio può intraprendere per migrare in Azure la propria infrastruttura esistente. È anche possibile sfruttare i vantaggi del nuovo ambiente usando un approccio diviso in fasi di rehosting, refactoring e ricompilazione. Anche se molte organizzazioni possono seguire questo percorso verso la modernizzazione, nella maggior parte dei casi potranno iniziare da una qualsiasi di queste fasi. Possono scegliere ad esempio di non eseguire il rehosting dell'applicazione corrente in Azure e passare direttamente al refactoring o persino alla ricompilazione. Questa decisione sarà univoca per l'applicazione e per l'organizzazione in base alle specifiche esigenze di modernizzazione.

Rehosting

Questa fase comporta anche la migrazione di server fisici e macchine virtuali così com'è nel cloud. Spostando direttamente l'ambiente server corrente nell'infrastruttura distribuita come servizio, è possibile ridurre i costi, aumentare la sicurezza e l'affidabilità. I risparmi si ottengono grazie a tecniche come l'esecuzione dei carichi di lavoro su macchine virtuali dalle dimensioni appropriate. Oggi, le funzionalità di macchine e macchine virtuali locali vanno infatti ben oltre le esigenze quotidiane dei rivenditori. Le macchine virtuali devono essere in grado di gestire i picchi di business stagionali, che si verificano solo poche volte all'anno. Pertanto, l'utente paga anche per le capacità non usate negli altri periodi. Con Azure, è possibile selezionare la macchina virtuale delle dimensioni più appropriate per il ciclo di business corrente.

Per il rehosting in Azure, sono previste tre fasi:

  • Analisi: identificare ed eseguire l'inventario delle risorse locali, ad esempio applicazioni, carichi di lavoro, rete e sicurezza. Al termine di questa fase, si avrà una documentazione completa del sistema esistente.
  • Migrazione: spostare ogni sottosistema dall'ambiente locale in Azure. Durante questa fase si userà Azure come estensione del data center con le applicazioni che continuano a comunicare.
  • Ottimizzazione: mentre si spostano i sistemi in Azure, assicurarsi che tutto sia delle dimensioni corrette.do corretto. Se l'ambiente mostra che sono allocate troppe risorse ad alcune macchine virtuali, modificare il tipo delle macchine virtuali in modo che abbia una combinazione più appropriata di CPU, memoria e archiviazione locale.

Analisi

Seguire questa procedura:

  1. Elencare i server e le applicazioni locali. Questo processo si basa su un agente o uno strumento di gestione per raccogliere metadati sui server, le applicazioni eseguite sui server, l'utilizzo del server corrente e il modo in cui sono configurati i server e le relative applicazioni. Il risultato è un report di tutti i server e le applicazioni nell'ambiente.
  2. Identificare le dipendenze. È possibile usare gli strumenti per identificare quali server e applicazioni comunicano fra di loro. Il risultato sono una o più mappe di tutti i carichi di lavoro e le applicazioni. Queste mappe vengono inserite nella pianificazione della migrazione.
  3. Analizzare le configurazioni. L'obiettivo è scoprire quali tipi di macchine virtuali è necessario eseguire in Azure. Il risultato è un report su tutte le applicazioni che è possibile spostare in Azure. Possono essere ulteriormente classificati come avere:
    1. Nessuna modifica
    2. Modifiche di base, ad esempio cambiamenti al nome
    3. Modifiche minori, ad esempio a una piccola parte di codice
    4. Carichi di lavoro incompatibili che richiedono uno sforzo aggiuntivo per lo spostamento
  4. Creare il budget. Ora si dispone di un elenco che indica CPU, memoria e altri elementi simili, oltre ai requisiti di ciascuna applicazione. Posizionare tali carichi di lavoro su macchine virtuali di dimensioni appropriate. I costi di fatturazione della piattaforma cloud sono basati sull'utilizzo. Esistono degli strumenti per associare le proprie esigenze alle macchine virtuali di Azure delle dimensioni ideali. Se si esegue la migrazione di macchine virtuali Windows o SQL Server, è consigliabile esaminare anche il Vantaggio Azure Hybrid, riducendo le spese in Azure.

Microsoft offre diversi strumenti per analizzare e catalogare i sistemi. Se si esegue VMware, è possibile usare Azure Migrate per facilitare l'individuazione e la valutazione. Lo strumento identifica le macchine che possono essere spostate in Azure, consiglia quale di queste eseguire e stima il costo del carico di lavoro. Per gli ambienti Hyper-V, usare Azure Site Recovery Deployment Planner. Per le migrazioni di grandi dimensioni in cui è necessario spostare centinaia o più macchine virtuali, è possibile collaborare con un partner di migrazione di Azure. il quale dispone di tutte le competenze e l'esperienza necessarie per spostare i carichi di lavoro.

Migrazione

Iniziare a pianificare i servizi da spostare nel cloud e in quale ordine. Poiché questa fase due implica lo spostamento dei carichi di lavoro, seguire questo ordine:

  1. Creare la rete.
  2. Incorporare un sistema di identità (MICROSOFT Entra ID).
  3. Effettuare il provisioning dei componenti di archiviazione in Azure.

Durante la migrazione, l'ambiente di Azure è un'estensione della rete locale. È possibile connettere le reti logiche con Rete virtuale di Azure. È possibile scegliere di usare Azure ExpressRoute per mantenere le comunicazioni tra la rete e Azure su una connessione privata che non si collega mai a Internet. È anche possibile usare una VPN da sito a sito dove un Gateway VPN comunica con il dispositivo VPN locale e dove tutto il traffico viene inviato in modo sicuro con comunicazioni crittografate tra Azure e la rete. Qui è disponibile un'architettura di riferimento che spiega come configurare una rete ibrida.

Dopo aver configurato la rete, pianificare la continuità aziendale. Si consiglia di usare la replica in tempo reale per spostare i dati in locale nel cloud e per garantire che i dati esistenti e quelli nel cloud siano identici. I negozi di e-commerce non chiudono mai: la duplicazione permette di passare dall'ambiente locale ad Azure con un impatto minimo per i clienti.

Iniziare a spostare dati, applicazioni e i server correlati in Azure. Molte società usano il servizio Azure Site Recovery per eseguire la migrazione ad Azure. Il servizio ha come obiettivo la continuità aziendale e il ripristino di emergenza (BCDR). Si tratta della soluzione ideale per una migrazione da un ambiente locale in Azure. Il team di implementazione può leggere i dettagli di come eseguire la migrazione di macchine virtuali locali e server fisici in Azure qui.

Dopo aver spostato un sottosistema in Azure, testarlo per assicurarsi che tutto funzioni come previsto. Una volta risolti eventuali problemi, spostare i carichi di lavoro in Azure.

Ottimizzazione

A questo punto, si continuerà a monitorare l'ambiente e modificare le opzioni di calcolo sottostanti in modo da adattare i carichi di lavoro man mano che cambia l'ambiente. Gli utenti che monitorano l'integrità dell'ambiente devono tenere d'occhio l'utilizzo delle singole risorse. L'obiettivo è raggiungere un utilizzo del 75-90% sulla maggior parte delle macchine virtuali. In caso ci siano macchine virtuali con un utilizzo estremamente basso, è consigliabile aggiungere nuove applicazioni o trasferirle sulle macchine virtuali in Azure che, per il minimo costo possibile, garantiscono un livello di prestazioni appropriato.

Azure offre anche strumenti per ottimizzare l'ambiente. Azure Advisor monitora i componenti dell'ambiente e fornisce consigli personalizzati basati su procedure consigliate. Seguendo questi consigli, è possibile migliorare le prestazioni, la sicurezza e la disponibilità delle risorse usate nelle applicazioni. Il portale di Azure presenta anche informazioni sull'integrità delle applicazioni. Le macchine virtuali devono poter sfruttare le estensioni macchina virtuale di Azure per Linux e Windows. Tali estensioni permettono la configurazione post-distribuzione, l'implementazione di caratteristiche antivirus, il monitoraggio delle app e molto altro. È possibile anche sfruttare molti altri servizi di Azure per la diagnostica di rete, l'utilizzo del servizio e gli avvisi tramite servizi quali Network Watcher, Mapping dei servizi, Application Insights e Log Analytics.

Mentre parti dell'organizzazione ottimizzano il sistema in Azure, i team di sviluppo possono iniziare a passare alla fase di post-migrazione: il refactoring.

Refactoring

Una volta completata la migrazione, l'applicazione di e-commerce può iniziare a sfruttare il nuovo ambiente in Azure. La fase di refactoring non deve necessariamente essere eseguita solo dopo aver spostato l'intero ambiente. Se il team CMS ha eseguito la migrazione ma il team ERP no, non ci sono problemi. Il team CMS può comunque iniziare le fasi di refactoring. Questa fase prevede l'utilizzo di altri servizi di Azure per ottimizzare i costi, l'affidabilità e le prestazioni effettuando il refactoring delle applicazioni. Nella fase "lift and shift" si sfruttano unicamente l'hardware e il sistema operativo gestiti dal provider, mentre in questo modello è possibile trarre vantaggi anche dai servizi cloud per ridurre i costi. Si continua a usare l'applicazione corrente, con alcune modifiche minori a codice o configurazione, collegandola ai nuovi servizi di infrastruttura come contenitori, database e sistemi di gestione delle identità.

Le operazioni di refactoring non apportano modifiche rilevanti a codice o configurazione. Ci si concentrerà più tempo sull'automazione principalmente perché le tecnologie adottate in questa fase si basano sullo scripting per creare e distribuire le risorse; le istruzioni di distribuzione sono uno script.

Anche se è possibile usare molti servizi di Azure, ci si focalizzerà su quelli usati più spesso nella fase di refactoring: contenitori, servizi app e servizi di database. Perché si prende in considerazione il refactoring? Il refactoring offre una base di codice solida che riduce i costi a lungo termine mantenendo entro termini ragionevoli il debito del codice.

I contenitori consentono di creare un'aggregazione di applicazioni. A causa del modo in cui un contenitore virtualizza il sistema operativo, è possibile aggregare più contenitori in un'unica macchina virtuale. È possibile spostare un'applicazione in un contenitore senza sostanzialmente apportare modifiche al codice, ma potrebbe essere necessario modificare la configurazione. Questa attività comporta anche la scrittura di script che aggregano le applicazioni in un contenitore. I team di sviluppo si dedicheranno alla scrittura e al test di questi script durante il refactoring. Azure supporta la containerizzazione tramite il servizio Azure Kubernetes e il relativo Registro Azure Container che è possibile usare per gestire le immagini del contenitore.

Per i servizi app, è possibile sfruttare i vantaggi dei vari servizi di Azure. Ad esempio, l'infrastruttura esistente può gestire un ordine del cliente inserendo i messaggi in una coda, ad esempio RabbitMQ. Ad esempio, un messaggio consiste nell'addebitare al cliente un secondo consiste nel spedire l'ordine. Quando si esegue il rehosting, RabbitMQ viene inserito in una macchina virtuale separata. Durante il refactoring, è possibile aggiungere una coda o un argomento bus di servizio alla soluzione. A questo punto, è possibile riscrivere il codice RabbitMQ e interrompere l'uso delle macchine virtuali che hanno fornito la funzionalità di accodamento. Se non è possibile riscrivere tutto il codice contemporaneamente, è possibile usare modelli come il bridge di messaggistica per colmare il divario tra le code di messaggistica. In questo modo è possibile eseguire la migrazione degli endpoint uno alla volta anziché tutti contemporaneamente. In entrambi i casi, quando tutti gli endpoint sono stati spostati in bus di servizio di Azure, questo sostituisce un set di macchine virtuali con un servizio di accodamento messaggi sempre attivo per un costo inferiore. Altri servizi app sono disponibili nella portale di Azure.

Per i database, è possibile spostare il database da una macchina virtuale a un servizio. Azure supporta i carichi di lavoro di SQL Server con database SQL di Azure e Istanza gestita di database SQL di Azure. Il servizio di migrazione dei dati valuta il database, informa del lavoro da svolgere prima della migrazione e sposta il database dalla macchina virtuale al servizio. Azure supporta i servizi con motori MySQL, PostgreSQL e altri database.

Ricostruzione

Fino a questo punto, si è provato a ridurre al minimo le modifiche apportate ai sistemi di e-commerce. I sistemi già funzionanti venivano infatti lasciati inalterati. Ora si illustrerà come sfruttare davvero al meglio il cloud. Questa fase vuole riesaminare l'applicazione esistente, adottando in modo aggressivo i servizi e le architetture PaaS o persino SaaS. Il processo comprende modifiche importanti per aggiungere nuove funzionalità o per ridefinire l'architettura dell'applicazione per il cloud. Le API gestite sono un nuovo concetto che sfrutta i vantaggi dei sistemi cloud. Il sistema diventa più facile da gestire grazie alla creazione di API per la comunicazione tra i servizi. Un secondo vantaggio è la possibilità di ottenere informazioni dettagliate sui dati disponibili. Ciò viene fatto spostandosi a un'architettura con microservizio e API e usando l'apprendimento automatico e altri strumenti per analizzare i dati.

Microservizi + API

I microservizi comunicano tramite API con connessione esterna. Ogni servizio è indipendente e deve implementare una singola funzionalità di business, ad esempio: consigliare articoli ai clienti, gestire i carrelli degli acquisti e così via. La scomposizione di un'applicazione in microservizi richiede tempo e pianificazione. Non esistono regole fisse per definire un microservizio, ma l'idea generale comporta la riduzione dell'unità distribuibile a un set di componenti che vengono quasi sempre modificati insieme. I microservizi consentono di distribuire le modifiche in base alle necessità, riducendo il carico di test per l'applicazione in generale. Alcuni servizi potrebbero avere dimensioni molto ridotte. Per tali servizi, una soluzione senza server con Funzioni di Azure è ideale per aumentare il numero di chiamanti in base alla necessità, senza consumare risorse in caso di inattività. Altri servizi saranno suddivisi in base alle funzionalità aziendali: gestire prodotti, acquisire gli ordini dei clienti e così via.

I meccanismi senza server presentano comunque anche dei lati negativi: in caso di carichi leggeri, possono rispondere con lentezza poiché alcuni server nel cloud impiegano alcuni secondi per configurare ed eseguire il codice. Per le parti dell'ambiente usate principalmente dai clienti, è necessario garantire che questi ultimi siano in grado di trovare i prodotti, effettuare ordini, richiedere resi e così via, il tutto con rapidità e semplicità. Ogni volta che le prestazioni rallentano, si rischia di perdere clienti nel processo di acquisto. Se si dispone di funzionalità che devono intervenire rapidamente, ricompilarle come unità distribuibili singolarmente nel servizio Azure Kubernetes. Per altri casi, ad esempio i servizi che richiedono alcuni fattori come memoria capiente, diverse CPU e un ampio spazio di archiviazione locale, è consigliabile ospitare il microservizio nella propria macchina virtuale.

Ogni servizio usa un'API per l'interazione. L'accesso all'API può essere diretto al microservizio, ma ciò richiede che tutti gli utenti che comunicano con il servizio conoscano la topologia dell'applicazione. Un servizio come Gestione API consente di pubblicare le API in modo centrale. Tutte le applicazioni si connettono semplicemente al servizio Gestione API. Gli sviluppatori possono individuare le API disponibili. Il servizio Gestione API offre anche funzionalità per ottimizzare le prestazioni dell'ambiente di vendita. Il servizio può limitare l'accesso all'API da diverse parti dell'applicazione per evitare i colli di bottiglia, ma anche le risposte della cache ai valori in cambiamento lento, la conversione da JSON a XLM e altro ancora. Un elenco completo dei criteri è disponibile qui.

Sfruttare i dati e Azure Marketplace

Poiché tutti i dati e i sistemi si trovano in Azure, è possibile incorporare con facilità altre soluzioni SaaS nell'azienda. È possibile eseguire alcune operazioni immediatamente. Ad esempio, usare Power BI per mettere insieme varie origini dati e creare così visualizzazioni e report, ottenendo informazioni dettagliate.

Ora verranno analizzate le offerte in Azure Marketplace, con cui è possibile ottimizzare l'inventario, gestire le campagne in base agli attributi cliente e presentare gli elementi corretti a ciascun cliente in base a preferenze e cronologia. La configurazione dei dati per il funzionamento nelle offerte Marketplace richiederà del tempo.

Componenti

Utilizzato durante il rehosting:

  • Azure Advisor è un consulente cloud personalizzato che facilita l'applicazione delle procedure consigliate per ottimizzare le distribuzioni di Azure.
  • Il servizio Azure Migrate valuta i carichi di lavoro locali per la migrazione ad Azure.
  • Azure Site Recovery orchestra e gestisce il ripristino di emergenza per le macchine virtuali di Azure, le macchine virtuali locali e i server fisici.
  • Rete virtuale di Azure consente a diversi tipi di risorse di Azure, ad esempio Macchine virtuali di Azure, di comunicare in modo sicuro tra di esse, con Internet e con le reti locali.
  • Azure ExpressRoute consente di estendere le reti locali nel cloud Microsoft tramite una connessione privata fornita da un provider di connettività.

Utilizzato durante il refactoring:

  • Il servizio Azure Kubernetes gestisce l'ambiente Kubernetes ospitato consentendo di distribuire e gestire applicazioni in contenitori in modo semplice e rapido senza competenze nell'orchestrazione di contenitori.
  • Database SQL di Azure è un servizio gestito di database relazionale per utilizzo generico in Microsoft Azure. Supporta strutture come dati relazionali, JSON, spaziali e XML. Il database SQL offre database SQL singoli gestiti, database SQL gestiti in un pool elastico e istanze gestite di SQL.

Utilizzato durante la ricompilazione:

  • Azure API Management consente alle organizzazioni di pubblicare API per consentire a sviluppatori esterni, partner e interni di sfruttare tutte le potenzialità dei rispettivi dati e servizi.
  • Funzioni di Azure rappresenta una soluzione efficace per eseguire facilmente piccole parti di codice, o "funzioni", nel cloud.
  • Power BI è un gruppo di strumenti di Analisi business che consente di distribuire informazioni dettagliate in tutta l'organizzazione.

Conclusione

Spostare il sistema di e-commerce in Azure richiede un approccio definito, analisi e pianificazione. È stato illustrato un approccio in tre fasi: rehosting, refactoring e ricompilazione. Ciò consente alle organizzazioni di passare da uno stato di lavoro a un altro, riducendo al minimo la quantità di modifiche a ogni passaggio. I rivenditori possono anche scegliere di effettuare il refactoring o anche di ricompilare i componenti, saltando la fase di rehosting. Molte volte, si avrà un percorso chiaro in avanti alla modernizzazione, quando possibile. Man mano che si acquisisce esperienza in esecuzione in Azure, si noteranno altre opportunità per aggiungere nuove funzionalità, ridurre i costi e migliorare il sistema complessivo.

Collaboratori

Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.

Autori principali:

Passaggi successivi

Molti team di sviluppo pensano di eseguire contemporaneamente il rehosting e il refactoring per risolvere il debito tecnico e sfruttare la capacità in modo più efficace. Eseguire il rehosting prima dei passaggi successivi comporta vari vantaggi. In futuro sarà più semplice diagnosticare e risolvere eventuali problemi della distribuzione nel nuovo ambiente. Ciò a sua volta fornisce ai team di sviluppo e supporto tempo sufficiente per familiarizzarsi con Azure come nuovo ambiente. Quando si inizia a effettuare il refactoring e la ricompilazione del sistema, lo si farà su un'applicazione funzionante e stabile. In questo modo vengono effettuate modifiche più ridotte, mirate e frequenti.

Documentazione sui prodotti: