The webserver NGINX delivers all static content, e.g. images, JavaScript files or CSS files.
uWSGI is the application server that runs the DefectDojo platform, written in Python/Django, to serve all dynamic content.
The application server sends tasks to a Message Broker for asynchronous execution. RabbitMQ is a well established choice.
Tasks like deduplication or the JIRA synchonization are performed asynchronously in the background by the Celery Worker.
In order to identify and notify users about things like upcoming engagements, DefectDojo runs scheduled tasks. These tasks are scheduled and run using Celery Beat.
The Initializer setups / maintains the database and syncs / runs migrations after version upgrades. It shuts itself down after all tasks are performed.
The Database stores all the application data of DefectDojo. Currently PostgreSQL and MySQL
are supported, with PostgreSQL being the recommended option. Please note the django-watson
search engine require one or more MyISAM tables, so you cannot use Azure MySQL or Cloud SQL for MySQL. AWS RDS MySQL supports MyISAM tables.