新しいビルドを作成して本番環境にリリースするプロセスは、SDLCの重要なステップですが、多くの場合、後付けとして残され、会社ごとに大きく異なります。
私は、人々が組織内でこのプロセスに対して行った改善を共有し、私たち全員が「痛みを軽減する」ための措置を講じることができるようになることを望んでいます。
ですから、問題は、リリースプロセスの苦痛で時間のかかる部分を1つ特定し、それを改善するために何をしたかということです。
私の例:以前の雇用主では、すべての開発者が1つの一般的な開発データベースでデータベースを変更しました。次に、リリース時期になると、RedgateのSQL Compareを使用して、DevデータベースとQAデータベースの違いから巨大なスクリプトを生成しました。
これはかなりうまく機能しますが、このアプローチの問題は次のとおりです。
- Devデータベースのすべての変更が含まれ、そのうちのいくつかはまだ「進行中」である可能性があります。
- 開発者が競合する変更を行うことがありました(リリースが本番環境に入るまで気付かれませんでした)
- スクリプトを作成して検証するのは、時間のかかる手動のプロセスでした(つまり、検証するということは、問題1や2などの問題を取り除くことを試みてください)。
- スクリプトに問題があった場合(たとえば、スクリプト内にあるがまだ実行されていない外部キーレコードに依存するレコードの作成など、実行の順序)、スクリプトを「微調整」してスムーズに実行するのに時間がかかりました。 。
- これは、継続的インテグレーションにとって理想的なシナリオではありません。
したがって、解決策は次のとおりです。-
- データベースへのすべての変更のポリシーを適用するには、スクリプトを作成する必要があります。
- スクリプトの正しい実行順序を確保するには、命名規則が重要でした。
- ツールを作成/使用して、リリース時にスクリプトを実行します。
- 開発者は、データベースの独自のコピーを開発しました(したがって、「お互いに足を踏み入れる」ことはもうありませんでした)
このプロセスを開始した後の次のリリースは、問題が少なく、はるかに高速でした。実際、見つかった問題は、スクリプトを作成しないなど、人々が「ルールを破った」ことによるものだけでした。
QAへのリリースに関する問題が修正された後、本番環境へのリリースの時期になると、非常にスムーズになりました。
他のいくつかの変更(CIの導入など)を適用しましたが、これが最も重要であり、全体として、リリース時間を約3時間から最大10〜15分に短縮しました。