Hi all,
I would like to start working on the replacement application for PDC in
Fedora. So far I have been mostly looking at the technical side of the
application and how it will be setup in our infrastructure.
Below is a list of the design decisions I am looking to take. I would
really value some feedback on this in order to see if this is realistic or
not.
# Technical stack
* Python 3 (just making it obvious)
* Django 1.11 LTS (supported until at least April 2020) [0]
* DRF 3.8.2 (latest version)
Using Django and DRF (Django REST Framework) should allow us to reuse some
of PDC code.
# Application architecture
* 1 backend service used to update the PDC database (currently
pdc-updater [1])
* 1 frontend service serving the API HTTP endpoint and the HTML
documentation of these endpoint.
* 1 database
# Deployment architecture
* Backend service runs in Openshift (need access to the
fedora-messaging bus)
* Frontend service runs in Openshift
* Database runs in on Fedora Infrastructure database hosts.
# Development Workflow
* I would like to have the possibility for these services to be
automatically deployed on our Openshift instances (stg and prod) using the
Github build trigger [2] available in Openshift.
An idea to achieve this is to use Openshift S2I (source-to-image) [3]
feature and use PyPi to install the application dependencies. In order to
control which dependencies we are using and pulling from PyPi we could use
devpi [4] as a caching proxy.
Thanks,
Clément
[0] -
https://www.djangoproject.com/download/
[1] -
https://github.com/fedora-infra/pdc-updater
[2] -
https://docs.openshift.com/online/dev_guide/builds/triggering_builds.html...
[3] -
https://github.com/openshift/source-to-image
[4] -
https://devpi.net/docs/devpi/devpi/latest/%2Bd/index.html