エンジニアでなくてもザックリわかる。最近よく聞く「DevOps(デブオプス)」ってなに?
こんにちは。シナップ広報・ライターの鈴木しのです。
年号が変わるまで、あと少し。最後の平成をじっくり楽しみたい気持ちでいっぱいです。
さて、先日、月に一度開催している社内勉強会にてエンジニアメンバーのチーム発表がありました。テーマはズバリ「DevOps(デブオプス)について」。
最近、Web業界の仕事に携わる場合は少しずつ耳にする機会も増えていますが、なかなか意味は理解できていないもの。そこで今回は、勉強会の内容を抜粋しながら「DevOps(デブオプス)」の考え方や基礎的な知識をご紹介します!
DevOpsとは
まずは、単語だけではなかなか理解しにくい「DevOps(デブオプス)」の意味から。DevOpsとは、ソフトウェアを開発するときの手法や方法のひとつです。開発を意味する単語「Development」と、運用を意味する単語「Operations」を掛け合わせてできました。
DevOpsに厳密な定義はありません。DevOpsは、開発と運用を分けるのではなく連携、協調することによって、より迅速かつ安定的にリリースを行う改善手法を指します。簡単に言えば、開発担当者と運用担当者が協力しながら作業を進めるための手法や取り組みのことを「DevOps」と呼ぶのです。
DevOpsは、高クオリティ&ハイスピードで開発を行うために取り入れる
DevOpsを行う目的は、より良いプロダクトを迅速にエンドユーザーに届けることです。DevOpsを導入しない場合、開発担当者は新機能の追加など新しい試みを、運用担当者は障害のない安定した稼働とそれぞれ異なった目的に向かって走りがちになってしまい、しばしば対立を引き起こします。ひいては、より良いプロダクトを迅速に届けるための障害となってしまいます。
一方で、DevOpsの考え方を導入すると、お互いに協力しながらスムーズに開発を進めることが出来るとうたわれています。そのため、目的がぶれることなく、スピーディーな開発をめざすことができるのです。
開発者も運用者もユーザーの目線に立って、双方のコミュニケーションを取りながら開発を進めていくのがDevOpsの手法。そのため、結果としてスムーズに課題共有ができて、精度も上がると考えられています。
DevOpsの具体的な取り組み方
実際にDevOpsを導入するとなった場合、ふたつの軸で取り組みについて考える必要があります。それは、組織文化の面と、ツール面です。これまではまったく行なってこなかった取り組みを始めるためには、組織全体のマインドの統一が必要です。とくに大切なのは、情報を正確に共有すること。
DevOpsを行う上では、情報が偏ってしまったり、属人化することを極力避けたいもの。これまで口頭で、限られたメンバー内のみで情報共有を行なっていた組織の場合、改めて組織そのもののあり方を見直す必要があります。
さらに、新しい取り組みは、スムーズに進行できるようになるまである程度の時間を必要とします。うまくいかないこともありますが、全員が改善に向けたポジティブなマインドを持てるとなお良いでしょう。
導入を検討するべき5種のツール
次にDevOpsを導入する上で忘れてはならないツール面の話です。DevOpsを推進する際には、情報共有や開発、リリースを効率よくおこなうためにツールの導入が鍵となってきます。多くの場合、導入すると良いとされているツールは、5つの種類に分けられます。
・タスク管理
・インフラ自動構築
・仮想環境
・バージョン管理
・CI/CD(Continuous Integration/Continuous Delivery)ツール
慣れないうちは苦戦することがあるかもしれません。しかし、順番に導入を行うことで、だんだんと抵抗感なく利用できるはず。また、企業やチームなどによっては、すでに導入を進めているツールが登場する場合もあります。必ずしもすべてが新しいツールではないので、順番に確認していきましょう。
1.タスク管理
まずはじめに、タスク管理ツールです。日頃のプロジェクトで利用している、なんてケースも多いかもしれませんね。各人がツールを利用することで、未着手・進行中・対応済みのタスクを振り分けて確認できます。
また、タスクごとにメンバー内でやりとりができるので、会話がバラついてしまう心配もありません。最近では、他システムとの連携機能も充実しているので、ツール間での対応しにくさはなくなりつつあります。
ツール例:Backlog、REDMINE、Pivotal Tracker
2.インフラ自動構築
ソフトウェア開発などの際に、基盤となるインフラ。手動で一つひとつ整備している例も珍しくありませんが、ちょっとしたミスが後々発覚したり、ほとんど同様の基盤をゼロから構築したりと、意外と手間がかかるもの。
共通基盤として利用できるものであれば、インフラ自動構築ツールを利用してみてはどうでしょう。手動整備時よりも時間は早く、精度も高くなるので、効率的に開発が進むはずです。
ツール例:ANSIBLE、CHEF、docker
3.仮想環境
ソフトウェアを開発したあと、本番環境に似た環境(仮想環境)を用意して、挙動に不備がないかどうかテストを行います。ただ、この仮想環境を、本番用とは異なる仕様にしてしまった......なんてことも。すると、せっかくテストを行なっても、本番でエラーが見つかる可能性が高まってしまいます。
そんなときに利用できるのが、仮想環境の生成ツール。本番と同様の環境を構築できることはもちろん、複数メンバーで同時に閲覧も可能。打ち合わせ時に全員で確認、なんてこともできてしまいます。
ツール例:Virtual Box、Parallels、VAGRANT
4.バージョン管理
せっかく作っていた新バージョンのデータがふとしてときに消えてしまう、上書きされてしまうなんてことも珍しくありません。時間をかけて書いていたデータも、無くなってしまったらまたゼロからやり直し。そんなときに活躍するのが、バージョン管理ツールです。変更内容への巻き戻しが簡単なので、もしものときにも焦ることがありません。
ツール例:git
5.CI/CD(Continuous Integration/Continuous Delivery)ツール
開発したソフトウェアを確認するとき、今までは目視だったなんて場合もあるかもしれません。もしも効率化を目指すなら、自動化ツールでサクサクと確認してみてはどうでしょう。見逃しやすいバグも、素早く確実に探せるので役立つこと間違いなしです。
ツール例:Jenkins、circle ci、Travis CI
DevOpsを導入すると、プロジェクトはこう変わる
それでは、上記でご紹介したツールを実際に導入すると、どのような変化が得られるのでしょうか。ツールの種類によって異なりますが、主に以下のようなメリットが考えられます。
・プロジェクトの見える化ができる
・全員が最新版のファイルを閲覧&編集できる
・簡単にテスト環境が整えられて、誰でもすぐにテストできる
さらに、チーム内のマインドが変わることで、ポジティブに日々業務をこなせることでしょう。DevOps導入後は苦労も多いですが、慣れていくと、その後の開発業務が一気に効率化されるはずです。
DevOpsの導入が、必ずしもプラスに働くわけではない
ここまで、DevOpsのメリットについてご紹介していきましたが、もちろん、必ずしも良いことばかりではありません。まず、一番気をつけなければならないことは、DevOpsは決まり切ったフレームワークではないということ。
フレームワークとして切り出されている場合は、そのまま導入を進めて企業やチームに合わせて変化に対応すれば良いものです。しかし、今回DevOpsはあくまでも手法のひとつ。正解が決まっているわけではないのです。自由度が高い分、自分たちで工夫しながら進めなければならず、定着までに時間がかかってしまう可能性は十分に考えられます。
また、都度メンバー同士で話し合いを重ねながらブラッシュアップが必要なのも事実。そのため、変化を受け入れにくい風土の場合は、かえってコストだと感じてしまうこともあるでしょう。学習コストや導入コストなどが必要以上にかかってしまう場合は、導入そのものを見送る決断もひとつの方法です。プロジェクトやチームなどの様子に合わせて、臨機応変に対応する力が求められています。
まとめ
今回は、最近よく聞く「DevOps(デブオプス)」についてご紹介しました。ソフトウェア開発などが定期的に行われている職場やプロジェクト単位でチーム編成を行なっている企業などでは、非常に有効な開発手法だと感じました。
DevOpsに限らず、メリットとデメリットをしっかりと比較しながら、より良い開発手法を見つけていくことが重要ですね。シナップでも、今後この考え方を取り入れながら、より効果的な開発を目指していきます。
それでは、最後までご覧いただき、ありがとうございました!
サービスの成長を目指し、様々なお手伝いをしています。
シナップは、クライアントのビジネス立ち上げ、サービスの継続的発展をサポートすることを得意としている会社です。UI改善はもちろん、オウンドメディア戦略、DMP導入支援などマーケティング戦略に基づく様々な改善活動に関するご相談がございましたら、ぜひお気軽にお問い合わせください。