camunda / camunda-bpm-platform

Flexible framework for workflow and decision automation with BPMN and DMN. Integration with Quarkus, Spring, Spring Boot, CDI.
https://camunda.com/
Apache License 2.0
4.03k stars 1.53k forks source link

Disable/remove Easy Telemetry for all maintained releases #4234

Open toco-cam opened 3 months ago

toco-cam commented 3 months ago

Acceptance Criteria (Required on creation)

7.22

7.20 & 7.19

Hints

Links

Breakdown

### Pull Requests
- [ ] https://github.com/camunda/camunda-docs-static/pull/462
- [ ] https://github.com/camunda/camunda-bpm-platform/issues/4483
- [ ] https://github.com/camunda/camunda-bpm-platform/issues/4484

Dev2QA handover

yanavasileva commented 1 week ago

We want to do define phase to estimate effort for code removal. If it higher we might only disable the ET in maintained releases.

Considerations: backwards compatibility, rolling upgrade.

yanavasileva commented 1 week ago

Prototype: https://github.com/camunda/camunda-bpm-platform/pull/4465

WIP dump * ProcessEngineConfigurationImpl - not needed, remove: * initializeTelemetry * telemetryEndpoint * telemetryRequestRetries * telemetryRequestTimeout * telemetryReportingPeriod * telemetryHttpConnector * what is some customers have custom values Tomcat, Spring Boot we need the reported active scheduling timer task * TelemetryReporter - not needed, remove: * telemetryEndpoint * telemetryRequestRetries * telemetryRequestTimeout * telemetryReportingPeriod * telemetryHttpConnector timer task but it will be used only for updateAndSendData (false, false) does this mean we don't need a timer task, can we change it? * TelemetrySendingTask - not needed, remove: * telemetryEndpoint * telemetryRequestRetries * telemetryRequestTimeout * telemetryReportingPeriod * telemetryHttpConnector * nothing when #run Loggers - remove logging that is not used any longer GetTelemetryDataCmd - unchanged IsTelemetryEnabledCmd - always return false or remove entirely? rest api? TelemetryConfigureCmd - reschedules the timer tasks, we don't need it anymore though, rest api? remove connect dependency - not needed since we won't send requests check if the shading works as expected tests getTelemtryData needs to be still tested TelemetryReporterTest - rewrite to have coverage for the different parts of the result - webapps cfg files - remove endpoint wiremock rest api distros IT Docs migration guide - feature removed, process engine conf options should be cleaned up https://docs.camunda.org/manual/7.21/introduction/telemetry/ - leave only collected data that can be used for the diagnostics differences between the versions - will backport be higher effort, when toucing the pom.xml, most probably auto backport won't work.
yanavasileva commented 6 days ago

Kickoff

Current state

Proposal

  1. Engine
    • ProcessEngineConfigurationImpl
      • 7.22 - Remove configuration properties and related code that are not needed anymore.
      • 7.21 and below
      • for updated instance, the database property/ies will be left there and they won't be used. Do we want to remove it?
    • TelemetryReporter and TelemetrySendingTask
      • Remove sending functionality. Keep general code so it can be used for fetching the diagnostic data without the interval to send HTTP requests.
    • IsTelemetryEnabledCmd
      • deprecate Java and REST API, so whoever uses it knows that is no longer function and can remove it but their code won't brake
      • empty out command, should always return false
    • TelemetryConfigureCmd
      • deprecate Java and REST API, so whoever uses it knows that is no longer function and can remove it but their code won't brake
      • empty out command, should do nothing
    • connect dependency - remove it and check if shading is working as expected
    • Loggers - remove all logging that is not used any longer
  2. REST API
    • deprecate and empty out
    • remove tests
  3. Distros, javaee, connect plugin
    • remove connect process engine plugin used for telemetryHttpConnector (sending HTTP requests for telemetry) and the a
    • exclude connect dependency
      • if users use the dependency for other reasons, they can add the dependency themselves (we can consider adding this to the migration guide)
  4. Webapps
    • Remove Telemetry Settings page
    • Remove initial popup when initializeTelemetry = null
    • Adjust tests
  5. Tests (CE and EE)
    • tests configuration files - remove telemetry endpoint property
    • tests - remove sending telemetry tests but leave and ensure diagnostic data API is tested
    • wiremock - remove where not needed anymore
  6. Docs
    • Configuration pages - remove telemetry properties: process engine, quarkus, spring boot
    • Telemetry page - leave only collected data that can be used for the diagnostics, maybe rename/move the page. For transparency we can add that feature has been removed.
    • Migration page - document any breaking changes
  7. Optional
    • TelemetryReporter and TelemetrySendingTask
      • rename the classes to move away from telemetry as they will be used only for fetching diagnostic data
      • remove the TimerTask as it is not needed anymore

Estimation

There are differences in code base (of the files that needs to be adjusted) between current development (7.22) and maintenance versions. Potentially, we want to do different changes on current and maintenance versions.

  1. Backend - 6 days total
    • 7.22 - 2 days
    • backports and buffer - 4 days
  2. Frontend - 2 days total
    • 7.22 - 0.5-1 day
    • backports and buffer - 1.5 days
  3. Docs - 0.5 days total
yanavasileva commented 6 days ago
yanavasileva commented 6 days ago

Next: create breakdown. - done, ticket's description has been updated.