アプリケーション開発・管理・運用

DevOpsとは?その基本とアジャイルとの違いを解説

2010年ころから新しいソフトウェア開発手法として「DevOps(デヴオプス)」が注目されており、現在でもその有効性が議論されています。平たく言えば、DevOpsとは開発チーム(Development)と運用チーム(Operations)が協力体制を取り、ともに開発に臨むスタイルです。

ソフトウェア開発とのかかわりが少ない人からすれば、「そんなの当たり前なのでは?」と考えるかもしれません。確かに、開発チームと運用チームは本来協力し合うべき組織なのですが、対立関係が生まれているケースが少なくありません。

なぜなら、開発チームはユーザーの利便性を考えて新しい機能をどんどん開発するのが使命であり、運用チームはユーザーが安定的にサービスを利用できるようシステムの可用性などを担保するのが使命だからです。新しい機能のリリースが多いほどシステムは不安定になりがちです。従って、開発チームと運用チームが対立することが非常に多いのです。

では、なぜあえて開発チームと運用チームを協力させる必要があるのでしょうか?本稿ではDevOpsの概要と、アジャイル開発との違いを解説します。what-is-devops

アプリケーション開発における課題別の解決方法とは? 〜Azureを導入するメリットも紹介〜

DevOpsとは?

DevOpsという開発手法が広く知れ渡ったのは、2009年にオライリー主催で開催された「Velocity 2009」というカンファレンスでのことです。当時Flickrに所属していたJohn AllspawとPaul Hammondによるプレゼンテーションにて、初めてDevOpsが登場しました。

両氏は『10+ Deploys Per Day: Dev and Ops Cooperation at Flickr(1日10回以上のデプロイ: Flickrにおける開発と運用の協力)』というプレゼンテーションの中で、対立することの多い開発チームと運用チームがあえて協力することで、素早い開発と高度に安定したサービス提供が実現できると説明しています。

対立関係にある両チームも、本来は「システムを通じてビジネスの価値を高め、ビジネス価値をより確実かつ迅速にユーザーに届け続ける」という最終的な目標が一致しているはずです。同じ目標を掲げているにもかかわらず、手段が異なることから目標達成に悪影響を及ぼしていると考えられます。

DevOpsに欠かせない組織文化

DevOpsを採り入れるにあたり、欠かせない組織文化があります。それが、以下4つの文化です。

1.互いを尊重する

これまで対立関係にあったとしても、開発チームと運用チームはともに働く仲間です。一緒に働く相手を心から思いやり、互いに1人の人間として対等にかかわりながら、能力や功績を評価します。

2.互いを信頼する

「信頼する」ということは、自分以外の人は優秀であり、正しいことをすると信じて、仕事を任せることです。両チームが協力するために信頼は最も大切な要素になるでしょう。

3.互いの失敗を責めない

新しいことにチャレンジすれば、失敗は必ず起こります。そのことを理解していれば、誰かが失敗しても攻め合いは無くなるはずです。その失敗を非難するのではなく、チャレンジした結果だとむしろ称えることが大切です。

4.互いを非難しない

問題が起こった際は、その中心にいる人物を非難するのではなく、次に同じ問題が起こらないようにどうすればよいか?を考え、建設的に批判を行います。批判の中にも前向きな気持ちがあれば、問題を起こした人物も救われますし、次も頑張ろうという意欲がわいてきます。

こうした組織文化を作るのは決して簡単ではありませんが、DevOpsを実現するには欠かせないことです。

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

DevOpsと同じように重要視されているソフトウェア開発手法が「アジャイル開発」です。中にはDevOpsとアジャイル開発を混同している方も少なくないので、ここでその違いをご紹介します。

アジャイル開発とは従来の開発手法に比べて、より素早くプロジェクトを完了させるための開発手法です。従来あの開発手法では要件定義からシステムのリリースまで、一貫したプロジェクトで推進します。しかし、その手法では途中での要件変更に対応できず、プロジェクトが長期化するケースがあります。

一方アジャイル開発は、要件定義の優先度に応じて開発期間を分担し、その期間の中で開発を繰り返していくスタイルです。そのため、複数の小さなプロジェクトが立ち上がるような状態になり、開発者はチームを組んで作業にあたります。

