12-Factor ブログは、アプリが「管理/管理タスクを 1 回限りのプロセスとして実行する」必要があることを示唆しています。
Java/Spring-boot アプリケーションのコンテキストでは、それはどういう意味ですか? 例を挙げてもらえますか。
12-Factor ブログは、アプリが「管理/管理タスクを 1 回限りのプロセスとして実行する」必要があることを示唆しています。
Java/Spring-boot アプリケーションのコンテキストでは、それはどういう意味ですか? 例を挙げてもらえますか。
サイトはこれを示唆していません。開発者はこれを行う可能性があり、そうする場合は、他のコードと同じ標準を適用する必要があると述べています。
1 回限りの管理プロセスは、長時間実行されるアプリの通常のプロセスと同じ環境で実行する必要があります。それらは、そのリリースに対して実行されるプロセスと同じコードベースと構成を使用して、リリースに対して実行されます。同期の問題を回避するために、管理コードはアプリケーション コードと一緒に出荷する必要があります。
私のアプリケーションの例: ユーザーは招待状を送信できます。受信者は 7 日以内に返信する必要があります。そうしないと、招待状の有効期限が切れます。これは、招待状にタイムスタンプを付け、 と同等のデータベース クエリを実行することで実装されますDELETE FROM Invitations WHERE expiration < NOW()
。
これで、誰かにデータベースにログインしてもらい、このクエリを定期的に実行させることができます。ただし、代わりに、この「クリーンアップ」操作は のような URL でアプリケーションに組み込まれ、/internal/admin/cleanInvitations
そのエンドポイントは外部の cron ジョブによって実行されます。スケジューリングはメイン アプリケーションの外部にありますが、すべてのデータベース構成、接続、およびロジックは、メインのビジネス ロジックと共にアプリケーション内に含まれています。