You are on page 1of 15

これから始める

DevOps
導入ガイド

© 2022 Fujitsu Limited


目次
1. DevOps とは ...............................................................................................................................................................3

1.1 Dev と Ops の対立 ................................................................................................................................................................................... 3

1.2 Dev VS Ops から Dev and Ops へ ............................................................................................................................................................. 3

1.3 DevOps とアジャイル開発との違い ..................................................................................................................................................... 4

1.4 DevOps のライフサイクル ..................................................................................................................................................................... 4

2. DevOps を導入するメリット ...................................................................................................................................6

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

3.1 バージョン管理システム ....................................................................................................................................................................... 7

3.2 バグトラッキングシステム ................................................................................................................................................................... 7

3.3 チケット管理システム........................................................................................................................................................................... 8

3.4 CI/CD ツール ............................................................................................................................................................................................ 8

3.5 IaC ツール ................................................................................................................................................................................................ 8

4. DevOps 基盤としてのクラウド ...............................................................................................................................9

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

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

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

5.2.1 CI/CD パターン ........................................................................................................................................................................... 11

5.2.2 Blue/Green デプロイメントパターン....................................................................................................................................... 12

5.2.3 Infrastracuture as Code パターン ............................................................................................................................................... 13

6. さいごに ...................................................................................................................................................................14

2 of 15 © 2022 Fujitsu Limited


1. DevOps とは
近年、ソフトウェア開発や IT システムの運用現場において、「開発(Development)」と「運用(Operations)」を組み合わ
せた「DevOps(デブオプス)」という言葉がよく聞かれるようになりました。しかし、言葉そのものは一般的になりつつあるも
のの DevOps とはいったい何なのか、理解が曖昧な方も多いのではないでしょうか。

本書では、DevOps が誕生した背景や求められる理由、メリットなど DevOps を構成する要素とあわせて解説します。

1.1 Dev と Ops の対立


現在、世の中には数多くの IT サービスが存在します。サービスの裏側
にはソフトウェアを開発している人たちが存在するわけですが、多く
の場合、開発チームはソフトウェアの機能を開発する開発チーム(
Development)と、サービスを運用する運用チーム(Operations)に
分かれています。

ここで問題となるのが、Dev と Ops の立場の違いから発生する対立で


す。Dev にはユーザーが求める新機能を実装し、それを正しく動かす
ことが求められるのに対し、Ops には現在の安定した環境を維持し続
けることが求められます。それぞれのチームに課されているミッショ
ンの性質の違いから、開発の進め方について衝突が起きてしまうこと
は、決して珍しいことではありません。こうした Dev の要望と Ops
の事情の対立は、円滑な開発を阻害する原因の 1 つとなっています。

1.2 Dev VS Ops から Dev and Ops へ


繰り返しになりますが、DevOps とは Development と Operations を組み合わせた言葉です。これは 2009 年に Flickr のエンジ
ニアが行った「10+ Deploys Per Day: Dev and Ops Cooperation at Flickr」というプレゼンテーションによって広まったとさ
れています。

現在のビジネスシーンは激しく、また急速に変化し続けています。それにあわせて開発現場にも、次々に生まれてくる新しいニ
ーズにあわせたソフトウェアを迅速に開発し、随時改良を加えていくことが求められています。短い期間で新機能を開発し、テ
スト期間を短縮して早期のリリースを実現するためには、Dev と Ops の協力が必要不可欠であり、主張をぶつけて対立している
場合ではありません。

そもそも Dev も Ops も、ユーザーに対して価値あるサービスを提供したいという点では、その目的は一致しているはずです。目


的を達成するためには、まず異なるチームである Dev と Ops が互いに協力することが重要です。もちろん、特定の個人間やチー
ム同士だけが協力しているだけでは不十分で、企業全体の文化として根付いていなければなりません。

この「Dev と Ops の対立を解消し、両者が協力して円滑に開発を進めていこう」という考え方や、ひいては文化そのものこそが


DevOps です。そのため DevOps には、「このツールを採用したら DevOps を名乗れる」といった明確な基準が存在しません。
これが、DevOps とは具体的にどういうものなのかイメージしづらく、理解が曖昧なままとなってしまう原因でもあると言える
でしょう。

3 of 15 © 2022 Fujitsu Limited


1.3 DevOps とアジャイル開発との違い
DevOps と並んで語られることが多い用語に「アジャイル開発」があ
ります。アジャイル開発とは、ソフトウェアを機能ごとに小さく分割
することで、要求変更や機能追加に柔軟に対処しやすくし、継続的な
計画・開発・リリースを行いやすくする開発手法を指す呼び名です。
この手法は、「素早い」「敏捷」といった意味を持つ英単語の「agile
」にちなんで名付けられました。

先にも述べましたが、競争や変化の激しい現在のビジネスシーンにお
いては、ソフトウェアをいち早く開発し、提供する事が求められてい
ます。しかし、従来のウォーターフォール開発では、こうした変化へ
の柔軟な対応や高速なリリースは困難でした。そこで、現代のビジネ
スシーンの激しい変化にも対応しうる開発手法として、アジャイル開
発が近年注目を集めているのです。

繰り返しますが、DevOps とは「ユーザーによりよい価値を提供する
ためには、Dev と Ops が協力することが重要である」という考え方
です。これは単に Dev と Ops が協力するだけに留まらず、企業の文
化や考え方といった組織的な面や、より高速、高品質な開発を実現す
るための手段である CI/CD などの技術的な面も含んだ、広い概念で
もあります。それに対してアジャイル開発とは、具体的な開発手法の
1 つです。DevOps とアジャイル開発は、どちらも開発に対する考え
方ではあるものの、そもそもの背景や目的が異なります。

とはいえ、アジャイル開発を実践しようとすると、必然的に DevOps
が持つ考え方やツールが必要となってきます。両者は異なる考え方を
指す言葉ですが、非常に関連性の深い言葉でもあるのです。

1.4 DevOps のライフサイクル


一般的に DevOps のライフサイクルは、「プラン」「コード」「ビルド」「テスト」「デプロイ」「運用」「モニター」という
、7 つのステップで構成されていると言われています。DevOps を実践するということは、これらのステップを継続的に、かつ円
滑に回していくということが重要です。

プラン
開発の要件を定義するステップです。プロジェクト全体の進捗管理やタスクの洗い出し・管理方法、必要なツールの選定などを
行います。

コード
プランで決定した開発要件に沿って、プログラマーがソースコードの作成を行うステップです。

4 of 15 © 2022 Fujitsu Limited


ビルド
ソースコードから実際に動作させるアプリケーションを作成するステップです。バイナリや、サーバーにデプロイするためのコ
ンテナイメージをビルドするといった作業が含まれます。

テスト
ビルドしたアプリケーションにバグなどの不具合がないか、開発環境を使ってテストするステップです。デプロイ前にテストを
行うことで、アプリケーションの品質を担保します。

デプロイ
アプリケーションを実際に動作させるため、本番環境に配備するステップです。具体的にはビルドしたバイナリやコンテナイメ
ージを本番環境にコピーし、現在稼働中のアプリケーションと差し替えるといった作業が行われます。

運用
継続的にサービスを提供するための、さまざまな作業を行うステップです。アプリケーションやインフラについて、監視、保守
作業、および障害時のトラブルシューティングなどを行います。

モニター
公開後のモニタリングデータやユーザーからの評価、要望などを確認するステップです。サービスの状態を正常に保ち、また品
質を向上させるためのフィードバックを受けるための、重要なステップとなります。

5 of 15 © 2022 Fujitsu Limited


2. DevOps を導入するメリット
ここでは実際に DevOps を導入することで、主にどのようなメリットが生まれるのかを解説します。

コラボレーションによるスムーズな開発の実現

DevOps 最大の目的にしてメリットが、チーム間のコラボレーションによるスムーズな開発の実現です。Dev と Ops の対立関係


(チームのサイロ化)を解消することで、スムーズな開発と運用が行えるようになります。またチーム間の関係が円滑になるこ
とで、Dev と Ops の課題を共有しながら作業を進めて行くことも可能になります。これにより、チーム間の情報格差の低減も期
待できます。

ツールの活用による生産性の向上
DevOps を実践する際には、必然的にさまざまな支援ツールを導入することになりますが、こうしたツールの活用は生産性の向
上に繋がります。例えば、後述の CI/CD ツールを導入することで、ビルド・テスト・デリバリーといった一連の流れを自動化で
きます。作成したコードが即座に開発環境にデリバリーされるため、大幅な省力化が可能になるだけでなく、作業から属人性や
人的ミスを排除でき、品質の向上も期待できます。そしてこうした省力化によって削減できた人的リソースは、新サービスの開
発といった、より有意義なタスクに回すことが可能になります。

リリースの高速化
テストやデリバリーを自動化することで、開発サイクルを高速に回すことが可能になります。開発・リリース・モニター、そし
て、市場からのフィードバックというサイクルを高速化することは、すなわち変化し続ける市場ニーズへの対応力の強化に直接
繋がります。

6 of 15 © 2022 Fujitsu Limited


3. DevOps を実現するためのツール
DevOps のライフサイクルを円滑に回すためには、支援ツールの活用も重要です。例えば、テストやビルドのステップでは、CI
(Continuous Integration:継続的インテグレーション)ツールによって、ビルドとテストを自動化するのが定石です。CI の実
施は、ソースコード上の不具合を迅速に発見・修正し、品質の高いアプリケーションを短期間で開発する手助けとなります。ま
た、CI とあわせて開発環境へのデプロイとリリースの準備を行う CD(Continuous Delivery:継続的なデリバリー)も CD ツー
ルによって自動的に行うのが一般的です。

CI/CD ツールに代表されるように、DevOps の各フェーズで利用することを目的としたツールは数多く存在します。DevOps の


ライフサイクルは、こうした各種ツールを数珠つなぎで連携(ツールチェーン)して実現することになります。しかし、多くの
ツールを習熟し、最適なツールチェーン環境を構築・運用していくのは容易ではありません。これは DevOps を展開する際に直
面する、課題の 1 つと言えるでしょう。

ここではよく使われるツールを、用途ごとに紹介します。

3.1 バージョン管理システム
バージョン管理システムは、DevOps を実現するための代表的なツー
ルです。複数の人間がコードに対して無秩序に変更を行うと、意図し
ないバグが混入したり、最新版がどのファイルかわからなくなってし
まったりといった混乱が発生してしまいます。そして、こうした混乱
は修正されたはずのバグを再度混入させてしまったり、異なるバージ
ョンをデプロイしてしまったりといった事故に繋がります。

このような事故を防ぐためにも、プロジェクト管理下のファイルに対
する変更履歴を記録するバージョン管理システムは必要不可欠です。
バージョン管理システムには、さまざまなものが存在しますが、その
中でも 2022 年現在、世界中のソフトウェア開発の現場で活用されて
いるのが「Git」です。特に複数人で作業する場合は、チーム間の情報
共有やほかのツールとの連携のしやすさを考慮し、GitHub や GitLab.com といったクラウドベースのソースコードホスティング
システムの利用も検討するとよいでしょう。

3.2 バグトラッキングシステム
規模の大小や数の違いこそあれ、どのようなソフトウェアにもバグは
存在します。どれだけ入念にテストを行ったとしても、リリースから
バグを完全に取り除くことは困難です。そのため、バグに対しては「
見つけ次第修正する」というアプローチを取ることになりますが、す
でに本番リリースが行われてしまっている場合、ユーザーへの影響を
考慮すると、より早急に修正することが求められるでしょう。特にセ
キュリティに影響するようなバグであればなおさらです。

しかし、バグの修正作業も無秩序に行うわけにはいきません。バグを
きちんと管理せずにいると、修正がリリースから漏れてしまうことや
、あるいは修正作業に担当者がアサインされないまま、バグが宙に浮
いてしまうような事態にもなりかねません。そこで、発覚したバグを
一意に特定し、修正をリリースするまでの作業状況を追跡できるツールが必要となります。こうしたツールをバグトラッキング
システムと呼びます。

