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

Modular Architecture for Prebid Server #1734

Closed
bretg opened this issue Mar 3, 2021 · 3 comments
Closed

Modular Architecture for Prebid Server #1734

bretg opened this issue Mar 3, 2021 · 3 comments
Assignees

Comments

@bretg
Copy link
Contributor

bretg commented Mar 3, 2021

Prebid Server (PBS) started as a simple server that just obtained header bids from a list of other server endpoints and forwarded the results back to the client.

Through the years, feature functionality has grown: currency conversion, events, privacy support, targeting options, first party data, etc. PBS host companies can turn off these features from server config, but they still bear the cost of additional server resources to host the unused features.

There's a long-term vision that PBS becomes the center of an ecosystem similar to what Prebid.js has become: many optional modules, perhaps even overlapping or mutually exclusive such as geo-lookup vendors or multiple brand protection modules.

As the server gets more and bigger features, it may not make sense for all companies hosting PBS to bear the cost and complexity of hosting and configuring all features.

To summarize, the high level goal of the project is to encourage a larger ecosystem of Prebid Server optional functionality without unduly burdening host companies. The most important component of this goal is a useful, consistent, and well-documented set of interfaces for extending server functionality. Some existing functionality may eventually be pulled out into modules (e.g. geo-lookups), but that refactoring will take time.

It is not intended that every future feature must be a module. There will be small features embedded directly in PBS-core, and perhaps even large complex features (e.g. Programmatic Guaranteed) that might not work well as a series of modules.

See https://docs.google.com/document/d/1QgQbIL06dsQQw-Qmw_JClXNsbjDmYQ09gU7iu6iox_M/edit# for the in-progress requirements document.

@bretg bretg added the Intent to implement An issue describing a plan for a major feature. These are intended for community feedback label Mar 3, 2021
@bretg bretg self-assigned this Mar 3, 2021
@bretg
Copy link
Contributor Author

bretg commented May 7, 2021

Thanks to the community for a thorough review of the document through 3 meetings. All the feedback has been incorporated and it's certainly a better proposal for the time you all spent. Thanks.

The draft notice has been removed. I'm going to open a separate issue to track some suggested improvements in logging.

@SyntaxNode SyntaxNode changed the title Define a modular architecture for Prebid Server Modular Architecture for Prebid Server Sep 30, 2021
@SyntaxNode SyntaxNode added Ready For Dev Feature specification is ready to be developed. In Dev - Go and removed Intent to implement An issue describing a plan for a major feature. These are intended for community feedback Ready For Dev Feature specification is ready to be developed. labels Sep 7, 2022
@bretg bretg removed the projectboard label Sep 8, 2022
@bretg bretg moved this from Triage to In Progress in Prebid Server Prioritization Sep 23, 2022
@bretg bretg assigned SyntaxNode and unassigned bretg Sep 23, 2022
@bretg
Copy link
Contributor Author

bretg commented Sep 23, 2022

Update: this project is underway

@SyntaxNode
Copy link
Contributor

Core functionality implemented in PBS-G0 0.238.0. OpenRTB Blocking Module implemented in PBS-Go 0.239.0.

@github-project-automation github-project-automation bot moved this from In Progress to Done in Prebid Server Prioritization Jan 30, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

No branches or pull requests

2 participants