『継続的デリバリー』 第14章 学習メモ
バージョン管理の概観
1.はじめに
継続的デリバリーにおける、バージョン管理についての調査記録です。
継続的デリバリーの中での、バージョン管理についての概観を記載します。
『継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化』の第14章に対応します。
2.概要・目的
バージョン管理は、すべての変更の履歴を管理し、複数チームで開発するアプリケーション全体のコードベースを管理する。
3.背景
リビジョンとは、ディレクトリ群の中にある変更されたファイルのセットで構成されたもの。チェンジセットとも言う。 各リビジョンにはリポジトリ内の全ファイルの、ある特定の時点のスナップショットが含まれている。 リビジョン管理システムの歴史についての観点は以下の通り。
- CVSにあった問題
- SVNによる解決
- 商用のバージョン管理システム
- 〇楽観的ロック/×悲観的ロック
- 衝突の解消
4.対応概要
(1)ブランチとマージ
ブランチとマージの分析の観点は以下の通り。
- コードラインポリシー
- マージの問題
- リリースブランチ以外を作らないことの作用→CI
(2)メインラインでの開発
メインライン上での開発の観点は以下の通り。
- 高速フィードバックによりほぼ常にリリース可能な状態。
- メインライン上での開発のCIへの作用
- 不要ブランチの回避
- 抽象化によるブランチパターンの適用
5.対応詳細
(1)分散バージョン管理システム
分散バージョン管理システムの観点は以下の通り。
- 分散バージョン管理システムの作用
- コミット権のボトルネックの解消
- 分散バージョン管理システムの歴史
- 分散バージョン管理システムのCIへの対応
- 企業環境にも対応するための多くの機能を持つ
- 分散バージョン管理システムの使い方と作用
(2)ストリームベースのバージョン管理システム
ストリームベースのバージョン管理システムの観点は以下の通り。
- 「継承」が可能
- 問題:CI・CDへの違反
- Gitなどの分散バージョン管理システムで解決可能
- 静的ビューと動的ビュー
- 問題:速度とロールバック
(3)ブランチ
ブランチの観点は以下の通り。
- リリース用のブランチが解決する問題
- フィーチャーブランチのCIに対する問題と対応
- オープンソースソフトウェアで十分に制約を満たしたときのみ機能する
- チームブランチ≒フィーチャーブランチ
- 以下のような条件が揃って初めて、疎結合なコンポーネントへの移行に使える
- 分散バージョン管理システムの機能
- インクリメンタルな開発
- カプセル化
- 以下のような条件が揃って初めて、疎結合なコンポーネントへの移行に使える
6.影響・作用
バージョン管理のパターンがデプロイメントパイプラインの設計の重要なポイントとなる。
バージョン管理によって素早くローリスクなリリースが可能となる。
7.おわりに
以上が、継続的デリバリーの中での、コミットステージについての概観です。
8.参考文献
『継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化』 第14章 高度なバージョン管理