バグの修正はコードの修正とおおむねイコールであるため、バグトラッキングはソースコードホスティングシステムの機能とし
て提供されていることも一般的です。例えば、GitHub には Issue と呼ばれる機能があり、GitHub 上で行うバグ修正やタスクを
管理できるようになっています。

7 of 15 © 2022 Fujitsu Limited


3.3 チケット管理システム
チームでの開発を円滑に行うためには、チームがすべきことを明確に
し、それぞれのタスクに優先順位をつけて可視化することが重要です
。チームメンバーを効率よくタスクにアサインし、進捗の把握や漏れ
抜けを防止するため、チケットシステムやプロダクトバックログとい
った管理システムが使われます。

3.4 CI/CD ツール


DevOps を導入するメリットでも述べましたが、テストやデリバリー
を手動で行っていると、「属人性が排除できない」「効率が悪い」「
人的なミスが起きる」といった問題があります。そもそも DevOps の
目的は変化し続ける要求に応えるため、ソフトウェアの開発サイクル
を高速化することです。ソフトウェアの品質を落とさずに開発サイク
ルを高速化するためには、テストとデリバリーの自動化は必要不可欠
な要素になっています。

CI/CD のためのツールやサービスも、また数多く存在します。例えば
、GitHub には GitHub Actions、GitLab.com には GitLab CI/CD とい
ったツールが用意されています。また、Circle CI や Travis CI など、
CI/CD のためのクラウドサービスも存在します。CI/CD ツールはソー
スコードホスティングサービスと連携し、コードがリポジトリにコミットされたことを検知すると、自動的に CI/CD パイプライ
ンを起動して、テスト・ビルド・デプロイを実行するのが一般的です。

3.5 IaC ツール


アプリケーションのロジックは、プログラミング言語のコードによっ
て記述されています。対してネットワークやサーバーといったインフ
ラは、インフラエンジニアが手作業で構築するのが一般的でした。し
かし、最近ではアプリケーションと同様にインフラの構成もコードと
して記述し、人力ではなくツールによって構築するのがトレンドとな
ってきています。こうしたアプローチを IaC(Infrastructure as
Code)と呼びます。IaC の主なメリットもまた「省力化」と「品質の
担保」です。

従来のような手作業に頼っていると、どうしても作業担当者の属人性
が高くなってしまいます。これは作業の引き継ぎを難しくし、人的な
ミスを引き起こす原因となります。しかし、インフラ構成がコードと
して定義される IaC であれば、誰が何度実行しても同じ結果を得ることができるため、属人性や人的ミスを排除し、再現性を確
保することが容易となります。また、人の手を介さないため、インフラの構築を自動化することもできます。

さらに、コード化されたインフラ構成はアプリケーションのソースコードと同様にバージョンの管理が可能となります。バージ
ョン管理システムによって、変更差分の検出が可能となるだけでなく、コードが変更されたら CI/CD を経由して、自動でインフ
ラ構成を変更することもできます。特にクラウドサービスは、インフラを API 経由でソフトウェア的に操作できるため、IaC と
の相性が非常によいプラットフォームだと言えるでしょう。

IaC を実現するツールとしては、Ansible や Terraform などが有名です。また、AWS の CloudFormation のようにクラウドベン


ダー独自の IaC サービスも存在します。

8 of 15 © 2022 Fujitsu Limited


4. DevOps 基盤としてのクラウド
IaC ツールの説明でも軽く触れましたが、DevOps を推進していく上
で欠かせないのがクラウドです。

重要なことなので繰り返しますが、DevOps が求められている背景に
は、次々と変化するニーズにあわせたサービスを迅速に投入したいと
いう要求がありました。この要求に応えるためには、変化に対して柔
軟に対応でき、迅速に立ち上げられるインフラ基盤が必要不可欠にな
ります。そして、これを実現するための最も現実的な解がクラウドで
す。

