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

Refactor "beater" package #8928

Closed
axw opened this issue Aug 23, 2022 · 0 comments · Fixed by #9371
Closed

Refactor "beater" package #8928

axw opened this issue Aug 23, 2022 · 0 comments · Fixed by #9371

Comments

@axw
Copy link
Member

axw commented Aug 23, 2022

We currently have a big ball of mud in the codebase: the "beater" package and its sub-packages. These comprise:

  • our interface to libbeat (including Elastic Agent/Fleet management)
  • setup of HTTP & gRPC servers
  • definition of HTTP middleware & gRPC interceptors
  • route registration (intake, agent config, ...)
  • model processor creation
  • configuration
  • Java agent attachment
  • telemetry
  • authentication/authorization framework
  • self-instrumentation

This is a growing source of complexity and tech debt, manifesting in issues such as #8383. We should look at refactoring "beater" into several distinct modules, with clearly defined responsibilities.

If nothing else, we must define a clear line between libbeat and the rest of apm-server code. This will enable us to better test things like reloading configuration and its effect on monitoring (see issue linked above) without running a complete apm-server. It would also enable us to explore alternative methods of deployment, e.g. splitting APM Server into multiple services to fit a stream processing architecture.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants