インフラ アプリケーションのスケーリングに成功したとしよう。DevOpsを使用して迅速かつ協調的なソフトウェア開発を行い、KubernetesやHashiCorp Nomadのようなコンテナ・オーケストレーションによって、基礎となるアプリケーションインフラ 、現在の需要に合わせてスケーリングしている。アプリケーションのコンフィギュレーションやその他のコンポーネントが整合性から外れてしまったり、環境を再作成する簡単な方法がない状態でリファクタリングの根本的な必要性が出てきたり、以前の状態にロールバックすることが沈むか泳ぐかの瞬間になったりするまでは。
自動化 宣言的インフラ デプロイメントとコンフィギュレーションを自動化することで、驚くような新機能や改良が施されたコードを素早く出荷することが容易になるだけでなく、ドリフトによる衝突を緩和し、また、デプロイメントとコンフィギュレーションの状態を管理し続けることができます。 状態デプロイ環境の状態を管理できる。クラウドネイティブ・アプリケーションは流動的で動的なクラウド環境で動作するように構築されているため、GitOpsが真に輝くのはこの点だ。
GitOpsとは?
GitOpsは、混雑したソフトウェア開発スペースに入り込んできた単なるバズワードではない。GitOpsは、Gitを単一の真実のソースとして使用するアプリケーションとインフラ のデプロイと管理を合理化し、自動化することを目的とした運用フレームワークだ。GitOpsは、クラウドネイティブのエコシステム、特にKubernetesベースの環境で急速に人気を集めている。
GitOpsにまつわる宣伝は、DevOpsを枕詞のように言い換えているように聞こえる人もいるかもしれない。そして、もし既にしっかりとしたDevOpsの文化があるのなら、GitOpsは何をもたらすのだろうか?
GitOpsとDevOpsの比較
DevOpsは、ソフトウェア開発ライフサイクルに、バージョン管理、コラボレーション、コンプライアンス、CI/CD、ロギング、モニタリングなど、高品質なアプリケーションを開発・提供するためのベストプラクティスをもたらします。GitOps は、デプロイ環境全体を管理し自動化するための、これらのベスト・プラクティスの運用実装です。
GitOps は、バージョン管理された git リポジトリを単一の真実のソースとして活用します。CDパイプラインは、クラウドインフラ の望ましい宣言的な状態を制御し、中央リポジトリにマージされた変更がその状態を強制するメカニズムをトリガーします。
GitOps はアプリケーション・コードのデプロイとインフラ 管理を自動化します。アプリケーションコードとconfig用に別々のレポを作成することで、ベストプラクティスに従います。アプリケーション・レポの更新がCI/CDツールのプロセスをトリガーし、configレポを更新します。コンフィグの変更は、デプロイ環境にプッシュ/プルされます。
GitOps のアプローチは、クラウドネイティブ開発の迅速性と柔軟性を補完する。反復可能なプロセスと統一されたデプロイ方法論により、チームはコラボレーションを犠牲にすることなく非同期で作業することができる。
GitOpsのメリット
GitOpsのアプローチを使うメリットには、以下のようなものがある:
- 運用の効率化。 インフラ のあらゆる側面のテストとデプロイを自動化することで、エンジニアが手作業や繰り返しの作業を行うコストと時間を大幅に削減できます。チームは、バグ修正や新機能の開発をスピードアップできます。インフラ の直接管理に費やす時間を減らすことで、監視と最適化に集中する時間を取り戻すことができます。
- より良いコラボレーション:開発、運用、DevOps の各チームは、同じ使い慣れたインターフェイス(git リポジトリ)を使用し、ピアレビューとプルリクエストのマージに同じ手順を活用します。デプロイメントと CI/CD プロセスへの統一されたアプローチにより、これらのチームは同じベストプラクティスを遵守しながら、より緊密かつ効率的に協力し合うことができます。
- 信頼性:GitOpsの自動化は、選択された環境にデプロイされる前にCIテスト・パイプラインでミスを発見するため、人為的ミスのリスクと影響を大幅に軽減します。インシデントが発生した場合、バージョン管理された状態の大きな利点は、以前の安定バージョンに迅速にロールバックできることです。
- セキュリティの強化:プッシュベースのアプローチでは、自動化ツールだけが環境への書き込みアクセスを必要とします。プルベースのアプローチでは、環境はgitリポジトリへの読み取りアクセスだけが必要です。これにより、攻撃対象が大幅に減少し、ほとんどの個人やチームが環境に直接アクセスする必要がなくなります。
- コンプライアンスと監査:git リポジトリをすべての変更の単一のインターフェイスとすることで、インフラ が継続的にコンプライアンス基準を満たしていることを保証するポリシーを、コードとしてプログラムで強制することが容易になります。バージョン管理により、リポジトリ全体の履歴が文書化されるため、監査が容易になります。
- 複数環境の自動デプロイ。一般的で強く推奨されるデプロイ戦略には、開発環境、ステージング環境、本番環境の分離、ブルー/グリーンデプロイメント、マルチクラウド、マルチリージョンデプロイメントなどがある。これは、手作業で行うには面倒で時間がかかり、ミスが起こりやすいプロセスになりかねません。GitOps のアプローチは、このような複数の環境をデプロイするための、より迅速で安定した方法を提供します。
もっと知りたいですか?Understanding GitOps ebookをダウンロードして、GitOpsの基本原則を理解し、実装戦略を検討しましょう。
コメント