オンプレミスのシステムを、単にクラウド上に移設するだけでも、ク
ラウドのメリットの一部を享受することはできます。しかし、クラウ
ドのメリットを最大限に活かすためには、そこからさらに一歩踏み込んで「最初からクラウド上で動くことを前提に、クラウド
ならではの機能を利用したシステム」を設計しなくてはなりません。こうしたシステムを「クラウドネイティブ」と呼びます。

クラウドの詳細については、「仮想化からクラウドのメリットまでイチからわかるクラウド入門~基礎編~」で解説しています
。また、クラウドネイティブなシステムを構成する要素については、「クラウドネイティブとは? クラウドファーストとの違い
やポイントを解説」をあわせてご確認ください。

9 of 15 © 2022 Fujitsu Limited


5. クラウドによる DevOps 環境の構築方法
「ニフクラ/FJcloud-V」は、VMware vSphere®をベースに構築された、国産のパブリッククラウドサービスです。ここでは、
フクラ/FJcloud-V を例に DevOps への取り組みと実際の環境構築方法を解説します。

※ ニフクラ/FJloud-V は、どちらも富士通クラウドテクノロジーズが提供するサービスです。富士通クラウドテクノロジーズが
販売する際はニフクラ、富士通が販売する際は FJcloud-V というサービス名称となります。

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


富士通クラウドテクノロジーズでは 2015 年から DevOps への取り組みを開始しており、
こうした取り組みの成果は、実際のニフクラ自身の運用においても活用されています。

具体的な取り組み例としては、さまざまなツールを活用した開発工程サイクルや情報共有
の高速化があります。さらに開発・運用・企画など、縦割りであった社内体制を、提供サ
ービスを中心とした体制に変革させることで連携を強化しています。これらは、主にサー
ビスの品質向上や提供スピードの向上に繋がっています。

また、こうした DevOps の実践を通して得られた知見を活かし、DevOps 支援サービスを


提供しています。

ニフクラ DevOps with GitLab


プライベートな GitLab 環境を提供するマネージドサービスです。マネージドサービスのため、サーバー
の構築や運用も簡単でニフクラのコントロールパネルを操作するだけで、すぐにもソースコードホスティ
ング・CI/CD・バグトラッキングシステムといった DevOps 環境を手に入れることができます。

ニフクラ Kubernetes Service Hatoba


Kubernetes クラスターを簡単に構築・管理できるサービスです。Kubernetes クラスターの運用には専
門的な知識が必要となりますが、Hatoba はコントロールパネルから簡単にクラスターの作成や管理が可
能なため、環境の運用コストを従来よりも抑えることが可能となっています。

GitLab Enterprise Edition サブスクリプション


文字通り、GitLab Enterprise Edition の有償サブスクリプション契約を提供するサービスです。契約した
サブスクリプションは、ニフクラ上に構築した GitLab や前述のニフクラ DevOps with GitLab で利用で
きます。GitLab Enterprise Edition のサブスクリプション自体は、独自に購入してニフクラ上へ持ち込む
ことも可能です。しかし、本サービスを利用すれば、クラウド利用料とあわせて日本円で支払うことがで
きるため、決済における手間を軽減することができます。

ここではニフクラのサービスを紹介しましたが、FJcloud-V でも「FUJITSU Hybrid IT Service Digital Application Platform」


として、同様のサービスを提供しています。また、ニフクラにおける DevOps の取り組みの詳細については、「ニフクラの
DevOps とは」をご確認ください。

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


プログラミングにおいては、誰もが遭遇する「ありがちな問題」が存在します。また、こうした問題に対しては、「解決のため
の典型的な設計」がすでに確立しています。こうしたよくある設計パターンを整理し、再利用しやすいように名前をつけたもの
を「デザインパターン」と呼びます。

10 of 15 © 2022 Fujitsu Limited


クラウド上のシステム設計においても、同様に「よくある問題」と「典型的な解決策」が数多く存在し、これらは「クラウドデ
ザインパターン」と呼ばれています。ニフクラ/FJcloud-V では、さまざまな問題を解決するためのクラウドデザインパターンを
公開しています。その中でも、前述の支援サービスを利用した DevOps 関連のデザインパターンを紹介します。

