Ho utilizzato diverse soluzioni di gestione dell'API da un po 'di tempo, dato che alcuni client hanno incoraggiato o forzato il suo utilizzo a gestire API e microservizi.
Tuttavia, ritengo che in molti casi potrebbero esserci soluzioni più semplici o diverse che renderebbero inutili quei prodotti.
Una linea guida che ho incontrato molte volte è:
-
API interne / microservizi : se l'organizzazione è disattivata, quando l'applicazione è accessibile da un'altra app dalla stessa area, non è necessario che l'applicazione sia registrata nel Manager. Tuttavia se è accessibile da un'altra area deve essere.
-
API esterne / microservizi : sono sempre accessibili tramite il gestore API.
Le funzionalità principali che utilizziamo sono ovviamente l'autenticazione / autorizzazione con Oauth2, la gestione dell'abbonamento e occasionalmente la limitazione della velocità.
Come ho già detto alcune di queste funzionalità possono essere fornite da altri strumenti, ad esempio OpenID Connect auth con Keycloak, reverse proxy con Zuul, ecc. Con questa premessa, ciò che dovremmo fare in alcuni scenari non è chiaro. Facciamo un esempio:
Un microservizio / API Backend For Frontend che aggrega diversi microservizi per un'applicazione Angular. Questo BFF è di per sé un gateway e potrebbe essere:
-
Protetto con Keycloak per l'accesso autenticato e autorizzato dal browser, fornendo anche SSO.
-
Registrato in una soluzione API Manager che si occupa della sicurezza con OAuth2.
-
Gestisci le cose a livello di applicazione.
Quindi da questo contesto:
-
Quando è consigliabile utilizzare una soluzione APIM per gestire l'accesso interno ed esterno ai microservizi?
-
Quando NON è necessario utilizzarlo per i microservizi? Ad esempio, non posso immaginare che Netflix lo utilizzi per le loro trilioni di microservizi. In questo caso qual è il modo migliore per gestire la sicurezza dell'accesso?
-
Infine, per lo scenario BFF, quando useresti una soluzione APIM rispetto a quando non sei tu e perché?