Condividi tramite


Architecture best practices for Azure API Management

Azure API Management è una piattaforma di gestione e un gateway per le API in tutti gli ambienti, inclusi quelli ibridi e multi-cloud. Come soluzione PaaS (Platform as a Service), Gestione API consente di supportare il ciclo di vita dell'API del carico di lavoro.

Questo articolo presuppone che, come architetto, tu abbia esaminato l'albero delle decisioni dei servizi di integrazione e abbia scelto API Management come servizio di integrazione per il tuo carico di lavoro. Le linee guida presenti in questo articolo forniscono raccomandazioni architettoniche che sono collegate ai principi dei pilastri del Framework Well-Architected.

Importante

Come usare questa guida

Ogni sezione include un elenco di controllo di progettazione che presenta aree di interesse per l'architettura insieme alle strategie di progettazione adattate all'ambito tecnologico.

Sono incluse anche raccomandazioni per le funzionalità tecnologiche che possono aiutare a materializzare tali strategie. Le raccomandazioni non rappresentano un elenco completo di tutte le configurazioni disponibili per Gestione API o i server API back-end del carico di lavoro. Vengono invece elencate le raccomandazioni principali mappate alle prospettive di progettazione. Usa le raccomandazioni per costruire una prova del concetto o per ottimizzare gli ambienti esistenti.

Architettura di base che illustra le raccomandazioni principali: architettura della zona di destinazione di Gestione API.

Technology scope

Questa revisione è incentrata sulle decisioni correlate per la risorsa di Azure seguente:

  • Gestione API di Azure

L'ambito di questa guida è il servizio Gestione API, principalmente il componente gateway (piano dati), che proxy le richieste API dalle applicazioni client alle API back-end ospitate in diverse piattaforme o percorsi cross-premise. L'architettura del carico di lavoro deve tenere conto del piano di controllo di Gestione API e dei componenti correlati, ad esempio le applicazioni client che accedono al gateway e alle API back-end che elaborano le richieste indirizzate. Integra anche il supporto dei servizi di Azure, tra cui rete, monitoraggio, gestione delle identità e altre funzionalità.

Questa guida non riguarda il Centro API di Azure. Descrive gli argomenti a livello di API in relazione a Gestione API anziché fornire una prospettiva ben strutturata sulle considerazioni sulla progettazione delle API.

Annotazioni

Non tutte le raccomandazioni si applicano a tutti i livelli di servizio di API Management. Molti dei consigli presenti in questa guida si concentrano sui livelli Standard v2 e Classic Premium di API Management, che sono i livelli di produzione consigliati per la maggior parte dei carichi di lavoro aziendali.

Importante

Il livello Premium v2 con funzionalità aziendali è disponibile in anteprima. Per determinare se la progettazione deve basarsi sulle funzionalità di accesso anticipato o sulle funzionalità disponibili a livello generale, valutare le sequenze temporali di progettazione e implementazione in relazione alle informazioni disponibili sui percorsi di rilascio e migrazione di Premium v2.

Affidabilità

Lo scopo del pilastro Affidabilità è fornire funzionalità continue attraverso la costruzione di una resilienza sufficiente e la capacità di recuperare rapidamente dai guasti.

principi di progettazione dell'affidabilità forniscono una strategia di progettazione di alto livello applicata per singoli componenti, flussi di sistema e sistema nel suo complesso.

Elenco di controllo della progettazione

Avvia la strategia di progettazione in base alla checklist di revisione del design per l'Affidabilità. Determina la sua rilevanza per i requisiti aziendali, tenendo conto dei livelli e delle funzionalità di gestione API e delle sue dipendenze. Estendere la strategia per includere altri approcci in base alle esigenze.

  • Valutare le funzionalità del gateway per l'affidabilità e la ridondanza: Determinare il livello e le funzionalità di Gestione API necessari per soddisfare i requisiti di affidabilità del carico di lavoro per ogni ambiente.

    Valutare le funzionalità di ridondanza del gateway, incluse le zone di disponibilità, più unità gateway, più aree e aree di lavoro. Queste funzionalità sono tutte supportate nel livello Premium. Il livello Developer, che non include un contratto di servizio, non è adatto per i carichi di lavoro di produzione. Prendere in considerazione i compromessi dell'adozione di funzionalità come la memorizzazione nella cache esterna che può introdurre potenziali punti di errore e colli di bottiglia delle prestazioni.

  • Esaminare le funzionalità di osservabilità: Prendere in considerazione le funzionalità di osservabilità del servizio, inclusi i log e le metriche di Monitoraggio di Azure, Application Insights, l'analisi predefinita e la diagnostica predefinita. Usare queste funzionalità per monitorare i segnali di affidabilità del carico di lavoro.

    Si consideri ad esempio l'uso degli avvisi di Monitoraggio di Azure per segnalare potenziali problemi con il gateway di Gestione API o le relative dipendenze.

  • Esaminare le strategie di scalabilità: Definire i criteri per scalare il gateway aggiungendo unità per mantenere l'affidabilità del servizio. Valutare se ridimensionare in base a richieste, eccezioni o entrambe. Valutare l'impatto del ridimensionamento del componente gateway su altri componenti del carico di lavoro. Ad esempio, il suo effetto sullo spazio degli indirizzi di rete e sulle funzionalità di ridimensionamento dei back-end.

  • Isolare i carichi di lavoro critici: Determinare se è necessario l'isolamento del calcolo per soddisfare i requisiti del carico di lavoro, ad esempio la sovranità dei dati o l'ottimizzazione delle prestazioni, nelle API. Usare gateway dedicati per API critiche e gateway condivisi per API meno critiche.

    Scegliere un approccio di isolamento, ad esempio usando un gateway dell'area di lavoro dedicato o un'istanza separata di Gestione API. Per più istanze, mantieni gli ambienti sincronizzati come parte delle tue pratiche di distribuzione sicura.

  • Allineamento dell'obiettivo del livello di servizio (SLO): Tenere conto dell'ambito del contratto di servizio del gateway quando si impostano i contratti di servizio del carico di lavoro. Il servizio fornisce il proprio contratto di servizio, ma è anche necessario tenere conto dell'affidabilità prevista di altri componenti del carico di lavoro, ad esempio i back-end dell'API.

  • Risolvere gli errori back-end: Pianificare gli errori di back-end previsti e imprevisti. Testare le esperienze client in questi scenari. Valutare i criteri del gateway per migliorare la resilienza e migliorare l'esperienza client. Concentrarsi su quote, limiti di frequenza, criteri di ripetizione dei tentativi, interruttori di circuito back-end, bilanciamento del carico e gestione delle eccezioni, come documentato nelle specifiche api.

  • Definire le strategie di test: Usare una soluzione di test, ad esempio Test di carico di Azure dall'interno della rete, per riflettere i carichi di lavoro di produzione effettivi. Don't rely on published throughput or other estimates which might not apply to your workload.

  • Pianificare il ripristino di emergenza: Esaminare le opzioni per il backup e il ripristino dell'infrastruttura e delle API del gateway. Le funzionalità di backup e ripristino predefinite potrebbero essere utili in alcuni scenari. Tuttavia, è possibile considerare anche opzioni gestite dai clienti, come strumenti APIOps e infrastruttura come codice (IaC). Sviluppare strategie per la gestione di altri dati di sistema, incluse le sottoscrizioni utente.

Consigli

Queste raccomandazioni sull'affidabilità possono essere applicate al servizio stesso o al traffico che passa attraverso le API e i relativi criteri. I designatori (servizio) o (API) indicano se una raccomandazione è destinata al servizio o alle API.

Raccomandazione Beneficio
(Servizio) Abilitare la ridondanza zonale nel piano Premium e distribuire almeno tre unità.

In questa configurazione, in condizioni operative normali, tutte le unità di scala in tutte le zone configurate sono attive e gestiscono il traffico del gateway.

In qualsiasi scenario attivo-attivo, pianificare di scalare orizzontalmente nelle zone attive rimanenti per gestire il traffico che le unità originariamente elaboravano nella zona guasta.
La resilienza viene garantita durante un'interruzione del data center all'interno di un'area. Durante una perdita completa del data center, il traffico dell'API continuerà a scorrere attraverso le unità rimanenti distribuite in altre zone.
(Servizio) Abilitare la scalabilità orizzontale automatica in base alle richieste di traffico.

Nelle distribuzioni con più aree, le aree secondarie non dispongono di funzionalità di scalabilità orizzontale o scalabilità automatica. È necessario implementare una funzione personalizzata o un'app per la logica che viene attivata in risposta agli avvisi delle metriche di Monitoraggio di Azure per gestire le rettifiche delle unità in base alla richiesta.
Sono garantite risorse sufficienti per soddisfare la domanda dai client API, che impedisce errori a causa di capacità insufficiente.
(Servizio) Usare una topologia a più aree per supportare la resilienza in caso di errore completo a livello di area.

Questo approccio richiede di coordinarsi con altri componenti nel carico di lavoro e di comprendere le caratteristiche di failover pianificate. In qualsiasi scenario attivo-attivo, pianificare il supporto della scalabilità orizzontale nelle aree attive rimanenti per gestire il traffico elaborato originariamente dall'area inattiva.

Assicurarsi che la topologia multiregione sia allineata ai requisiti di conformità per i dati in transito o i dati risiedenti nella cache.
La resilienza affidabile viene fornita durante un'interruzione completa a livello di area, che consente di garantire il traffico dell'API ininterrotto tramite unità distribuite in altre aree.
(Servizio) Isolare le API non correlate con aree di lavoro o altre istanze di Gestione API. L'impatto degli errori causati da errori di configurazione o interruzioni è ridotto al minimo separando le API tra istanze di calcolo diverse.
(API) Testare accuratamente le espressioni e la logica dei criteri e associarle a tecniche di gestione degli errori resilienti nei criteri di gestione API. L'esperienza client è migliorata impedendo nuove origini di errori nel gateway e fornendo una normale riduzione delle prestazioni o una gestione sicura degli errori temporanei.
(Service & API) Raccogliere le metriche di affidabilità.

Le metriche di affidabilità dell'API tipiche includono:

- Limiti di rate e violazioni delle quote.
- Frequenza degli errori in base ai codici di stato HTTP.
- Deviazioni della frequenza delle richieste dalla linea di base.
- Controlli di salute, inclusa la salute delle dipendenze.
Vengono identificate le deviazioni dal comportamento previsto e dalle linee di base passate. Questi dati possono essere usati per tracciare le cause radice, ad esempio il comportamento dell'utente modificato, l'interferenza dalle operazioni di routine, gli impatti imprevisti delle nuove funzionalità o gli errori non pianificati nel carico di lavoro.
(Service & API) Usare le funzionalità di backup e ripristino integrate in Gestione API come parte del piano di ripristino di emergenza. Integrare tali funzionalità con gli artefatti IaC e i processi APIOps per una soluzione affidabile in grado di gestire vari scenari, tra cui il coordinamento del ripristino con le dipendenze e i back-end. La continuità aziendale viene garantita consentendo il ripristino del gateway API e il ripristino delle API definite dopo una perdita completa del sistema.

Sicurezza

Lo scopo del pilastro Sicurezza è fornire garanzie di riservatezza, integrità e disponibilità al carico di lavoro.

