以前は、標準のLAMP構成でソーシャルWebサイトを実行していました。ライブサーバー、テストサーバー、開発サーバー、およびローカルの開発者マシンがありました。すべてGITを使用して管理されていました。
各マシンには、PHPファイルだけでなく、MySQLサービスと、ユーザーがアップロードする画像を含むフォルダーも用意されていました。Liveサーバーのユーザー数が100K(!)に増え、ダンプは約2GB(!)、Imageフォルダーは約50GB(!)でした。私が去ったとき、サーバーはCPU、Ram、そして何よりも同時接続数の制限に達していました(サーバーを最大化するために、独自のバージョンのネットワークカードドライバーをコンパイルしました)。GITに2GBのデータと50GBの画像を配置することはできませんでした(あなたのWebサイトで想定してはいけません)。
これらすべてをGITで簡単に管理するには、これらのフォルダーパスを.gitignoreに挿入して、バイナリフォルダー(画像を含むフォルダー)を無視します。また、Apacheのdocumentrootパスの外側にSQLというフォルダもありました。そのSQLフォルダーに、開発者からのSQLファイルを番号を付けて追加します(001.florianm.sql、001.johns.sql、002.florianm.sqlなど)。これらのSQLファイルもGITによって管理されました。最初のsqlファイルには、実際には大量のDBスキーマが含まれます。GITにユーザーデータ(ユーザーテーブルのレコードやコメントテーブルなど)を追加することはありませんが、構成やトポロジ、その他のサイト固有のデータなどのデータは、SQLファイルで(したがってGITによって)維持されていました。ほとんどの場合、SQLスキーマとデータに関してGITによって何が保守されていないかを決定する開発者(コードを最もよく知っている開発者)です。
リリースに到達すると、管理者は開発サーバーにログインし、ライブブランチをすべての開発者とマージし、開発マシンの必要なブランチを更新ブランチにマージして、テストサーバーにプッシュします。テストサーバーで、ライブサーバーの更新プロセスがまだ有効かどうかを確認し、続けてApacheのすべてのトラフィックをプレースホルダーサイトにポイントし、DBダンプを作成し、作業ディレクトリを「ライブ」から「更新」にポイントします。 '、すべての新しいsqlファイルをmysqlに実行し、トラフィックを正しいサイトに再ポイントします。テストサーバーを確認した後、すべての関係者が同意すると、管理者はテストサーバーからライブサーバーに同じことを行いました。その後、本番サーバーのライブブランチをすべてのサーバーのマスターブランチにマージし、すべてのライブブランチをリベースしました。
テストサーバーに問題があった場合。マージで競合が多すぎたため、コードが元に戻され(作業中のブランチが「ライブ」に戻っていることを示しています)、SQLファイルは実行されませんでした。SQLファイルが実行された瞬間、これはその時点では元に戻せないアクションと見なされていました。SQLファイルが適切に機能していなかった場合、ダンプを使用してDBが復元されました(開発者は、十分にテストされていないSQLファイルを提供したことを通知しました)。
今日、私たちはsql-upフォルダーとsql-downフォルダーの両方を同等のファイル名で維持しています。開発者は、両方のアップグレードsqlファイルを同等にダウングレードできることをテストする必要があります。これは最終的にbashスクリプトを使用して実行できますが、人間の目がアップグレードプロセスを監視し続けている場合は、この方法をお勧めします。
それは素晴らしいことではありませんが、扱いやすいです。これにより、実際の実用的な比較的可用性の高いサイトへの洞察が得られることを願っています。それは少し時代遅れですが、まだ続いています。