• このエントリーをはてなブックマークに追加

DevOpsとは?効果的に実践するために必要な知識とツール

システム開発の現場には大きく分けて開発者と運用者がいます。ソースコードを書くなどする開発者とそのソースコードを本番環境に適用する運用者はチームは同じものの、行う業務は異なります。

乱暴な言い方をすれば、システムはハードウェアとソフトウェアがあれば新規で開発ができます。しかし新規開発完了はゴールではなくスタートです。そこから運用し続ける必要があります。
時にはバグに対処し、時には機能拡充をしてよりユーザーニーズに合ったシステムへと進化させていきます。

さて、この開発者と運用者で意思疎通ができていないとシステム開発やその後の運用に多大な悪影響を及ぼしかねません。

本記事では開発者と運用者の対立構造を解消し、スピーディー、かつ正確なシステム開発を行うために生み出された考え方「DevOps」について解説します。

  • 開発者と運用者ではトラブルになりやすい
  • ソースコードのバージョン管理やSI手順を共有していないなどのトラブルがしばし現場では発生している
  • Flickrエンジ二アセッションでDevOpsという考え方が登場した
  • DevOpsはメンタル要素と技術要素で構成されている
  • メンタル要素ではチームメンバーに対する考え方、技術要素ではツールの活用が紹介されている
  • ツール活用だけではトラブルは減らない
  • メンタル要素を身に付けてこそ、強いチームが確立する

現場で発生しやすいトラブル

システム構築の現場では開発者と運用者の間でトラブルが発生しやすいものです。その理由は明確です。両者の目的はシステム開発実現ですが、そこに行きつくまでの想いや考えは実は異なります。

開発者は日々改修とテストを繰り返し、お客様の要望に最大限沿った機能の実装が目的ですが、運用者はシステム運用の安定稼働が目的です。
そのため運用者は開発者が頻繁なソースコード変更を嫌います。その度にビルド・デプロイしないといけないからです。

システムは間違ったソースバージョンのビルド・デプロイや間違った手順でSIを実施するとシステムは稼働しなくなります。これは運用者にとって絶対避けたいことです。

ソースコードのバージョン管理

ソースコードが適切に管理できていないと適応すべきでないバージョンのソースを適応してしまう恐れがあります。実際にソースを書くのは開発者ですが、適応するのは運用者です。
運用者が適切なSI手順を踏んでも開発者が間違ったバージョンのソースを渡していれば、システムは望み通り動きません。

SI手順を共有していない

SIの手順は不定期で変わる場合がありますが、その内容をチームで共有していないと本番作業で大きなミスに繋がります。SI手順のミスは大きなミスに繋がります。最悪、SI実施前のシステムにさえ戻らない場合もあります。

このようにシステム構築にはヒューマンエラーリスクが潜んでいます。一つのミスが命取りになり、システムが動かなくなります。
ミスをした者は徹底的に悪者にされてしまうことがありますし、ミスのなすり合いなどが起こる場合もあります。どちらであっても、プロジェクトの雰囲気は確実に悪化します。

Flickrエンジ二アセッションがきっかけ

このようなトラブルは世界中の開発者や運用者が身に染みて実感しているところであり、この構造を改善すべく、世界中でセミナーや勉強会が開催され情報が共有されています。
そのような中、2009年に行われたFlickrエンジ二アセッションでは、開発者は機能追加、運用者は安定稼働の役割という違う役割を担っているがゆえに起こってしまうこれらのトラブルを解決するため、DevOpsという新しい概念を示しました。
彼らは既にDevOpsの考えを実践し、1日10回以上という驚くべきシステムリリースを実現しています。

DevOpsとは

では、改めてDevOpsについて解説しましょう。DevOpsとは開発部門(Development)と運用チーム(Operations)が共同でビジネスに取り組む姿勢を表す概念で、その目的はビジネスそのものの価値を高め、エンドユーザーに素早く、そして確実にプロダクトやサービスを提供することにあります。
開発チームが文字通り一丸となって全ての開発プロセスに相互的・積極的に干渉していく文化の醸成がDevOpsの大きな意義としてあります。

DevOpsの考え方

このように、DevOpsとは開発者と運用者の対立構造を解消し、スピーディー、かつ正確なシステム開発を行うために生み出された考え方ということです。
DevOpsはメンタル要素と技術要素から成り立っています。

メンタル要素

