アジャイル開発の難点を克服する開発手法の「DecOps」は、開発・運用の担当者それぞれが手を組み開発を進めます。
本記事では、DevOpsの特徴や流れを詳しくまとめています。メリットにも触れていますので、ぜひ参考にしてください。
DevOps(Development and Operations)とは
DevOpsとは、アジャイル開発の難点を克服するための開発手法の1つです。開発(Development)と運用(Operations)担当者が手を組み、開発に臨みます。
従来の開発現場では、開発担当者と運用担当者が立場の違いから同プロジェクトに携わっているにもかかわらず、お互いに対立してサイロ化が発生する場面が少なくありませんでした。
そこでDevOpsを採用すると、作業を細かく分けられることで開発スピードを向上し、フレキシブルな開発を目指せます。
開発とセットで運用管理が正常に作動する環境も整うため、有用なフィードバックが開発に活かされるという好循環が生まれるのも利点です。
2009年にDevOpsの考えが生まれた
DevOpsは、John Allspaw氏とPaul Hammond氏が2009年に開催された『Velocity 2009』というイベントにおいて提唱された考え方です。
- 新しい機能を実装させたい開発側
- システムの安定稼働を最優先させたい運用側
こうした「対立構造に陥る場面」が少なくありませんでした。
ところが、真逆の位置関係にあると考えられている開発と運用には、プロジェクトの根本に掲げるミッションに以下の共通項があります。
- ビジネスの価値を高めたい
- 開発を迅速に進めたい
- システムを確立させたい
つまり、開発と運用の立場は違いますが、同じ方向を向いて仕事をしているわけです。
そこでJohn Allspaw氏とPaul Hammond氏は、当時所属していたFlickrで具体的な日々の業務に反映できる形で開発ツールと組織文化の在り方を定義づけました。
まず、DevとOps双方がコミュニケーションの取りやすい開発ツールの導入を推奨します。
働き方のスタンスは、相手を信頼して仕事を任せ合い、ミスがあった場合でも寛容な態度を取る、相手を否定しないといった行動規範を定めました。
これらの策定背景から、DevOpsはいくつかの要素を挙げて説明されます。
3要素もしくは5要素(頭文字をとってCLAMSとも)の一例は以下のとおりです。
DevOpsを構成する3要素の一例
- 人(人材・組織風土):開発と運用とが連携するという考え方
- プロセス(業務の仕組み・スキーム):開発と運用の在り方を定義づける
- プロダクト(テクノロジー):開発を実現する技術
DevOpsの5要素(CLAMS)
- Cluture(文化):開発と運用がセットで行われるべきという考え方
- Lean(リーン):失敗にくじけず、継続的な開発に努める姿勢
- Automation(自動化):開発において自動化できる作業を増やし信頼性を高める
- Measurement(計測):ユーザーのコンバージョンを元に開発の改善効果を実測
- Sharing(共有):開発担当と運用担当の懸け橋を作り、共有を日常的に行う
DevOpsエンジニア(engineer)とは
DevOpsエンジニア(engineer)とは、開発から運用までを包括的にカバーできる開発エンジニアです。
どちらの畑にも属さないことで、ソフトウェア開発における全体ニーズのバランスを取ることに優れています。
DevOpsエンジニアが担う大きな仕事は、開発スピーディに新機能を付与しながら、運用として安定的なシステムの稼働に尽力します。
アプリケーションの開発、および提供する基本の理解が何よりも重要です。
アジャイル開発との違い
DevOpsとアジャイル開発の間には、“概念と手法”という違いがあります。
DevOpsは、プロジェクトを進める中で開発と運用の双方が衝突せずに連携を強化できるような仕事におけるスタンス・ツールを定義づける考え方です。
対するアジャイル開発は、開発手法の1つでプロジェクトの進め方そのものを意味します。
つまり、開発担当と運用担当の連携が強まるようDevOpsで開発するためにアジャイル開発を選ぶといったイメージです。
DevOpsを導入するメリット
DevOpsを導入すると、以下の2つのメリットが得られます。
- ヒューマンエラーを減らせるので、信頼性が上がる
- 煩雑な作業が減り、生産性が向上する
ヒューマンエラーを減らせるので、信頼性が上がる
DevOpsでは、CLAMSのA(Automation)として表現されるように、開発インフラの構築からテスト・ビルド・リリースといった一連の作業が自動化されます。
業務ツールを活用すれば、人為的ミスによるトラブルは未然に防げるでしょう。
成果物におけるインシデントの発生率も軽減できるため、運用担当者もスムーズにリリースを受け入れやすい体制が出来上がります。
プロジェクトの信頼性が向上するだけではなく、開発がアクティブに新機能を付与しても運用側にストレスを与えにくくなるというのも大きなポイントです。
煩雑な作業が減り、生産性が向上する
2つ目のDevOps導入メリットは、煩雑な作業工程の削減による生産性の向上です。
DevOpsは、開発と運用の双方が情報共有をスムーズに行えるツールを必ず取り入れます。
つまり、DevサイドとOpsサイドとでそれぞれ業務に専念しながら、お互いの業務の進捗状況や変更点などをつぶさに確認し合えます。
本来新規機能を付加したいのが開発担当で、安定的な稼働を目指すのが運用担当です。
開発側が独善的に作業を進めてしまうと、開発工程のしわ寄せが運用側に回ります。
運用側が適切なフィードバックを行わなくなるため、開発側の改善工程も堂々巡りとなってしまうでしょう。
DevOpsを導入すると、開発と運用の双方がうまく機能するため、結果としてシステムの品質は向上し開発スピードは改善します。
DevOps導入による「継続的開発」の流れ
DevOps導入における、継続的開発は具体的に以下の3つのプロセスによって進行します。
- 継続的インテグレーションを実施する
- 継続的デリバリー(CI/CD)を実施する
- 継続的導入によってリリースする
継続的インテグレーションを実施する
継続的インテグレーション(CI)とは、エンジニア同士の作業のバッティングを防止しながら作業スピードを加速させる開発手法です。
1日1回などとタイミングを決めて1つのタスクが終わるごとに、新しい作業コードをメインソースコードに組み込みます。
ビルド(プログラムの完成)を迎えると、自動的に変更のテストと検証が行われます。
バグの早期発見とフィードバックが確実にこなせるため、リリースサイクルが上がって迅速な開発が可能です。
継続的デリバリー(CI/CD)を実施する
継続的デリバリー(CD)は、継続的インテグレーションの延長線上にある作業です。
新しいコードを組み込んだ状態で、システムが本番環境にリリースできるかどうかをテストします。
継続的インテグレーションによって、開発速度は上がります。
継続的デリバリーを通すことで、新しく開発されたコードはテストとステージングを経て導入の前段階まで引き上げられるのが特徴です。
なお、本番環境での挙動をチェックするために、以下の4つのテストが実施されます。
- 単体テスト
- 統合テスト
- 機能テスト
- 回帰テスト
継続的導入によってリリースする
継続的導入は、CIとCDにより統合・承認された新しいコードを自動的にリリースするプロセスです。
新規コードは作るだけではなく、実際にエンドユーザーの手に触れることで初めて正確なフィードバックが得られます。
継続的導入では、1つのコードがエンジニアからエンドユーザーに到達するまでの流れを自動化できる工程です。
また、CI(作業効率を上げる開発手法)→CD(リリースに向けたテストの自動化)→継続的導入(自動リリース)を経たあとは、継続的フィードバックも実施しましょう。
継続t系フォードバックとは、評価基準を定め、DevOps開発によって生まれたシステムの検証を行います。
ユーザーからの意見や要望を取り入れることはもちろん、コンバージョンなどから読み取れる改善策を開発プロセスに反映させ続けます。
DevOpsで利用するツールの具体例
DevOpsを活用した開発で、よく活用されるツールを3つ紹介します。
- Auto DevOps(GitLab)
- Azure DevOps
- Azure DevOps
Auto DevOps(GitLab)
Auto DevOpsとは、GitLab Inc.が提供するDevOpsプラットフォームです。
コードを入力するだけで、ビルド(構築)・テスト・デプロイ(配備)モニタリングを自動的に実施します。
ソースコード管理やセキュリティにも配慮されているため、信頼性の高い情報源として安心して開発に利用できるのも大きな特徴です。
利用プランは無料・19ドル・99ドル(有料の場合、1ユーザー当たり)の3プランがあります。
Azure DevOps
Azure DevOpsとは、Microsoftが提供するDevOpsの管理機能を有するツールです。
プロジェクトの管理に始まり、製品のバージョン・ファイル・レポーティング・要件などを管理します。
DevOpsサービスの導入に際してすべてのツールを取り入れることも、必要なツールだけを選び既存のワークフローを保管するような使い方もできるのが利点です。
利用プランは無料のものから、6ドル・52ドルのプランまであります。
AWS DevOps
AWS DevOpsとは、Amazonが提供するDevOpsの開発ツールです。
開発プロジェクトを高速化させることで市場競争力を高めることを目的としており、文化的な仕事の基本方針から作業ツールがすべてパッケージングされています。
利用プランは、従量制であり、使った分だけ料金が請求されます。
まとめ
アジャイル開発における、フラストレーションを改善するDevOpsについて解説しました。
Dev(開発)とOps(運用)には、開発スピードを上げたい、プロジェクトの価値を高めてビジネスを成功させたいという共通した理念を持っています。
しかし、アジャイル開発における作業工程の細分化は開発工程のスピードが上がる反面、チーム間のコミュニケーションが積極的に行われにくいという欠点がありました。
DevOpsは、アジャイル開発による弊害をクリアにする概念です。
すべての開発工程・一部分のみと、導入ポイントが選べるのも大きな利点です。