I principi di progettazione della sicurezza forniscono una strategia di progettazione di alto livello per raggiungere quegli obiettivi applicando approcci alla progettazione tecnica per proteggere il gateway di gestione delle API.

Annotazioni

L'elenco di controllo e le raccomandazioni di questa sezione sono incentrati sulla protezione della risorsa del gateway di Gestione API. La protezione delle API stesse è affrontata solo brevemente. Per altre informazioni, vedere Mitigare i 10 principali rischi per la sicurezza dell'API secondo OWASP nella Gestione delle API.

Elenco di controllo della progettazione

Avvia la tua strategia di progettazione in base alla checklist di revisione della progettazione per la sicurezza e identifica vulnerabilità e controlli per migliorare il profilo di sicurezza. Estendere la strategia per includere altri approcci in base alle esigenze.

  • Stabilire una baseline di sicurezza: Esaminare la baseline di sicurezza per Gestione API e incorporare le misure applicabili nella baseline.

  • Proteggere la pipeline di distribuzione: Identificare i singoli utenti e i ruoli di controllo degli accessi in base al ruolo necessari per gestire la piattaforma del servizio, l'integrazione continua e le pipeline di distribuzione continua (CI/CD) e le singole API. Ensure that only authorized individuals have access to manage the service and its APIs.

  • Valutare la riservatezza dei dati: Se i dati sensibili passano attraverso richieste API e risposte nel gateway di Gestione API, garantire la protezione per tutto il ciclo di vita. Tenere conto dei requisiti di protezione dei dati diversi tra aree diverse. Valutare le funzionalità del servizio, ad esempio regioni multiple, per isolare dati specifici. Verificare anche se la strategia di memorizzazione nella cache è allineata a questi requisiti di isolamento.

  • Sviluppare strategie di segmentazione nei gateway condivisi: Se l'istanza di Gestione API ospita API per più team del carico di lavoro, usare le aree di lavoro per separare ruoli, reti ed eventualmente gateway. Questo approccio garantisce che ogni team abbia accesso e controllo appropriati sulle API gestite limitando l'accesso alle API di altri team.

  • Prendere in considerazione i controlli di rete: Identificare i requisiti e le opzioni per isolare o filtrare il traffico del gateway in ingresso e in uscita usando reti virtuali. Determinare se l'accesso al gateway può essere limitato tramite collegamento privato di Azure o se è necessario l'accesso pubblico al gateway. Valutare se l'architettura deve includere un web application firewall, ad esempio Web application firewall di Azure nel gateway applicazione di Azure o frontdoor di Azure, per ottenere l'isolamento di rete necessario e filtrare il traffico di rete.

  • Prendere in considerazione le funzionalità per l'autenticazione e l'autorizzazione dell'API: Valutare l'uso di provider di identità come Microsoft Entra ID, che include gruppi predefiniti o ID esterno di Microsoft Entra per visualizzare le richieste del gateway e abilitare l'autorizzazione OAuth per le API back-end.

  • Crittografare il traffico di rete: Identificare le versioni e le crittografie del protocollo TLS (Transport Layer Security) più sicure che i carichi di lavoro possono supportare. Non richiedere versioni TLS non sicure. Usa TLS 1.3 quando supportato dai tuoi client.

  • Eseguire la modellazione delle minacce in Gestione API e ridurre la superficie di attacco: Determinare se specifici componenti di Gestione API, ad esempio l'API di gestione diretta o l'accesso pubblico al portale per sviluppatori, possono essere disabilitati, limitati o rimossi.

  • Identificare i segreti richiesti dai carichi di lavoro: L'operazione gateway potrebbe richiedere certificati, chiavi API o altri valori segreti. Esaminare i requisiti e le funzionalità di Azure Key Vault per archiviare segreti e certificati. In alternativa, esaminare le funzionalità predefinite di Gestione API, ad esempio valori denominati e certificati gestiti.

Consigli

Queste raccomandazioni sulla sicurezza possono essere applicate al servizio stesso o al traffico che passa attraverso le API e i relativi criteri. I designatori (servizio) o (API) indicano se una raccomandazione è destinata al servizio o alle API.

Raccomandazione Beneficio
(Servizio) Disabilitare l'API di gestione diretta, deprecata. Usare Azure Resource Manager come piano di controllo. L'area superficiale del servizio viene ridotta rimuovendo un punto di accesso del piano di controllo.
(Servizio) Limitare l'esposizione del gateway in base esclusivamente alla posizione da cui i client legittimi si connettono.

- Usare inserimento nella rete virtuale senza un indirizzo IP pubblico quando il traffico di tutti i client può essere instradato attraverso una rete virtuale. Usare un gruppo di sicurezza di rete (NSG) per limitare ulteriormente il traffico solo agli indirizzi IP di origine client previsti.

