DevOpsは、アプリケーションを開発して公開し、サポートからのフィードバックを反映していく方法として主流になりつつあります。しかし、DevOpsを成功に導くには、組織面での複雑さやマシンデータの収集といった課題を克服する必要があります。
ソースコード管理とは、ソースコードの変更を追跡管理することです。コードベースに対する変更履歴を保持することにより、プログラマー、開発者、テスターは常に最新の適切なコードで作業していることが保証されます。また、複数のソースからのコードをマージ(結合)する際に競合を解決することもできます。
ソースコード管理が重要なのは、開発環境では一般的に複数の開発者が1つのコードベースを共有するためです。この場合、各開発者が実装した担当機能のコードが競合する問題や、ある開発者が保存した内容を別の開発者が上書きする問題が起こり得ます。
ソースコード管理を導入しない限り、こうした問題を防止する策はほとんどありません。せいぜい、開発者が作業を始めるたびに、他の開発者全員にそれを知らせて、そのコードファイルを同時に編集しないよう注意を促すことくらいです。
それは確実なプロセスとはとても言えません。仮にうまくいったとしても、この方法ではプロジェクト内で行われたすべての変更の履歴を残すことができず、コード変更によってバグが発生した場合に、その原因となった箇所を突き止めて解決策を探ることはできません。
ソースコード管理は、各開発者が行った変更を記録し、競合を検出して、コードの上書きを防ぐことにより、これらの問題を解決します。競合が検出されたときは開発者に通知されるため、ソースコードにマージする前に修正して、アプリケーションでバグが発生するのを防止できます。
以下のセクションでは、ソースコード管理の仕組み、ソースコード管理がソフトウェア開発にもたらすメリット、ソースコード管理プロセスを最大限に活用するためのベストプラクティスについて説明します。
ソースコード管理プロセスの中核を担うのは、コードリポジトリとソースコード管理システムです。コードリポジトリは、組織のすべてのコードが保存される中央のサーバーで、ソースコード管理システムは、さまざまな開発プロジェクトのコード変更を追跡するシステムです。
ソースコードはそれぞれ、個別のファイルとして保存されます。開発者がコードのリビジョンを作成するためにファイルを「チェックアウト」すると、開発者のローカル環境にファイルのコピーが送信されます。このとき、リポジトリ内のオリジナルファイルがロックされるため、他の人がチェックアウトして、現在編集している開発者の変更内容を意図せず上書きするのを防ぐことができます。開発者は、コードを変更してテストした後、ファイルを「コミット」して、変更後のコードをリポジトリに保存します。これによって、変更されたファイルが新たなオリジナルファイルになり、「バージョン管理」と呼ばれるプロセスによってコードのバージョン番号が1つ上がり、ロックが解除されます。
他の開発者がどのファイルのコードを変更する場合でも、常に同じプロセスが繰り返されます。ソースコード管理システムは、すべてのリビジョンを保存および管理して、各コードの完全な履歴を保持します。
すべてのソースコード管理ツールで共通して使用される用語がいくつかあります。
ソースコード管理にはさまざまなメリットがあります。
バージョン管理とは、コードの変更を時間に沿って追跡できるようにリビジョンを管理することです。ソースコード管理と同じ意味で使われることもよくあります。
バージョン管理に対応したソフトウェアでは、特殊なタイプのデータベースで、すべてのコード変更が追跡されます。開発者がファイルを変更して保存しても、そのファイルの以前のバージョンで行われた変更は上書きされず、履歴としてすべて保持されます。
このようにすべてのコード変更をバージョンで分けて維持することにはいくつかのメリットがあります。
ブランチの扱いの違いによって、バージョン管理システムは集中型と分散型の2種類に分けられます。
いずれのタイプのバージョン管理システムにもメリットとデメリットがあります。集中型は、分散型よりもセットアップが簡単で、構成もシンプルであり、使い方がわかりやすいというメリットがあります。また、コードが単一のサーバーに保存されるため、アクセス管理も容易です。分散型は、ネットワークに接続する必要がなく、ネットワークの遅延の影響を受けないため、一般的に集中型よりもパフォーマンスが高速です。また、コードベース全体がローカルにあるため、コードファイルのロック解除を待つ必要がありません。さらに、メインサーバーで障害が発生しても、分散型なら完全なコード履歴がローカルに保存されているため、それをバックアップとして使用できます。
ソースコード管理システムは、ソフトウェア開発チームのコーディング作業を調整するソフトウェアツールで、BitbucketやIBM Rational Clearcase、オープンソースではGithubやApache Subversionなどがあり、「バージョン管理システム」や「ソース管理システム」と呼ばれることもあります。
ソースコード管理システムの主な機能は、ファイル、設定、バージョンの管理です。これらの機能を使って、開発チームが常に最新のコードで作業していることを保証するとともに、開発者が互いのコード変更を上書きしてしまうのを防ぐことができます。ソースコード管理ツールを使用すれば、複数の開発者が並行してコーディングを行い、作業が完了したら変更をマージできます。また、要求された変更の追跡とレビュー、バグ修正の監視、リリース作業もツール内で実行できます。
市場にはさまざまなソースコード管理ツールまたはシステムが提供されています。ツールを選択するときは、組織の規模、リソース、ニーズに最適な機能の種類や範囲を検討します。
ソースコード管理はDevOpsライフサイクルにおいて重要な役割を果たします。その役割を理解するには、ライフサイクル全体を把握する必要があります。最近のソースコード管理システムの多くは、CI/CD機能を備えています(Githubアクション、Gitlabパイプライン、Microsoft Azure DevOps Serverなど)。
DevOpsライフサイクルは、ソフトウェア開発プロジェクトの構造と継続性を確立する7つのフェーズで構成されます。各フェーズは次のとおりです。
以下のベストプラクティスに従えば、ソースコード管理を最大限に活用できます。
ソフトウェア開発では、プロジェクトとそのコードベースの数や規模が拡大し複雑化するにつれて、ソースコード管理ツールの重要性が増します。修正するアプリケーションのバージョンを間違え、さらに悪い場合には修正すべきバグを残したままリリースしてしまうと、時間、コスト、顧客の信頼を大きく損なうことになります。ソースコード管理は簡単に導入でき、効果的に実践すれば、開発プロセスを加速させ、チームの生産性を向上させ、製品の品質を改善することができます。
DevOps 5つのプラクティス
DevOpsチームの明暗を分ける5つのプラクティスについてご紹介します。
DevOpsは、アプリケーションを開発して公開し、サポートからのフィードバックを反映していく方法として主流になりつつあります。しかし、DevOpsを成功に導くには、組織面での複雑さやマシンデータの収集といった課題を克服する必要があります。
DevOps Dozen2 Awardsで最優秀電子書籍賞を受賞しました。オブザーバビリティとは何か、単なる監視とは何が違うのかについてご紹介します。
Splunkプラットフォームは、データを行動へとつなげる際に立ちはだかる障壁を取り除いて、オブザーバビリティチーム、IT運用チーム、セキュリティチームの能力を引き出し、組織のセキュリティ、レジリエンス(回復力)、イノベーションを強化します。
Splunkは、2003年に設立され、世界の21の地域で事業を展開し、7,500人以上の従業員が働くグローバル企業です。取得した特許数は850を超え、あらゆる環境間でデータを共有できるオープンで拡張性の高いプラットフォームを提供しています。Splunkプラットフォームを使用すれば、組織内のすべてのサービス間通信やビジネスプロセスをエンドツーエンドで可視化し、コンテキスト(把握したい要素) に基づいて状況を把握できます。Splunkなら、強力なデータ基盤の構築が可能です。
日本支社を2012年2月に開設し、東京の丸の内・大手町、大阪および名古屋にオフィスを構えており、すでに多くの日本企業にもご利用いただいています。
© 2005 - 2023 Splunk Inc. 無断複写・転載を禁じます。
© 2005 - 2023 Splunk Inc. 無断複写・転載を禁じます。