支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


1. DevOpsとは

「DevOps (デブオプス )」とは、開発方法やツールを使って開発者(Development)と運用者(Operations)が密接に連携することで、システムを開発・運用することでビジネスの価値を高めるための様々な取り組みを示す概念のことです。

■DevOpsの目的

DevOpsの目的は、開発者と運用者が密接に連携することで、より柔軟でスピーディーにプロダクトやサービスの提供を行うことです。DevOpsが産まれた背景として、IT業界の発展に伴いソフトウェアの開発期間の短縮、様々な変更などに対して柔軟な対応の必要性が増加したことがあります。
開発者側としては、「次々と開発を進めて新しいサービスを展開したい」
運用者側としては、「サービスの稼働を安定させて維持したい」
という対立が発生し、様々な問題も生じやすくなってきました。
そこで、DevOpsの考え方に基づいて、開発者側と運用者側に生じる問題を解消し、DevOpsを実現のため様々な取り組みを実施することで、ビジネスの価値を高めるという動きが出てきました。

2. DevOpsを導入するメリット

■信頼性

運用者は「システムを安定的に稼働させること」ということが目的です。安定して稼働しているシステムは変更を加えなくても問題なく動き続けるため、運用者はシステムに変更したがりません。
DevOps を導入することで、テスト、ビルド、デプロイなど今まで、人間が行っていた作業を自動化することできます。自動化することで「ヒューマンエラー」を防ぐことができます。
信頼性を高め、運用者もシステムの変更を承認することが容易にできるようなります。

■生産性

DevOps でないプロジェクトでは、本番の環境では動かない、他メンバーの修正を上書きして消してしまう。リリースが複雑で手順書が必要、ステータスの管理ができないなどの問題が発生してしまします。
DevOps を導入することで、今まで煩雑であった作業の生産性を「多種多様なツール」を利用することで飛躍的に向上させることができます。

■俊敏性

従来の開発モデルでは、設計やプログラミングをいった作業工程を一つずつ順番に終わらせてから、次の工程に進んでいく方式で進めていく「ウォーターフォールモデル」が主流です。
DevOps を導入することで、従来どうりの作業工程ではなく、よりスピーディーで、より柔軟な開発をすることができる「アジャイル開発」をすることができます。

3. DevOpsの考え方について

DevOpsを導入する上で、基本的な考え方がありますのでお伝えいたします。

・Respect

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

・Trust

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

・Healthy attitude about failure

失敗に対して相手を責めずに健全な態度とること。

・Avoiding Blame

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

DevOpsの実現するには、上記の考え方をしっかりとチームのメンバーひとりひとりが理解することが必要であり、仲間にことを思いやり作業することで「より柔軟で、よりスピーディー」なサービスの提供につながります。

4. DevOpsの工程

①PLAN (プラン)

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

②BILD (ビルド)

開発されたソースコードをもとに、実行可能なファイルの作成、配布パッケージの作成をする。

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

開発したソースコードを構成管理ファイルにコミットし、ビルドやテストを自動的に実行する ビルドやテストを実行することで、バグの早期発見、ソフトウェアの品質管理、ソフトウェアのリリースを時間短縮することができる。

④DEPLOY (デプロイ)

DEPLOY=「利用できるようにする」ということであり、ビルドによって実行可能なったファイルを動かせるようにします。

⑤OPRERATE (オペレーション)

サーバーと、アプリケーションのアクセス数や応答時間などの性能を監視する「モニタリング」とも言われます。

⑥CNOTINUOUS FEEDBACK (継続的フィードバック)

ユーザーに対してフィードバックを継続的受け取ることができるサポートデスクを用意します。システムへの要望や変更をすぐに把握することでき、開発に反映させることができます。

5. DevOpsを実現するためのツール

■バージョン・ソースコードの管理ツール

ソフトウェアの変更や機能追加などへの対応が増え複雑化することで利便性が向上しています。それに伴いバージョン・ソートコード管理を行う必要があります。

・Git
・Git Hub
・Git Lab
・Git Flow
・Git Hub Flow

■CI・CDツール

ソースコードのビルドやテストを自動で実施するツール

・Doker
・Vagrant
・Ansible
・Selenium
・Jenkins
・CircleCI

■テスト自動化ツール

単体テスト、結合テスト、アプリケーションのテストを自動化して、テスト品質向上、システムの有効活用が可能になり、ソフトウェア品質向上することができます。

・Selenium

■モニターツール

サーバー・アプリケーションの監視を自動で実施するツール

・Zabbix
・Nagios

6. まとめ

今回は、DevOpsについてまとめました。DevOpsを実現できれば、開発も運用も効率よく行うことができ、ユーザーにとって品質の高いサービスを提供することができます。
DevOpsを実現するためには、開発チームと運用チームが目的をはっきり理化しておくことが必要となり、とても重要です。DevOpsを実現するためにツールの仕組みを理解するともっと良いでしょう。