本文へジャンプします。

TOP
クラウド トップ>クラウドナビ>技術解説>DevOpsを実現するには?クラウドを活用したDevOps環境の構築方法

技術解説

DevOpsを実現するには?クラウドを活用したDevOps環境の構築方法

2022年12月21日


 

DevOpsを実現するには?クラウドを活用したDevOps環境の構築方法

DevOpsとは?概要やアジャイル開発との違い、メリットなどを解説します」の記事では、DevOpsとアジャイル開発との違いや、DevOpsのメリットなど、主にDevOpsの概要について解説しました。本記事では、DevOpsの実施にあたって必要となるツールや、基盤にクラウドを利用したDevOps環境の構築方法など、より具体的なDevOpsの実現方法について解説します。

DevOpsを実現するためのツール

DevOpsとは、あくまで開発に対する考え方に過ぎません。そのためDevOpsの実践にあたっては、抽象的な考え方を、具体的な手順に落とし込んでいく必要があります。そこで重要となるのが、DevOpsライフサイクルの各ステップで使われるツール群です。具体的に各ステップでは、以下に挙げるようなツールが使われています。

「プラン」は、DevOpsライフサイクルにおける最初のステップです。ここではチームの課題を明確にし、やるべきことを決め、それぞれのタスクに優先順位をつけて可視化します。最初の計画が間違っていては、どのような作業も正しく行えません。そのような意味では、後の作業を決定する最も重要なステップだと言えるでしょう。このステップでは、進捗の把握や漏れ抜けの防止のため、「チケットシステム」や「プロダクトバックログ」といった管理システムが使われています。

「コード」は、実際にソースコードを作成するステップです。しかし複数の人間がコードに対して無秩序に変更を行うと、意図しないバグが混入したり、最新版がどのファイルかわからなくなってしまうといった混乱が起きがちです。こうした混乱は、修正されたはずのバグを再度混入させてしまったり、異なるバージョンをデプロイしてしまったりといった事故に繋がってしまいます。そこで「バージョン管理システム」を使い、プロジェクト管理下にあるファイルに対する変更履歴を記録します。複雑で巨大化する現代の開発作業は、バージョン管理システムのサポートなしには行えません。バージョン管理システムは、まさにDevOpsにおける開発の中核をなすツールだと言えるでしょう。そして数あるバージョン管理システムの中でも、現在世界中のソフトウェア開発の現場で活用されているのが「Git」です。Gitをベースとした、ソースコードホスティングのクラウドサービスである「GitHub」や「GitLab.com」なども広く利用されています。Gitについては、「DevOpsを実現するための代表的なツール「GitHub/GitLab」とは」の記事もあわせてご確認ください。

またどのようなコードにも、意図しない不具合、いわゆる「バグ」が存在します。バグは修正しなければなりませんが、コーディングと同様に、バグ修正も無秩序に行うわけにはいきません。そこで、どのようなバグが見つかっており、それは誰が、いつまでに修正しなければならないのか、といった情報を記録し、修正をリリースするまでの作業状況を追跡するツールが使われています。これを「バグトラッキングシステム」と呼びます。バグの修正作業に着手する前には、バグトラッキングシステムに問題点を登録し、あらかじめ可視化しておくことが重要です。バグトラッキングシステムの実装としては、オープンソースソフトウェアの「Redmine」などが有名です。またバグの修正はソースコードの修正を伴うことがほとんどのため、ソースコードホスティングサービスの機能の一環として、バグトラッキング機能が提供されていることも一般的です。例えばGitHubには、プロジェクトにおける問題点や作業を管理する「Issues」と呼ばれる機能が用意されています。

「ビルド」「テスト」「デプロイ」は、それぞれソースコードからアプリケーションを作成し、動作をテストし、実際にテスト環境や本番環境に配備するステップです。これらの一連のステップでは、CI/CDツールが使われています。CI/CDツールは、バージョン管理システムへのコードのコミットや、コードのマージといったイベントをトリガーとして、CI/CDのためのワークフローを起動します。このワークフローの中では、コードのテスト、アプリケーションのビルド、テスト環境へのデリバリーなどが、自動的に行われるようになっているのが一般的です。CI/CDツールとしては、オープンソースソフトウェアのJenkinsや、クラウドサービスであるCircleCI、Travis CIなどが有名です。またGitHubではGitHub Actions、GitLab.comではGitLab CI/CDというCI/CD機能が、ソースコードホスティングサービスの一環として提供されています。CI/CDについては、「CI/CDとは」の記事もあわせてご確認ください。

「運用」はアプリケーションやインフラを監視し、サービスを安定して稼動させ続けるための保守運用、トラブルシューティングなどを行うステップです。ここでは状態を監視するためのモニタリングツールや、インフラを管理するためのIaCツールが使われます。

サービスが、何もケアせずとも正常に動き続けるということはほとんどありません。例えばアクセスの集中によるレスポンスの低下や、サーバーやネットワークの障害によるサービスダウンなど、運用中にはさまざまなトラブルが発生します。またこうしたトラブルは、いつ発生するかわかりません。そこでサービスの状態やサーバーの負荷といったリソースの変化を常に可視化し、異常を検知した時には運用担当者に通知を行う仕組みがモニタリングツールです。モニタリングツールとしては、オープンソースソフトウェアのZabbixやPrometheusなどがよく使われています。ただしIaaSはその構成の都合上、汎用のモニタリングツールではリソースの状態を正確に取得できないこともあります。そこでAWSのCloudWatchのように、クラウド事業者が独自の監視サービスを提供していることもあります。

