2

私のウェブサイトは AWS Elastic Beanstalk (PHP) でホストされています。Yii Framework を MVC として使用しています。

少し前まで、毎日 SQL クエリを実行したいと思っていました。Beanstalk で cron を実行する方法を調べたところ、Cloud と Cron の概念を統合するのは複雑に思えました。私は Iron Worker ( http://www.iron.io/worker ) に出くわし、現在正常に機能しているワーカーを作成することができました。

今日は、より複雑な cron を実行したいと考えています (データベースで通知を探し、メールを送信するかどうかを決定し、メール テンプレートを作成して (AWS SES 経由で) メールを送信します)。

私が理解していることから、ワーカー ファイルは自己完結型のアイテムであり、機能するために必要なものがすべて含まれているはずです。しかし、私は MVC の構築に多くの時間と労力を費やしてきました。複雑なモデル、検証、電子メール テンプレート エンジンなどがあります。Iron Worker を作成するために行った作業を使用するのは非常に難しいようです。すべてのコードをワーカーに移植できたとしても (これは大変な作業のように思えます)、メイン コードに変更を加えるたびに、ワーカーにもそれらの変更があることを確認する必要があります。これは、コードの「ブランチ」を持つことを意味します。将来、より多くのワーカーを作成したい場合はなおさらです。

正しいアプローチは何ですか?

4

1 に答える 1

2

短期的には、IronWorker のスケジューリング機能を使用して、アプリケーションのエンドポイントにワーカーをヒットさせることができます。その後、エンドポイントはアプリ環境内で実行する操作をトリガーします。

長期的には、アプリケーションをより疎結合で分散させるサービス指向のアプローチを検討することをお勧めします。これが主題に関する投稿です。特にスケーラビリティと開発の俊敏性に関しては、多くの利点があります。

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

こちらの YII の追加もご覧ください。

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

不必要にアプリを書き直してほしくないのは確かですが、切り離すことができる領域がある可能性があります。ワーカー ディレクトリを作成し、自己完結型のワーカーを作成するように努力することを提案します。そのようにして、別の環境でそれらを実行し、ペイロードをワーカーに渡すだけで済みます。(プッシュ キューを使用して、これらのワーカーにプッシュすることもできます。) 分散非同期処理に慣れると、管理するのは非常に簡単なプロセスになります。

(注:Iron.ioで働いています)

于 2014-02-11T18:53:41.440 に答える