Pubblicare API interne per utenti esterni

Gestione API di Azure
Gateway applicazione di Azure
Azure DevOps
Monitoraggio di Azure
Rete virtuale di Azure

In questo scenario un'organizzazione consolida più API internamente usando il servizio Gestione API distribuito in una rete virtuale.

Architettura

Diagramma dell'architettura che mostra il ciclo di vita completo delle API interne usate dagli utenti esterni.

Scaricare un file di Visio di questa architettura.

Il diagramma precedente illustra un ciclo di vita completo delle API interne usate dagli utenti esterni.

Flusso di dati

Il flusso di dati è il seguente:

  1. Gli sviluppatori controllano il codice in un repository GitHub connesso a un agente della pipeline CI/CD installato in una macchina virtuale di Azure.
  2. L'agente esegue il push della compilazione nell'applicazione API ospitata nell'ambiente del servizio app ilB.
  3. Azure Gestione API usa le API precedenti tramite intestazioni HOST specificate nei criteri di Gestione API.
  4. Gestione API usa il nome DNS del ambiente del servizio app per tutte le API.
  5. gateway applicazione espone Gestione API portale per sviluppatori e API.
  6. Azure DNS privato viene usato per instradare il traffico interno tra ambiente del servizio app, Gestione API e gateway applicazione.
  7. Gli utenti esterni usano il portale per sviluppatori esposti per usare le API tramite l'INDIRIZZO IP pubblico di 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 alle applicazioni Web.
  • L'ambiente del servizio app del servizio di bilanciamento del carico interno è una funzionalità del servizio app di Azure che fornisce un ambiente completamente isolato e dedicato per l'esecuzione sicura di app del servizio app di Azure 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.

Alternativi

Dettagli dello scenario

In questo scenario, un'organizzazione ospita più API usando applicazione Azure Ambiente del servizio (ILB ASE) e vuole consolidare queste API internamente usando Azure Gestione API (APIM) distribuite all'interno di un 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 gateway applicazione di Azure richieste di inoltro al servizio interno Gestione API, che a sua volta utilizza le API distribuite nell'ambiente del servizio app.

  • Le API Web sono ospitate tramite il protocollo HTTPS protetto e usano un certificato TLS.
  • Il gateway applicazione viene configurato anche sulla porta 443 per garantire 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.
  • Sfruttare i criteri all'interno di Gestione API di Azure per aggiungere un'intestazione HOST per l'API ospitata nell'ambiente del servizio app. In questo modo il servizio di bilanciamento del carico dell'ambiente del servizio app inoltrerà correttamente la richiesta.
  • Gestione API accetta la voce DNS dell'ambiente del servizio app per tutte le app ospitate in Ambienti del servizio app. Aggiungere un criterio APIM per impostare in modo esplicito l'intestazione HOST per consentire al servizio di bilanciamento del carico del servizio app di distinguere tra 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 dell'Rete virtuale.

Potenziali casi d'uso

  • Sincronizzare le informazioni sull'indirizzo del cliente internamente dopo che il cliente apporta una modifica.
  • Attirare gli sviluppatori alla piattaforma esponendo asset dati univoci.

Considerazioni

Queste considerazioni implementano i pilastri di Azure Well-Architected Framework, che è un set di set di set di guide 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 multi-area per una disponibilità più elevata e anche 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 APIM 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 negli ambienti servizio app devono essere sufficienti per gestire gli errori nelle richieste, che vengono infine gestite dal servizio di 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 dei dati e dei 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 l'ambiente del servizio app sono già distribuiti nell'infrastruttura protetta (rete virtuale di Azure). È possibile integrare i gateway applicazione con Microsoft Defender per Cloud per offrire un modo semplice per evitare, 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 Sviluppatore per la valutazione delle funzionalità di Gestione API. 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 le indicazioni sui prezzi degli ambienti di servizio app.

È possibile configurare gateway applicazione prezzi a seconda del livello e delle risorse necessarie.

Efficienza delle prestazioni

L'efficienza delle prestazioni è la capacità di ridimensionare il carico di lavoro soddisfare in modo efficiente le richieste poste dagli utenti. Per altre informazioni, vedere Panoramica dell'efficienza delle prestazioni.

Scalabilità

È possibile ridimensionare Gestione API istanze a seconda di un numero di fattori, ad esempio il numero e la frequenza di 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 di istanza di scalabilità orizzontale sono disponibili nei livelli Basic, Standard e Premium, ma sono associati a un limite superiore di scalabilità 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.

servizio app Ambienti sono progettati per la scalabilità con limiti in base al piano tariffario. È possibile configurare le app ospitate in ambienti servizio app per aumentare il numero di istanze o aumentare le dimensioni (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

  1. È necessario acquistare un nome di dominio personalizzato.
  2. È 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.
  3. Questa distribuzione specifica usa il nome di dominio contoso.org e un certificato TLS con caratteri jolly per il dominio.
  4. La distribuzione usa i nomi delle risorse e gli spazi di indirizzi menzionati nella sezione Distribuzione. È possibile configurare i nomi delle risorse e gli spazi degli indirizzi.

Distribuzione e combinazione dei componenti

Distribuisci in Azure

È necessario configurare ulteriormente i componenti distribuiti usando il modello di Resource Manager precedente come indicato di seguito:

  1. 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/24
      • apimsubnet per il servizio Gestione API interno: 10.0.1.0/28
      • asesubnet per l'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
  2. Servizio DNS privato (anteprima pubblica) dal momento che se si aggiunge un servizio DNS, la rete virtuale deve essere vuota.

  3. Ambiente del servizio app con opzione per il servizio di bilanciamento del carico interno (ILB): aseinternal (DNS: aseinternal.contoso.org). Al termine della distribuzione, caricare il certificato basato su caratteri jolly per il servizio di bilanciamento del carico interno

  4. Piano di servizio app la cui località è l'ambiente del servizio app

  5. Un'app per le API (Servizi app per semplicità): srasprest (URL: https://srasprest.contoso.org) - API Web basata su MVC ASP.NET. Dopo la distribuzione, configurare:

    • App Web per usare il certificato TLS
    • Application Insights alle 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 DNS privato 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 l'app per le API internamente, creare una macchina virtuale di test all'interno della subnet della rete virtuale
  6. Creare Gestione API servizio:apim-internal

  7. Configurare il servizio per la connessione alla rete virtuale interna nella subnet: apimsubnet. Al termine della distribuzione, seguire questa procedura aggiuntiva:

    • Configurare domini personalizzati per i servizi di Gestione API di Azure tramite TLS
      • Portale API (api.contoso.org)
      • Portale per sviluppatori (portal.contoso.org)
      • Nella sezione delle API configurare le app dell'ambiente del servizio app usando il criterio del nome DNS dell'ambiente del servizio app aggiunto per l'intestazione HOST relativa all'app Web
      • Usare la macchina virtuale di test precedente creata per testare il servizio di Gestione API interno nella Rete virtuale

    Nota

    Il test delle APIM dall'portale di Azure non funzionerà, perché api.contoso.org non è in grado di essere risolto pubblicamente. *

  8. Configurare la gateway applicazione (WAF V1) 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.

Dopo aver completato correttamente i 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 di gateway applicazione: ase-appgtwy.westus.cloudapp.azure.com. Verificare che sia possibile raggiungere il portale di sviluppo dal portale pubblico e che sia possibile testare le API dei servizi API usando il portale di Azure.

Nota

Non è consigliabile usare lo stesso URL per gli endpoint interni ed esterni per i servizi APIM(anche se in questa demo entrambi gli URL sono uguali). Se si sceglie di avere URL diversi per endpoint interni ed esterni, è possibile usare gateway applicazione WAF v2, che supporta il reindirizzamento http e molto altro ancora.

Autori di contributi

Questo articolo viene gestito da Microsoft. È stato originariamente scritto dal collaboratore seguente.

Autore principale:

Altri collaboratori:

Per visualizzare profili LinkedIn non pubblici, accedere a LinkedIn.

Passaggi successivi

Eseguire la migrazione di un'app Web con Azure Gestione API