ALLSPICE

スパイスファクトリー株式会社のメンバーが運営するWeb開発メディア

DevOpsとは?アジャイル開発との違いや導入方法を詳細に解説

DevOpsとは?アジャイル開発との違いや導入方法を詳細に解説

スパイスファクトリーのアジャイル開発に関するページを見る。

DevOps という言葉は徐々に IT の現場に浸透し、一般的な言葉になってきました。
成功事例も国内外で多数存在するため、自社にもぜひ DevOps を導入したいとお考えの方も多いのではないでしょうか。しかし、DevOps の内容は定義も曖昧で一般的にわかりやすいとはいえないものです。
今回は、少し難解な DevOps の定義や導入方法などについて、わかりやすく詳細にお伝えしていきます。

DevOpsの定義とは

DevOpsの定義
DevOps とは、システム開発における考え方のひとつです。
定義は明確になっておらず、企業や個人によってさまざまな考え方がありますが、システム開発部門(Dev:Development)とシステム運用部門(Ops:Operations)が仕組みやツールなどによってスムーズに連携し、システム開発を効率化する手法という認識が一般的です。
DevOpsという単語はDev:DevelopmentとOps:Operations、すなわち「開発」と「運用」という単語を組み合わせて作られた造語です。

従来、システム開発部門は迅速で正確な開発を、システム運用部門は安定したシステムの運用・稼働を目的とするため、対立することが多くみられました。この組織連携を自動化し、両部門の負担を軽減できるのが DevOps という仕組みです
そして DevOps の影響範囲は、システム開発部門とシステム運用部門のみにとどまりません。

DevOpsの理解に欠かせない「ITバリューストリーム」

DevOpsの理解に欠かせない
ITバリューストリームとは、開発された ITシステムが顧客の手に渡るまでの全体的な活動のことです。
一般的に「製品管理」「システム開発」「品質保証(QA)」「システム運用」「情報セキュリティ」から構成されています。
DevOps はシステム開発やシステム運用だけではなく、この ITバリューストリーム全体を効率化するものであるということが重要なポイントです。
ITバリューストリーム全体を意識して DevOps 導入にどのように取り組んでいくかは、本記事内「DevOps 導入の3つの柱」のパートで記載します。

DevOpsとアジャイルの違い

DevOpsとアジャイルの違い
DevOps と比較、あるいは混同されやすい概念にアジャイル開発があります。
アジャイルはソフトウェア開発手法の一つです。
日本でも一般的なウォーターフォール開発のように、後戻りなく最初から最後までシステム開発を進める手法と異なり、ソフトウェアを細かく機能ごとに分割して短いスパンで開発・テスト・リリースを繰り返して開発を進めていく手法です。

DevOps は「システム開発と運用を仕組みやツールなどによってスムーズに連携して、システム開発を効率化しよう」という考え方であり、具体的な開発手法やワークフローのみを表すというよりは、組織文化なども対象に含んだ概念に近い言葉です。
開発手法の一種であるアジャイルよりも、より広い範囲を対象としています。

しかしながら、2008年頃に ITインフラに「アジャイル」をもたらすための課題に対しての議論から DevOps の概念が生まれたといわれていることからも、アジャイル開発と DevOps は切っても切り離せない深い関係性があることがわかります。
異なる言葉ではありますが、DevOps の考え方や仕組みを取り入れることでより効率よく効果的にアジャイル開発を進行できることから、アジャイル開発とセットで語られることは多いです。

DevOps導入のメリット

DevOps導入のメリット
それでは、DevOps を導入すると、どのようなメリットがあるのでしょうか。ここからは DevOps のメリットについて具体的にみていきましょう。

システム開発・システム運用両者の負担が軽減される

DevOps の概念を用いてツールやプログラムを活用すれば、開発しているシステムが運用ポリシーやセキュリティポリシーに沿っているかのチェックを自動化することができます。さらに、自動テストの実施によってテスト漏れによるバグを低減することも可能です。

最近では、AWS をはじめとする各社のクラウドサービスにおいてチェックツールが複数リリースされているため、導入が容易な場合もあるでしょう。

セキュリティリスクもより低減できる

DevOps ではシステム開発におけるテストの自動化を目指しますが、セキュリティ関連事項についても同様に可能な限り自動テストで対応します。
システム開発における思わぬ脆弱性についても、自動テストで確実なチェックをすることで発生確率を低減させることができます。

顧客へのシステム提供が高速化される

DevOps を導入すると、前述した ITバリューストリームのフローを高速化できるので、顧客へのシステム提供が大幅に効率化されます。
特に後述する「DevOps 導入の3つの柱」を実施することですることで効率化を実現可能です。

DevOpsを導入した企業の事例

DevOpsを導入した企業の事例
メリットを具体的にイメージできるように DevOps がどのように企業へ良い影響を与えていったか、事例をみていきましょう。

Etsy

Etsy ではデプロイのプロセスを限りなく安全で日常的な作業とし、ITバリューストリームの中の誰でもデプロイができるようになりました。もちろん出社初日の新人エンジニアでも対応できます。

