Comments (7)
@hbakhtiyor You are probably right. KrakenD might offer less features.
But have in mind that KrakenD does not intend in any way to support features that are not responsibility of an API Gateway. We don't think we should add anything to the project that is not strictly an API Gateway, such as authentication (instead of delegating it), response caching and alike... If people goes to microservices and are pro separation of concerns I believe the same should go for the products they use.
KrakenD won't be a one size fits all solution.
Also, this repository is a library/framework highly customizable and extendable and not a end-user product (although you can reach that point by compiling any of the examples). It's hard to see for me how to do this comparison correctly beyond showing the benchmarks for the api gateway functionality. Is there any functionality related to API-gateway that you have find in these two or other products that we are missing?
Thank you for your contribution!
from lura.
would like to see,
- rate limiting
- auth
- cache
- dev api portal scaffolding
- UI admin
from lura.
Thanks for the suggestions! We're working on the way the website walks the visitors through the feature list.
- rate limiting: https://github.com/devopsfaith/krakend-ratelimit (distributed)
- auth: https://github.com/devopsfaith/krakend-contrib#security and some JOSE features in the roadmap. I think supporting more than just key/signature validations and other server-side checks it's out of the scope because it requires coordination and introduces lots of undesired problems
- cache: again, I think it's out of the scope of the project. You can always place a cache layer (Varnish, CloudFront, etc) in front of KrakenD and the latter will inform the former using the http cache header.
- dev api portal scaffolding: that's interesting... and in the roadmap. We are trying to figure out the proper way to implement it without adding too much effort to the user.
- UI admin: http://www.krakend.io/designer
what is a 'dynamic endpoint' for you?
If you're talking about parametrized urls, yes it's supported out-of-the-box.
If you're talking about routing using other params other than the URL, it is possible but less efficient and less standard. We'll add some examples for this use case.
If you're talking about managing the service configuration and hot-swapping it, no it's not. But there are some reasons for that:
- performance: the KrakenD gateway builds the pipes at starting time
- consistency: the api contract should be versioned
- simplicity: developing consistency strategies for distributing configuration updates in an ecosystem of independent, non-coordinated and state-less services like KrakenD is completely out of the scope of the project (without adding some restrictions that will make the feature less attractive and the system, very error-prune)
I think building a custom docker container with your own configuration and using the resultant image as the artifact to deploy is the proper and easier way to proceed.
On the other hand, the small size of the docker images and the footprint of the solution makes it easier to manage the running instancies by the config version they are using and just use a blue-green deploy strategy to release your changes.
Finally, I think what separates an API gateway from an L7 router is what it does with the request and how it builds the proper response. I would say the former is a proxy/relay (and possibly some manipulators) and the latter, a service composing proxies/relays and manipulators for a specific set of client's use cases
from lura.
Yeh but other api getaway not have this feature which is great
http://www.krakend.io/docs/features/response-manipulation/
from lura.
I could have missed it but, dynamic endpoints is a key feature of api gateways, which Tyk & Kong provide... It's pretty much what separates an API gateway from an L7 router.
from lura.
Closing as the comparison is not related to this repository (framework code). We take the suggestion for maybe a blog post or similar.
Thanks
from lura.
This issue was marked as resolved a long time ago and now has been automatically locked as there has not been any recent activity after it. You can still open a new issue and reference this link.
from lura.
Related Issues (20)
- Control Plane/ Service Mesh Feature Request HOT 2
- GraphQL backend to support variables in the POST body for Queries HOT 2
- Probably me as newbie but I can't get the GraphQL proxy config to work HOT 3
- Race condition in shadowproxy HOT 1
- Default router behavior changing when the `router` configuration is present HOT 2
- Inconsistent interpolation behavior in various parts of the configuration HOT 1
- Metrics for HTTP-Client plugin not reported HOT 3
- Configurable SD protocol HOT 1
- Proposal: Ability to filter input_headers at the backend level HOT 1
- Log which endpoint failed to register HOT 2
- Remove restriction on multiple POSTS or other unsafe methods HOT 1
- Default router behavior changing when the router configuration is present HOT 1
- Where did the examples go? HOT 3
- Pass request `ctx` to modifier plugins HOT 1
- Gofiber Support HOT 2
- Plugin for running async operations HOT 1
- Unexpected Content-Type when setting return_error_code and return_error_msg HOT 5
- Host List Causing Addition of 'http://' in Front of Address and DNS Resolution Leading to 'No Such Host' Error HOT 1
- logger.Fatal received too many arguments HOT 1
- Mixed paths when performing multiple backend calls in parallel for a given Endpoint HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lura.