Проектируйте микросервисно. Получится как лего: опрятно и взаимозаменяемо.
Тем более разные части можно делегировать подружкам по кафедре.
Итак, микросервисы:
	- 1. Модуль захвата. Можно сделать на основе opencv. Присасывается к видео-потоку и ищет что-то похожее на лица, трекает их (opencv это хорошо умеет). Кадры с лицами гурппами кладёт в очередь (которая у вас отдельным микросервисом рядом крутится). Группы нужны, чтобы можно было улучшить распознавание за счет выбора наиболее однозначно распознаваемых ракурсов.
 
	- 2. Сервис распознавания. Вытаскивает таски с группами фоток из очереди и кидает в другую очередь на классификацию. После классификации всех вариантов группы выбирает самые надёжные варианты и пишет в БД события.
 
	- 3. Сервис классификации. Это воркер, он может масштабироваться (запускаться в нескольких экземплярах).
 
	- Достаёт таск (фоточку) из очереди, даёт своей нейроночке, а та выдаёт идентификатор класса и степень похожести.
 
	- 4. Вебсервис реализации дэш-борда - рендер и публикация текущей статисики и текущих событий.
 
	- 5. Сервис срочных уведомлений - выискивает из БД свежие тревожные события и рассылает СМС, дёргает сирену и активирует пулемётные турели.
 
Читайте про SOLID. Это надо знать и уметь как "отче наш".