DevSecOpsについてお話する前に、まずはその元となった言葉「DevOps」について見ていきましょう。

開発と運用の対立はなぜ起こる?

DevOpsとは、未だに定義に振れ幅がある言葉ですが、開発(Development)と運用(Operations)を組みあわせた言葉です。このように掛け合わせた言葉を「かばん言葉」などということがありますが、その一つです。

過去におけるソフトウェアの開発というものは、ウォーターフォール開発に代表されるように、上流工程、下流工程が明確に分けられていました。それぞれの工程に参画するメンバーや実施する時期というものが隔てられていました。

開発者は運用の実態を知ることなしに機能要件に基づいて設計や開発を行い下流工程に渡し、それを受け取った運用者は開発側の苦労を知ることなしに日々の運用を行う。

少し極端ですが、両者は文化的にまったく異なる組織であり、そのためある種の「対立」が生まれていたのです。

もう少し詳しく見ていきましょう。

開発部門の目的は何でしょうか?事業部門の要求に応じて「新しい機能をリリースしたい」というのが第一にあります。

しかし、運用部門の目的は異なります。「システムを安定稼働させたい」というの第一に来るのです。

システムの安定稼働を妨げる要因は何でしょうか。何といってもそれは新機能や既存機能のリリースです。ソフトウェアは何かしらの外的要因がなければきちんと動き続ける性質をもっています。

新たな機能のリリースというものは、その正常動作を妨げる外的要因の最たるものだからです。

運用側はリリースには心理的な抵抗感が伴います。ところが開発側はそれをおこなわなければ仕事にならない。この状態が長く続くと、次第にお互いの文化が根付き、対立感情が沸き上がってしまうのです。これは悪い事ではありますが、残念ながら常識となってしまっていました。

実は目的は同じ

さて、開発部門と運用部門の目的が異なると書きましたが、実際のところこれは大きな過ちです。

ひとつ目線を上げれば、両者の目的には「ビジネスを成功させる」という共通項が必ずあるはずです。

本来はこの目的に向かって協力しなければならない両者が対立していては、厳しいビジネスの世界で生き残っていくことは不可能です。

開発と運用、この両者が車の両輪のように協調してバランス良く動き、全体を最適化することが正しい姿であるとの考えが「DevOps」です。

具体的には開発の一連のプロセスの初期から(当然運用まで)運用部門に参加させること、これが重要です。

セキュリティを加える

さて、同様に開発プロセスの上流から参画するのが好ましいものがもう一要素あります。それがセキュリティ(Security)です。

脆弱性の検出は開発の前工程であればあるほど好ましいといえます。特に運用を開始した後ですと、サービス停止に関する調整も必要となり、そこにかかるコストは想像以上のものとなります。

開発者と運用者が、前工程で脆弱性を見つけ出し、修正コストを下げる。これが「DevSecOps」の基本的な考え方なのです。

ソフトウエア開発ライフサイクルに携わる全員がセキュリティに責任を負う、このように言い換えることもできるでしょう。