Skip to content
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

Closed
Khertys opened this issue Jan 3, 2024 · 5 comments
Closed

Migrate web server from Undertow to Armeria #397

Khertys opened this issue Jan 3, 2024 · 5 comments
Assignees
Labels
breaking change Backward incompatible data model change enhancement New feature or request
Milestone

Comments

@Khertys
Copy link
Collaborator

Khertys commented Jan 3, 2024

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).

@Khertys Khertys self-assigned this Jan 3, 2024
@novoj novoj changed the title Try alternate gRPC library Try alternative gRPC library Jan 4, 2024
@novoj novoj added the enhancement New feature or request label Jan 4, 2024
@novoj novoj added this to the Alpha milestone Jan 4, 2024
@novoj novoj modified the milestones: Alpha, Beta Apr 26, 2024
@trustin
Copy link

trustin commented May 16, 2024

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.

@novoj
Copy link
Collaborator

novoj commented May 16, 2024

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.

Khertys pushed a commit that referenced this issue May 22, 2024
…erver on the same secured and non-secured port
Khertys pushed a commit that referenced this issue Jun 24, 2024
…ion and serving it from rest api, enabled gRPC server reflection
Khertys pushed a commit that referenced this issue Jun 24, 2024
…e handled in async manner via CompletableFutures to achieve a way to not accidentally use a thread used by the corresponding service
Khertys pushed a commit that referenced this issue Jun 24, 2024
@novoj novoj added the breaking change Backward incompatible data model change label Jun 27, 2024
@novoj novoj changed the title Try alternative gRPC library Migrate web server from Undertow to Armeria Jun 27, 2024
Khertys pushed a commit that referenced this issue Jun 28, 2024
…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
Khertys pushed a commit that referenced this issue Jul 2, 2024
…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
Khertys pushed a commit that referenced this issue Jul 2, 2024
…ing close method on EndpointRequest to ensure session closing
Khertys pushed a commit that referenced this issue Jul 3, 2024
Khertys pushed a commit that referenced this issue Jul 3, 2024
Khertys pushed a commit that referenced this issue Jul 3, 2024
… patched readiness check in gRPC (temporarily)
novoj added a commit that referenced this issue Jul 13, 2024
novoj added a commit that referenced this issue Jul 14, 2024
Khertys pushed a commit that referenced this issue Jul 14, 2024
Khertys pushed a commit that referenced this issue Jul 15, 2024
lukashornych added a commit that referenced this issue Jul 16, 2024
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.
novoj added a commit that referenced this issue Jul 17, 2024
novoj added a commit that referenced this issue Jul 17, 2024
novoj added a commit that referenced this issue Jul 22, 2024
... so that it works with Armeria compression decorator.
@novoj
Copy link
Collaborator

novoj commented Jul 23, 2024

Only single step remaining - remeasuring in performance tests.

novoj added a commit that referenced this issue Jul 24, 2024
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.
novoj added a commit that referenced this issue Jul 30, 2024
novoj added a commit that referenced this issue Aug 5, 2024
It was found out that it only adds latency due to context switches and is not necessary after all.
novoj added a commit that referenced this issue Aug 5, 2024
@novoj
Copy link
Collaborator

novoj commented Aug 5, 2024

Migration to Armeria server merged to dev branch (canary). It will be base for 2024.10

@novoj novoj closed this as completed Aug 5, 2024
@trustin
Copy link

trustin commented Aug 5, 2024

Lovely! Looking forward to more feedback from you and your teammates 🙇

novoj added a commit that referenced this issue Aug 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
breaking change Backward incompatible data model change enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants