Re: Request for Feedback/Resources for Packager Dashboard/Oraculum

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Nov 10, 2020 at 04:57:20PM +0100, Frantisek Zatloukal wrote:
> Hello,
> 
> many of you already heard about Fedora Packager Dashboard [0]. In short,
> for those who have not, it's a web application and backend aiming to make
> the life of Fedora packagers easier. It combines data from multiple sources
> (Pagure, Bugzilla, Bodhi, Koschei,...) relevant to the maintainers of
> Fedora packages.
> 
> Tracking all these sites can be time consuming, especially if you maintain
> dozens of different packages, so the Dashboard provides everything a
> packager might need (or at least what we've thought of) - condensed,
> cached, searchable and filterable on one page.
> 
> You can check it out/play with it even if you don't maintain any Fedora
> packages, there is no authentication needed, just enter any packager’s
> username. Feature-wise, it's pretty robust already, and there are more
> things to come (like allowing users to authenticate and see private bugs
> and more), but the original planned feature set is complete.
> 
> Currently, it's processing only publicly available data. When we'll start
> implementing the ability to authenticate and process any private data,
> we'll work closely with the Infra team to make sure there are no open holes.
> 
> Since the announcement of the testing phase, it has been running on a
> temporary server which is barely keeping up, so I'd like to open up a
> conversation about migration to the Infra OpenShift cluster.
> 
> Here is a brief overview of it's internals (I can elaborate more if anybody
> needs me to):
> 
> Backend is a Flask/Python application leveraging Celery for planning and
> executing the cache refreshes. The API is striving to be as non-blocking as
> possible, using asynchronous-inspired behaviour. The client is given the
> data currently available in cache, and advised about the completeness
> (complete/partial cache misses) via HTTP status code.
> 
> The parameters for cache refreshes can be customized, depending on the
> resources we have/can get. Currently, it's retrieving data for most of the
> items every 2 hours (with exceptions like package versions which run daily
> and are terribly slow). Backend is caching data for PRs, bugs, and
> pre-calculated updates/overrides data for users visiting the app at least
> once in two weeks. The main storage is a PostgreSQL database, and
> optionally, if RAM is not an issue, we have a local memory-cached layer
> that can be enabled (we find it not necessary ATM).

Has there been any thought about using fedora-messaging to update the
cache? ie, sync, then listen for messages and update as you go and only
need to do the full sync on startup?

> Apart from storing the pre-crunched information from public sources, we
> keep timestamps of the last visit for each user.
> 
> Frontend is a React app fetching and displaying data from the backend
> (really nothing to add here :) ).
> 
> Based on the OpenShift testing, I've come to the following schema of pods:
> 
>    -
> 
>     Redis pod (Celery backend)
>    -
> 
>    PostgreSQL pod (cache and watchdog data storage)

In fedora infrastructure we use a external database server (non
openshift). This allows us to do backups nicely and let apps avoid
needing to manage their own db. 

>    Beat pod (scheduling tasks for data refresh)
>    -
> 
>    Flower pod (backend monitoring; nice to have, not absolutely necessary)
>    -
> 
>    Gunicorn/NGINX pod (Oraculum backend)
>    -
> 
>    NGINX pod (Packager Dashboard front-end).

Do you do ssl termination in the nginx pod? 
In fedora infra our proxies do the ssl termination (This allows us to
keep wildcard certs only on proxies). 

> On top of that, we need a number of worker pods completing the scheduled
> Celery tasks.
> 
> I am not sure how much RAM each pod in Infra OpenShift has, currently the
> workers seem to be performing best with about 512 MB memory limit. Ideally
> we’d like to have at least 12-16 Celery workers (more workers can, of
> course, run on a single pod).

Well, right now... lets see... 
We have 5 compute nodes:

os-node01.iad2.fedoraproject.org     693m         17%       8404Mi          35%       
os-node02.iad2.fedoraproject.org     381m         9%        16628Mi         69%       
os-node03.iad2.fedoraproject.org     2291m        57%       20539Mi         86%       
os-node04.iad2.fedoraproject.org     387m         9%        16014Mi         67%       
os-node05.iad2.fedoraproject.org     278m         6%        7764Mi          32%     

We can add more if needed. 
We might get more a sense of needs deploying this in staging...

> 
> Resource-wise it's not a small application (at least from my perspective :D
> ), but we believe it's a great value application which saves time for Red
> Hat and community package maintainers.

Yeah, it's pretty awesome. ;) 

> I'd like to hear your feedback, questions, requests for changes if there is
> anything preventing it from deployment in Infra OpenShift
> (architecture/code wise). And of course opinions on the feasibility of
> moving Oraculum and Packager Dashboard into the Infra OpenShift cluster.
> 
> Thanks!
> 
> [0] https://packager.fedorainfracloud.org/

Thanks for working on this and bringing it up. 

kevin

Attachment: signature.asc
Description: PGP signature

_______________________________________________
infrastructure mailing list -- infrastructure@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to infrastructure-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/infrastructure@xxxxxxxxxxxxxxxxxxxxxxx

[Index of Archives]     [Fedora Development]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]

  Powered by Linux