ソフトウェアを安全に素早くリリースするための抑えておくべきポイントを勉強したので、まとめてみました。
①確固とした協力体制を築く
DevOpsでは開発と運用を結びつけることで他と割り体制を解消する。
チーム全体がリリースするソフトウェアに全面的な責任を負う。
メンバーは一丸となってデベロッパーの生産性と運用の信頼性の最適化に努めなければならない。
プロセスの継続的な喜善を通じてビジネス目標の実現に繋げていく必要がある。
②可能な限り自動化する
DevOpsでは反復可能なタスクは自動化されるため、イノベーションに専念できる。
オートメーションは開発、テスト、デプロイの迅速化のための手段となる。
オートメーションは、コードの統合、レビュー、テスト、セキュリティ、デプロイなどあらゆるフェーズに存在する。
[IaC]はその一例で、事前定義または承認された環境で使用され、反復可能かつ一貫性のある環境が構築される。
③お客様のニーズに焦点を当てる
顧客最優先という考え方は開発を促進する上で重要な鍵となる。
DevOpsチームはフィードバックループを用いて顧客と常に連絡し合い、そのニーズに見合う開発をする。
マイクロサービスアーキテクチャでは素早く軌道修正し、顧客のニーズに合わせた開発を迅速に行える。
プロセス合理化とオートメーションにより、顧客の優先事項に開発作業を合わせに行く。
④小規模に開発して頻繁にリリースする
アプリケーションアーキテクチャは小型化し、緩やかに連携するコンポーネントとして設計する。
開発作業を統括する包括的なポリシーを設け、必要なアーキテクチャに合わせてチームを編成する。
小規模で頻繁なコードのリリースなどの先端的な開発手法を採用することで俊敏性を獲得することができる。
⑤各フェーズにセキュリティを組み込む
継続的デリバリーをサポートするには、セキリュティについて、アプリケーションのライフサイクルの各フェーズで増加した分だけ自動的に強化し反復的に対応する必要がある。
開発チームと運用チームにはライフサイクルの各ステップにセキュリティを組み込むための教育を提供する。
修復コストが嵩んでしまう前に、潜在的な脆弱性を特定して解消することができるようにする。
⑥継続的な実験と学習
DevOpsでは問い合わせ、イノベーション、学習、個人指導が推奨され、プロセスに組み込まれる。
チームはイノベーションに取り組み、進捗状況をモニタリングする。
リーダーは失敗を受け入れ、チームは失敗を学習機会ととらえるように励ましていく。
環境づくりにDevOpsツールを使用することもしばしばある。
⑦継続的な改善
チームが共通の目標達成と継続的改善に取り組むために、厳選されたメトリクスを貼っておく、
開発パフォーマンスの向上や安定性の強化等に継続的に取り組んでいく。
適切なモニタリングツールを使用することで、アプリケーションの通常動作の指標を設定する。
リリース/デプロイに関する技術の発展は目まぐるしいため、
上記原則を意識した開発組織・開発チームの組成を目指したい。