(Photo by:Frits Ahlefeldt-Laurvig)
このような方におススメ
- DevOpsに興味がある
- 今のプロジェクト管理を改善したい
DevOps(デブオプス)とは?
開発・運用・品質管理が三位一体となったソフトウェア開発体制をDevOps(デブオプス)と呼びますが、ツールや事例のイメージが強く、アプリケーションのリリースが自動化されていればDevOpsと認識している方も多いと思います。
DevOpsを構成する11要素を見直す事で、DevOpsへの理解を総合的に深めていきたいと思います。
そもそも、「DevOpsって?」という方は、「DevOpsとは?」をご覧ください。
以下、11の要素について説明していきます。
DevOpsの要素1:ソフトウェア開発方法
開発からリリースまでの間隔を短く、極端に言えば開発完了と同時にリリースが行われるのが理想的なDevOpsの形です。そのため、従来のウォーターフォール型との相性は悪く、アジャイル型との相性が良いとされています。
DevOpsでは、アジャイルの週単位でイテレーションを切ってリリースするインクリメンタルモデルよりもさらに短いリリースサイクルを実現するインフラを構築します。
↑ チームによるアジャイルソフトウェア開発 (Photo by:Improve It)
[代表的な開発手法]
[参考リンク]
DevOpsの要素2:バージョン管理システム
ソースコードと成果物が管理されている事がソフトウェアを正しくリリースする必須条件です。ほとんどの構成管理ツール(※要素4)や継続的インテグレーション(※要素5)はソースコードと成果物がバージョン管理されている前提で設計されています。
↑ペアプログラミングによる開発とソースコード管理 (Photo by:Menlo Innovations)
[代表的なバージョン管理システム]
[参考リンク]
Subversion 対 Git:どちらを使うべきなのか?
バージョン管理システム入門(初心者向け)by tracpath
DevOpsの要素3:バグトラッキングシステム(BTS)
バグレポート提出から、検証、修正とバグを解決する一連の流れを提供するシステムです。総合的なプロジェクト管理ツールに含まれる主要機能の1つで、ソフトウェアの品質管理を行う上でとても大切なシステムです。DevOpsでは問題の発見から、修正、リリースまでを出来る限り短くするのが理想のため、BTSによるバグ修正の品質向上と解決速度が重要になります。
↑ バグレポートは発生から完了まで正しく状態管理されるべき(Photo by:Paul Downey)
[代表的なBTS]
[参考リンク]
バグ管理とは(tracpath)
チケット駆動開発の概要とBTSの紹介
オープンソースのプロジェクト管理ツールfossilの紹介
DevOpsの要素4:構成管理ツール
DevOpsをイメージ付けるツールの1つです。高頻度なリリースを行うためのコンフィギュレーション管理とプロビジョニング機能を備え、柔軟な拡張が可能な設計になっています。開発と運用間のインテグレーションをサポートし、運用で行うリリース作業を自動化します。
↑ プロビジョニングは軍事用語から。ITでは顧客にサービスを提供する仕組み(Photo by:The U.S. Army)
[代表的な構成管理ツール]
[参考リンク]
Chef
Ansible
DevOpsの要素5:継続的インテグレーション(CI)
ソフトウェアの単体テスト・結合テスト、ビルド等の品質に関連する操作を自動化し、一定以上の品質を保ち続けるためのツールです。CIツールをトリガーとして、構成管理ツール(※要素4)を起動させる構成も多いです。デイリービルドよりも短い間隔でのビルドが求められるDevOpsもあるため、リリースするソフトウェアを安全性を高めるCIツールの品質管理はとても大切です。
↑ 工場の自動化はロボット。ITでは継続的インテグレーションによる自動化。(Photo by:Steve Jurvetson)
[代表的なCIツール]
[参考リンク]
Jenkinsの導入を考えてみよう
Jenkins関連記事一覧
DevOpsの要素6:テスト自動化
リリースするソフトウェアの品質が保たれている事を保証するためには、単体・結合テストはもちろんの事、ユーザーが利用するUIからのアプリケーションテストも求められます。汎用性が高いフリーなツールにはSelenium/Appiumがありますが、用途に合わせて特化した商用のテスト自動化ツールを利用しているプロジェクトも多いと思います。
↑ UX(ユーザーエクスペリエンス):ユーザの使い勝手や操作感のテスト(Photo by:Samuel Mann)
[代表的なテスト自動化ツール]
DevOpsの要素7:チャット
DevOpsでは開発チームと運用チームが一体になってプロジェクトを推進するため、コミュニケーションを円滑に、シンプルに実現するチャットツールを導入する事例が多くあります。チャットは電話のようにストレスになる強制的な割り込みがありません。情報をチャットルームというチーム内でオープンな場所で扱うと個々の状況判断と意思決定の精度が高くなります。またオープンな場所でメッセージのやり取りをしているため、1対1のメールで有りがちな、曲げられた作業指示や、チームに必要のない報告を個別に求められる時間のムダが無くなります。
[代表的なチャットツール]
(Photo by:Aaron Parecki)
- Slack
- ChatWork
- HipChat
[参考リンク]
DevOpsの要素8:開発環境の構築ツール
新しくプロジェクトに入った開発者は、最初に共通の開発環境を揃える必要があります。リモートワークで開発者が分散している、開発者の増員ペースが早い、開発環境の更新が早い。このような場合には、個々に開発環境の変更を指示・周知するよりもルールベースで開発環境の更新を自動化してしまった方が速く、環境の差異による不具合が減ります。開発環境のパッケージ管理自動化を助けるツールです。検証環境やテスト環境の構築にも役に立ちます。
(Photo by:Heisenberg Media)
[代表的な開発環境の構築ツール]
- Homebrew
- Brewfile
- Boxen
- mackup
DevOpsの要素9:チャットBot
Botツールを利用して、チャット上でbotに対して指示(コマンド)を出し結果が表示されると、チャットに入っている全員で自分の知りたかった情報を共有しているのと同じ効果があります。
リリースのコマンドを実行するbotがあり、チャットからbotにリリースコマンドを実行してもらった場合、チャットに入っている全員でリリース結果を共有しているのと同じ効果があります。botツールの活用はDevOpsのベストプラクティスになりつつあります。
[代表的なチャットBotツール]
- Hubot
- Ruboty
DevOpsの要素10:仮想化
開発をMacOSやWindowsOSで行っていても、実際にソフトウェアが動作するのはCentOS等のLinuxベースのOSである事も多いと思います。また、開発環境と動作環境を分けるために、MacOS上でMacOSを動かす、WindowsOS上でWindowsOSを動かす事もあるかと思います。
(Photo by:Enterprise 2.0 Conference)
仮想化ツールはOS上に仮想OSを構築し、それぞれが独立したOSとして動きます。開発環境構築のためだけではなく、CIツール(※要素5)上でのテスト実行環境、リリースに当たり仮想マシンのプロビジョニングにも利用されます。
[代表的な仮想化ツール]
[参考リンク]
Docker
コンテナ型仮想化ソフトウェアDockerの概要
Dockerがなぜ優れているのか?その特徴を評価
Dockerの導入事例紹介
DockerをLinux(Ubuntu 14.04 LTS)にインストールする方法と解説
VMware
VMware Playerの導入からOSインストール(sysprep)まで
VirtualBox
DevOpsの要素11:ソースコードレビュー
ソフトウェア品質向上のためソースコードレビューが必須になっているプロジェクトや組織も多いかと思います。ソースコードレビューを同じPCを共有して話しながら行う、メールやチャットで行う方法もありますが、ツールを通じてソースコードレビューを行う方法もあり、ほとんどのツールではレビュー結果をチーム内で共有する事が出来ます。また、ソースコードレビューツールが一体となって提供されているBTS(※要素3)やソースコードリポジトリ(※要素2)も多くあります。
↑ 品質の高い製品開発にコードレビューは欠かせない。(Photo by:Juhan Sonin)
[代表的なソースコードレビューツール]
[一体型ソースコードレビューツール]
- Redmine Code Review(Redmine)
- Trac CodeReviewerPlugin(Trac)
要約・まとめ
DevOpsを実現するための要素を簡潔にまとめました。技術領域が広範囲に及んでおり、リリース速度と品質を同時に保つためには相応の環境構築が求められます。
次々に新しいツールが登場し、技術改良が進められている領域のため、来年2016年に入ると本記事で紹介した内容は既に古いものになっている可能性が高いです。また、全てプロジェクトや組織に本記事で紹介した要素やツールが必要になる訳ではありません。自分たちにとって本当に必要なツールを管理が出来る範囲でご検討いただければと思います。
本ブログは、Git / Subversionのクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
エンタープライズ向け Git / Subversion 導入や DevOps による開発の効率化を検討している法人様必見!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments