на самом деле все просто, разбив код на слои контроллер-сервис-репозиторий
репозитрий - работа с бд
сервис - бизнес логика
контроллер - работа с клиентом (http)
раннеры в любом случае нужны, ставятся на любой машине, на веб сервере где сайты ниче не ставиться нужен тока ssh доступ к ним. П.с. сам не администрирую gitlab поэтому знаю поверхностно.
на продакшен если в ручную нужно гуглить, на сколько я помню по ролику, там можно это организовать
если вы хотите за один запрос спарсить страницу, вытащить данные и добавить в базу то да через транзакции, но из практики я бы порекомендовал сперва нацелится на скачивание страниц в локальное хранилище
вы можете обработать условие "не успел спарсить 10 страниц и закрылся" например exception и сменить состояние на ERROR, или вернуть обратно в READY
тогда будет повторно запрошен на скачку
в свое время подключил к codeigniter composer и подтянул нужные либы, организовал автозагрузку классов в приложении, CI гулял по приложению в виде DI контейнера, но со временем решил вообще от CI избавиться, теперь это прошлое.
репозитрий - работа с бд
сервис - бизнес логика
контроллер - работа с клиентом (http)