よく耳にするDevOpsとは?わかりやすく解説します

    • このページをはてなブックマークに追加

    公開日:2019年09月10日 最終更新日:2019年09月30日

    アジャイルのような開発手法が広まってきた近年、「DevOps」という言葉もよく知られるようになりました。
    DevOpsという言葉には厳密な定義は存在しないため、人によってとらえ方が異なっていり、漠然としたイメージを持つ人もいるかもしれません。

    本記事では、DevOpsの考え方や具体的な取り組み方などについて、わかりやすく解説します。

    目次

    1. DevOpsとは何のこと?


    DevOpsという言葉には明確な定義がないものの、下記のような意味合いで広く知られています。

    DevOps(デブオプス)とは、開発チーム(Development)と運用チーム(Operations)が協力しあってシステムを開発・運用することでビジネスの価値を高めるための様々な取り組みを示す概念です。

    では、そもそもDevOpsのような考え方は何のためにうまれたのでしょうか?

    ▲トップへ戻る

    1.1 DevOpsの目的

    DevOpsの目的は、環境によっても違ってはきますが、
    「開発者と運用者が協力しあってユーザーに迅速かつ継続的にプロダクトやサービスの提供を行う」ことです。

    そもそも、DevOpsがうまれた背景には、IT業界の発展に伴いソフトウェア開発期間の短縮、様々な変更などへの柔軟な対応の必要性などが増加したことがあります。
    それにより、次々と開発を進めて新サービスを展開したい開発側と、安定したサービス稼働を維持したい運用側が対立しがちになり、様々な問題も生じやすくなってきました。

    そこで、DevOpsの考え方に基づき、開発側と運用側の問題を解消し、DevOps実現のための様々な取り組みを実施することで、ビジネスの価値を高めようという動きが出てきました。

    DevOpsの考え方と、具体的な取り組みについては次項に述べます。

    ▲トップへ戻る

    2.DevOpsの考え方

    DevOpsは写真共有サービス「Flickr」のエンジニアが提唱した次のような考え方が基本にあります。


    【DevOpsの考え方】
    ◆ Respect
    お互いに相手を尊重すること。思いやりをもって接することで、スムーズなコミュニケーションにつながる

    ◆ Trust
    システムに関わる全てのメンバーを信頼すること

    ◆ Healthy attitude about failure
    失敗に対して相手を責めず健全な態度をとること

    ◆ Avoiding Blame
    相手を非難しないこと。ミスはどうしても起こりうることなのでそれを非難しないようにする


    DevOpsの実現のためにはこの考え方をしっかりとチームメンバー全員が理解し、ひとりひとりが意識を合わせて目標に向かって行動することが大切です。

    ▲トップへ戻る

    3. DevOpsの具体的な取り組み

    図はDevOpsを実現するプロセスの流れの一例です。

    具体的な取り組みとしては、短期間のサイクルで製品をリリースし、サービスを稼働させたままユーザーからのフィードバックを取り入れて、開発プランから実装、テスト、デプロイまでの一連の流れを自動化し、スピーディーに追加機能や改善を行います。

    各プロセスの実行に適した様々なツールを用いることで効率よく進めていくことが可能です。

    次項では各プロセスの内容についての簡単な説明と、DevOps実現のためによく用いられるツールについて解説します。

    ▲トップへ戻る

    3.1 DevOpsのプロセス

    3.1.1 プラン(PLAN)

    開発するアプリケーションについての要件や、インフラ周りやモニタリングなど、各プロセスの実行計画などを決めます。


    3.1.2 ビルド(BUILD)

    開発されたソースコードをもとに、実行可能なファイルの作成や配布パッケージを作成するプロセスです。
    このビルドに関する一連の工程を自動化で行うことが多いです。


    3.1.3 継続的インテグレーション(CONTINUOUS INTEGRATION)

    継続的インテグレーションとは、「日々開発したソースコードなどを構成管理ファイルにコミットし、ビルドやテストを自動的に実行すること」です。

    頻繁にビルドやテストを実行することで、バグの早期発見、ソフトウェアの品質向上、ソフトウェアリリースの時間短縮などが可能になります。
    継続的インテグレーションは、CONTINUOUS INTEGRATIONを略し「CI」とよく呼ばれます。

    また、ビルドやテストだけでなく、リリースのプロセス全体を自動化する、継続的デリバリー(CONTINUOUS DELIVERY)という手法もあります。


    3.1.4 デプロイ(DEPLOY)

    デプロイとは、簡単に言うと「使える状態にする」ということであり、ビルドによって実行可能になったファイルを動かせる状態にします。
    継続的インテグレーションを実施し、問題がなければビルドしたアプリケーションを本番環境に自動的にデプロイします。


    3.1.5 OPERATE(オペレーション)

    ここではサーバーと、アプリケーションのアクセス数や応答時間などのパフォーマンスを監視する「モニター」とも呼ばれるプロセスです。
    監視データの蓄積による負荷を増やしすぎないことを考慮しつつ、監視する対象を決めます。
    導入初期は、ある度項目を絞り、必要最低限にしておきます。

    【監視する主な項目】
    ◆ サーバーのCPU使用率、メモリ使用率、プロセス数、エラー数
    ◆ アプリケーションのプロセスの確認、アクセス数、応答時間


    3.1.6 継続的フィードバック(CONTINUOUS FEEDBACK)

    ユーザー向けにカスタマイズ可能なサービスデスクを構成することなどにより、ユーザーからのフィードバックを継続的に受け取れるようにします。
    これにより、システムへの要望や変更をすぐ把握し、開発プロセスに反映させることができます。

    ▲トップへ戻る

    3.2 DevOps実現のために用いられるツール

    DevOpsを効率よく実現するために多くのツールが使われています。
    各ツールには様々な特徴があり、開発するソフトウェアによって使用するツール、また、複数ツールの組み合わせなどを検討し見極める必要があります。

    ▲トップへ戻る

    3.2.1 仮想化ツール

    Docker

    アプリケーションの実行環境の仮想化や、実行環境を自動的に構成を行います。
    軽量で使い捨ての開発環境が準備できるためいつでも都度作り直してサーバーの再構築が可能です。
    また、本番環境と同じものを開発環境に再現できるため、開発環境でテストや動作確認を行い、そのまま本番環境へ反映することもできます。

    ▲トップへ戻る

    3.2.2 構成管理ツール

    Ansible
    Chef

    サーバーやインフラ周りの構成を管理・制御します。
    構築・テスト・運用などのオペレーションを自動化することで効率化が図れ、作業時間が短縮されます。

    ▲トップへ戻る

    3.2.3 CI/CDツール

    Jenkins
    CircleCI

    ソースコードのビルドやテストを自動で実行します。

    ▲トップへ戻る

    3.2.4 モニターツール

    Zabbix
    Nagios

    サーバーやアプリケーションの監視を自動で行います。

    ▲トップへ戻る

    3.2.5 コミュニケーションツール

    Slack

    開発チームと運用チームの円滑なコミュニケーションを実現するために、チャットツールを利用してオープンな状況でのやり取りを行います。

    ▲トップへ戻る

    3.2.6 テスト自動化ツール

    Selenium

    単体テスト、結合テスト、アプリケーションテストなどの自動化により、テストの品質向上や人的・システムリソースの有効活用が可能となり、ソフトウェアの品質向上につながります。

    ▲トップへ戻る

    3.2.7 ソースコード/バージョン管理ツール

    GitHub
    git

    ソフトウェアの利便性の向上に伴い、頻繁な変更や追加機能などへの対応が増え複雑化する中で、ソースコードやバージョン管理は欠かせません。

    ▲トップへ戻る

    4. まとめ

    DevOpsはうまく実現できれば、開発も運用も効率よく行え、ユーザーにより良いサービスを迅速に提供できるメリットあります。

    開発チームと運用チームの垣根を越えて、双方が効率よく業務に取り組むためには、組織全体で全員が同じ目標に向かって、「何のためのDevOpsなのか?」その目的をはっきりと理解しておくことが大切です。
    その心構えを軸として、DevOpsを実際の開発と運用に取り入れられるレベルに持っていくために、最初は少しずつDevOpsの仕組みを理解しながら、導入するツールの知識なども身に着けていくとよいでしょう。

    ▲トップへ戻る

    最新案件情報をチェック!

    月額単価70万円〜90万円
    勤務地 東京都 渋谷区
    月額単価60万円〜100万円
    勤務地 東京都 千代田区
    • このページをはてなブックマークに追加

    おすすめ記事

  • ピックアップ

    正社員

    【PHP/Python】Web開発エンジニア|オンラインゲームの開発とサーバー運用★残業少

    年収 :300万円〜600万円

    ◆業務系システムの受託開発(一部現場常駐による開発) ◆PCやスマートフォン向けのオンラインゲーム開...

    株式会社シンクロジック

    フリーランス

    【Node.js】バックエンドエンジニア★アドテクノロジー関連企業向け新規開発

    月額単価 :70万円〜90万円

    今後日本でもトレンドになると言われている「Header Bidding」をはじめ アドテクノロジー関連の自社サ...

    フリーランス

    【Python】サーバーサイドエンジニア★EnergyTech向け自社クラウドプラットフォーム開発

    月額単価 :60万円〜100万円

    電力系をメインに自社サービスを展開している企業で 要件定義~テストまでの工程をご担当していただき...

    正社員

    【プロジェクトマネージャー】1億4千万ユーザーのアプリ開発/O2Oソリューション

    スマートフォンアプリ向けの自社プロダクトFANSHIPを用いた大規模案件の プロジェクトマネジメント業務...

    株式会社アイリッジ