5.2.1 CI/CD パターン


ニフクラ DevOps with GitLab サービスを利用して、CI/CD の環境を構成するパターンです。ニフクラ DevOps with GitLab 上
で管理されているコードに対して変更がコミットされると、CI/CD による自動テストとコンテナイメージのビルドが行われます
。そして、ビルドされたコンテナメージは、ニフクラ Kubernetes Service Hatoba にデプロイされます。

本デザインパターンの詳細につきましては、「CI/CD パターン」をご確認ください。

11 of 15 © 2022 Fujitsu Limited


5.2.2 Blue/Green デプロイメントパターン
文字通り、Blue/Green デプロイメントを構成するパターンです。Blue/Green デプロイとは、既存の環境(Blue 環境)と別に新
しい環境(Green 環境)をデプロイし、接続先を切り替えることでリリースを行います。これにより、デプロイに伴うダウンタ
イムを最小に抑え、かつトラブル時の切り戻しも容易に行うことができます。

具体的にはニフクラ Kubernetes Service Hatoba 上に Blue 環境と Green 環境をそれぞれデプロイし、L4 ロードバランサーの


接続先を切り替えることで実現しています。

本デザインパターンの詳細につきましては、「Blue/Green デプロイメントパターン」をご確認ください。

12 of 15 © 2022 Fujitsu Limited


5.2.3 Infrastracuture as Code パターン
ニフクラ DevOps with GitLab でインフラ構成のコードを管理することで、IaC を実現するパターンです。基本的には CI/CD パ
ターンと同様のソースコード管理を行い、コミットをトリガーとして CI/CD を起動します。CI/CD 内から Terraform や Ansible
を利用し、クラウド上のインフラへ、自動的に変更の適用を行います。

本デザインパターンの詳細につきましては、「Infrastracuture as Code パターン」をご確認ください。

13 of 15 © 2022 Fujitsu Limited


6. さいごに
本書では DevOps が求められる背景や理由、そのメリットについて解説しました。

従来よりも複雑なソフトウェアを、より高速に開発することが求められている現代において、Dev と Ops の協力は必要不可欠で


す。しかし、DevOps は特定のツールやワークフローを導入しただけで実現できるものではありません。業務のプロセスだけで
なく、場合によっては企業の文化や考え方そのものを変えていくことも求められるでしょう。従来のやり方に固執せず、組織、
Dev、Ops のいずれもが異なる概念・文化を受け入れていく姿勢こそが重要です。

ニフクラ/FJcloud-V のご案内
本書でご紹介した「ニフクラ/FJcloud-V」は、VMware vSphere®ベースの国産クラウドです。長年の VMware 製品の運用経験や高信
頼/高性能なサービス基盤でオンプレミスの VMware vSphere®環境の移行先に最適なクラウドです。オンプレミスの VMware
vSphere®環境をリフト&シフトでスムーズに移行し、お客様のデジタルビジネスを加速します。

お電話でのお問い合わせ Web でのお問い合わせ


富士通コンタクトライン(総合窓口) FUJITSU Hybrid IT Service FJcloud に関するお問い合わせフォーム

0120-933-200 詳しくはこちら

受付時間 9:00~12:00 および 13:00~17:30


(土・日・祝日・当社指定の休業日を除く)

Fujitsu Cloud Direct のご案内


Fujitsu Cloud Direct は、当社が提供するサービスを法人のお客様へ直接販売するサイトです。
Fujitsu Cloud Direct では、FJcloud-V を無料で利用できるトライアルを実施中! まずは FJcloud-V を体験してみませんか?

詳しくはこちら

14 of 15 © 2022 Fujitsu Limited


【発行元】富士通株式会社
〒105-7123 東京都港区東新橋 1-5-2 汐留シティセンター
・本誌に記載されている会社名および製品名、商品名は各社の登録商標または商標です。
・記載の内容は、2022 年 10 月時点のもので予告なく変更される場合があります。

© 2022 Fujitsu Limited

You might also like