ThreeMammals / Ocelot

.NET API Gateway
https://www.nuget.org/packages/Ocelot
MIT License
8.38k stars 1.64k forks source link

Why Ocelot not AWS Gateway? #1698

Closed ks1990cn closed 1 year ago

ks1990cn commented 1 year ago

Hi,

Can anyone explain what is perk of ocelot gateway over AWS gateway, just its free gateway? Is it safe as AWS gateway and much scalable and secure?

raman-m commented 1 year ago

Hi Tanmay!

Difficult question, without seeing AWS Gateway repository... Is AWS Gateway open-source? Is it coded in C# ? 😉

ks1990cn commented 1 year ago

Amazon don't show their code!

I seached same question over Google Bard regarding Ocelot vs AWS Gateway API, you can go and is there any thing else want to add you can add, but till this time it gives me satisfactory answer.

Questions :- Can we think for adding monitoring implementation with Ocelot? Do we additional repo to implement this gateway with .Net code and hence we can route and manage like any other API gateways.

It showed me following differences.

AWS API Gateway is a fully managed service, which means that Amazon takes care of all the provisioning, scaling, and maintenance. It is also highly scalable and can handle millions of requests per second. AWS API Gateway supports a wide range of features, including:

Authentication and authorization
Rate limiting
Caching
API versioning
Monitoring and analytics
Ocelot is an open-source API gateway that is built on .NET Core. It is lightweight and easy to use, but it does not offer as many features as AWS API Gateway. Ocelot supports the following features:

Routing
Authentication and authorization
Load balancing
Caching
Circuit breaker
Feature | AWS API Gateway | Ocelot -- | -- | -- Managed service | Yes | No Scalability | High | Medium Features | Authentication, authorization, rate limiting, caching, API versioning, monitoring, analytics | Routing, authentication and authorization, load balancing, caching, circuit breakers Platform | Cloud-agnostic | .NET Core Open source | No | Yes
RaynaldM commented 1 year ago

Hi Tanmay, It all depends on what you want to achieve. If you want to be able to use the same gateway on AWS and Azure (or Google), you must not be tied to one of their technologies, and so a gateway like Ocelot is the obvious choice. In our case, that's one of the reasons why we chose Ocelot, the other being the ability to "work" on requests in DelegatingHandlers, and that gives us great flexibility. The last point is that Ocelot is open-source and its code is easy to learn.

ks1990cn commented 1 year ago

I understand complete funda for ocelot. Was just unable to think when to use Ocelot and when to use AWS/ Azure gateway, what is exact use case?

If we host any website and use Ocelot, then also we will be paying cause any RestAPI will be using EC2 or Serverless system.

For open source and modification, its no doubt best option... I will be continue to learn on this and start contribution soon. Thanks

raman-m commented 1 year ago

@ks1990cn Dear Tanmay,

We don't care about AWS services! We care about Ocelot only! We don't need any comparison tables because it is incorrect to compare paid service with closed code to an open-source project. They cannot be compared at all! In theory only atomic features can be compared.

First,

Scalability of Ocelot depends on hosting environment. Ocelot can be built as Docker image based on Kestrel web server, and after that Docker image can be instantiated as Docker container in environment with scalability options. For example in custom Kubernetes cluster, including cloud clusters like Azure Kubernetes Service and Amazon EKS.

Second,

As I said, Ocelot is open source. We ensure some fairness and honesty when delivering Ocelot features. So, as an open-source product, Ocelot is open for extensions and audit. Can you audit Amazon service? No!

Third,

Ocelot is open for security audit. We don't track requests, we don't analyze request bodies to sniff the client's traffic. Ocelot has no integrations to some persistent storages to save statistics. Can you say the same about AWS Gateway?

Fifth,

As a standard ASP.NET app, Ocelot can be deployed into private environments aka on-premises to serve the traffic of private networks of companies with high security standards, who care about data privacy and security. Can you say the same about Amazon Gateway?

Finally,

As I said, that's wrong to compare closed-source products to open-source products.

@RaynaldM For having fun! FYI! 😉

raman-m commented 1 year ago

@ks1990cn

I will be continue to learn on this and start contribution soon.

We welcome your intention to return back to us with some interesting features/issues and PRs! Good luck in learning Ocelot!

raman-m commented 1 year ago

@ks1990cn commented on Sep 22

Feature AWS API Gateway Ocelot
Managed service Yes No

In what terms we understand "managed" here? Having some nice buttons to press on web-site? That's management, right? As a developer, you can extend, build, and deploy Ocelot as you wish.


Feature AWS API Gateway Ocelot
Scalability High Medium

I would say, Ocelot has high scalability also, because of building as Docker image. Scalability has provided by containerization services.

Feature AWS API Gateway Ocelot
Features Authentication, authorization, rate limiting, caching, API versioning, monitoring, analytics Routing, authentication and authorization, load balancing, caching, circuit breakers

Every API gateway has its own nice features, and development teams choose what features they need to build a software product.


Feature AWS API Gateway Ocelot
Platform Cloud-agnostic .NET Core

To be cloud-agnostic means AWS Gateway can be hosted in Azure and Google clouds... Hmmm... Really? Could you share a link to prove that plz? As .NET app, Ocelot can be deployed to any cloud too!


Feature AWS API Gateway Ocelot
Open source No Yes

Totally agree! You can pay for Amazon services. Jeff Bezos needs new one villa more in India 🤣

ks1990cn commented 1 year ago

Thank you Raman for helping with nice and discriptive answers