Flickrエンジ二アセッションでは、DevOpsにはResPect、Trust、Healthy attitude about failure、Avoiding Blameの4点の重要性が語られています。

  1. Respect:お互いを尊重することです。相手のことを思いやることでコミュニケーションが円滑に取れるようになります。
  2. Trust:チームメンバーを信頼することです。開発者、運用者の垣根を越えて、システムに関わっているメンバーを信頼する必要があります。
  3. Healthy attitude about failure:失敗に対して健全な態度をとることです。失敗はチャレンジすれば起こりえるもので、担当者を責めるのはおかしいという考えです。
  4. Avoiding Blame:非難を避けることです。失敗しないように取り組むのがDevOpsの目的の1つですが、それでもミスをゼロにはできません。しかし、たとえミスが起きたてもそれを非難する事はしてはいけません。

技術要素

DevOpsの考え方を実現するためには新たな開発手法やツールを活用することも大事です。新たな開発環境採用で開発の仕方を改善し、さらにツールによる作業自動化でヒューマンエラー発生の可能性を事前に摘み取ります。以下が代表的な開発手法とツールです。

1:アジャイル開発(スクラム開発)

アジャイル開発は軽微な修正を繰り返しながら開発を進める手法です。そのアジャイル開発の手法の一つであるスクラム開発はチームでコミュニケーションを取りながら進める手法です。開発過程をメンバー間で定期的に確認、共有することで仕様漏れやテスト漏れを防ぎます。頻繁にコミュニケーションを取るためチームの関係が強くなるというメリットがあります。

アジャイル開発について詳しくは、「アジャイル開発とは:アプリ製作にも適した開発方法のまとめ」をご覧ください。

2:継続的インテグレーション、継続的デリバリー、継続的デプロイメント

開発環境で作ったソースコードが管理不備などの理由で本番環境に適応できないトラブルがしばし起こります。それらを防ぐのが継続的インテグレーション、継続的デプロイメント、継続的デリバリーです。継続的インテグレーションとはバージョン管理システムにコミットされるタイミングで自動的にビルドを実行する考え方です。継続的デリバリーは変更したソースをコミットするたびに自動ビルド、デプロイを実行し、いつでも本番機リリースが可能な状態にする考え方です。継続的デプロイメントは人間が了解せずとも自動的に本番機にデプロイされる状態にする考え方です。これらの考え方に共通するのは自動化です。手動が介在しないためヒューマンエラーを防ぐとともにスピーディーな作業を実現します。

DevOpsを実現するツール

DevOpsを実践する企業が増加していく中、DevOpsに適したツールを提供するサービスも見られるようになってきました。例えばクラウドサービス提供事業者の中でも最大手であるAmazonの展開するAWSでは、DevOpsに適したツールであるという紹介が公式サイトで掲載されています。

業務の効率化やスマート化を考える際に、新しいシステムも導入してみるというのはDevOpsを実践していく上でも重要な考え方です。AWSが利用量に応じて料金が決まる従量課金制を導入しているように、クラウドサービスはスマートな業務を支援してくれるプランが盛り込まれていることが多く、アジャイル開発においても活躍が期待できます。

これまでの保守的な体制を維持してきた企業の場合、社員もまた既存のシステムベースに硬直してしまっているケースも考えられるため、単純にDevOpsの採用を宣言するだけでなく、DevOpsを実行に移していくためにもハードやシステム面での大幅な改革を行い、人員を自ら率いていく姿勢を示すことが重要になってくるでしょう。

参考:https://aws.amazon.com/jp/devops/

他にもDevOps実現のためのツールはいくつもリリースされていますが、今回は代表的なツールを紹介します。積極的なツール活用は開発の質を向上させます。

Jenkins

オープン系の継続的インテグレーションツールの一つです。自動でビルドを実行してくれるCIツールになるので、ビルド時点でソースミスが発見できます。

Docker

Dockerは継続的デリバリーツールの一つです。自動でビルド、テスト、デプロイを実行してくれるだけでなく、開発環境の構築も簡単に実現します。本番環境を開発環境で容易に再現できるので、開発環境では動いていたプログラムが本番環境では動かないといったトラブルを防いでくれます。

ツールだけではDevOpsは実現しない

DevOpsを実現するためには最新のツール利用は欠かせません。ツール採用で自動化が実現できるので、トラブル減少が大いに期待できます。しかし、それでもやはりどこかでトラブルは発生します。DevOps実現のためにツールは大切ですが、やはりそれ以上にメンタル要素がDevOpsのカギを握ります。ツールの使い方以上にメンタル要素を身に付ける事がどんなトラブルにも負けない開発チームの確立に繋がります。

PR:ECサイト構築フレームワーク「Orange EC」ではお客様にECサイト開発のノウハウをお伝えしています

関連記事

エスキュービズムニュースレター!
記事に関連するサービス
  • EC Orange
Orange EC 導入事例
店舗のミライ塾
オンライン、オフラインをまたがり、技術を掛け合わせ、新たなマーケティング領域へ
EC用語集
お役立ち資料ダウンロード

アーカイブ

ページ上部へ戻る