Используйте IronWorkers во время использования моей работы

Мой сайт размещен на AWS Elastic Beanstalk (PHP). Я использую Yii Framework в качестве MVC.

Некоторое время назад я хотел запускать SQL-запрос каждый день. Я посмотрел, как запустить cron на Beanstalk, и мне показалось сложным объединить понятия Cloud и Cron. Я столкнулся с Iron Worker ( http://www.iron.io/worker) и сумел создать работника, который в настоящее время отлично справляется со своей работой.

Сегодня я хочу запустить более сложный cron (найдите уведомления в моей базе данных, решите, следует ли отправлять электронную почту, создавать шаблон электронной почты и отправлять электронную почту (через AWS SES).

Из того, что я понимаю, рабочие файлы должны быть автономными элементами со всем, что им нужно для работы. Тем не менее, я вложил много времени и усилий в создание своего MVC. У меня есть сложные модели, проверки, шаблонизатор электронной почты и т. Д. Кажется, очень трудно использовать работу, которую я проделал, для создания Iron Worker. Даже если мне удалось перенести весь мой код на работника (что кажется большой работой), это означает, что каждый раз, когда я делаю изменения в своем основном коде, мне нужно убедиться, что у работника тоже есть эти изменения. Это означает, что у меня будет "ветвь" моего кода. Тем более, если я хочу создать больше работников в будущем.

Какой правильный подход?

1 ответ

Решение

В краткосрочной перспективе вы можете просто использовать возможности планирования в IronWorker и заставить работника достичь конечной точки в вашем приложении. Затем конечная точка будет запускать операции в среде вашего приложения.

В долгосрочной перспективе мы предлагаем вам взглянуть на более сервисно-ориентированный подход, при котором вы разбиваете свое приложение на более свободные и распределенные. Вот пост на эту тему. Преимуществ много, особенно в том, что касается масштабируемости и гибкости разработки.

https://blog.heroku.com/archives/2013/12/3/end_monolithic_app

Вы также можете взглянуть на это дополнение YII.

http://www.yiiframework.com/extension/yiiron/

Конечно, не хочу, чтобы вы переписывали свое приложение без необходимости, но есть вероятные области, где вы можете попытаться отделить их. Предложите создать каталог работников и приложить усилия к тому, чтобы рабочие были автономными. Таким образом, вы можете запускать их в другой среде и просто передавать полезные данные работнику. (Очередь push-уведомлений также может использоваться для отправки этих работников.) Когда вы привыкнете к распределенной асинхронной обработке, это довольно простой процесс для управления.

(Примечание: я работаю в Iron.io)

Другие вопросы по тегам