アジャイル開発が主流になっていく中で注目されるようになってきた「DevOps」。CI/CDと同じように開発工程を自動化するものなのかという印象を持っている人もいるかも知れませんが、実際はもっと広範囲に渡る定義がされています。

今回は、DevOpsとは何なのかをご紹介していきます。

1. DevOpsとは?

DevOpsとは?

DevOpsとは、Development(開発)とOperation(運用)をあわせた言葉で、様々なツールなどを組み合わせた開発環境と、チームワーク体制を整えることで、システムの開発者と運用者が協業して柔軟に、かつスピード感を持ってシステムを改善していくことを指します。

最初にDevOpsの概念が登場したのは、2009年のFlickrのエンジニアによる公演です。

このFlickrでは一日に10回以上もデプロイをおこなっているという驚くほどのスピードで開発しており、その開発を可能にしているのがDevOpsです。

2. 開発者と運用者のジレンマとは

DevOpsとは?

そもそもなぜ開発者と運用者が協業する必要があるとわざわざ提唱されたのかというと、そこには開発者と運用者それぞれのジレンマが関係しています。

開発者の役割は機能を追加していくことであり、どんどん新しいものをリリースしてシステムをアップデートしていく必要があります。一方、運用者は安定稼働することを望みます。新しい機能を追加してバグが出たりすることを嫌う人もおり、チームワークがうまく行ってない場合はこの協業を行うのが難しくなることもあります。

しかし、本来ならばシステム開発というのはエンドユーザーに価値のあるものを届けるのが目的のはずです。その文脈の中では、開発者と運用者が協力してシステムを改善していくことが必要になるため、お互いにとって良い開発体制を作ることでシステム改善の文化ができて、よりよいものを作れるようになる、というのがDevOpsの始まりです。

3. 具体的にはどうするの?

DevOpsとは?

DevOpsには多くの定義があり、これをやればDevOpsというものを一言で言うのは難しいですが、基本的にはバグが出づらい仕組みを作り、スピーディにリリースを行っていくための体制を作るために、テストやビルドの自動化が行われたり、またチームの文化として協業するための考え方を広めるということが行われます。

上記で紹介してFlickrでは下記のことに取り組んでいます。

1. インフラ構築の自動化
ツールを使用して、インフラストラクチャーの構築を自動化します。

2. バージョン管理システム
Gitなどを使用し、コードのバージョンを管理することでいつ誰がどのような変更を行ったかの履歴を見られるようにします。

3. ワンステップビルド&デプロイ
ビルドとデプロイのシステムをツールを使って自動化し、手間なく行えるようにします。CI/CDの記事でも紹介したような、Jenkinsなどを使用します。

4.フィーチャーフラグ
コードの中の機能の設定を、コードの中ではなく設定ファイル内で指定、変更することを指します。

5. メトリクス共有
取得したメトリクス(指標)を共有し、システムがどのような状況であるのかを可視化します。

6. IRC and IM robots
情報共有のために、Slackなどのチャットツールと開発の動きを連動させ通知を送るようにし、透明性の高い開発環境を作ります。

4. DevOpsの組織文化

DevOpsとは?

DevOpsはツールを使って自動化するだけではなく、チームのカルチャーにも言及されています。うまく協業していくために心がけるべきこと4つは下記です。

1 Respect(尊重)
チームメンバーそれぞれに専門領域があります。各メンバーの役割や意見を尊重し、頭ごなしに否定したりしないこと、物事を隠さないことが大切です。

2. Trust (信頼)
開発者、運用者が互いに信頼し合う必要があります。

開発者は運用者にインフラストラクチャーの変更などを相談し、運用者は機能開発の相談に開発者を巻き込むことが必要で、権限の以上をしたり情報の透明性を保つことで良いチームワークが生まれます。

3.Healthy attitude about failure(失敗に対して健全な態度を取る)
人はだれでも失敗します。自分なら絶対に失敗しないということはありません。失敗に対して、否定的な態度を取るのではなく、建設的にそれを防げるような議論ができる体制をつくりましょう。

4. Avoiding Blame(非難しない)
何かが起きたときに誰かを指差して非難するのは避けましょう。誰でも失敗したり不足している部分があります。それを建設的にフィードバックし、改善できるようにしていくことが大切です。

5. DevOpsはどうやって取り入れたらいい?

DevOpsとは?

DevOpsを取り入れるにはどうしたらいいのでしょうか?

DevOpsエンジニアと呼ばれるエンジニアが雇われることもありますが、もしもまだDevOps体制が整っていないチームの場合は、まず開発者と運用者でどのような問題があるのか、どんなところで開発が滞っていたり、やりたいことを制御されていたりするのかを明確にすることをおすすめします。

最初から特に目的なく自動化などを進めると、チームの意識が揃っていないまま、振り返りができない体制が作られてしまう可能性も。DevOpsのカルチャーを作っていくためにも、まずはチーム内で課題感を揃えることが必要になります。

その上で必要なツールなどの選定、導入を行っていくことで、開発者と運用者が協業してよいシステムを作る土壌が出来上がるでしょう。

6. DevOpsまとめ

DevOpsはどんどん浸透しており、特にWeb系の開発現場でもすでに取り入れられているところも多いと思います。透明性を持って、高い品質でシステムを改善していきたいチームはぜひ取り入れてみてください。

7. アジャイル方式で開発をするならバイタリフィのオフショア開発で

オフショア開発

バイタリフィでは、ベトナムでのオフショア開発にのサービスを提供しております。12年以上に及ぶベトナムでのオフショア開発経験を活かした高品質・低価格な開発体制です。

開発チーム内には世界コンペにて、約3000チーム中世界10位以内に入ったプロフェッショナル集団も在籍しています。無料でご相談頂けますので、オフショア開発に興味がある方は、ぜひ一度お気軽にお問合せいただけましたら幸いです。

オフショア開発 資料

「オフショア開発3分で丸わかりBOOK」が必要な場合は、問い合わせ欄にご記載ください。

資料請求・問い合わせ