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

[serverless] lazy load SDKs #5089

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

duncanista
Copy link
Contributor

@duncanista duncanista commented Jan 9, 2025

What does this PR do?

Lazy loads SDKs when they're enabled

Motivation

These SDKs should not be loaded unless the product is explicitly enabled.
Screenshot 2025-01-09 at 3 10 19 PM

This is increasing overhead by 25ms

Plugin Checklist

Additional Notes

⚠️ This is missing unit test updates

@duncanista duncanista requested a review from a team as a code owner January 9, 2025 20:10
Copy link

github-actions bot commented Jan 9, 2025

Overall package size

Self size: 8.44 MB
Deduped: 94.78 MB
No deduping: 95.3 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.3.0 | 29.43 MB | 29.43 MB | | @datadog/native-appsec | 8.4.0 | 19.25 MB | 19.26 MB | | @datadog/native-iast-taint-tracking | 3.2.0 | 13.9 MB | 13.91 MB | | @datadog/pprof | 5.4.1 | 9.76 MB | 10.13 MB | | protobufjs | 7.2.5 | 2.77 MB | 5.16 MB | | @datadog/native-iast-rewriter | 2.6.1 | 2.59 MB | 2.73 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 3.1.0 | 1.06 MB | 1.46 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.11.2 | 112.74 kB | 826.22 kB | | source-map | 0.7.4 | 226 kB | 226 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | lru-cache | 7.18.3 | 133.92 kB | 133.92 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.0 | 109.9 kB | 109.9 kB | | semver | 7.6.3 | 95.82 kB | 95.82 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 5.3.1 | 51.46 kB | 51.46 kB | | shell-quote | 1.8.1 | 44.96 kB | 44.96 kB | | istanbul-lib-coverage | 3.2.0 | 29.34 kB | 29.34 kB | | rfdc | 1.3.1 | 25.21 kB | 25.21 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | dc-polyfill | 0.1.4 | 23.1 kB | 23.1 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | module-details-from-path | 1.0.3 | 4.47 kB | 4.47 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

@pr-commenter
Copy link

pr-commenter bot commented Jan 9, 2025

Benchmarks

Benchmark execution time: 2025-01-09 20:18:41

Comparing candidate commit c1fa5d6 in PR branch jordan.gonzalez/lazy-load-sdks with baseline commit 6e5d2e8 in branch master.

Found 5 performance improvements and 0 performance regressions! Performance is the same for 776 metrics, 17 unstable metrics.

scenario:appsec-iast-with-vulnerability-iast-enabled-always-active-22

  • 🟩 max_rss_usage [-12.068MB; -9.302MB] or [-8.987%; -6.927%]

scenario:plugin-graphql-with-depth-and-collapse-on-18

  • 🟩 max_rss_usage [-82.819MB; -70.473MB] or [-8.801%; -7.489%]

scenario:plugin-graphql-with-depth-off-18

  • 🟩 max_rss_usage [-98.929MB; -73.755MB] or [-10.523%; -7.845%]

scenario:plugin-graphql-with-depth-on-max-18

  • 🟩 max_rss_usage [-76.218MB; -75.746MB] or [-8.080%; -8.030%]

scenario:spans-finish-later-22

  • 🟩 instructions [-256.5M instructions; -201.2M instructions] or [-8.959%; -7.027%]

@@ -89,7 +86,7 @@ class Tracer extends NoopProxy {
}

if (config.remoteConfig.enabled && !config.isCiVisibility) {
const rc = remoteConfig.enable(config, this._modules.appsec)
const rc = require('./appsec/remote_config').enable(config, this._modules.appsec)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file is required in other places. Should the lazy loading happen in the module instead instead?

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

Successfully merging this pull request may close these issues.

2 participants