In questo scenario, un'organizzazione consolida internamente più API usando Azure Gestione API distribuita all'interno di una rete virtuale.
Architettura
Scaricare un file di Visio di questa architettura.
Il diagramma precedente illustra un ciclo di vita completo delle API interne utilizzate dagli utenti esterni.
Flusso di dati
Il flusso di dati è il seguente:
- Gli sviluppatori archiviano il codice in un repository GitHub connesso a un agente della pipeline CI/CD installato in una macchina virtuale di Azure.
- L'agente esegue il push della compilazione nell'applicazione API ospitata in ambiente del servizio app il bilanciamento del carico interno.
- Azure Gestione API usa le API precedenti tramite intestazioni HOST specificate nei criteri di Gestione API.
- Gestione API usa il nome DNS ambiente del servizio app per tutte le API.
- gateway applicazione espone il portale per sviluppatori e API di Gestione API.
- Azure DNS privato viene usato per instradare il traffico internamente tra ambiente del servizio app, Gestione API e gateway applicazione.
- Gli utenti esterni usano il portale per sviluppatori esposto per usare le API tramite l'indirizzo IP pubblico gateway applicazione.
Componenti
- La rete virtuale di Azure consente alle risorse di Azure di comunicare in modo sicuro tra loro, con Internet e con le reti locali.
- DNS privato di Azure consente di risolvere i nomi di dominio in una rete virtuale senza dover aggiungere una soluzione DNS personalizzata.
- Gestione API di Azure consente alle organizzazioni di pubblicare API per consentire a sviluppatori esterni, partner e interni di usare i rispettivi dati e servizi.
- gateway applicazione è un servizio di bilanciamento del carico del traffico Web che consente di gestire il traffico verso le applicazioni Web.
- Il servizio di bilanciamento del carico interno ambiente del servizio app è una funzionalità del servizio di app Azure che fornisce un ambiente completamente isolato e dedicato per l'esecuzione sicura di app servizio app su larga scala.
- Azure DevOps è un servizio per gestire il ciclo di vita dello sviluppo e include funzionalità per la pianificazione e la gestione dei progetti, la gestione del codice, la compilazione e il rilascio.
- Application Insights è un servizio estendibile di gestione delle prestazioni delle applicazioni per sviluppatori Web su più piattaforme,
- Azure Cosmos DB è il servizio di database di Microsoft multimodello distribuito a livello globale.
Alternative
- In uno scenario di trasferimento in modalità lift-and-shift di Azure distribuito in una rete virtuale di Azure, i server back-end possono essere indirizzati direttamente tramite indirizzi IP privati.
- Se si usano risorse locali, l'istanza di Gestione API potrebbe tornare al servizio interno privatamente tramite una connessione VPN di Azure Gateway VPN e IPSec (Site-to-Site Internet Protocol Security) o ExpressRoute che crea uno scenario ibrido di Azure e locale.
- È possibile usare provider DNS open source o esistenti invece del servizio DNS basato su Azure.
- Le API interne distribuite all'esterno di Azure possono comunque trarre vantaggio dall'esposizione delle API tramite il servizio Gestione API.
Dettagli dello scenario
In questo scenario, un'organizzazione ospita più API usando app Azure lication Service Environment (ILB ambiente del servizio app) e vuole consolidare queste API internamente usando Azure Gestione API (APIM) distribuito all'interno di una rete virtuale. L'istanza interna di Gestione API potrebbe anche essere esposta agli utenti esterni per consentire l'utilizzo del potenziale completo delle API. Questa esposizione esterna può essere ottenuta usando le richieste di inoltro del gateway di app Azure cation al servizio Gestione API interno, che a sua volta utilizza le API distribuite nel ambiente del servizio app.
- Le API Web sono ospitate tramite il protocollo HTTPS protetto e usano un certificato TLS.
- Il gateway applicazione è configurato anche sulla porta 443 per le chiamate in uscita protette e affidabili.
- Il servizio Gestione API è configurato per l'uso di domini personalizzati tramite certificati TLS.
- Esaminare la configurazione di rete consigliata per Ambienti del servizio app
- È necessario menzionare in modo esplicito la porta 3443 consentendo a Gestione API di gestire tramite il portale di Azure o PowerShell.
- Usare i criteri all'interno di Gestione API per aggiungere un'intestazione HOST per l'API ospitata in ambiente del servizio app. In questo modo, il servizio di bilanciamento del carico ambiente del servizio app inoltra correttamente la richiesta.
- Il Gestione API accetta la voce DNS ambiente del servizio app per tutte le app ospitate in ambiente del servizio app. Aggiungere un criterio di Gestione API per impostare in modo esplicito l'intestazione HOST per consentire al servizio di bilanciamento del carico ambiente del servizio app di distinguere tra le app nel ambiente del servizio app.
- Considerare l'integrazione con Azure Application Insights, che espone le metriche tramite Monitoraggio di Azure per il monitoraggio.
- Se si usano pipeline CI/CD per la distribuzione di API interne, è consigliabile creare un proprio agente ospitato in una macchina virtuale all'interno della rete virtuale.
Potenziali casi d'uso
- Sincronizzare le informazioni sull'indirizzo del cliente internamente dopo che il cliente apporta una modifica.
- Attirare gli sviluppatori nella piattaforma esponendo asset di dati univoci.
Considerazioni
Queste considerazioni implementano i pilastri di Azure Well-Architected Framework, che è un set di principi guida che possono essere usati per migliorare la qualità di un carico di lavoro. Per altre informazioni, vedere Microsoft Azure Well-Architected Framework.
Affidabilità
L'affidabilità garantisce che l'applicazione possa soddisfare gli impegni che l'utente ha preso con i clienti. Per altre informazioni, vedere Panoramica del pilastro dell'affidabilità."
Disponibilità
È possibile distribuire il servizio Azure Gestione API come distribuzione in più aree per una disponibilità più elevata e anche per ridurre le latenze. Questa funzionalità è disponibile solo in modalità Premium. Il servizio Gestione API in questo scenario specifico utilizza le API di Ambienti del servizio app. È anche possibile usare Gestione API per le API ospitate nell'infrastruttura locale interna.
Ambienti del servizio app può usare i profili di Gestione traffico per distribuire il traffico ospitato in Ambienti del servizio app per una maggiore scalabilità e disponibilità.
Resilienza
Anche se questo scenario di esempio parla di più sulla configurazione, le API ospitate nelle ambiente del servizio app devono essere sufficientemente resilienti per gestire gli errori nelle richieste, che alla fine vengono gestite dal servizio Gestione API e gateway applicazione. Prendere in considerazione i modelli di ripetizione dei tentativi e Interruttore nella progettazione dell'API. Per indicazioni generali sulla progettazione di soluzioni resilienti, vedere Progettazione di applicazioni resilienti per Azure.
Sicurezza
La sicurezza offre garanzie contro attacchi intenzionali e l'abuso di dati e sistemi preziosi. Per altre informazioni, vedere Panoramica del pilastro della sicurezza.
Poiché lo scenario di esempio precedente è ospitato completamente in una rete interna, Gestione API e ambiente del servizio app sono già distribuiti nell'infrastruttura protetta (Azure Rete virtuale). È possibile integrare gateway applicazione con Microsoft Defender per il cloud per offrire un modo semplice per prevenire, rilevare e rispondere alle minacce all'ambiente. Per indicazioni generali sulla progettazione di soluzioni sicure, vedere la documentazione sulla sicurezza di Azure.
Ottimizzazione dei costi
L'ottimizzazione dei costi riguarda l'analisi dei modi per ridurre le spese non necessarie e migliorare l'efficienza operativa. Per altre informazioni, vedere Panoramica del pilastro di ottimizzazione dei costi.
Gestione API è disponibile in quattro livelli: Developer, Basic, Standard e Premium. È possibile trovare indicazioni dettagliate sulla differenza tra questi livelli nella guida ai prezzi di Gestione API di Azure.
I clienti possono sfruttare la scalabilità di Gestione API aggiungendo o rimuovendo unità. La capacità di ogni unità dipende dal livello.
Nota
È possibile usare il livello Developer per la valutazione delle funzionalità di API Management. Non è consigliabile usare il livello Developer per l'ambiente di produzione.
Per visualizzare i costi previsti ed eseguire la personalizzazione in base alle specifiche esigenze di distribuzione, è possibile modificare il numero di unità di scala e di istanze del servizio app nel calcolatore dei prezzi di Azure.
Analogamente, è possibile trovare il materiale sussidiario sui prezzi di ambiente del servizio app s.
È possibile configurare gateway applicazione prezzi in base al livello e alle risorse necessari.
Efficienza prestazionale
L'efficienza delle prestazioni è la capacità di dimensionare il carico di lavoro per soddisfare in modo efficiente le richieste poste dagli utenti. Per altre informazioni, vedere Panoramica del pilastro dell'efficienza delle prestazioni.
Scalabilità
È possibile aumentare le istanze di Gestione API a seconda di diversi fattori, ad esempio il numero e la frequenza delle connessioni simultanee, il tipo e il numero di criteri configurati, le dimensioni delle richieste e delle risposte e le latenze back-end nelle API. Le opzioni dell'istanza di scalabilità orizzontale sono disponibili nei livelli Basic, Standard e Premium, ma sono vincolate da un limite di scalabilità superiore nei livelli Basic e Standard. Le istanze vengono definite unità ed è possibile aumentarne il numero fino a un massimo di due nel livello Basic, quattro nel livello Standard e qualsiasi numero nel livello Premium. Sono disponibili anche opzioni di Dimensionamento automatico per consentire l'aumento del numero di istanze in base a regole.
ambiente del servizio app sono progettati per la scalabilità con limiti basati sul piano tariffario. È possibile configurare le app ospitate nei ambiente del servizio app per aumentare le istanze (numero di istanze) o aumentare le prestazioni (dimensioni dell'istanza) a seconda dei requisiti dell'applicazione.
Il dimensionamento automatico del gateway applicazione di Azure è incluso nello SKU con ridondanza della zona in tutte le aree di Azure globali. Vedere la funzionalità di anteprima pubblica per informazioni sul dimensionamento automatico del gateway applicazione.
Distribuire lo scenario
Prerequisiti e presupposti
- È necessario acquistare un nome di dominio personalizzato.
- È necessario un certificato TLS (è stato usato un certificato con caratteri jolly dal servizio Certificati di Azure) per usarlo per tutti i domini personalizzati. È anche possibile ottenere un certificato autofirmato per gli scenari di test di sviluppo.
- Questa distribuzione specifica usa il nome di dominio contoso.org e un certificato TLS con caratteri jolly per il dominio.
- La distribuzione usa i nomi delle risorse e gli spazi indirizzi indicati nella sezione Distribuzione. È possibile configurare i nomi delle risorse e gli spazi indirizzi.
Distribuzione e combinazione dei componenti
È necessario configurare ulteriormente i componenti distribuiti usando il modello di Resource Manager precedente come indicato di seguito:
Rete virtuale con le configurazioni seguenti:
- Nome:
ase-internal-vnet
- Spazio indirizzi per la rete virtuale: 10.0.0.0/16
- Quattro subnet
backendSubnet
per il servizio DNS: 10.0.0.0/24apimsubnet
per il servizio Gestione API interno: 10.0.1.0/28asesubnet
per ambiente del servizio app ILB: 10.0.2.0/24- Subnet di macchina virtuale per macchine virtuale di test e macchina virtuale dell'agente ospitato DevOps interna: 10.0.3.0/24
- Nome:
DNS privato servizio (anteprima pubblica) perché l'aggiunta di un servizio DNS richiede che la rete virtuale sia vuota.
- Per altre informazioni, vedere le indicazioni per la distribuzione
ambiente del servizio app con l'opzione bilanciamento del carico interno (ILB): (DNS:
aseinternal
aseinternal.contoso.org
). Al termine della distribuzione, caricare il certificato basato su caratteri jolly per il servizio di bilanciamento del carico internoservizio app Pianificare con ambiente del servizio app come posizione
Un'app per le API (servizio app per semplicità) -
srasprest
(URL:https://srasprest.contoso.org
) - ASP.NET API Web basata su Model-View-Controller (MVC). Dopo la distribuzione, configurare:- App Web per l'uso del certificato TLS
- Application Insights per le app precedenti:
api-insights
- Creare un servizio Azure Cosmos DB per le API Web ospitate interne alla rete virtuale:
noderestapidb
- Creare voci DNS nella zona di DNS privato di Azure creata
- È possibile usare Azure Pipelines per configurare gli agenti in Macchine virtuali per distribuire il codice per l'app Web nella rete interna
- Per testare internamente l'app per le API, creare una macchina virtuale di test all'interno della subnet della rete virtuale
Creare Gestione API servizio:
apim-internal
Configurare il servizio per connettersi alla rete virtuale interna nella subnet:
apimsubnet
. Al termine della distribuzione, seguire questa procedura aggiuntiva:- Configurare domini personalizzati per i servizi Gestione API con TLS
- Portale API (
api.contoso.org
) - Dev Portal (
portal.contoso.org
) - Nella sezione API configurare le app ambiente del servizio app usando il nome DNS ambiente del servizio app aggiunto Criteri per intestazione HOST per l'app Web
- Usare la macchina virtuale di test creata precedente per testare il servizio Gestione API interno nella Rete virtuale
- Portale API (
Nota
Il test delle API di Gestione API dal portale di Azure non funzionerà perché
api.contoso.org
non è in grado di essere risolto pubblicamente.*- Configurare domini personalizzati per i servizi Gestione API con TLS
Configurare il gateway applicazione per accedere al servizio API:
apim-gateway
sulla porta 80. Aggiungere certificati TLS al gateway applicazione e alle impostazioni HTTP e probe di integrità corrispondenti. Configurare anche le regole e i listener per l'uso del certificato TLS.
Al termine dei passaggi precedenti, configurare le voci DNS nelle voci CNAME del registrar Web di api.contoso.org
e portal.contoso.org
con il nome DNS pubblico gateway applicazione: ase-appgtwy.westus.cloudapp.azure.com
. Verificare di essere in grado di raggiungere il portale di sviluppo da Pubblico e di poter testare le API dei servizi di Gestione API usando il portale di Azure.
Nota
Non è consigliabile usare lo stesso URL per gli endpoint interni ed esterni per i servizi di Gestione API.
Collaboratori
Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.
Autore principale:
- Srikant Sarwa | Senior Customer Engineer
Altri contributori:
- Shawn Kupfer | Writer tecnico
Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.
Passaggi successivi
- Esercitazione: Importare e pubblicare la prima API
- Esercitazione: Creare e pubblicare un prodotto
- Esercitazione: Pubblicare più versioni dell'API