[Pulp-dev] Proposal: merge the content-app & streamer

Brian Bouterse bbouters at redhat.com
Fri Nov 30 22:14:54 UTC 2018


Jeff mentioned this to me yesterday, and this decision greatly affects the
remaining work of the streamer. Jeff and I thought a prototype also would
be easy and help make the idea more concrete. Here is some code you can try
with this idea. This prototype took about an hour, so we can throw it away
or delete it if we want.

This is the gist of the pulpcore changes (no docs or travis updates):
https://github.com/pulp/pulp/pull/3779
Use this branch of the streamer (updated for settings changes from ^):
https://github.com/bmbouter/pulp_streamer/tree/streamer-replaces-content-app

In addition to the great benefits Jeff outlined, in my testing I can see
the aiohttp based streamer is generally a lot faster in handling requests
than Django which could be big for our performance. Also, it simplifies the
settings greatly since we don't need redirect configs anymore (see the PR).

More thoughts would be great. The lazy work is blocked until we're able to
pick a direction here.

Thanks!

On Fri, Nov 30, 2018 at 4:59 PM Jeff Ortel <jortel at redhat.com> wrote:

> *BACKGROUND*
>
> The pulp3 content app and the streamer (in-progress) currently have a lot
> of duplicate code and functionality.  At the very least, I think there is a
> opportunity to refactor both and share code.  But, this would leave us with
> two components with significant overlap in functionality.
>
> The functionality exclusive to the content-app:
>   - Optionally delegate file serving to a web server. (Eg: mod_xsendfile).
>   - Optional redirect to the streamer.
>
> The functionality exclusive to the streamer:
>   - Using the Remote & RemoteArtifact to download the file and stream on
> demand.
>
> Not much difference which raises the question: "Why do we have both?"  I
> think the answer may be that we don't.
>
> *PROPOSAL*
>
> Let's pull the content-app out and merge it with the streamer.  The new
> content (app) would have *streamer* architecture & functionality.  When a
> requested artifact has not been downloaded, it would download/streamed
> instead of REDIRECT.  This does mean that deployments and development
> environments would need to run an additional service to serve content.  The
> /pulp/content endpoint would be on a different port than the API.  I see
> this separation as a healthy thing.  There is significant efficiency to be
> gained as well.  Let's start with eliminating the REDIRECTs.  Cutting the
> GET requests in half is a win for both the client, the network and the Pulp
> web stack.  Next is database queries.  Since both applications needed to
> perform many of the same queries, combining the applications will roughly
> cut them in half as well.  Since the streamer is based on asyncio and so
> would the merged app.
>
> There are probably lots of other pros/cons I have not considered but it
> seems relatively straight forward.
>
> I'm thinking the new content app/service would be named: *pulp-content*.
>
> Thoughts?
>
> _______________________________________________
> Pulp-dev mailing list
> Pulp-dev at redhat.com
> https://www.redhat.com/mailman/listinfo/pulp-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/pulp-dev/attachments/20181130/903e22e2/attachment.htm>


More information about the Pulp-dev mailing list