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

Collector Exporter - split into 3 packages #1429

Closed
obecny opened this issue Aug 14, 2020 · 7 comments · Fixed by #1446
Closed

Collector Exporter - split into 3 packages #1429

obecny opened this issue Aug 14, 2020 · 7 comments · Fixed by #1446
Assignees
Labels
Discussion Issue or PR that needs/is extended discussion.

Comments

@obecny
Copy link
Member

obecny commented Aug 14, 2020

Some people are using for example aws lambda, this means the size of overall matters and there is some limitation in package size. Currently we have grpc and protobufjs installed always. For this reason if someone wants to use the exporter and never want to use grpc or proto he could use an exporter package without grpc and proto. This would means splitting exporter into 3 packages:
collector-exporter-node
collector-exporter-node-proto
collector-exporter-node-grpc

The benefit would be the decrease in size and we would get rid of protocolNode param from config.

opentelemetry-exporter-collector would be a main package for web and for node using json over http only.
opentelemetry-exporter-collector-proto would extend opentelemetry-exporter-collector and override the transport method with proto over http
opentelemetry-exporter-collector-grpc would extend opentelemetry-exporter-collector and override the transport method with grpc

The naming for packages
@opentelemetry/exporter-collector
@opentelemetry/exporter-collector-proto
@opentelemetry/exporter-collector-grpc

@obecny obecny added the Discussion Issue or PR that needs/is extended discussion. label Aug 14, 2020
@obecny
Copy link
Member Author

obecny commented Aug 14, 2020

@open-telemetry/javascript-approvers ^^

@dyladan
Copy link
Member

dyladan commented Aug 14, 2020

Seems like a decent compromise to me. @mayurkale22 ?

@obecny
Copy link
Member Author

obecny commented Aug 14, 2020

Updated naming for packages ^^

@mwear
Copy link
Member

mwear commented Aug 14, 2020

FWIW. This is exactly what is being asked for in this specification issue: open-telemetry/opentelemetry-specification#678.

Protobuf is a relatively big dependency, which some clients are not willing to take. For example, webjs, iOS/Android (in some scenarios, the size of the installation package is limited, do not want to introduce protobuf dependencies). Plain JSON is a smaller dependency and is built in the standard libraries of many programming languages.

@mayurkale22
Copy link
Member

Makes sense to me. This would definitely simply the collector codebase and provide an easy way to use it.

Couple of questions:

  1. @opentelemetry/exporter-collector is for HTTP and can be used in both Node and Web right?
  2. Seems like there will be some overlap of code (utils, types, const etc.) between these 3 packages, where do you plan to keep them?

@mayurkale22
Copy link
Member

opentelemetry-exporter-collector would be a main package for web and for node using json over http only.

Looks like you already answered the first question in the description. My Bad!

@obecny
Copy link
Member Author

obecny commented Aug 14, 2020

  1. Seems like there will be some overlap of code (utils, types, const etc.) between these 3 packages, where do you plan to keep them?

They will be in main package as they are needed there anyway - I have already started working on that :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Discussion Issue or PR that needs/is extended discussion.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants