DevOpsとは?効果的に実践するために必要な知識とツール(※2019年1月追記)
システム開発の現場には大きく分けて開発者と運用者がいます。ソースコードを書くなどする開発者とそのソースコードを本番環境に適用する運用者はチームは同じものの、行う業務は異なります。
乱暴な言い方をすれば、システムはハードウェアとソフトウェアがあれば新規で開発ができます。しかし新規開発完了はゴールではなくスタートです。そこから運用し続ける必要があります。
時にはバグに対処し、時には機能拡充をしてよりユーザーニーズに合ったシステムへと進化させていきます。
さて、この開発者と運用者で意思疎通ができていないとシステム開発やその後の運用に多大な悪影響を及ぼしかねません。
本記事では開発者と運用者の対立構造を解消し、スピーディー、かつ正確なシステム開発を行うために生み出された考え方「DevOps」について解説します。
開発者は日々改修とテストを繰り返し、お客様の要望に最大限沿った機能の実装が目的ですが、運用者はシステム運用の安定稼働が目的です。
そのため運用者は開発者が頻繁なソースコード変更を嫌います。その度にビルド・デプロイしないといけないからです。
システムは間違ったソースバージョンのビルド・デプロイや間違った手順でSIを実施するとシステムは稼働しなくなります。これは運用者にとって絶対避けたいことです。
運用者が適切なSI手順を踏んでも開発者が間違ったバージョンのソースを渡していれば、システムは望み通り動きません。
このようにシステム構築にはヒューマンエラーリスクが潜んでいます。一つのミスが命取りになり、システムが動かなくなります。
ミスをした者は徹底的に悪者にされてしまうことがありますし、ミスのなすり合いなどが起こる場合もあります。どちらであっても、プロジェクトの雰囲気は確実に悪化します。
そのような中、2009年に行われたFlickrエンジ二アセッションでは、開発者は機能追加、運用者は安定稼働の役割という違う役割を担っているがゆえに起こってしまうこれらのトラブルを解決するため、DevOpsという新しい概念を示しました。
彼らは既にDevOpsの考えを実践し、1日10回以上という驚くべきシステムリリースを実現しています。
開発チームが文字通り一丸となって全ての開発プロセスに相互的・積極的に干渉していく文化の醸成がDevOpsの大きな意義としてあります。
DevOpsはメンタル要素と技術要素から成り立っています。
アジャイル開発について詳しくは、「アジャイル開発とは:アプリ製作にも適した開発方法のまとめ」をご覧ください。
業務の効率化やスマート化を考える際に、新しいシステムも導入してみるというのはDevOpsを実践していく上でも重要な考え方です。AWSが利用量に応じて料金が決まる従量課金制を導入しているように、クラウドサービスはスマートな業務を支援してくれるプランが盛り込まれていることが多く、アジャイル開発においても活躍が期待できます。
これまでの保守的な体制を維持してきた企業の場合、社員もまた既存のシステムベースに硬直してしまっているケースも考えられるため、単純にDevOpsの採用を宣言するだけでなく、DevOpsを実行に移していくためにもハードやシステム面での大幅な改革を行い、人員を自ら率いていく姿勢を示すことが重要になってくるでしょう。
他にもDevOps実現のためのツールはいくつもリリースされていますが、今回は代表的なツールを紹介します。積極的なツール活用は開発の質を向上させます。
DevOps環境には、Dockerなどのコンテナ技術を採用している企業がほとんどです。
しかし、それでもやはりどこかでトラブルは発生します。
DevOps実現のためにツールは大切ですが、やはりそれ以上にメンタル要素がDevOpsのカギを握ります。ツールの使い方以上にメンタル要素を身に付ける事がどんなトラブルにも負けない開発チームの確立に繋がります。
DevOpsの実践率が高い業種は、ソフトウェア・システム開発業、通信・サービスプロバイダー業、金融業などが主で、Fintechを含むIT技術の向上が今後も期待されます。
「ビジネス成果(売上、利益、顧客満足度の向上)がどの程度出ているか」という質問には、
ただし、半数は超えていないことから、IDCでは「成果を出していくためにはツールや技術の活用だけではなく、人材、組織、文化、プロセスを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点の重要性が語られています。- Respect:お互いを尊重することです。相手のことを思いやることでコミュニケーションが円滑に取れるようになります。
- Trust:チームメンバーを信頼することです。開発者、運用者の垣根を越えて、システムに関わっているメンバーを信頼する必要があります。
- Healthy attitude about failure:失敗に対して健全な態度をとることです。失敗はチャレンジすれば起こりえるもので、担当者を責めるのはおかしいという考えです。
- Avoiding Blame:非難を避けることです。失敗しないように取り組むのがDevOpsの目的の1つですが、それでもミスをゼロにはできません。しかし、たとえミスが起きたてもそれを非難する事はしてはいけません。
技術要素
DevOpsの考え方を実現するためには新たな開発手法やツールを活用することも大事です。新たな開発環境採用で開発の仕方を改善し、さらにツールによる作業自動化でヒューマンエラー発生の可能性を事前に摘み取ります。以下が代表的な開発手法とツールです。1:アジャイル開発(スクラム開発)
アジャイル開発は軽微な修正を繰り返しながら開発を進める手法です。そのアジャイル開発の手法の一つであるスクラム開発はチームでコミュニケーションを取りながら進める手法です。開発過程をメンバー間で定期的に確認、共有することで仕様漏れやテスト漏れを防ぎます。頻繁にコミュニケーションを取るためチームの関係が強くなるというメリットがあります。アジャイル開発について詳しくは、「アジャイル開発とは:アプリ製作にも適した開発方法のまとめ」をご覧ください。
2:継続的インテグレーション、継続的デリバリー、継続的デプロイメント
開発環境で作ったソースコードが管理不備などの理由で本番環境に適応できないトラブルがしばし起こります。それらを防ぐのが継続的インテグレーション、継続的デプロイメント、継続的デリバリーです。継続的インテグレーションとはバージョン管理システムにコミットされるタイミングで自動的にビルドを実行する考え方です。継続的デリバリーは変更したソースをコミットするたびに自動ビルド、デプロイを実行し、いつでも本番機リリースが可能な状態にする考え方です。継続的デプロイメントは人間が了解せずとも自動的に本番機にデプロイされる状態にする考え方です。これらの考え方に共通するのは自動化です。手動が介在しないためヒューマンエラーを防ぐとともにスピーディーな作業を実現します。DevOpsを実現するツール
DevOpsを実践する企業が増加していく中、DevOpsに適したツールを提供するサービスも見られるようになってきました。例えばクラウドサービス提供事業者の中でも最大手であるAmazonの展開するAWSでは、DevOpsに適したツールであるという紹介が公式サイトで掲載されています。業務の効率化やスマート化を考える際に、新しいシステムも導入してみるというのはDevOpsを実践していく上でも重要な考え方です。AWSが利用量に応じて料金が決まる従量課金制を導入しているように、クラウドサービスはスマートな業務を支援してくれるプランが盛り込まれていることが多く、アジャイル開発においても活躍が期待できます。
これまでの保守的な体制を維持してきた企業の場合、社員もまた既存のシステムベースに硬直してしまっているケースも考えられるため、単純にDevOpsの採用を宣言するだけでなく、DevOpsを実行に移していくためにもハードやシステム面での大幅な改革を行い、人員を自ら率いていく姿勢を示すことが重要になってくるでしょう。
他にもDevOps実現のためのツールはいくつもリリースされていますが、今回は代表的なツールを紹介します。積極的なツール活用は開発の質を向上させます。
DevOps環境には、Dockerなどのコンテナ技術を採用している企業がほとんどです。
Jenkins
オープン系の継続的インテグレーションツールの一つです。自動でビルドを実行してくれるCIツールになるので、ビルド時点でソースミスが発見できます。Docker
Dockerは継続的デリバリーツールの一つです。自動でビルド、テスト、デプロイを実行してくれるだけでなく、開発環境の構築も簡単に実現します。本番環境を開発環境で容易に再現できるので、開発環境では動いていたプログラムが本番環境では動かないといったトラブルを防いでくれます。ツールだけではDevOpsは実現しない
DevOpsを実現するためには最新のツール利用は欠かせません。ツール採用で自動化が実現できるので、トラブル減少が大いに期待できます。しかし、それでもやはりどこかでトラブルは発生します。
DevOps実現のためにツールは大切ですが、やはりそれ以上にメンタル要素がDevOpsのカギを握ります。ツールの使い方以上にメンタル要素を身に付ける事がどんなトラブルにも負けない開発チームの確立に繋がります。
DevOpsの実践企業は28.1%に増加
2018年12月、IDC Japanは、企業におけるDevOpsの実践状況に関する調査結果を発表しました。調査は2018年9月に行われ、2017年の調査結果と比較してDevOps実践率は増加しているという結果となっています。- IT組織全体、または一部組織で実践している 28.1%
- 実践する具体的な計画がある 16.7%
DevOpsの実践率が高い業種は、ソフトウェア・システム開発業、通信・サービスプロバイダー業、金融業などが主で、Fintechを含むIT技術の向上が今後も期待されます。
「ビジネス成果(売上、利益、顧客満足度の向上)がどの程度出ているか」という質問には、
- 期待以上に大きなビジネス成果が出ている 11.7%
- 期待通りのビジネス成果が出ている 29.7%
ただし、半数は超えていないことから、IDCでは「成果を出していくためにはツールや技術の活用だけではなく、人材、組織、文化、プロセスをDevOpsに適合させていくことが重要である」という見解を示しています。
引用:国内DevOpsに関するユーザー調査結果を発表
https://www.idc.com/getdoc.jsp?containerId=prJPJ44554618
PR:「EC-ORANGE」のパッケージ販売に加え、多くの構築ノウハウを生かした受託開発をおこないます。
>>お問合せはこちらから