デプロイプロセスには1万を超える自動テストが構築されており、QAチームの関与を最小限に留めることによって、誰でも10分程度で必要なテストを終えられるようになりました。

Twitter

2009年に Twitter 管理者のアカウントパスワードクラッキング被害や、当時のオバマ大統領のアカウントハッキング被害などが発生していた Twitter は、早急にセキュリティ対策を講じる必要がありました。
そこで実装されたのが、開発プロセスでのセキュリティ項目自動チェックです。
特に開発者がセキュアでないコードを書いた時の自動フィードバック機能は画期的で、脆弱性の割合を 60% 減少させることに成功しています。

LinkedIn

LinkedIn では、すでに大量に収集されていたさまざまなデータを、社内のエンジニアが見やすい形で再構成しグラフ化することに成功しています。
複数のデータセットにまたがる計算や、前週比のトレンド表示などの機能も実装されました。
これらの指標は、エンジニア自身がカスタマイズしてダッシュボードに表示させられます。

このことにより、自社のシステムのみならず、連携している他社システムの異常にも早く気づけるようになりました。

DevOpsを導入するための3つの柱

DevOps導入の3つの柱
DevOps の取り組みには下記3つの「柱」ともいうべき項目が存在します。

  • システム開発のフロー改善
  • 迅速なフィードバック/リリース
  • 継続的な学習と実験

これらの内容を詳細にみていきましょう。

システム開発のフロー改善

DevOpsを導入することでシステム開発のフローを改善し、顧客へのシステム提供をより高速化できます。ポイントは以下のとおりです。

  • システム環境の作成・削除の柔軟性確保
  • システム開発テストの自動化
  • 継続的インテグレーションの実現
  • 継続的デプロイの実現

ひとつずつ内容をみていきましょう。

システム環境の作成・削除の柔軟性確保

リポジトリの最新版から、開発環境やテスト環境、本番環境を必要に応じて作成・削除できるようにします。
AWS に代表されるクラウドサービスであれば必要に応じてサーバーを準備・削除できます。 DevOps とは親和性が高いため、積極的に活用するのが良いでしょう。

システム開発テストの自動化

バージョン管理システムにコードをアップするたびに、なるべく本番環境に近い環境でテストが自動実行されるようにしておきます。
QAチームの負担が減り、さらに効果的なフィードバックをもらいやすくなります。

継続的インテグレーションの実現

DevOps では、単一のメインリポジトリに開発者全員で細かくプログラムコードを統合していきます。
この細かい統合を「継続的インテグレーション」と呼びます。

従来の開発では終盤での実施が多かった統合を細かく実施することで、発生する問題にも細かく対処していくことが可能です。

継続的デプロイの実現

プログラムコードのデプロイを自動化すると、こまめな「継続的デプロイ」ができるようになります。
デプロイ自動化の仕組みは開発環境、テスト環境、本番環境で揃えておくと本番環境へのデプロイがスムーズです。

迅速なフィードバック/リリース

生産効率を上げるために、迅速なフィードバック/リリースは必須です。
そのポイントは以下の通りです。

    • トラブルシューティングのためのデータの収集・指標まとめ
    • 各種データの分析
    • フィードバックループの構築
    • システム開発部門の運用への参画
    • レビューと調整プロセスによる品質向上

問題をすぐに可視化し、ITバリューストリーム内に拡散できるようにしておきましょう。

トラブルシューティングのためのデータの収集・指標まとめ

データ収集は、システムの不具合をはじめ、対象のシステムに関するビジネスデータまでもが対象になることもあります。
昨今では、80万種類以上のデータを収集しているという企業事例もあります。
これらのデータには自由にアクセスできるようにし、分析に必要な指標まとめを日常の業務とすべきです。

各種データの分析

システム開発のフィードバックをデータから得るためには、各種データの分析が必須です。
特に DevOps においては、システム開発に関わる各種データに加えて「コードコミット数」や「デプロイ時間とデプロイ頻度」など、チームの健全性についての指標も分析することになります。

フィードバックループの構築

データを収集・分析できていると、効果的なフィードバックループを構築可能です。
自動テスト機能で発見できなかったエラーも、データのモニタリングから発見できることがあります。システムのエラーをはじめとする諸問題は、ITバリューストリーム内のメンバー全員で共有しましょう。

システム開発部門の運用への参画

システム運用部門が、普段どのようにシステムを運用しているかをシステム開発部門に観察させることでフィードバックに活かせます。
特にシステム本番稼働の初期については、本番サービスはシステム開発部門が管理しましょう。

レビューと調整プロセスによる品質向上

高いプロダクト品質を維持するためには、コードのレビューは必須です。
目視でのレビューの他に、ツールを使ったレビューや、レビューを実施しながらプログラミングをするペアプログラミングなども有効でしょう。

継続的な学習と実験