- Usare l'integrazione della rete virtuale con il gateway applicazione o il Front Door di Azure se il traffico deve provenire da Internet. Configurare il NSG per accettare solo traffico da un unico punto di ingresso.
La riservatezza del traffico di rete è protetta limitando l'esposizione agli intervalli di indirizzi IP di origine che devono contenere client legittimi. Queste restrizioni bloccano l'accesso da origini che non devono avviare comunicazioni client legittime. La limitazione dell'esposizione a origini di traffico legittime migliora la riservatezza, l'integrità e la disponibilità del servizio.
(Servizio) Disabilitare il portale per sviluppatori se non è in uso. Se il portale è in uso, disabilitare l'esperienza di iscrizione, disabilitare l'accesso anonimo e limitare l'accesso solo ai percorsi di rete attendibili. La superficie del servizio e la possibilità di errori di configurazione o di abbandono vengono ridotte.
(Servizio) Impostare in modo esplicito le versioni, i protocolli e le crittografie TLS più stretti supportati per i client e i back-end. Le versioni e le crittografie supportate vengono ridotte solo a quelle opzioni supportate dai client e dai back-end. Questo approccio consente di garantire che le connessioni assegnano priorità alle connessioni di livello più elevato possibili per la riservatezza.
(Servizio) Archiviare certificati personalizzati in Key Vault. La funzionalità di gestione dei certificati viene fornita tramite Key Vault, che supporta la rotazione di routine e controlla l'accesso ai certificati.
(Servizio) I back-end devono accettare solo il traffico dai gateway API e devono bloccare tutto l'altro traffico. Il traffico dannoso viene impedito di superare la sicurezza e altri problemi trasversali vengono gestiti dal gateway.
(Servizio) Per le istanze di Gestione API che ospitano API per più team o carichi di lavoro segmentati, è necessario progettare una solida strategia di isolamento del controllo di accesso. Usare le aree di lavoro o implementare un processo APIOps rigoroso per ottenere questa strategia.

Teams deve avere accesso solo alle API di cui sono proprietari. Non dovrebbero avere accesso ad altre API che potrebbero essere ospitate nella stessa istanza.
Lo spostamento laterale da parte di utenti malintenzionati da un set di API compromesso in altre API non correlate viene ridotto.
(API) Archiviare i segreti in Key Vault ed esporli ai criteri tramite valori denominati. Non usare Key Vault per archiviare informazioni non riservate. Usare le proprietà dei valori nominati direttamente per tali valori. La rotazione dei segreti viene incoraggiata tramite un singolo piano di gestione in Key Vault, simile all'approccio usato per i certificati. Questo processo garantisce che la Gestione API venga aggiornata di conseguenza. I valori nominali garantiscono anche un'esperienza uniforme nella configurazione delle politiche sia per i segreti che per i non-segreti. Tutti gli accessi segreti vengono anche verificati in Key Vault per fornire una cronologia degli accessi. Solo l'archiviazione di segreti in Key Vault riduce al minimo la dipendenza da Key Vault e non trasforma Key Vault in un servizio di configurazione dell'applicazione.
(API) Usa diverse identità gestite assegnate dall'utente per le diverse API utilizzando il criterio authentication-managed-identity. Ogni API è abilitata per avere un'identità indipendente, che supporta gli obiettivi di segmentazione tramite l'accesso con privilegi minimi per ogni API. Offre anche una migliore controllabilità nei sistemi back-end.
(API) Quando possibile, richiedere ai client di eseguire l'autenticazione con i flussi OAuth 2.0 invece di usare solo chiavi precondivise, incluse le chiavi di sottoscrizione o i certificati client. L'identificazione client a scopo di controllo è migliorata, la rotazione delle chiavi viene eliminata e il carico sui client per proteggere i segreti viene ridotto rispetto all'uso di chiavi precondivise.
(API) Sopprimere le intestazioni HTTP dalle risposte API usando il criterio set-header che potrebbe esporre dettagli di implementazione. Il costo per gli utenti malintenzionati è aumentato trattenendo le informazioni sull'implementazione.
(API) Non usare la traccia API nell'ambiente di produzione. I dati sensibili non possono essere esposti nelle tracce delle richieste.
(API) Usare Defender per le API. Vengono fornite informazioni dettagliate sulla sicurezza delle API, raccomandazioni e rilevamento delle minacce.
(API) Proteggere le risorse back-end delegando i controlli di sicurezza delle chiavi nei criteri API, ad esempio validate-jwt, ip-filter, validate-headers, validate-content. La quantità di traffico non legittima che raggiunge i servizi back-end viene ridotta eseguendo controlli di sicurezza nel gateway. Questo approccio di offload consente di proteggere l'integrità e la disponibilità di tali risorse.
(API) Applicare le procedure sdl (Security Development Lifecycle) ai criteri API cambiano allo stesso modo in cui si applicano le modifiche proposte al codice dell'applicazione nel carico di lavoro. Le politiche vengono eseguite con una visione altamente privilegiata del traffico dell'API. È impedito aggirare le protezioni back-end per la riservatezza, l'integrità e la disponibilità da parte di un gateway API compromesso.
(Service & API) Usare le identità gestite per le dipendenze di servizio e API. Le connessioni ad Azure Key Vault, Azure Event Hubs e altre dipendenze, come certificati e valori nominati, vengono stabilite senza basarsi su segreti precondivisi.
(Service & API) Quando possibile, connettersi a dipendenze come Key Vault, Event Hubs e back ends tramite connessioni di rete private. La riservatezza del traffico è protetta non esponendo il traffico oltre la rete privata.
(Service & API) Il traffico client destinato alle API esposte a Internet deve prima passare attraverso un web application firewall, ad esempio Web Application Firewall, prima di raggiungere Gestione API. Proteggere anche gli endpoint pubblici usando Protezione DDoS di Azure. La quantità di traffico non legittima che raggiunge il gateway e i servizi back-end viene ridotta eseguendo controlli di sicurezza con un web application firewall. Ridurre questo traffico aiuta a proteggere l'integrità e la disponibilità di queste risorse.
(Service & API) Valutare e abilitare tutti i controlli di Criteri di Azure di conformità alle normative rilevanti per il carico di lavoro. L'istanza di Gestione API è allineata al comportamento desiderato e rimane allineata man mano che il carico di lavoro si evolve con criteri di sicurezza.

Ottimizzazione dei costi

L'ottimizzazione dei costi è incentrata su rilevare modelli di spesa, assegnare priorità agli investimenti in aree critiche e ottimizzare in altri per soddisfare il budget dell'organizzazione rispettando i requisiti aziendali.

I principi di progettazione di Ottimizzazione costi forniscono una strategia di progettazione di alto livello per raggiungere tali obiettivi e fare compromessi in base alle esigenze nella progettazione tecnica correlata a Gestione API e al relativo ambiente.

Elenco di controllo della progettazione

  • Considerare il modello di costo di gestione delle API: Usare il calcolatore prezzi di Azure con i vantaggi e i criteri dell'account dell'organizzazione per SLA e scalabilità per sviluppare stime accurate dei costi dell'uso di un livello di servizio di gestione delle API. Determinare se è necessario un modello di chargeback e determinare come calcolarlo in base a metriche, tag e token.

    The service cost model is mainly influenced by the service tier, number of units, and number of gateways. Valutare i costi aggiuntivi associati alla gestione di un'unità di riserva o all'implementazione di una configurazione di ripristino di emergenza attivo-passivo.

    Se si implementano le aree di lavoro, valutare i costi dell'uso di gateway dell'area di lavoro separati e condivisi per soddisfare i requisiti distinti del flusso API di vari team o stakeholder dell'API.

  • Stimare i costi di ridimensionamento: Sviluppare criteri di scalabilità per mantenere un utilizzo elevato delle risorse del gateway. Valutare i costi di base in un ambiente di pre-produzione ed eseguire test per modellare i costi di scalabilità in base al traffico previsto del carico di lavoro.

    Progettare una strategia di mitigazione per impedire l'uso improprio dei gateway, che potrebbe portare a una costosa espansione delle risorse oltre l'utilizzo preventivo.

  • Valutare le configurazioni e i criteri del servizio: Le funzionalità come il limite di velocità e la concorrenza limite possono essere usate come tecniche di ottimizzazione dei costi per gestire i carichi delle richieste.

  • Ottimizzare il posizionamento della logica: Valutare se i server back-end sono più convenienti per la logica di elaborazione o se il gateway deve gestire l'utilizzo delle risorse. Il gateway è un componente forte per l'implementazione di problematiche trasversali, ma può eseguire funzioni eccessive in determinati scenari. Identificare le attività di elaborazione delle richieste con un numero elevato di risorse eseguite dal gateway e determinare se lo spostamento di tale logica nei server back-end può ridurre i costi.

Consigli

Queste raccomandazioni per l'ottimizzazione dei costi possono essere applicate al servizio stesso o al traffico che passa attraverso le API e i relativi criteri. I designatori (servizio) o (API) indicano se una raccomandazione è destinata al servizio o alle API.

Raccomandazione Beneficio
(Servizio) Usare il livello meno costoso che supporta i requisiti del carico di lavoro. Ad esempio, scegliere un livello Standard anziché un livello Premium se il carico di lavoro non trarrà vantaggio dalla funzionalità aggiunta in modo che giustifichi il ritorno sugli investimenti (ROI). È possibile evitare l'acquisto di funzionalità inutilizzate o sottoutilizzate.
(Servizio) Usare livelli di non produzione o infrastruttura temporanea in ambienti inferiori, ad esempio ambienti di sviluppo, distribuzioni proof-of-concept e attività iniziali di modellazione dei costi. I costi delle risorse vengono risparmiati per gli ambienti che possono rimanere utili senza eseguire completamente il mirroring dei requisiti di configurazione o tempo di attività di produzione.
(Servizio) Aumentare le prestazioni quando la domanda diminuisce. Configure autoscale rules or other automated processes to reduce units when gateway capacity drops below defined thresholds. I costi non necessari vengono ridotti in base alla capacità corrispondente alla domanda.
(Servizio) Calcolare i vantaggi dei costi di un modello federato per la gestione API usando le aree di lavoro per gestire le API, fornendo allo stesso tempo l'isolamento del team. La superficie di distribuzione e gestione è ridotta. Questo approccio mira a ottenere economie di scala a partire dal tempo e dagli acquisti di risorse.
(Servizio) Disattivare le aree di lavoro quando non sono più in uso. La spesa per le risorse inutilizzate viene evitata.
(Servizio) Utilizzare la cache predefinita se i dati memorizzati nella cache del carico di lavoro rientrano nei vincoli della cache predefinita nel livello selezionato. Vengono evitati i costi relativi all'acquisto e alla gestione di una cache redis esterna.
(Servizio) Bloccare il traffico dannoso prima che raggiunga il gateway usando controlli di rete, protezione DDoS e web application firewall. I livelli specifici di Gestione API comportano addebiti in base al numero di operazioni di richiesta HTTP elaborate dal gateway. Di conseguenza, il traffico indesiderato, ad esempio le richieste generate dal bot, può aumentare i costi.

Valutare il costo del meccanismo di blocco rispetto al costo stimato della riduzione delle operazioni HTTP per valutare se questo approccio ha un ROI.
Gli addebiti causati da un numero eccessivo di operazioni HTTP dannose o dannose sul gateway vengono ridotti.
(API) Ottimizzare le espressioni dei criteri e l'elaborazione e il codice per evitare un utilizzo eccessivo delle risorse di calcolo, ad esempio processore, rete o memoria. La distribuzione non necessaria di più unità per fornire capacità per le implementazioni di criteri non ottimizzate e il codice viene evitato.
(API) Valutare il costo del posizionamento della logica tra il gateway, il back-end o il punto di ingresso pubblico, ad esempio Frontdoor di Azure. La stessa elaborazione può spesso verificarsi a uno di questi livelli, ognuno con i propri compromessi. Tuttavia, alcuni livelli potrebbero offrire risparmi sui costi a causa della capacità inutilizzata disponibile a tale livello. Ad esempio, la logica di caching implementata originariamente nel back-end potrebbe essere più conveniente al livello del gateway usando la cache predefinita. Questo approccio riduce il sovraccarico di rete e calcolo aggiuntivo nei servizi back-end. Il carico sulle risorse a costi elevati viene ridotto al minimo inserendo le funzionalità nel livello più conveniente. Questo approccio sposta i carichi di lavoro a livelli con capacità di riserva o opzioni di calcolo a costi inferiori.

