Professional Documents
Culture Documents
DevOps
導入ガイド
3.3 チケット管理システム........................................................................................................................................................................... 8
6. さいごに ...................................................................................................................................................................14
現在のビジネスシーンは激しく、また急速に変化し続けています。それにあわせて開発現場にも、次々に生まれてくる新しいニ
ーズにあわせたソフトウェアを迅速に開発し、随時改良を加えていくことが求められています。短い期間で新機能を開発し、テ
スト期間を短縮して早期のリリースを実現するためには、Dev と Ops の協力が必要不可欠であり、主張をぶつけて対立している
場合ではありません。
先にも述べましたが、競争や変化の激しい現在のビジネスシーンにお
いては、ソフトウェアをいち早く開発し、提供する事が求められてい
ます。しかし、従来のウォーターフォール開発では、こうした変化へ
の柔軟な対応や高速なリリースは困難でした。そこで、現代のビジネ
スシーンの激しい変化にも対応しうる開発手法として、アジャイル開
発が近年注目を集めているのです。
繰り返しますが、DevOps とは「ユーザーによりよい価値を提供する
ためには、Dev と Ops が協力することが重要である」という考え方
です。これは単に Dev と Ops が協力するだけに留まらず、企業の文
化や考え方といった組織的な面や、より高速、高品質な開発を実現す
るための手段である CI/CD などの技術的な面も含んだ、広い概念で
もあります。それに対してアジャイル開発とは、具体的な開発手法の
1 つです。DevOps とアジャイル開発は、どちらも開発に対する考え
方ではあるものの、そもそもの背景や目的が異なります。
とはいえ、アジャイル開発を実践しようとすると、必然的に DevOps
が持つ考え方やツールが必要となってきます。両者は異なる考え方を
指す言葉ですが、非常に関連性の深い言葉でもあるのです。
プラン
開発の要件を定義するステップです。プロジェクト全体の進捗管理やタスクの洗い出し・管理方法、必要なツールの選定などを
行います。
コード
プランで決定した開発要件に沿って、プログラマーがソースコードの作成を行うステップです。
テスト
ビルドしたアプリケーションにバグなどの不具合がないか、開発環境を使ってテストするステップです。デプロイ前にテストを
行うことで、アプリケーションの品質を担保します。
デプロイ
アプリケーションを実際に動作させるため、本番環境に配備するステップです。具体的にはビルドしたバイナリやコンテナイメ
ージを本番環境にコピーし、現在稼働中のアプリケーションと差し替えるといった作業が行われます。
運用
継続的にサービスを提供するための、さまざまな作業を行うステップです。アプリケーションやインフラについて、監視、保守
作業、および障害時のトラブルシューティングなどを行います。
モニター
公開後のモニタリングデータやユーザーからの評価、要望などを確認するステップです。サービスの状態を正常に保ち、また品
質を向上させるためのフィードバックを受けるための、重要なステップとなります。
コラボレーションによるスムーズな開発の実現
ツールの活用による生産性の向上
DevOps を実践する際には、必然的にさまざまな支援ツールを導入することになりますが、こうしたツールの活用は生産性の向
上に繋がります。例えば、後述の CI/CD ツールを導入することで、ビルド・テスト・デリバリーといった一連の流れを自動化で
きます。作成したコードが即座に開発環境にデリバリーされるため、大幅な省力化が可能になるだけでなく、作業から属人性や
人的ミスを排除でき、品質の向上も期待できます。そしてこうした省力化によって削減できた人的リソースは、新サービスの開
発といった、より有意義なタスクに回すことが可能になります。
リリースの高速化
テストやデリバリーを自動化することで、開発サイクルを高速に回すことが可能になります。開発・リリース・モニター、そし
て、市場からのフィードバックというサイクルを高速化することは、すなわち変化し続ける市場ニーズへの対応力の強化に直接
繋がります。
ここではよく使われるツールを、用途ごとに紹介します。
3.1 バージョン管理システム
バージョン管理システムは、DevOps を実現するための代表的なツー
ルです。複数の人間がコードに対して無秩序に変更を行うと、意図し
ないバグが混入したり、最新版がどのファイルかわからなくなってし
まったりといった混乱が発生してしまいます。そして、こうした混乱
は修正されたはずのバグを再度混入させてしまったり、異なるバージ
ョンをデプロイしてしまったりといった事故に繋がります。
このような事故を防ぐためにも、プロジェクト管理下のファイルに対
する変更履歴を記録するバージョン管理システムは必要不可欠です。
バージョン管理システムには、さまざまなものが存在しますが、その
中でも 2022 年現在、世界中のソフトウェア開発の現場で活用されて
いるのが「Git」です。特に複数人で作業する場合は、チーム間の情報
共有やほかのツールとの連携のしやすさを考慮し、GitHub や GitLab.com といったクラウドベースのソースコードホスティング
システムの利用も検討するとよいでしょう。
3.2 バグトラッキングシステム
規模の大小や数の違いこそあれ、どのようなソフトウェアにもバグは
存在します。どれだけ入念にテストを行ったとしても、リリースから
バグを完全に取り除くことは困難です。そのため、バグに対しては「
見つけ次第修正する」というアプローチを取ることになりますが、す
でに本番リリースが行われてしまっている場合、ユーザーへの影響を
考慮すると、より早急に修正することが求められるでしょう。特にセ
キュリティに影響するようなバグであればなおさらです。
しかし、バグの修正作業も無秩序に行うわけにはいきません。バグを
きちんと管理せずにいると、修正がリリースから漏れてしまうことや
、あるいは修正作業に担当者がアサインされないまま、バグが宙に浮
いてしまうような事態にもなりかねません。そこで、発覚したバグを
一意に特定し、修正をリリースするまでの作業状況を追跡できるツールが必要となります。こうしたツールをバグトラッキング
システムと呼びます。
バグの修正はコードの修正とおおむねイコールであるため、バグトラッキングはソースコードホスティングシステムの機能とし
て提供されていることも一般的です。例えば、GitHub には Issue と呼ばれる機能があり、GitHub 上で行うバグ修正やタスクを
管理できるようになっています。
CI/CD のためのツールやサービスも、また数多く存在します。例えば
、GitHub には GitHub Actions、GitLab.com には GitLab CI/CD とい
ったツールが用意されています。また、Circle CI や Travis CI など、
CI/CD のためのクラウドサービスも存在します。CI/CD ツールはソー
スコードホスティングサービスと連携し、コードがリポジトリにコミットされたことを検知すると、自動的に CI/CD パイプライ
ンを起動して、テスト・ビルド・デプロイを実行するのが一般的です。
従来のような手作業に頼っていると、どうしても作業担当者の属人性
が高くなってしまいます。これは作業の引き継ぎを難しくし、人的な
ミスを引き起こす原因となります。しかし、インフラ構成がコードと
して定義される IaC であれば、誰が何度実行しても同じ結果を得ることができるため、属人性や人的ミスを排除し、再現性を確
保することが容易となります。また、人の手を介さないため、インフラの構築を自動化することもできます。
さらに、コード化されたインフラ構成はアプリケーションのソースコードと同様にバージョンの管理が可能となります。バージ
ョン管理システムによって、変更差分の検出が可能となるだけでなく、コードが変更されたら CI/CD を経由して、自動でインフ
ラ構成を変更することもできます。特にクラウドサービスは、インフラを API 経由でソフトウェア的に操作できるため、IaC と
の相性が非常によいプラットフォームだと言えるでしょう。
重要なことなので繰り返しますが、DevOps が求められている背景に
は、次々と変化するニーズにあわせたサービスを迅速に投入したいと
いう要求がありました。この要求に応えるためには、変化に対して柔
軟に対応でき、迅速に立ち上げられるインフラ基盤が必要不可欠にな
ります。そして、これを実現するための最も現実的な解がクラウドで
す。
オンプレミスのシステムを、単にクラウド上に移設するだけでも、ク
ラウドのメリットの一部を享受することはできます。しかし、クラウ
ドのメリットを最大限に活かすためには、そこからさらに一歩踏み込んで「最初からクラウド上で動くことを前提に、クラウド
ならではの機能を利用したシステム」を設計しなくてはなりません。こうしたシステムを「クラウドネイティブ」と呼びます。
クラウドの詳細については、「仮想化からクラウドのメリットまでイチからわかるクラウド入門~基礎編~」で解説しています
。また、クラウドネイティブなシステムを構成する要素については、「クラウドネイティブとは? クラウドファーストとの違い
やポイントを解説」をあわせてご確認ください。
※ ニフクラ/FJloud-V は、どちらも富士通クラウドテクノロジーズが提供するサービスです。富士通クラウドテクノロジーズが
販売する際はニフクラ、富士通が販売する際は FJcloud-V というサービス名称となります。
具体的な取り組み例としては、さまざまなツールを活用した開発工程サイクルや情報共有
の高速化があります。さらに開発・運用・企画など、縦割りであった社内体制を、提供サ
ービスを中心とした体制に変革させることで連携を強化しています。これらは、主にサー
ビスの品質向上や提供スピードの向上に繋がっています。
本デザインパターンの詳細につきましては、「CI/CD パターン」をご確認ください。
本デザインパターンの詳細につきましては、「Blue/Green デプロイメントパターン」をご確認ください。
ニフクラ/FJcloud-V のご案内
本書でご紹介した「ニフクラ/FJcloud-V」は、VMware vSphere®ベースの国産クラウドです。長年の VMware 製品の運用経験や高信
頼/高性能なサービス基盤でオンプレミスの VMware vSphere®環境の移行先に最適なクラウドです。オンプレミスの VMware
vSphere®環境をリフト&シフトでスムーズに移行し、お客様のデジタルビジネスを加速します。
0120-933-200 詳しくはこちら
詳しくはこちら