GCP上でRailsアプリを構築しているのですが、非同期処理の実装方法に悩んでいます。
AWSを使っていた頃はAWS上でRedisを立て、Sidekiq用のWorkerサーバをAppサーバとは別に立てて非同期処理を行なっていました。
当初はGCP上でも同様の方法にしようと思ったのですが、もっと低コストで実現できないか?と思い、色々と悩んでいます。
ちなみにAppサーバはGAEのStandardを利用しています。
現状
Workerサーバ用にGAEのFlexible環境の常駐インスタンスを立てています。
非同期処理にはCloud Pub/Subを使っています。
- AppサーバからPub/Subでメッセージを送信
- WorkerサーバでPub/Subのメッセージを常に確認し、メッセージを受信したら処理を行う
メリット
- WorkerサーバはPub/Subのメッセージを確認しているだけなので外部からはアクセスできない
デメリット
- GAEの常駐インスタンスの料金が高い
考えたこと
Cloud Tasksを利用する。
- Appサーバ上でTask作成
- Workerとして立てたGAE Standard環境のインスタンスがTaskを処理
メリット
- 現状より料金は安くなる
デメリット
- Workerサーバに外部からアクセスできてしまう(調べた限りではサービス単位ではファイアウォールルールを設定できなさそうでしたので・・・)
- アプリ側でアクセス制限か認証を行う必要がある
相談
何か良い方法があれば教えてください。
料金面はありますが、良い方法がなければひとまず現状のままで行こうと思っています。
あなたの回答
tips
プレビュー