アジャイル開発のメリットは、途中での要件変更にも柔軟に対応できる点です。1つのプロジェクトが大きな川の流れのように進む従来の開発手法に対して、アジャイル開発は細い無数の川が最終的に大きな運河へと繋がっていくようなイメージです。

では、DevOpsとアジャイル開発の違いは何かといいますと、DevOpsはアジャイル開発という枠組みの中にある1つの開発手法です。DevOpsで取り組むソフトウェア開発は得てして「アジャイル」であり、かつ開発チームと運用チームが協力体制を取ることで、より効率的にビジネス目標を達成することを目指します。

DevOpsを採り入れるためには?

ここまでDevOpsの概要についてご紹介しましたが、言葉で説明するほど簡単なものではないのに注意が必要です。では、何が必要なのか?

まずはDevOpsを採り入れるにあたり、「何のために行うのか?」を考え、組織内でその認識を合わせることが大切です。つまり、自分たちはDevOpsを採り入れることで何を達成しようとしているのか?その目的は何か?どうしてDevOpsが必要なのか?を細かく考えます。これらの認識を共有することが、そもそもメンバー同士がコミュニケーションを取るきっかけになります。場合によっては、DevOpsという言葉を使わないで取り組むのも1つの手段です。DevOpsは目的を達成するための手段であって、DevOpsを採り入れること自体が目的になってしまうのを防ぐためです。

次に、現状認識を強めて次に行うべきことを決めていきます。開発チームと運用チームがシームレスに連携できない状況には、協力体制に不適切なツールが使われているなどが考えられます。そのため、DevOpsを採り入れるにあたり何が必要なのか?を定義していき、共通認識として情報を共有しましょう。

協力体制を高めるために、ツールを細分化するのも良いでしょう。前述したFlickrの事例では、6個程度のツールを使い分けていました。大切なのは、「自分たちにとって最適なDevOpsとは何か?」を考えることです。一口にDevOpsと言っても、環境によってカスタマイズが必要なので、事例をそのまま参考にするのではなく、自分たちのDevOpsを採り入れるために試行錯誤を繰り返していきましょう。

Microsoft Azureとは何か?入門から応用まで徹底解説

クラウドとは何か?Azureとは何か?導入のメリットや構成、コストに至るまでの基礎的な知識から、どのように活用すべきかまでを徹底的に解説しています。

Microsoft Azureとは何か?入門から応用まで徹底解説

ブログ記事を見る

Azure DevOpsで最高の環境を手に入れる

マイクロソフトではAzure上でDevOpsに必要な様々なサービスを提供しています。以下は代表的なサービスです。

Azure Boards:実績のあるアジャイル ツールを使用して、より迅速にユーザーに価値をもたらし、チームの垣根を越えて作業を計画、追跡したり、作業に関する相談をしたりできます。

Azure Pipelines:あらゆる言語、プラットフォーム、クラウドに対応した CI/CD を使用して、ビルド、テスト、デプロイできます。GitHub や他の Git プロバイダーに接続し、継続的にデプロイすることができます。

Azure Repos:クラウドでホストされた容量無制限のプライベート Git リポジトリを入手し、pull request と高度なファイル管理により、優れたコードを協力してビルドしましょう。

Azure Test Plans:手動の探索的テスト ツールを使用することで、テストと公開を自信を持って行うことができます。

Azure Artifacts:パッケージを作成、ホストしたら、チームで共有し、1 回クリックするだけで CI/CD パイプラインに成果物を追加できます。

拡張機能の Marketplace:コミュニティによって構築された、Slack や SonarCloud、その他 1,000 のアプリやサービスの拡張機能にアクセスできます。

すべての DevOps サービスを利用することも、既存のDevOps環境を補完するために必要なサービスだけを選択することも可能なのでMicrosoft DevOpsを検討してみてはいかがでしょうか。

  • fb-button
  • line-button
  • linkedin-button

無料メルマガ

RELATED SITES

関連サイト

CONTACT

サイト掲載の
お問い合わせ

TOP