IaCとは「Infrastructure as Code」の略で、文字通り「インフラ構成のコード化」を指す名称です。コードによって定義されたインフラ構成は、IaCツールによって自動的に構築や、設定変更が行われます。これによりインフラ構築作業から属人性や人的ミスを排除し、再現性のあるインフラ構築が可能になります。またIaCを採用することで、アプリケーションのビルドやデプロイをCI/CDで自動化できるのと同様に、インフラ構築も自動化することが可能になります。有名なIaCツールとしては、オープンソースソフトウェアのTerraformやAnsibleなどが挙げられます。またAWSのCloudFormationのように、クラウド事業者が自社プラットフォーム向けのIaCツールを提供していることもあります。IaCについては、「デジタルトランスフォーメーション(DX)の実現に欠かせない「Infrastructure as Code(IaC)」」の記事もあわせてご確認ください。

このように、DevOpsの各ステップにおいては、それぞれ異なるツールが利用されています。採用するツール次第で、具体的な作業手順そのものが変わってくることもあるため、最初のツール選定は非常に重要だと言えるでしょう。

DevOps基盤としてのクラウド

DevOpsはあくまで開発に対する考え方ですから、それを実践する環境は問いません。しかしDevOpsの基盤としては、やはりオンプレミスよりもクラウドの方が向いています。

そもそもDevOpsが求められている背景には、変化するニーズにあわせたサービスを迅速に投入したいという要求がありました。しかしオンプレミスには、インフラの調達や構築に数週間という単位で時間がかかったり、一度構築したインフラの変更が気軽にできないという問題があります。DevOpsを実現するには、変化に対して柔軟に対応でき、迅速に立ち上げられるインフラ基盤が必要不可欠ですが、オンプレミスはどうしてもこの点がボトルネックとなってしまうのです。現在、DevOpsに求められるようなインフラを実現するための現実的な解は、クラウドの導入であると言って間違いないでしょう。

オンプレミスのシステムをそのままクラウド上に移設するだけでも、物理的な制約から解放されるため、さまざまなメリットを享受できます。ただしクラウドのメリットを最大限に活かすには、「最初からクラウド上で動くことを前提に、クラウドならではの機能を利用したシステム」を設計するべきです。こうしたシステムは「クラウドネイティブ」と呼ばれています。クラウドネイティブの詳細については、「クラウドネイティブとは? クラウドファーストとの違いやポイントを解説」をご確認ください。

クラウドによるDevOps環境の構築方法

ニフクラ/FJcloud-VのDevOpsへの取り組み

富士通クラウドテクノロジーズでは、2015年からDevOpsへの取り組みを始めています。こうした取り組みの成果には、さまざまなツールの活用による開発工程や情報共有の高速化や、従来は開発・運用・企画といった縦割りであった社内体制を、提供サービスを中心とした体制に変革させることによる連携の強化などがあります。そしてこれらの成果は、実際のニフクラ自身の運用においても活用され、サービスの品質向上や提供スピードの向上に繋がっています。

また富士通クラウドテクノロジーズ自身がDevOpsを実践することで得られた知見は、DevOps支援サービスとして、ユーザーに向けても提供しています。ニフクラの具体的なサービスとしては、プライベートなGitLab環境を提供するマネージドサービスである「ニフクラ DevOps with GitLab」、Kubernetesクラスターを簡単に構築・管理できる「ニフクラ Kubernetes Service Hatoba」、GitLab Enterprise Editionの有償サブスクリプション契約を提供する「GitLab Enterprise Edition サブスクリプション」などがあります。

ニフクラ/FJcloud-VでのDevOps環境の構築方法

プログラミングにおいては、誰もが遭遇する「ありがちな問題」が数多く存在します。そうした問題を効率よく解決するため、問題とその解法のセットに名前をつけ、再利用しやすい形に整理したパターン集は、「デザインパターン」と呼ばれています。これと同様に、クラウドのインフラ設計にも「よくある問題」が数多く存在し、そのための「典型的な解決策」がすでに用意されています。クラウド設計におけるこうした問題と解法のセットを「クラウドデザインパターン」と呼びます。

例えば、DevOpsにおいてよく利用されるクラウドデザインパターンとして、CI/CD環境を構築する「CI/CD」パターン、アプリケーションのデプロイとロールバックを行いやすくする「Blue/Greenデプロイメント」パターン、インフラのコード管理を行うことでIaCを実現する「Infrasstructure as Code」パターンなどがあります。詳細については、各デザインパターンのページをご確認ください。

ニフクラ/FJcloud-Vではこれらのパターンをはじめ、さまざまな問題を解決するための「ニフクラ クラウドデザインパターン」を公開しています。ニフクラ/FJcloud-VでDevOps環境を構築する際には、自力ですべてを設計するよりも、なるべくこうしたパターンに倣うことをお勧めします。先人が積み重ねてきたパターンを踏襲することで、効率よく、質の高いインフラを作ることが可能となるためです。

DevOpsを解説したeBookを提供中

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