Anti-pattern: lascia il deployment dei proxy API NodeJS non utilizzati

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Una delle funzionalità uniche e utili di Apigee Edge è la possibilità di eseguire il wrapping di un'applicazione NodeJS in un proxy API. Ciò consente agli sviluppatori di creare applicazioni lato server basate su eventi utilizzando Edge.

Antipattern

La distribuzione dei proxy API è il processo che li rende disponibili per gestire le richieste API. Ciascuno dei proxy API di cui è stato eseguito il deployment viene caricato nella memoria di runtime del processore di messaggi per poter gestire le richieste API per lo specifico proxy API. Pertanto, l'utilizzo della memoria in fase di runtime aumenta con l'aumento del numero di proxy API di cui è stato eseguito il deployment. Se lasci deployment di proxy API inutilizzati, è possibile che venga usato inutilmente la memoria di runtime.

Nel caso dei proxy API NodeJS, c'è un'ulteriore implicazione.

La piattaforma avvia un'"app nodo" per ogni proxy API NodeJS di cui è stato eseguito il deployment. Un'app Node è simile a un'istanza di server nodo autonoma nel processo JVM del processore di messaggi.

In effetti, per ogni proxy API NodeJS di cui è stato eseguito il deployment, Edge avvia ciascuno un server nodo per elaborare le richieste per i proxy corrispondenti. Se il deployment dello stesso proxy API NodeJS viene eseguito in più ambienti, viene avviata un'app nodo corrispondente per ciascun ambiente. In situazioni in cui sono presenti molti proxy API NodeJS di cui è stato eseguito il deployment ma inutilizzati, vengono avviate più app Node. I proxy NodeJS inutilizzati si traducono in app Node inattive che consumano memoria e influiscono sui tempi di avvio del processo dell'applicazione.

Proxy utilizzati Proxy inutilizzati
# proxy # ambienti di cui è stato eseguito il deployment # nodeapps lanciate # proxy # ambienti di cui è stato eseguito il deployment # app nodo lanciate
10 dev, test, prod (3) 10x3=30 12 dev, test, prod (3) 12x3=36

Nell'illustrazione precedente, vengono lanciate 36 app Node inutilizzate, che consumano memoria di sistema e hanno un effetto negativo sui tempi di avvio del processo.

Impatto

  • Utilizzo elevato della memoria ed effetto a cascata sulla capacità dell'applicazione di elaborare ulteriori richieste
  • Probabile impatto sulle prestazioni dei proxy API che gestiscono effettivamente il traffico

Best practice

  • Annulla il deployment di eventuali proxy API inutilizzati
  • Utilizza la dashboard delle prestazioni dei proxy di Analytics per determinare quali proxy non gestiscono il traffico; annulla il deployment di quelli non necessari

Per approfondire