DevOpsとは?
従来のソフトウェア開発モデルでは、開発者は新機能や製品、バグ修正などのために大量のコードを書き、通常は自動化された発券システムを介して、デプロイメントのために運用チームに作業を渡します。運用チームはこのリクエストをキューで受け取り、コードをテストして本番稼動に備えます。この従来のモデルでは、デプロイメント中にオペレーションに問題が発生した場合、チームはチケットをデベロッパーに送り返し、何を修正すべきかを伝えます。最終的に、このやり取りが解決された後、 ワークロードは 本番環境に投入されます。
このモデルは、ソフトウェアのデリバリーを長くて断片的なプロセスにします。開発者はしばしば、運用をプロジェクトのスケジュールを遅らせる障害と見なし、運用チームは開発問題の捨て場のように感じています。
DevOpsは、ソフトウェアデリバリプロセス全体を通じて開発チームと運用チームを一体化することでこれらの問題を解決し、問題の早期発見と修正、テストとデプロイメントの自動化、市場投入までの時間の短縮を可能にします。
DevOpsとは何かをよりよく理解するために、まずDevOpsとは何かを理解しましょう。
DevOpsは違います。
- 開発チームと運用チームの組み合わせ:2つのチームがあることに変わりはありません。
- 独立したチーム:"DevOpsエンジニア "というものは存在しません。DevOps文化への移行を試みる際に、パイロットとしてDevOpsチームを任命する企業もあるかもしれませんが、DevOpsとは、開発者、テスター、運用担当者がソフトウェアデリバリライフサイクル全体を通じて協力する文化を指します。
- 道具または道具一式:DevOpsモデルと相性の良いツールや、DevOps文化の促進に役立つツールはありますが、DevOpsは最終的には戦略であり、ツールではありません。
- オートメーション:DevOps文化にとって非常に重要ですが、自動化だけではDevOpsを定義することはできません。
DevOpsの定義
DevOpsモデルでは、開発者が膨大な機能セットをコーディングしてからやみくもにデプロイメントのために運用部門に渡すのではなく、開発者は継続的なテストのために少量のコードを頻繁に提供します。発券システムを通じて問題や要望を伝える代わりに、開発チームと運用チームが定期的にミーティングを行い、分析を共有し、プロジェクトをエンドツーエンドで共同所有します。
CI/CDパイプライン
DevOpsは継続的インテグレーションと継続的デリバリー(または継続的デプロイメント)のサイクルであり、 CI/CDパイプラインとして知られています。CI/CDパイプラインは、開発チームと運用チームを統合し、インフラストラクチャとワークフローを自動化し、アプリケーションのパフォーマンスを継続的に測定することで、生産性を向上させます。こんな感じです:

- 継続的インテグレーションでは 、開発者は自動テストのために1日に数回リポジトリにコードを統合する必要があります。各チェックインは自動ビルドによって検証されるため、チームは問題を早期に発見することができます。
- 継続的デプロイメントと混同しないように、継続的デリバリーはCIパイプラインが自動化されていることを意味しますが、コードは本番環境に実装される前に手動で技術的なチェックを受けなければなりません。
- 継続的デプロイは 、継続的デリバリーをさらに一歩進めます。手作業によるチェックの代わりに、コードは自動テストに合格し、自動的にデプロイされるため、顧客は新機能にすぐにアクセスできます。
DevOpsとセキュリティ
DevOpsにおける問題の1つは、セキュリティがしばしば抜け落ちることです。開発者は素早く動き、ワークフローは自動化されています。セキュリティは別のチームであり、開発者はセキュリティチェックやリクエストのためにペースを落としたくありません。その結果、多くの開発者が適切なセキュリティ・チャネルを通さずにデプロイイメントを行い、必然的に有害なセキュリティ・ミスを犯すことになります。
これを解決するために、組織は DevSecOpsを採用しています。DevSecOpsは、DevOpsの背後にあるコンセプト(開発者とITチームは、ソフトウェアのデリバリー全体を通して、別々にではなく、緊密に協力し合うべきであるという考え方)を、セキュリティを含むように拡張し、自動化されたチェックを完全なCI/CDパイプラインに統合します。これにより、セキュリティが外部からの力のように見えるという問題が解消され、開発者はデータのセキュリティを損なうことなくスピードを維持することができます。