従来のソフトウェア開発モデルでは、開発者は新機能や製品、バグ修正などのために大量のコードを書き、通常は自動化された発券システムを介して、デプロイメントのために運用チームに作業を渡します。運用チームはこのリクエストをキューで受け取り、コードをテストして本番稼動に備えます。この従来のモデルでは、デプロイメント中にオペレーションに問題が発生した場合、チームはチケットをデベロッパーに送り返し、何を修正すべきかを伝えます。最終的に、このやり取りが解決された後、 ワークロードは 本番環境に投入されます。
このモデルは、ソフトウェアのデリバリーを長くて断片的なプロセスにします。開発者はしばしば、運用をプロジェクトのスケジュールを遅らせる障害と見なし、運用チームは開発問題の捨て場のように感じています。
DevOpsは、ソフトウェアデリバリプロセス全体を通じて開発チームと運用チームを一体化することでこれらの問題を解決し、問題の早期発見と修正、テストとデプロイメントの自動化、市場投入までの時間の短縮を可能にします。
DevOpsとは何かをよりよく理解するために、まずDevOpsとは何かを理解しましょう。
DevOpsモデルでは、開発者が膨大な機能セットをコーディングしてからやみくもにデプロイメントのために運用部門に渡すのではなく、開発者は継続的なテストのために少量のコードを頻繁に提供します。発券システムを通じて問題や要望を伝える代わりに、開発チームと運用チームが定期的にミーティングを行い、分析を共有し、プロジェクトをエンドツーエンドで共同所有します。
DevOpsは継続的インテグレーションと継続的デリバリー(または継続的デプロイメント)のサイクルであり、 CI/CDパイプラインとして知られています。CI/CDパイプラインは、開発チームと運用チームを統合し、インフラストラクチャとワークフローを自動化し、アプリケーションのパフォーマンスを継続的に測定することで、生産性を向上させます。こんな感じです:
DevOpsにおける問題の1つは、セキュリティがしばしば抜け落ちることです。開発者は素早く動き、ワークフローは自動化されています。セキュリティは別のチームであり、開発者はセキュリティチェックやリクエストのためにペースを落としたくありません。その結果、多くの開発者が適切なセキュリティ・チャネルを通さずにデプロイイメントを行い、必然的に有害なセキュリティ・ミスを犯すことになります。
これを解決するために、組織は DevSecOpsを採用しています。DevSecOpsは、DevOpsの背後にあるコンセプト(開発者とITチームは、ソフトウェアのデリバリー全体を通して、別々にではなく、緊密に協力し合うべきであるという考え方)を、セキュリティを含むように拡張し、自動化されたチェックを完全なCI/CDパイプラインに統合します。これにより、セキュリティが外部からの力のように見えるという問題が解消され、開発者はデータのセキュリティを損なうことなくスピードを維持することができます。