Eccellenza operativa

L'eccellenza operativa si concentra principalmente sulle procedure per le pratiche di sviluppo , l'osservabilità e la gestione dei rilasci.

I principi di progettazione di eccellenza operativa forniscono una strategia di progettazione di alto livello per raggiungere tali obiettivi relativi ai requisiti operativi del flusso di lavoro.

Inizia la tua strategia di progettazione basandoti sulla checklist di revisione del design per l'Eccellenza Operativa per definire i processi di osservabilità, test e distribuzione legati alla Gestione API.

Elenco di controllo della progettazione

  • Esaminare le conoscenze e le competenze chiave necessarie per gestire il servizio: Le aree includono il ciclo di vita dell'API, i processi DevOps, la rete e la connettività, il monitoraggio e l'osservabilità e lo sviluppo software. Questo approccio include la configurazione dei criteri, gli unit test e la creazione di pipeline CI/CD.

  • Prendere in considerazione le esigenze della documentazione: Le organizzazioni devono impegnarsi a documentare i processi per la configurazione a livello di servizio e a livello di API, le operazioni del ciclo di vita e i diversi modelli di accesso per i team API.

  • Valutare gli strumenti standard per supportare le operazioni del servizio. Ad esempio, adottare metodi APIOps , ad esempio GitOps e CI/CD, per pubblicare LE API e gestire le configurazioni API. Usare gli strumenti IaC per le modifiche alla configurazione a livello di servizio. Progettare artefatti riutilizzabili che possono passare facilmente dagli ambienti di sviluppo all'ambiente di produzione. Prendere in considerazione l'integrazione di un linter come Spectral, autogestito o integrato in un servizio di Azure come centro API di Azure, nelle pipeline di approvazione api.

  • Determinare le metriche operative chiave e i log: Esaminare le metriche per la produzione. Queste metriche includono la capacità del gateway, l'utilizzo della CPU, l'utilizzo della memoria e il numero di richieste. Esaminare i log e gli strumenti di osservabilità, ad esempio Monitoraggio di Azure e Application Insights. Determinare le strategie e gli strumenti necessari per gestire efficacemente grandi volumi di dati osservazionali negli ambienti di produzione. Determinare le query che forniscono informazioni dettagliate interattive sia per l'operatore del gateway che per gli stakeholder che monitorano API ospitate specifiche.

  • Pianificare test regolari dei carichi di lavoro di produzione usando test di carico.

  • Identificare le attività operative oltre ai processi CI/CD o IaC che richiedono l'automazione. Pianificare l'automazione in aree come gestione del codice sorgente dei criteri di Gestione API, criteri di Azure e configurazioni specifiche del portale per sviluppatori.

Consigli

Queste raccomandazioni di eccellenza operativa possono essere applicate al servizio stesso o al traffico che passa attraverso le API e i relativi criteri. I designatori (servizio) o (API) indicano se una raccomandazione è destinata al servizio o alle API.

Raccomandazione Beneficio
(Servizio) Configurare i log delle risorse di diagnostica di Azure per Gestione API. I log generati dalla piattaforma sono disponibili per eseguire query per operazioni di routine, esigenze su richiesta o scenari urgenti, ad esempio i controlli di sicurezza.
(Servizio) Usare Griglia di eventi di Azure per l'automazione in base a eventi significativi generati dall'istanza di Gestione API, ad esempio APICreated. Le attività di automazione o notifica possono essere compilate in base agli eventi principali del ciclo di vita che si verificano nell'istanza di Gestione API.
(Servizio) Evitare di usare un gateway self-hosted se un'unità gateway ospitata da Microsoft funziona nello scenario in uso. Le attività di automazione o notifica possono essere compilate in base agli eventi principali del ciclo di vita che si verificano nell'istanza di Gestione API.
(Servizio) Applicare tutti i criteri predefiniti di Criteri di Azure che consentono di gestire l'istanza e vincolare l'istanza per allinearlo ai requisiti del carico di lavoro, inclusi i requisiti di sicurezza. For example, use deny policies to prevent APIs from being exposed over HTTP or to prevent the enabling of the direct management REST API. Usare i criteri di controllo se i criteri di negazione non sono disponibili o creare criteri di negazione personalizzati se è importante per il carico di lavoro. L'istanza di Gestione API è allineata alla progettazione e rimane allineata man mano che il carico di lavoro si evolve.
(Servizio) Acquisire familiarità con la funzionalità Diagnostica e risoluzione dei problemi nel portale di Azure.

