-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Migrate web server from Undertow to Armeria #397
Comments
As far as I understand, the JPMS-related blocker has been resolved in the recent Armeria versions. Would there be anything Armeria team could help with? We'd be happy to address any remaining issues for adoption. |
Hi @trustin - we're really positively surprised by your attitude and thank you very much for the support. The problem is currently on our side - we had to lower the priority for this issue due to other commercially important things. But we're planning to resume work on it by the end of May. The Armeria server could help us unify and simplify our internal infrastructure, so we see it as a way forward. We also want to update our performance tests and see what the impact of moving to the new solution will be and let you know the results. |
…erver on the same secured and non-secured port
…ion and serving it from rest api, enabled gRPC server reflection
…e handled in async manner via CompletableFutures to achieve a way to not accidentally use a thread used by the corresponding service
…cate files instead of just visualising their content, added TlsMode to evita configuration, added decorator to router services to each API that ensures that API is used with the correct TLS mode
…replaced gRPC client in Java driver with Armeria gRPC client, fixed routing and propagating query and path parameters via headers, test adaptation to changes, purged project of Undertow library
…ing close method on EndpointRequest to ensure session closing
… patched readiness check in gRPC (temporarily)
Our dynamic routes registering required dynamic CORS filters building and registering which the core Armeria CorsService cannot do. Therefore I used the original implementation from Undertow server.
... so that it works with Armeria compression decorator.
Only single step remaining - remeasuring in performance tests. |
We came to the conclusion that passing catalogName along with sessionId is redundant and requires additional overhead on the client side. So we decided to remove this requirement even if it costs more memory on the server side.
It was found out that it only adds latency due to context switches and is not necessary after all.
…ation feat(#397): switch to Armeria web server
Migration to Armeria server merged to |
Lovely! Looking forward to more feedback from you and your teammates 🙇 |
Try to benchmark https://armeria.dev/ gRPC library and run performance tests against it. With none or a little performance toll, we should try to integrate it into evitaDB and replace the currently used one. This Armeria gRPC library could offer us many nice-to-have features (such as OpenAPI like documentation endpoint with playground for testing calls, implicit support for grpc-web standard,...) and much easier manipulation with gRPC-related structures.
In future, while migrating, also consider using AdvancedTlsX509KeyManager class from gRPC to enable certificate reloading capabilities (ie. for LetsEncrypt renew process).
The text was updated successfully, but these errors were encountered: