いまさら聞けない「DevOps」の役割は「SRE」と何が違うのか?:SREとDevOpsの違い【後編】
アプリケーションを迅速に開発しつつ、セキュリティを確保して安定的に運用するには、DevOpsのアプローチが欠かせない。DevOpsチームはこの課題にどう向き合うべきなのか。SREチームとの協働のポイントとは。
近年、アプリケーション運用開発の現場では、SRE(サイト信頼性エンジニアリング)とDevOps(開発と運用の融合)という2つの手法が台頭してきている。SREはデータや数値目標に基づいて、アプリケーションの安定性と信頼性を高めることを目指す。DevOpsは開発(Development)と運用(Operations)の垣根を取り払い、迅速なアプリケーション提供を実現する手法だ。
一見すると似たような役割を持つ両者だが、その目的や手法、必要なスキルは大きく異なる。本稿はそのうちDevOpsを取り上げるとともに、両チームの効果的な協働の在り方について詳しく解説する。
DevOpsとは?
併せて読みたいお薦め記事
連載:SREとDevOpsの違い
さまざまなアプリケーション運用開発手法
DevOpsチームの役割
DevOpsチームはCI/CD(継続的インテグレーション/継続的デリバリー)におけるパイプライン(連結した一連の作業)の実装や、クラウドサービスを含む開発インフラの管理を担当する。
アプリケーション提供の速度と効率を向上させるため、ビルド(実行可能ファイルの生成)、テスト、デプロイ(展開)のプロセスを自動化することがDevOpsの役割だ。これは一度限りの作業ではなく、DevOpsチームは継続的に取り組む必要がある。SREチームなど他の技術担当者との情報共有も必要だ。
開発システムの可用性と拡張性の確保もDevOpsチームの業務対象になる。開発環境とテスト環境における技術面とセキュリティ面の問題を監視し、トラブルシューティングを実施する。DevOpsもSRE同様に注目の分野であるため、DevOpsチームはDevOpsにセキュリティを取り入れた「DevSecOps」への変革などの業界動向にアンテナを張り自社のDevOpsの取り組みを改善できる新しいツールを定期的に評価することが欠かせない。
DevOpsチームの主要業務
開発と運用の橋渡しとなり、アプリケーションの迅速なデプロイ、継続的な改善、サービスの継続的な提供を可能にすることが、DevOpsチームの使命だ。DevOpsチームは反復作業を自動化して人的ミスを減らし、ソフトウェアの開発、提供、運用の全体的な効率を向上させる。自動化によってアプリケーションの提供速度が向上し、市場投入までの時間を短縮可能だ。
アプリケーションのテストをすることもDevOpsチームの担当になる。DevOpsチームは、アプリケーションを提供する前に、テストする責任を負う。
監視とログ記録もDevOpsチームの責務だ。DevOpsチームはシステムを継続的に監視して異常や潜在的な問題を検出しなければならない。クラウドサービスへの移行が進むにつれ、データ処理とログ記録において、AI(人工知能)技術が重要な役割を果たす可能性がある。
DevOpsチームが解決すべき問題
DevOpsチームは、パイプライン全体で発生し得るさまざまな問題を解消する。パイプラインの可視性不足は、DevOpsチームが解決すべき問題の一つだ。観測可能性ツールを使用して、アプリケーションの現状に関するデータを収集、分析する。
現在のアプリケーション開発現場は、上流から下流の工程に順番に開発を進める「ウオーターフォール」型開発からの転換に直面している。これはDevOpsチームも同様だ。DevOpsチームは、自社を従来のウオーターフォール型開発から俊敏性のある開発手法へと移行させる責任を持つ。この切り替えによって、アプリケーション提供の速度、品質、セキュリティの向上が期待できる。
DevOpsチームが解決する問題は技術面だけにとどまらない。社内の開発者やステークホルダー間の協力不足といった、企業文化の課題にも取り組む必要がある。
DevOpsのためのツール
現代のDevOpsツール市場は変化している。企業は「GitLab」「GitHub」「jFrog」などの開発から運用までをカバーする包括的なDevOpsツールを採用するのか、個々のツールを組み合わせて独自の開発運用環境を構築するのかの選択を迫られている。
以下は、企業が導入を検討すべきオープンソースDevOpsツールの例だ。
- Jenkins
- CI/CDツール。
- 開発に関するさまざまな作業を自動化することで、開発を加速し、バグを早期に検出できるようにする。
- Kubernetes
- コンテナオーケストレーションツール。
- SREツールとして浸透する以前から、DevOpsツールとして広く活躍してきた。
- Docker
- コンテナ管理ツール。
- コンテナ化によるアプリケーションの作成、デプロイ、実行に活用できる。
SREチームとDevOpsチームの協業ポイント
安全で高品質なアプリケーションを提供するため、SREチームとDevOpsチームは幾つかの重要な場面で協力する必要がある。
企業が新機能や新サービスを公開する際、SREチームはDevOpsチームと協力して新サービスの拡張性と信頼性を確保する。これは SRE担当者(サイト信頼性エンジニア)が実施するSLAとパフォーマンスチューニングに直結している。
SREチームとDevOpsチームは担当領域を監視し、インシデントが発生した際には協力して対処する。インシデントの事後検証と根本原因分析でも協力し、再発防止に努めよう。
進化し続けるサイバー脅威に直面し、限られた設備と人員でより多くの成果を求められる中、開発ライフサイクル全体におけるセキュリティがますます重要になっている。SREチームとDevOpsチームは、ツールチェーンの自動化とセキュリティ確保によって、企業が顧客に新機能とバグ修正を継続的かつ安全に提供できるようにする。
構成管理とキャパシティープランニング(最適なスペックの見積もり)も、SREチームとDevOpsチームの協力が必要な分野だ。それぞれが担当するシステム間でアプリケーションの設定に問題が発生すると、両グループに影響が及ぶ恐れがある。ニーズに応えるアプリケーションを予算内で拡張するには、両グループの専門知識とデータが不可欠だ。
SREチームとDevOpsチームはIT部門外の技術プロジェクトについての情報共有でも協力することが重要だ。共通のプロジェクト管理報告ツールとコラボレーションツールを使用することで、企業のIT環境におけるプロジェクトの状況やインシデントの情報を経営層に提供できる。
TechTarget発 エンジニア虎の巻
米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。
Copyright © ITmedia, Inc. All Rights Reserved.