DevOpsはここから始めよう

はじめに

DevOpsはかなり浸透してきましたが、DevOpsを始めるチームやエンジニアのために現場で役立つ連載を開始します。本連載は、これからDevOpsを始めるチームのための入門編となります。第1回の今回は、DevOpsのライフサイクル、セキュリティのシフトレフト、CI/CDなど、これから最新のDevOpsをキャッチアップするために必要なことを解説します。

DevOpsを始めるには、理解すべきテクノロジーやプロセス、フェーズがあり、新しいマインドセットにも慣れていく必要があります。

DevOpsプロフェッショナルの需要は高く、給与は上昇を続けています。そのためDevOpsのスキルや経験は今後のキャリアにも有利です。DevOpsを目指すエンジニアも多く、何から学べば良いか模索している人も多いでしょう。

DevOpsを学ぶためのリストには多くの項目があります。まずはDevOpsとは何か。DevOpsのライフサイクルにはどのような段階があるか、独自のコラボレーションカルチャーなど、DevOpsの理解に必要なことを順に解説していきます。

DevOpsの本質、メリット、影響力は?

これまでのソフトウェア開発は、ツールやワークフローを組み合わせて使っていたため複雑で難解でした。またプロジェクトやチームは常にサイロ化しており、作業調整やベストプラクティスの共有が難しい環境でした。プロセスは非効率で本番環境に反映するまでの間に交通渋滞が発生し、時間や予算を浪費することになるといった課題が当たり前でした。

DevOpsはプロセス全体の効率性を維持しながら、開発とデプロイを簡素化するための方法と考えてください。DevOpsを進めていくと、サイロ化されていたチーム、ツール、ワークフローがソフトウェア開発エコシステムに統合されます。このエコシステムでチームはより効率的かつセキュリティ面で安全になり、協力して計画、開発、リリースできるようになります。

ほかにもDevOpsは自動化、セキュリティのシフトレフト、実践を繰り返し行えるだけではなく、測定できるようにすることにも重点を置いていることが特徴です。これにより開発サイクルを短縮し、新機能の設計から本番環境への運用開始までの時間も短縮できます。

こうした効率性とチームワークは、より早くソフトウェアデプロイを行えるだけではなく、会社全体のスピードアップにも寄与します。ビジネスを迅速に方向転換したり、新しく獲得した重要な顧客のニーズに応えたり、市場の変化に迅速に対応したり、競争力を高めるための調整を素早く実行できるようになるのです。

将来のキャリアに必要なのは
コミュニケーションとコラボレーションのスキル

チームの仲間がアイデアを共有し、コラボレーションして互いに助け合うこと。これはDevOpsが推奨していることです。こうした文化はただ「提案」するだけではなく、数回の会議の場で実践するだけで足りるものでもありません。コラボレーションを続けることはDevOpsの核となる原則です。

DevOpsを学ぼうとするとき「プログラミング言語、セキュリティ、CI/CDにフォーカスすれば良い」と考えるのはやや安直です。もちろんこれらのスキルやテクノロジーは重要ですが、DevOpsで重要なことは「協力して新しいものを生み出し、問題を解決すること」です。そのためDevOpsを極めていくと、セキュリティやマーケティング、経営幹部など他部門と協力し、企業全体で同じ方向へと進むことにも注力するようになります。

GitLabが実施した「2021 Global DevSecOps Survey」では、回答者の多くが将来のキャリアの鍵となるものとしてコミュニケーションとコラボレーションのスキルだと答えています。

DevOpsのライフサイクル

DevOpsには明確な流れが定められており、プロセスは「計画」「開発」「展開(デプロイ)」「監視」「フィードバック」に至るまでずっと続きます。開発者視点で特に重要になるのがビルド、テスト、デプロイの3つのステージ(フェーズ)です。

  • 計画(プラン):コード記述前に発生するすべてに焦点を当てる
  • 作成(コードとデプロイ):設計と開発に該当。アプリケーションと依存関係をパッケージ化してコンテナを管理し、アーティファクトを構築することで一貫したソフトウェアのサプライチェーンを維持する
  • 検証(テスト):コードの品質をチェックする
  • リリースとデプロイ:コードの更新を本番環境に移行すること。構成はアプリケーション環境の作成、管理、保守に重点を置く
  • 運用(オペレート):アプリケーションとその環境を運用・保護する
  • 監視(モニター):ソフトウェアとネットワークの状態を確認する

ソフトウェア開発ライフサイクル全体を通してアプリケーションの実行をエンドツーエンドで管理し、権限とプロセスを制御します。

セキュリティを「シフトレフト」する意味

先のDevOpsライフサイクルに「セキュリティ」のステージがなかったことに気づいたでしょうか。セキュリティは全てのステージに織り込まれるものなので、単一のステージにはなりえません。開発でシフトレフトとは、従来のようにビルドの最後までソフトウェアにセキュリティを組み込むのを待たないことを意味します。

計画の初期段階からセキュリティを検討し、最後まで重点的に取り組み続けることで問題を回避、または発見して対処する機会が増えます。シフトレフトは開発中のコードが意図した通りに機能し、脆弱性やコンプライアンスの問題が検出され、修正できるようになるのです。

CI/CDを理解しよう

CI/CDとは「継続的インテグレーション/継続的デリバリー」を意味します。継続的な開発の方法論とプラクティスを組み合わせることで、開発ライフサイクルの早い段階で脆弱性とエラーを検出し、本番環境にデプロイされる全てのコードが従うべき標準に確実に準拠するようにします。またCI/CDにより、ビルド、テスト、デプロイを自動化して開発チームと運用チームおよびプロジェクトを結びつけます。

そのため、CI/CDはコードの変更を頻繁かつ確実に実施できるようになります。組織が1日数回など頻繁にソフトウェアを自動配信できるため、DevOpsプラットフォームでは重要になる部分です。これは開発チームだけではなく企業のビジネスにとっても重要で、組織が顧客のニーズにより迅速に対応できるようになります。

Original Post>