開発サーバーと本番サーバーを適切に構成したので、ステージングをセットアップしたいと思います。 Google App Engineの環境は、新しく開発されたバージョンを本番環境にデプロイする前にライブでテストするのに役立ちます。
私は2つの異なるアプローチを知っています:
A。最初のオプションは、 app.yamlversionパラメータ。
version: app-staging
このアプローチが気に入らないのは、ステージングテストで本番データが汚染されていることです(間違っている場合は修正してください)。
最初の点に関しては、新しい namespaces python API を使用して「修正」できるかどうかはわかりません。
B。2番目のオプションは、 app.yamlapplicationパラメータ
application: foonamestaging
このアプローチでは、本番バージョンから完全に独立した2番目のアプリケーションを作成します。
私が目にする唯一の欠点は、2番目のアプリケーション(管理者のセットアップ)を構成しなければならないことです。
Gaebar のようなバックアップ\復元ツールを使用すると、このソリューションもうまく機能します。
Webアプリケーションのステージング環境をセットアップするためにどのようなアプローチを使用していますか?
また、デプロイする前にyamlを変更する自動スクリプトはありますか?
セットアップで2番目のオプションを選択したのは、それが最も迅速なソリューションであり、展開時にアプリケーションパラメーターを変更するスクリプトをまだ作成していなかったためです。
しかし、私が今見ているように、オプションAはよりクリーンなソリューションです。いくつかのコード行を使用して、バージョンに基づいてデータストアの名前空間を切り替えることができます。これは、ここに記載されているように、環境変数CURRENT_VERSION_IDから動的に取得できます。 http://code.google.com/appengine/docs/python /runtime.html#The_Environment
別のデータストアが必要な場合、オプションBは私にとってよりクリーンなソリューションに見えます理由:
オプションBを選択しました。プロジェクトを完全に分離するため、一般的には優れていると思います。したがって、たとえば、ステージングサーバーの構成の一部を試してみても、セキュリティに影響を与えたり、セキュリティを危険にさらしたり、本番環境で他のバタフライ効果を引き起こしたりすることはありません。
デプロイスクリプトに関しては、app.yamlに任意のアプリケーション名を含めることができます。いくつかのダミー/開発者名とデプロイするときは、-A
パラメーターを使用するだけです。
appcfg.py -A your-app-name update .
これにより、デプロイスクリプトが大幅に簡素化され、app.yamlで文字列の置換などを行う必要がなくなります。
オプションBを使用します。
アプリケーションレベルでdevをprodから分離することの利点に関するZygmantasの提案に加えて、devアプリケーションを使用してパフォーマンスをテストします。
通常、devインスタンスは、リソースをあまり利用できない状態で実行されます。これは、アプリケーションがどこで「遅い」と感じるかを確認するのに役立ちます。次に、パフォーマンス設定を個別に微調整して、何が違いを生むかを確認することもできます(フロントエンドインスタンスクラスなど)。
もちろん、時には弾丸を噛んだり、ライブで微調整して見たりする必要があります。しかし、他のアプリケーションで遊ぶのはいいことです。
名前空間とバージョンを引き続き使用します。devだけがダーティで実験的です。
私はオプションAを好み、処理を自動化するために 単純なビルドスクリプト を設定しようとしています