SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

GitOpsで実現する継続的デリバリー

Gitで継続的デリバリーを実現する「GitOps」とは? 概要とGitOpsソリューションの紹介


  • このエントリーをはてなブックマークに追加

 GitOpsとは、分散バージョン管理システムであるGitを使用して、全てのアプリケーションとインフラストラクチャの望ましい状態を宣言的に記述し、管理する手法で、継続的デリバリーを実現する一つのモデルです。本連載では、GitOpsを活用した継続的デリバリーやプログレッシブデリバリーについて紹介します。第1回では、GitOpsの概要やメリット、GitOpsを実現するソリューションを紹介します。

  • このエントリーをはてなブックマークに追加

はじめに

 本連載はソフトウェアデリバリーにおける継続的デリバリー・プログレッシブデリバリーについての連載で、以下の3つの記事で構成されています。

 第1回となる本記事では、継続デリバリーについての概要、話題となっているGitOpsは何か、どんなメリットがあるのか、現在のGitOpsソリューションについて紹介します。

 第2回では、プログレッシブデリバリーの解説と各ソリューションの紹介・比較について説明します。

 第3回では、実際にPipeCDを活用し、インフラストラクチャからアプリケーションの継続的デリバリーの実践方法について紹介します。

継続的インテグレーション(CI)と継続的デリバリー(CD)の違い

 ソフトウェア開発者は、ソフトウェアの変更を日常的にコミットしています。その変更は、素晴らしいアイデアに基づいた大きな機能追加や、小さなバグ対応の場合もあります。そのような変更をユーザーへ反映するプロセスはソフトウェアデリバリーと呼ばれ、以下のことを目指しています。

  • 変更点を出来るだけ早くユーザーへ届ける
  • 変更点へのフィードバックを出来るだけ早くもらう

 これらのためにデリバリープロセスの速度や精度を向上させる必要があります。それだけでなく、コストやリスクを下げるためにも、人間が手動で行っている部分を自動化していくことが求められています。CI/CDはその自動化プロセスの一部を担っており、モダンな開発プロセスには不可欠な存在となっています。

 CI/CDはひとくくりとして捉えられることが多いですが、CIとCDは全く別の役割を担っているため、別々のシステムとして動かすようになってきています。

CIとCDは別の役割を担っている
CIとCDは別の役割を担っている

 CIとはContinuous Integrationの略で、継続的インテグレーションと呼ばれています。CIの主な目的は、開発者がコミットした変更点に対して以下のアクションを行うことです。

  • 自動的に初期のフィードバックを返す
  • 生成物としてアーティファクトを作成・保存する

 初期のフィードバックとは、システムのビルド・テスト・規約チェックなどのタスクを実行することで早めにバグやコード品質に関する検証結果を開発者に提供することです。全ての検証が通ったら、CIのアウトプットとしてアーティファクトを作成して、ストレージに保存します。アーティファクトとは色々な種類があり、アプリケーションの場合は最近Dockerイメージがよく使われていますが、各開発言語のバイナリファイルも使われています。インフラ構築や設定のコードの場合のアーティファクトはTerraform Moduleなどが多いです。クラウドネイティブアプリケーションの設定ファイルは、HelmのChart、KustomizeにおけるKustomizationファイルなどです。

 一方、CDとはContinuous Deliveryの略で、継続的デリバリーと呼ばれています。CDは、CIから生成されたアーティファクトを特定のリリースプロセスに準じて、アプリケーションのユーザーに対し変更点を反映します。こうすることで、ユーザーへ新たな価値を提供できます。CDプロセスでは以下のことを目指しています。

  • 変更点を迅速にユーザー側へ反映すること
  • リスク・変更点のネガティブなインパクトを小さくすること

 CDは継続的デプロイ(Continuous Deployment)という概念もあり、継続的デリバリーの次のレベルだと言われています。前述した継続的デリバリーは厳密には完全な自動化は見込めません。継続的デリバリーはCIを通過してもビジネス要件等の都合によりリリースタイミングは人間によって決定されます。一方で継続的デプロイではCIさえ通れば、明示的な承認なしで自動的に運用環境へデプロイされます。つまり、新しいアーティファクトが生成されると人間の介入なしで自動的にデプロイ・リリースされます。

 継続的デリバリーは色々な面で進化しています。以前は専用の運用チームで手動リリースしたり、CIシステムでリリースタスクを作成して行ったりする方法がよく採られていましたが、PipeCD、FluxCD、ArgoCD、Spinnakerなどの専用CDシステムが使われるケースも増えてきています。これらのCDシステムは、GitOpsというモデルを採用していることが共通点として挙げられます。

 次項からは、GitOpsについて説明します。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
GitOpsの概要

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
GitOpsで実現する継続的デリバリー連載記事一覧

もっと読む

この記事の著者

Le Van Nghia(nghialv)(株式会社サイバーエージェント)(Le Van Nghia)

 サイバーエージェントに新卒として入社し、Ameba, FRESH LIVE、ABEMAでの開発にジョイン。現在は社内基盤であるPipeCDの開発チームに配属。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/14310 2021/07/15 17:21

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング