DevOps とは何か?
「DevOps」という語は「Development (開発)」と「Operations (運用)」を組み合わせものですが、単純にそれぞれの語の持つ意味を組み合わせた以上の考えや方法を表します。DevOps には、セキュリティ、コラボレーションを重視する働き方、データ分析など、さまざまな事柄が関わります。しかし、具体的には何を意味するのでしょうか?
DevOps とは、アイデア (新しいソフトウェア機能、拡張リクエスト、バグ修正など) を開発から本番へと進め、実際にユーザーに価値提供できるようにするまでのプロセスを迅速化するためのアプローチを表します。これらのアプローチにおいては、開発チームと運用チームが頻繁にコミュニケーションを取ること、そしてチームメイト同士が共通の視点を持ちながら作業に取り組むことが必要になります。さらに、スケーラビリティと柔軟なプロビジョニング機能も必要です。DevOps では、セルフサービスと自動化を活用することで、メンバーがそれぞれ必要とする機能を得られます。開発者は、通常は標準開発環境でコーディングしますが、IT 運用スタッフと密接に連携することにより、信頼性を犠牲にすることなく、より短時間でソフトウェアを構築、テスト、リリースすることができます。
もちろん、そのためには、より頻繁にコードを変更し、より動的にインフラストラクチャを使うことになります。従来の管理戦略では、このような種類の要求に対応できません。この点を強化するには、いくつかの変更を加えることが必要になります。
コンテナが DevOps で果たす役割
コンテナを使用すると、アプリケーションを開発、テスト、プロダクション環境間で簡単に移動できます。また、開発者はコンテナを使用することで、アプリケーションとその実行に必要なすべてのもの (アプリケーション・ファイル、ランタイム環境、依存ライブラリと構成など) をパッケージ化し、分離できます。
DevOps はアイデアを開発からデプロイまで迅速に進めます。その中核として、DevOps は日常的な運用タスクを自動化し、アプリケーションのライフサイクルの環境を標準化します。コンテナは標準化した環境を提供できますが、この環境を管理するには、組み込みの自動化とあらゆるインフラストラクチャのサポートを備えたプラットフォームが必要です。Red Hat OpenShift は DevOps の取り組みをサポートするエンタープライズ対応 Kubernetes プラットフォームです。
DevOps 文化
DevOps は、オープンソースの原則と、透明でアジャイルなアプローチに合わせて連携するコラボレーションの文化に基づいています。DevOps とアジャイルの価値がどのように結びついているか、5 日間のマスタークラス DevOps Culture and Practice Enablement (DO500) で体験できます。
オープンソース・ソフトウェア・プロジェクトの文化は、DevOps 文化を構築するための青写真として見ることが可能です。オープンソース・コミュニティにおけるコラボレーションは基本的に、情報を自由に共有するというアプローチに基づいています。このアプローチは、意思決定における透明性の促進、失敗の恐れをなくすことによる実験の奨励、信頼性やコラボレーションを推進する報奨制度の導入といったかたちで企業文化の変化を導入する際の助けとなります。多くの組織は、この種の取り組みをサポートするためにデジタル・トランスフォーメーションのコンサルティングサービスの利用を検討します。
開発と運用のチームによるオープン文化の推進は、優れたリーダーシップとインセンティブ・プログラムによっても実現可能です。しかし、オープンな文化が組織全体に広く浸透したときにこそ、DevOps が真価を発揮します。DevOps は、名称こそ「開発」と「運用」を指していますが、あらゆる職種の人のためのアプローチです。
Red Hat の企業文化は、オープン性と透明性を基盤としています。そしてこの文化は、25 年以上にわたり優れた成果をもたらしてきました。お客様が「オープン」なアプローチを採用する際の支援においても、Red Hat には DevOps の導入サポートにおける実績があります。
シーズン 1、エピソード 4:DevOps_Tear Down That Wall
Saron Yitbarek、Scott Hanselman、Gordon Haff が DevOps の文化、プロセス、プラットフォーム、ツールについて語ります。「コマンドライン・ヒーローズ」ポッドキャストのこちらのクリップでご確認ください。
DevOps プロセス
先進的アプリケーションを開発するには、これまでのアプローチとは異なるプロセスが必要になります。多くのチームは、ソフトウェア開発にアジャイル・アプローチを導入しています。そうしたチームにとって、DevOps は目新しい考え方ではありません。実際、「アジャイルソフトウェア開発宣言」の 12 の原則の筆頭に掲げられているのは、 「顧客満足を最優先し、価値のあるソフトウェアを早く継続的に提供します」という原則です。そのため、DevOps チームにとっては、継続的インテグレーションと継続的デプロイメント (CI/CD) が重要になります。
ただし、開発と運用のプロセスを変化させるだけでは十分ではありません。ソフトウェアの提供方法を真に最適化するための体系的な思考を身につけることが必要です。つまり、DevOps では、開発作業を要求する部門と、エンドユーザーをサポートするグループにおいて変化が必要となります。その鍵となるのが、エンドユーザーからビジネスへの継続的なフィードバック・サイクルです。
プロセスの見直しにおいては、「どのように」作業をするかだけでなく、「どのような」作業をするかという観点からも変革を起こす必要があります。どのような作業をするかも変化していくのは避けられません。DevOps とは、単純に従来のモノリシックなソフトウェアの作成速度を向上することにとどまりません。むしろ、継続的デリバリーが伴うリリースサイクルのスピードに適した、新たな種類のソフトウェアを作ることに焦点が当たります。
そのため、DevOps チームは多くの場合、ソフトウェアを構築する際にマイクロサービス・アーキテクチャを使用し、APIを使用してサービス同士を接続します。そして、個々の機能をより小さな単位で構築することにより、より迅速な提供が可能となります。そのため、サービスと API の管理方法に重点を置くとともに、アジャイル・インテグレーションなど、包括的な統合戦略を適用する必要があります。
このような変革は多くの労力を必要としますが、適切なテクノロジーを利用すれば、すぐに変化を起こし始めることが可能です。自動化はプロセスの迅速化を助け、最終的には DevOps のワークロードをクラウドに移行するためにも役立ちます。自動化により、DevOps に伴う絶え間ないコード変更に耐えうるインフラストラクチャを実現でき、環境を簡単に継続的に拡張することができます。自動化は、反復作業や単純作業の負担を軽減することで、有能な人材が最も重要な作業に集中できる環境を作るのに役立ちます。
さらに最近の DevOps プロセスの進化は、 プラットフォームエンジニアリングの導入に見られます。共感とユーザージャーニーをより重視する、戦略としてのプラットフォームエンジニアリングは、アプリケーション提供の自動化やコラボレーションとコミュニケーションの強化、エラーの削減、セキュリティとコンプライアンスの強化、効率の向上に向けて、さらに最も重要な点として、開発者の強みを最も注力すべき分野に集中させる上でより良い方法を提供することで DevOps を強化します。
一般に、DevOps は IT サービス管理 (ITSM) の ITIL アプローチと衝突することが示されていますが、このバイナリーはストーリーの多くを見逃しています。
DevOps プラットフォームとツール
プロセスをサポートするツールを選択することは、DevOps 成功の鍵となります。運用チームが迅速な開発サイクルとペースを合わせるには、柔軟性が極めて高いプラットフォームを使用し、開発チームがコードを扱うような方法でインフラストラクチャを扱う必要があります。デプロイ作業を手動で行うと時間がかかり、ミスが発生する可能性もあります。
プラットフォームのプロビジョニングとデプロイは、自動化により単純化できます。サイト信頼性エンジニアリング (SRE) は、これらの手動操作タスクを実行し、ソフトウェアと自動化を使用して管理します。SRE アプローチによって、DevOps チームの目標をさらにサポートできます。
Red Hat OpenShift は、DevOps チーム、 プラットフォームエンジニア、、SRE に、CI/CD、セキュリティガードレール、ゼロトラスト・セキュリティ・アーキテクチャ、および組織のコンプライアンス要件を実現する機能と機能を提供します。OpenShift を Red Hat Developer Hub と組み合わせることで、エンジニアリングチームは、内部開発者向けプラットフォーム (IDP) を効果的に構築および管理し、「最良の道筋」を構築するのに必要なプロジェクトテンプレート、ドキュメント、ワークフローを作成するために不可欠なツールを得ることができます。
DevOps と Kubernetes
DevOps のアプローチは Linux® コンテナと連携し、クラウドネイティブ開発スタイルに必要な基盤テクノロジーをチームに提供します。コンテナは、開発、提供、統合、および自動化のための統一された環境を支援するツールを提供します。
また Kubernetes は、Linux コンテナ操作を自動化する先進的な方法です。Kubernetes によって、Linux コンテナをパブリッククラウド、プライベートクラウド、ハイブリッドクラウドで実行するクラスタを、簡単かつ効率的に管理できます。
Red Hat® Enterprise Linux や Red Hat OpenShift® など、コンテナの内外両方に関して信頼できるプラットフォームを選択することで、最も重要な局面において確実にスケーリングと自動化が機能するようにできます。適切なプラットフォームを導入することで、導入する DevOps 文化やプロセスの変化を最大限に活用できます。
DevOps で実現する、継続的デプロイによるスケーリング
DevOps 実装による主な成果は、継続的インテグレーションと継続的デプロイパイプライン (CI/CD) です。CI/CD によって、アプリケーションの顧客への提供頻度を増し、手作業を最小化しながらソフトウェア品質を検証できるようになります。
具体的には、CI/CD によって、統合およびテストのフェーズからデリバリー、デプロイメントに至る、アプリケーションのライフサイクル全体を通じて、継続的な自動化と継続的な監視が導入されます。これにより、問題や欠陥を迅速に発見して修正できます。これらの連結した作業習慣はまとめて「CI/CD パイプライン」と呼ばれ、アジャイルな方法で共同作業する開発チームと運用チームが実施します。
自動化には主に [Red Hat Enterprise Linux を] 使用しています。たとえば、これはアプリケーションのデプロイに役立ちます。今は、継続的デリバリーと継続的デプロイメントを行おうとしています。このアプローチのために、私たちはこの製品を使用しています。
ビジネス革新への備えはできていますか?
現在の市場における競争で成功するには、テクノロジーを導入する以上の取り組みが必要となります。組織の文化、プロセス、プラットフォームの成熟度を測定し、デジタル・トランスフォーメーションの実現に必要なステップを確認しましょう。
DevOps とセキュリティ
前述したとおり、DevOps は開発チームや運用チームだけのものではありません。企業において DevOps アプローチの効果を最大化するには、アプリケーションのライフサイクルにおいてセキュリティが果たす役割について検討する必要があります。つまり、プランニング・フェーズ以降の中核的なセキュリティについて考えなければなりません。また、DevOps ワークフローの速度が低下しないよう、一部のセキュリティ機能を自動化することも必要です。セキュリティ機能を統合するための適切なツールを選ぶことで、DevOps におけるセキュリティ目標の達成を支援できます。
とはいえ、DevOps 体制における効果的なセキュリティを実現するには、新しいツールを導入する以上の取り組みが必要となります。そのためには、DevOps がもたらす企業文化の変革をさらに発展させ、セキュリティチームの業務を極力早く統合化することです。DevOps では、開発と運用の間のギャップを埋めることによってプロセスを迅速化しますが、セキュリティに関するプランニングが不十分な場合、そのメリットを活かせません。
従来、セキュリティに関しては独立したチームが責任を負い、開発の最終段階でようやく適用されるものでした。しかし、コラボレーションを重視する DevOps のフレームワークにおいては、セキュリティは初期段階から組み込まれ、その責任も共有されます。