DevOps


DevOpsとはソフトウェア開発手法の一種で、開発(Development)と運用(Operations)を組み合わせた言葉です。

これまで組織的に分かれていた、開発チームと運用チームを1つのチームとして統合を行うことでソフトウェアのリリースサイクルを短くすることを目的としています。
また、品質保証チームもチーム内に統合することも多くあります。
リリースサイクルを短くする理由は、市場からのフィードバックを早くもらい、素早くソフトウェアへ反映して市場へ届けるということにあります。今日の世の中の変化についていくにはこれまでのソフトウェア開発手法では遅すぎて、場合によっては競争力を失う原因にもなります。

DevOpsにはチームの統合という文化的な側面とリリースの自動化という技術的な側面があり、実現のためにはどちらも必須です。

DevOpsの文化

DevOpsを実現するためには、開発チームと運用チームの間の障壁を取り除く必要があります。企業によっては開発チームが全てを行う場合もあります。
組織の構成にも関わる改善が必要なため、トップダウンで取り組まれることも多くなっています。

これまで開発チームと運用チームはどちらも目的は顧客に良いサービスを届けたいという共通のものがあったはずなのに、方向性が異なっていました。開発チームはより早いリリースや新しい機能など変化を求めていたのですが、一方運用チームは安定稼動のために、変わらない安定した機能を求めがちでした。DevOpsではひとつのチームとして活動することで、コミュニケーションを頻繁にとり、全員が目的を共有することで、より良いサービスを素早く顧客へ届けることができます。

また、考え方としてもリーンスタートアップの考え方を基本としており、最低限の機能でもできるだけ素早くリリースし、市場からのフィードバックを得ながら製品に素早く反映していくことでサービスの価値を向上させます。

DevOpsの技術

DevOpsの実現には技術的なアプローチも必要になります。開発チームと運用チームをスムーズに統合し、素早くソフトウェアのリリースを実現するためには、開発からリリースまでのプロセスを一貫して自動化することが必要です。そもそも、DevOpsが実現できるようになった背景には、リリースまでの様々なフェーズが自動化できるようになったことがあります。ソフトウェアの開発フェーズのみではなく、Infrastructure as a Codeの考え方からインフラ環境もコードとして扱うことができるようになったことで、システムテストやデプロイなどの作業も自動化することができるようになりました。
自動化の考え方としては、継続的インテグレーション(CI)継続的デリバリー(CD)などがあります。

DevOps の手法

DevOpsは色々な手法でリリースプロセスを自動化しますが、これらの手法の多くは適切なツールで実行されます。
全体を自動化するためには、各プロセスで利用されるツールを適切なタイミングで実行し、エラーが発生したら直ちにフィードバックのある仕組みが必要になります。JenkinsはそのためのツールとしてシェアNo.1を誇るCI/CDツールです。