Netflix OSS Stack support

Not applicable

Hi,

We have decided to go with Netflix OSS stack for our Micro Services Implementation using Eureka, Hystrix & Ribbon. Wanted to understand how does service discovery, load balancing, resilience work with Netflix components in the implementation layer & Apigee at the proxy layer?

Another option could be Apigee interacting with Zuul & Zuul interacts with all these Netflix OSS Components but it means that we will have dual proxy layers with responsibilities being shared.

Has anyone used Apigee with Netflix OSS stack & can share details?

Thanks

Nitin

3 4 4,177
4 REPLIES 4

Former Community Member
Not applicable

Nitin, since you are considering an OSS stack for API Management, I'd like to bring to your attention Istio (https://istio.io/). Istio is an open source microservices management stack that is developed jointly by Google, Lyft and IBM and now joined by RedHat and Pivotal.

Coming to your specific question on NetFlix OSS. Two patterns come to my mind:

Option 1: Use an Apigee gateway as the proxy. You can use Eureka for endpoint lookup. So Apigee can lookup services in Eureka and forward API traffic based on the response from Eureka.

Option 2: Use zuul as an API proxy, but integrate with Apigee for API Management. As you will be aware, zuul has the concept of plugins. You can write an "Apigee" plugin. So, what would this plugin do?

This Apigee plugin can provide features like: analytics, oauth or api key verification and quota.

What does Apigee bring to the table?

Here are some reasons:

1) Apigee provides a API developer portal. The portal serves two purposes - it is a human readable API Catalog. Consumers can search, find and very importantly, try APIs. And second, it providers an interface for API Consumer key management. API Consumers can request access to APIs, which when approved, will generate a key and secret for the consumer. The keys can be managed (expired, revoked, tracked etc.).

2) Enforce API Entitlement (security): OAuth and API Keys in Apigee are tied to API Products. API Products are a logical grouping of 1 or more APIs. So each time an OAuth token or API Key is verified, the user's entitlement (i.e., which API they can access) is also verified.

3) Analytics: This is many parts to it. There is data which operators need (errors, TPS, latency etc.). Then there is data which business users need. Which applications are accessing my APIs? How are these applications using the API? etc. Apigee can provide both kinds of analytics. You can even get some analytics based on the payload of your API calls.

Regardless of which option (or a third one), NetFlix OSS can complement Apigee.

Hi @Srinandan Sridhar,

Thanks for your response.

Is istio an alternate for Apigee or both are to be used together? Are there specific use cases where one would on of them or both?

For option 1: I think we would need Eureka Client i order to retrieve service Information. Any documention/more details available around the same?

Option 2: Won't it be easier to do the entire API management (analytics, security, authentication) etc in Apigee & use zuul as a simple proxy & to connect with Netflix components.

As we are also using Kubernetes for Container orchestration, another option could be to use kubernetes for service discovery & load balancing & Netflix OSS for rest of other stuff. In this case Apigee can connect with Kubernetes for discovery & balancing.

Thanks

Nitin

Former Community Member
Not applicable

First about Istio: Istio can be used by itself, Istio can be used with Apigee, Apigee can be used by itself. All these patterns are supported and will continue to be so. Please see this blog from Apigee: https://apigee.com/about/blog/digital-business/simplifying-microservices-management

It all depends on what are your use cases and the kind of support you need.

For Option 1, yes you will need a Eureka client. But thankfully, Eureka also exposes APIs. Here is a sample implementation to use Apigee Microgateway with Eureka: https://github.com/apigee/microgateway-plugins/tree/master/eurekaclient

Here is a link for microgateway itself: https://github.com/apigee-internal/microgateway and http://docs.apigee.com/microgateway/content/edge-microgateway-home

For Option 2: It will be very hard for me to say what is an optimal approach without knowing your use cases, architecture etc. If you are using Apigee for API Management, then I don't see a need for zuul. You can leverage libraries for other components like Eureka within Apigee (option 1).

It appears you have chosen Kubernetes as your platform of choice. Istio runs natively in Kubernetes. You should definitely try the sample that is in GitHub. It gives you a good understanding of Istio's capabilities.

@srinandans Can you please point me to documentation on how to write a Zuul plugin? Thanks for the help in advance.