Utilizza il Network status blade nel portale per risolvere problemi di connettività di rete.
Gli utenti dell'ingegneria dell'affidabilità del sito possono identificare e risolvere i problemi di prestazioni del gateway, disponibilità del servizio e connettività di rete in tutti gli ambienti.
(API) Usare Hub eventi per gestire flussi di log o eventi dalle chiamate API che richiedono reazioni quasi in tempo reale o operazioni con intervallo di tempo breve. Viene fornita una disponibilità quasi in tempo reale delle voci di log. Il ritardo di inserimento dei dati di log che si verifica quando si esegue la registrazione in Monitoraggio di Azure all'interno delle API viene evitato.
(API) Sostenere l'uso del tracciamento delle API nello sviluppo per aiutare gli sviluppatori a comprendere l'implementazione delle politiche. La produttività degli sviluppatori è ottimizzata fornendo informazioni dettagliate sull'implementazione dei criteri all'interno di un'API. Senza questa funzionalità, gli sviluppatori devono introdurre hack nell'implementazione dei criteri per ottenere informazioni dettagliate.
(API) Definire sempre i back-end usando la funzionalità back-end di Gestione API. Fare riferimento a questi back-end in base all'ID nei criteri usando set-backend-service. I back-end con bilanciamento del carico devono essere definiti come un pool backend. Le modifiche alla connessione backend si applicano a tutte le API che utilizzano il backend senza richiedere aggiornamenti al codice della policy individuale. Il rischio di errori di configurazione o di modifiche ai criteri API trascurate è ridotto e gli scenari in cui più API condividono lo stesso back-end sono adatte tramite questo livello di astrazione della configurazione.
(API) Progettare l'approccio di controllo delle versioni delle API per allinearsi alle funzionalità di controllo delle versioni e revisione di Gestione API. Considerare questo approccio nelle operazioni di distribuzione dell'API. Una strategia di controllo delle versioni delle API supportata per impostazione predefinita da Gestione API viene usata per sfruttare le funzionalità predefinite anziché creare soluzioni personalizzate.
(Service & API) Definire un processo operativo coerente e sostenibile per l'aggiunta, la modifica e l'eliminazione di API. Determinare se gestire questa esperienza manualmente tramite il portale o implementarla tramite un processo APIOps. Preferire l'uso di un approccio basato su IaC anziché un approccio basato sul portale.

La rappresentazione di Gestione API nell'API di Resource Manager è costituita da molte risorse figlio, quindi è importante adottare un approccio a più livelli per la gestione basata su IaC di questa raccolta di risorse.
Le specifiche dell'API e le relative implementazioni del gateway sono integrate nei processi di controllo delle modifiche del carico di lavoro. Questo approccio impedisce la gestione delle modifiche alle API back-end in modo diverso da come vengono esposte ai client API tramite il gateway.

Efficienza delle prestazioni

L'efficienza delle prestazioni riguarda mantenere l'esperienza utente anche quando si verifica un aumento del carico gestendo la capacità. La strategia include il ridimensionamento delle risorse, l'identificazione dei potenziali colli di bottiglia e la loro risoluzione, e l'ottimizzazione per prestazioni di picco.

I principi di progettazione efficienza delle prestazioni forniscono una strategia di progettazione di alto livello per raggiungere tali obiettivi di capacità rispetto all'utilizzo previsto.

Inizia la tua strategia di progettazione utilizzando la lista di controllo per la revisione del design per l'efficienza delle prestazioni per definire una base di riferimento basata su indicatori di prestazione chiave per la gestione delle API.

Elenco di controllo della progettazione

  • Definire gli obiettivi di prestazioni: Le metriche chiave per valutare le prestazioni del gateway di Gestione API includono le metriche della capacità, ad esempio le percentuali di utilizzo della CPU e della memoria per l'infrastruttura del gateway, la durata della richiesta e la velocità effettiva delle richieste. Nelle distribuzioni con più aree definire gli obiettivi di prestazioni per ogni area. Il cliente deve definire soglie di ridimensionamento appropriate in base a modelli di traffico, carichi di lavoro API e tempi di ridimensionamento.

  • Raccogliere dati sulle prestazioni: Esaminare le funzionalità di analisi predefinite, metriche di Monitoraggio di Azure, log di Monitoraggio di Azure, Application Insights e Hub eventi per raccogliere e analizzare le prestazioni a diversi livelli di granularità.

  • Esaminare come identificare i problemi di prestazioni in tempo reale: Gli indicatori per i problemi di prestazioni in tempo reale includono la disponibilità del servizio di Azure, gli errori di risposta HTTP e gli errori generati nella sezione Diagnosticare e risolvere i problemi nel portale. Risolvere i problemi di prestazioni e disponibilità usando Application Insights, le query Kusto e le raccomandazioni della diagnostica di Gestione API nel portale di Azure.

  • Prestazioni dei test: Testare le prestazioni in condizioni di produzione usando test di carico.

  • Valutare i servizi adiacenti che potrebbero migliorare le prestazioni: I criteri di memorizzazione nella cache o una cache esterna possono migliorare le prestazioni di operazioni API specifiche. Il Front Door di Azure e il Gateway Applicazione sono scelte comuni per l'offload del TLS.

  • Esaminare i limiti e i vincoli documentati:Gestione API presenta limiti e vincoli. Esaminare i vincoli documentati e confrontarli con i requisiti del carico di lavoro per verificare se è necessario progettare una soluzione che eviti questi vincoli.

Consigli

Queste raccomandazioni sull'efficienza delle prestazioni possono essere applicate al servizio stesso o al traffico che passa attraverso le API e i relativi criteri. I designatori (servizio) o (API) indicano se una raccomandazione è destinata al servizio o alle API.

Raccomandazione Beneficio
(Servizio) Ridimensionare dinamicamente in base alla domanda. Configura le autoscale rules o altri processi automatizzati per adattare le unità del gateway a una capacità di utilizzo target. L'elasticità viene ottenuta in base all'utilizzo simultaneo, che impedisce l'esaurimento delle risorse delle unità attualmente operative o la sovra-allocazione della capacità.
(API) Minimizzare le attività di elaborazione dispendiose, come la generazione di dimensioni consistenti del payload bufferizzato, utilizzando il criterio validate-content su corpi di richiesta di grandi dimensioni o mantenendo un numero elevato di WebSocket attivi. Il carico sulle unità di scala viene ridotto, consentendo loro di elaborare più richieste contemporaneamente prima di dover aumentare il numero di istanze.
(Service & API) Raccogliere le metriche delle prestazioni.

