継続的インテグレーション
継続的インテグレーション(CI)とは、新しいコードを頻繁にメインブランチに統合するためのソフトウェア開発手法です。CIは、変更をメインブランチにマージする前に自動テストを実行することで、新機能やバグフィックスがアプリケーションに追加されるまでの時間を短縮することを目的としています。DevOpsが導入された当初、CIは最初に使われたDevOpsのプラクティスの1つでした。CIは、開発者が提供するインフラを利用してテストを実行する。開発者はまた、ビルドと成果物の保管のためにインフラストラクチャを使用し、自動インストーラがピックアップされる前に成果物を保管できる中央ロケーションをホストします。
継続的デリバリー
開発者が自動化によって、機能やバグフィックスを開発環境からステージング環境や本番環境に移行させる機能のことです。継続的デリバリーは、開発者が変更を加えてから、その変更が本番環境で利用可能になるまでの時間を短縮することを目的としています。DevOpsの継続的デリバリーは、必要な統合、ステージング、およびデプロイメント環境について、Devのインフラストラクチャを使用します。継続的デリバリーは、開発とは別のブランチを作成し、必要に応じて開発環境またはQA環境にデプロイすることができます。
テスト自動化
テスト自動化という用語は、DevOpsの継続的デプロイメントに移行する前に、自動化によってコードの変更をテストするDevの能力を指します。DevOps TAは、開発者が変更を加えてから、その変更によってアプリケーションの何かが壊れたかどうかを知るまでの時間を短縮することを目的としています。DevOps TAでは、テスト自動化に必要なDevOpsツールはすべてDevのインフラストラクチャを使用します。さらに、テスト自動化によって、必要に応じて開発環境、QA環境、または本番環境でテストできる開発テストブランチを作成します。
コードとしてのインフラストラクチャー
Infrastructure as Code(IaC)は、スクリプトを使用してサーバー仮想化、クラウド管理、構成管理を管理するプロセスです。チームはスクリプトを使用して反復作業を自動化することで、DevOpsの実践をスケールアップさせることができます。DevOpsチームは、ツールチェーンのさまざまなツールを統合することで、パイプラインのワークフロープロセスを最適化します。また、パイプラインを使用してプロセスを自動化することもできます。IaCとDevOpsのプラクティスは、DevOpsでは開発チームがコードをOpsチームと統合し、実行中のシステムを提供・維持することが求められるため、連携しています。
コンフィギュレーション管理
構成管理は、企業環境におけるサーバーやその他のインフラを迅速かつ容易にプロビジョニングできるプロセスを構築するために、DevOpsの重要な要素となっています。例えば、1台のサーバーにのみ変更が必要な場合でも、ネットワーク全体に設定変更を適用することができます。また、物理的なアクセスが必要なシステムに対して、管理者がリモートでスクリプトを送信することも可能です。このプロセスでは、ホストはコードで簡単に設定できるようにセットアップされます。つまり、設定変更が標準化され、開発者の時間を奪うことなく、すべてを設定することがはるかに容易になるのです。これは、すべての変更を追跡する設定管理ツールによって実現されます。また、エラーが発生した場合は、以前の構成に素早くロールバックすることができます。
モニタリングとロギング
モニタリングとロギングは、DevOpsのプラクティスにおいて不可欠な側面です。”seeing what you expect “という一般的なルールに則っているからです。何かがうまくいかないとき、ログを見たりメトリクスを監視したりすることで、これらの問題を見つけることができます。モニタリングとロギングの目標は、プロアクティブになり、停止や中断を防ぐことです。例えば、ウェブサーバーのレイテンシーを監視し、DDoS攻撃が発生するようなことが起こる前に対策を講じることができるのです。監視の利点は、障害が発生する前に問題を発見できることです。健全なDevOps文化を維持したい企業では、モニタリングとロギングのプロセスを明確にすることが必要です。