セーフガードのどのような誤って本番環境への意図しない変更を避けるために使うのですか?
-
12-09-2019 - |
質問
私たちはしばしば私たちの生産システム上の問題をデバッグする必要があります。我々は、Web、アプリケーション、およびデータベース・サーバーを持っています。
の保障措置のどのようなあなたはこれをやったときに誤って本番環境への意図しない変更を加えることを避けるために使用しますか?
<時間>EDIT:
アプリケーションは、非常に複雑なB2B垂直ウェブアプリケーションです。関連するデータがたくさんあります。いくつかのテーブルを100万のレコードの近くに持っています。
<時間>EDIT:
私たちは場所に持ってステージング環境は、生産を反映する能力を持っていません。実際のデータベースのデータ以外にも関連するデータファイルの数百GBもあります。
<時間>EDIT:
私たちは、コードのためではなく、ストアド・プロシージャのソースコントロールを使用して行います。そこソースコントロールでいくつかの古いストアドプロシージャがありますが、誰もがもう更新されていること保ちません。
主な懸念は、ファイルシステム上のデータベースとのデータです。
ところで、私はこの会社のコンサルタントではなく、実際の従業員です。
解決
最も直接的な答えは:「それをしないでください。」
他のヒント
ソースコントロール。物事には、取り返しがつかないほど間違ったロールバックのようなものはありません。また、diffはあなたが他の生産システムへの変更を複製することができます。
新製品リリースは、当社のシステムの連中を経由して行く、プログラマーや開発者が唯一の彼らの新しいシステムを作るために要求することができ、承認も同様に必要とされている、生きて行く、と我々は行われているそれぞれの変更を含むことで(テストされていることを示しています生産要求で、このリリースでテストしたすべてのスナップショット)。
私たちは、問題が発生した場合には、フォールバックの前の製品リリースをキープます。
物事は(彼らは適切な試験手順及び管理のリリースでは頻繁に行うべきでない)壊れないならば、我々はロールバックするか、または修正プログラム。物事がライブで壊れや修正が小さいしていることが多いとき、私たちは、その後、修正プログラムの適切なテストを行うことをテストするために修正を移動することができます。
にかかわらず、時には物事がすることによって得る...
のみ変更を加えるように、異なるログインする必要がありますので、特定のアカウントは、書き込みアクセスを許可する
Webサーバー上に、互いをミラーリングする2つのディレクトリ構造は、1つのみIDは、他のステージングディレクトリを作成することができる場所、誰もが書くことができますがあります。
データベース・サーバ上の、唯一のIDは、誰もが書くことができますステージングデシベルを持って、書くことができる1つの製造DBを、持っています。ステージングDBは、それに復元夜間バックアップを持つことができます。
あなたが悪いクエリまたはステージングシステムリソースの一部のリソースを独り占めしている場合は、しかし、生産からプルされ、マシンがハングアップする可能性があります。
Webおよびアプリケーションサーバーの場合、私は(ただし、同じ環境上の)新しい場所に環境をコピーしようと、影響を受けた人々はコピーで動作を再現する必要があります。これは、少なくともあなたに誤ってあなたの顧客の100%をねじ込むからの分離のレベルが得られます。
データベースサーバの場合、私は唯一の権利を読んでそれらを与えるために、生産システム上でユーザーアカウントを構成します。
読み取り専用/ゲストアカウント。真剣に。それはあなたが常にrootまたは管理者としてログインしていないのと同じ理由です。
このは厳しいもので、それはの領土で行く「ノーステージング環境。」
多くの理由から、それは...あなたがステージに使用することができますPRODの専用(複製)がに展開持つようにして上でデバッグするのがベストですが、私はあなたが出始めているとき、時々うまくいかないということを知っています早くまたは徹底的に私たちがしたいと思うようます。
私は仕事を見てきたことの一つは、VMの使用である:脇デバッグ環境から、あなたはVMでのミニPRODを作成して、デバッグにそれを使用することができます。これは、その地域のように追加の詳細は、参考になるあなたが開発しているアプリの種類与えられた実用的ではないかもしれない。
デバッグ時にPRODへの変更を回避するためとして:あなたは、デバッグを容易にするために、何も変更する必要があると思います理由はありますか?もしそうなら、それは別の方法を解決するために探して価値があるかもしれません。
バージョンコントロール本番環境への変更を制御するために非常に便利です - ちょうどリポジトリから本番環境の適切なディレクトリやディレクトリの作業コピーを作成します。アップデートをロールアウトすると、あなたのソース管理システムが変更されたすべてのファイルがコピーされますことを確認します。アップデートが何かを壊したとき、あなたは壊れていなかった最後のリビジョンに戻す作業コピー生産をロールバックすることができます。また、あなたがタグから代わりのトランクから本番WCをチェックアウトすることができます。あなたはリビジョンが、タグを調整することにより、本番環境に適用するリポジトリを決めることができ、そのようます。
あなたはバージョン管理システムの概念に慣れていない場合は、、私はいくつかの研究を行うためにあなたをお勧めします。彼らは、概念的には複雑ですが、非常に便利で強力なです。 Wikipediaの記事は、開始するには良い場所です。 http://en.wikipedia.org/wiki/Revision_controlする
私は申し訳ありませんが、あなたは、ステージング環境を持っている必要があります。何この歩き回るはありません。それはあなたがあなたのデータセットのサイズを淘汰しなければならないことを意味した場合、それはあなたがしなければならないものです。あなたがそれらを持っている場合(これは多くの時間のプロセスであり、ので、多分実用的ではない)、ダウン期間中の生産システムをインポートするためにVMwareおよびVMwareのコンバータを使用してください。
あなたは、生産のDB(またはコピー)へのフルアクセスを持たずに解決できない問題の特定のクラスがありますが、パフォーマンスは、これらのいずれかです。しかし、あなたは本当にそれが剥ぎ取らデータセットで誰かのデスクトップマシン上にある場合でも、ステージング環境を構築する必要があります。
はさておき、私は過去にこれらのいくつかで私の人生を生きるために持っていた、と本当に、あなたはバックアップの多くを除き、できることは何もありません。そのすべての変更は、増分バックアップが先行されなければなりません。あなたが何かをfubar'd場合はその方法は、あなたが失ってしまった量はかなりのではありません。 SQLサーバーは、バックアップに使用ディスクスペースの量を制限する差分バックアップを取ることができます。オラクルにもすることができます。
の場合、あなたは本当に他の選択肢を持っていない、...慢性的な状況ではないん神下さい」とのフラグに(ファイル、またはデータベース)アプリケーション・データへのデータのセットをいくつかの方法を追加することを検討する可能性がありますこのフラグが有効化されている場合、実際に積極的にあなたが実際に作用しているデータのない生産・ロジックのほとんどを行使することができるかもしれない、プロセスの重要な位置にダンプデータと組み合わせて、このデータ」で生産状態を変更します。