Le metriche delle prestazioni delle API comuni includono:

- Richiedere il tempo di elaborazione per il gateway stesso e per l'operazione completa.
- Metriche di utilizzo delle risorse unità gateway.
- Misurazioni della velocità effettiva, ad esempio richieste al secondo o megabit al secondo.
- Percentuale riscontri cache.
Le prestazioni effettive vengono misurate rispetto agli obiettivi del carico di lavoro.
(Service & API) Definire una percentuale di campionamento per Application Insights che offre visibilità sufficiente senza influire sulle prestazioni. Le esigenze dei dati di osservabilità vengono soddisfatte senza influire sulle prestazioni complessive.
(Service & API) Valutare l'impatto sulle prestazioni del posizionamento della logica tra il gateway, il back-end o il punto di ingresso pubblico, ad esempio Frontdoor di Azure. Le stesse attività di elaborazione possono spesso verificarsi in uno di questi livelli, con compromessi e limitazioni delle prestazioni per ognuna delle opportunità di ottimizzazione. Se un'attività, ad esempio un criterio API di gestione API, introduce una latenza eccessiva, valutare se l'attività può essere eseguita in un'altra posizione in modo più ottimizzata. Le attività che aggiungono latenza alle API vengono eseguite su risorse di calcolo ottimizzate per soddisfare i requisiti del carico di lavoro.

Criteri di Azure

Azure offre un set completo di criteri predefiniti correlati a Gestione API e alle relative dipendenze. È possibile controllare alcune delle raccomandazioni precedenti tramite Criteri di Azure. Ad esempio, è possibile verificare se:

  • Il gateway è configurato per la ridondanza di zona.
  • Proper network controls are in place for the API Management gateway, such as deployment in a virtual network.
  • Gli endpoint di configurazione del servizio non sono accessibili pubblicamente.
  • The direct Management REST API is disabled.

Per una governance completa, esamina le definizioni predefinite delle policy di Azure e altre policy che potrebbero influenzare la sicurezza del gateway di gestione delle API.

Raccomandazioni di Azure Advisor

Azure Advisor è un consulente cloud personalizzato che consente di seguire le procedure consigliate per ottimizzare le distribuzioni di Azure.

Per altre informazioni, vedere Azure Advisor.

Consulente potrebbe presentare altre raccomandazioni nel sistema di produzione, come ad esempio:

  • Errore nel richiedere lunghezze di chiave JWT lunghe nella politica validate-jwt.
  • Hai utilizzato una versione obsoleta dell'API di Resource Manager per distribuire la risorsa.
  • I token di chiave API sono vicini alla data di scadenza.
  • Errore in un'operazione di rotazione del certificato.

Compromessi

Potrebbe essere necessario fare compromessi di progettazione se si usano gli approcci negli elenchi di controllo dei pilastri. Ecco alcuni esempi di vantaggi e svantaggi.

Alta disponibilità attraverso la ridondanza e l'isolamento

  • Disponibilità elevata. L'aggiunta della ridondanza a un'architettura influisce sui costi. Ad esempio, approvvigionare almeno tre unità per evitare interruzioni zonali potrebbe non essere finanziariamente fattibile per il vostro carico di lavoro. I costi aumentano ulteriormente con un'architettura a più aree, che richiede almeno sei unità o tre unità per area. Una configurazione multiregione aggiunge anche costi operativi per coordinare distribuzioni sicure, scalabilità affidabile e coordinamento del failover con back-end.

  • Isolamento. L'isolamento dei carichi di lavoro tra aree di lavoro o istanze di Gestione API aggiunge complessità operativa perché include la gestione di un sistema multi-tenant con isolamento di calcolo.

Scalare per soddisfare la domanda

  • Quando scali automaticamente per soddisfare la domanda da clienti che si comportano correttamente, tali costi sono già inseriti nei modelli di costo. Tuttavia, questa funzionalità di ridimensionamento consente anche al servizio di adattarsi per gestire il traffico molesto e dannoso.

  • Mitigare il traffico indesiderato comporta costi. L'aggiunta di servizi come web application firewall e protezione DDoS aumenta le spese. Il ridimensionamento del servizio per gestire il traffico aumenta i costi a causa di unità aggiunte. L'impostazione dei limiti di scalabilità superiore può limitare la spesa, ma potrebbe causare problemi di affidabilità per gli utenti legittimi se il traffico dannoso o dannoso sovraccarica l'API.

Federated versus distributed approach

Una decisione fondamentale in Gestione API è se condividere carichi di lavoro diversi all'interno di una singola istanza di Gestione API o isolare i carichi di lavoro tra più istanze in una topologia completamente autonoma.

Le aree di lavoro di Gestione API consentono un'operazione efficiente come piattaforma di condivisione multi-tenant per più team API. I modelli di prezzi a livelli sono progettati per consentire la condivisione dei costi del servizio in tutti i tenant che usano i gateway. Tuttavia, come qualsiasi piattaforma di condivisione, interruzioni o configurazioni errate può causare effetti diffusi su carichi di lavoro non correlati che condividono la stessa infrastruttura.

Un modello completamente distribuito, in cui ogni team del carico di lavoro gestisce le proprie istanze, introduce i costi duplicati e la ridondanza nelle operazioni di routine. Fornisce tuttavia una mitigazione intrinseca del raggio di esplosione per eventi imprevisti correlati all'affidabilità, alla sicurezza e alle prestazioni.

Passaggi successivi

Gestione API viene spesso combinata con i servizi seguenti. Assicurarsi di esaminare le guide al servizio o la documentazione del prodotto se il carico di lavoro include i servizi seguenti.

Gli articoli seguenti dimostrano alcune delle raccomandazioni discusse in questo articolo.