学習と実験において最も重要なことは、失敗から学ぶことです。
継続的な学習と実験の実施にあたっては、日常業務に潜む問題は広く共有し、その行動を評価するような企業カルチャーの醸成が重要です。
たとえば事故が起きた場合は、障害が収まった後でなるべく早く振り返り会を実施しましょう。内容は以下のようなものです。

  • さまざまな視点から障害の事実を集めてタイムラインを作成する
  • プロジェクトメンバーに対して障害発生にどのように関わったか説明させる
  • 障害発生時の判断の良し悪しは後でわかるという事実を全員で共有する
  • 同じ過ちを繰り返さないための手法を明確にしておく
  • 参加者は障害に関わった人たちを励ます

DevOps を導入すると一般的には多くの問題が発生するとされていますが、その問題や失敗から学ぶ姿勢が大事です。そのため、メンバーへの非難は厳禁です。

振り返り会の内容や議事メモなどは、なるべく多くの人が参照できるようにし、事態と対策の内容を知ってもらいましょう。もちろんこの時も非難せずに、むしろ共有したことを賞賛すべきです。

過去に起きたエラーや発生が想定されるエラーのリハーサルを実施することも効果があります。
エラーモードを本番環境に実装し、本番環境をコピーしたうえでリハーサルを実施できれば理想的です。

また、システム実環境での実験でシステムのふるまいを学び、改善点を見つけ、理解を深める「カオスエンジニアリング」という取り組みもあります。

DevOpsを導入したい!何から取り掛かるべきか

DevOps導入で何から取り掛かるべきか
ここまでお読みいただいていればお気づきの方も多いかと思いますが、DevOps を導入していくことは決して簡単ではありません。
自社ではどのように DevOps の取り組みを始めていくか悩む人も多いでしょう。
この記事の最後に DevOps 導入の糸口についてお伝えしていきます。

なお、これらの取り組みは DevOps導入チームを新規に編成して対応しましょう。

新しいシステム開発プロジェクトから導入

DevOps を既存のプロジェクトに適用する場合、一般的にシステム連携やルール適合検討など、対応すべき項目が多く発生します。

その点、新しいシステム開発プロジェクトであれば、検討事項は少なく済むでしょう。

DevOpsに興味を持つ組織から適用

DevOps のような新しい仕組みを取り入れてみたいと考えている組織は 0 ではないはずです。
そのような意欲ある組織から DevOps を適用し、実績を積み上げていきましょう。

社内の抵抗勢力と対決するのは、ある程度の実績を積んだ後で問題ありません。 DevOps導入活動は数年のスパンでじっくり取り組みましょう。

ITバリューストリームの可視化

どの IT企業もシステムを受注して開発し、顧客に届けるまでのフローがあります。
社内の情報システム部門でも同じです。
この ITバリューストリームを可視化し、一連の流れを細かく把握することは、DevOps を導入するプロセスと同時並行で実施すべきです。

関連する部門のメンバーを集め、ITバリューストリームの一連の動作を再現するワークショップを開いた企業もあります。
改善点が明確になれば、ITバリューストリームの改善に取り組んでいけます。

人員に余裕があれば、システム運用以外の各セクションにもシステム運用エンジニアを配置できると、個々の業務を最適化するための仕組みやシステムの構築を手助けできるでしょう。

DevOps導入はスパイスファクトリーへご相談ください

DevOps導入はスパイスファクトリーへご相談
今回は、 DevOps の定義や導入方法などについてお伝えしました。
DevOps の導入には、「システム開発のフロー改善」「迅速なフィードバック/リリース」「継続的な学習と実験」の3点の柱があります。
記事内で記載したそれぞれの柱のポイントを押さえることで、DevOps の導入はスムーズになるでしょう。

当社、スパイスファクトリーは APNアドバンスドコンサルティングパートナーとして AWS を活用したサーバーレス・マネージドサービスの豊富な活用実績、アジャイル開発と親和性の高い構成構築を得意としています。
DevOps についてやインフラ環境の構築にお困りの方は、ぜひスパイスファクトリーのサービスページをご覧ください。ご相談やご不明な点はお気軽にお問い合わせください。

無料相談はこちらから

参考文献

■参考書籍

  • GENE KIM, JEZ HUMBLE 著/榊原 彰 監修/長尾 高弘 訳.『THE DevOps HANDBOOK』(2017).日経BP
  • Jennifer Davis, Ryn Daniels 著/吉羽 龍太郎 監訳/長尾 高弘 訳.『Effective DevOps―4本柱による持続可能な組織文化の育て方』(2018).オライリージャパン

■SEO参考記事

このエントリーをはてなブックマークに追加
アバター画像
About The Author

スパイスファクトリー公式

スパイスファクトリーは世界がより良い⽅向に向かうよう、変化を加速させる “触媒”(スパイス)としての役割を全うすることをミッションとしたDXエージェンシーです。最新テクノロジー、UIUX、アート、マーケティングなどの技術・メソッドを⽤いて、モノゴトを素早く、美しく、本質的に再定義し、幅広いクライアントのデジタルトランスフォーメーションを⽀援しています。

何かお困りのことはありませんか?無料でご相談を承っております!