開発から運用まで、IT部門のお役に立つ情報をお届けするサイトです

運用管理は変わらない変えるのは”やりかた”だ次世代型ITサービスマネジメント変革ソリューション『縁(ENISHI)』
  • 全般

運用部隊にどのような影響が?「コンテナ」のメリットと3つの対策

  • #CI/CD
  • #システム監視
  • #運用管理

2023.04.10

運用部隊にどのような影響が?「コンテナ」のメリットと3つの対策

※本記事は、2017.12.06に公開したものです。

2016年10月、コンテナ型仮想化に対応したWindows Server 2016が発表されました。

近年、CI(Continuous Integration)環境の構築を目的として注目を集めるコンテナですが、ついにWindowsが対応したことでエンタープライズ環境での利用の加速が見込まれます。

そこで本コラムでは、コンテナの導入によって得られるメリットや、日頃の運用業務に生じる変更点や注意点について考察します。

コンテナ技術やDockerが注目される背景

Windows Server 2016で搭載された「Windowsコンテナ機能」の話題性から、各企業では「Docker」や「コンテナ技術」への注目が高まっています。現在は主に開発環境向けの用途として着目されるコンテナ技術ですが、そもそも従来の仮想化技術とは何が違うのでしょうか?主な違いは、以下の3つです。

◎「個別にインフラリソースやOSを持つマシン」ではなく、仮想的に構築された「特定アプリケーションの実行環境」である

◎ホストのカーネルを直接利用するため処理のオーバーヘッドが少なく、起動時間が高速。さらに、特定アプリケーションの実行に特化しており、不要なリソースを占有することなく稼働が安定している

◎環境構築に必要な情報をコードとして管理できるため、同一環境を簡単に構築できる

つまり、コンテナのメリットは、「アプリケーションが安定して稼働する環境を、高速かつ簡単に構築できる」という点です。この技術を利用することにより、開発部隊では生産性の向上や環境管理の負荷軽減が期待できます。具体的には、以下の場面でその利点が生かされると考えられます。

  • 環境構築に要する時間の大幅な削減
  • 複数モジュールの開発やテストを並行して進められる(同一の環境を簡単に構築できるため)
  • 大勢の人間に手を加えられ、混沌となりやすかった開発・検証用環境の管理負荷の軽減(環境情報を静的なコードとして保管できるため)

リリースサイクルの高速化に関わる「DevOps」や、並行開発の促進に関わる「マイクロサービス」など、システム開発のトレンドと相性が良いこともあり、コンテナ技術は更なる利用の拡大が予想されます。

コンテナ運用時に必要な備え

昨今、コンテナの構築・管理は、開発部隊やR&Dチームが担うケースが多いようです。しかしコンテナの利用が拡大するにつれて、管理プロセスの整備が求められ、運用部隊に主管が渡ることは想像に難くありません。

これまでの「ハイパーバイザー型の仮想化」と比較して、特定のアプリケーション実行環境を高速に構築するコンテナ技術。コンテナの利用は、運用部隊にとっても以下のようなメリットをもたらします。

  • 環境構築作業の工数削減、作業負荷の軽減
  • 本番運用における、環境要因によるトラブルの減少(本番環境と開発環境を同一の状態で構築できるため)
  • 障害時における代替環境への切替え時間の短縮、および作業負荷の軽減

従来と比較して、業務効率の飛躍的な伸びが期待されますが、新しい技術ゆえに運用方法が確立していない部分も多いです。そのため運用担当者は、コンテナ技術の仕組みやメリットを知るだけではなく、従来型システム運用との関係性を理解しながら、運用を最適化するという「備え」が必要です。

そこで本コラムでは、具体的な3つの対策をご紹介します。

コンテナ運用に欠かせない3つの対策

コンテナを含めたシステムが導入されることで、システム運用には以下の3つの観点での変革が訪れます。

次世代システムを支える運用部隊として、「多様なシステムの安定稼働を支える統合監視」、「運用担当者の負荷を軽減するオペレーションの自動化」、「開発から運用フェーズにおける品質維持・向上」という3つの観点で対策を行うのが良いでしょう。

1.多様なシステムの安定稼働を支える「統合管理」とは

コンテナ技術の普及に伴い、日々のシステム監視のあり方も見直す必要が出てきます。当然ながら、「コンテナ」を新たな監視のターゲットとして考慮する必要があるためです。

コンテナの監視においては、まず初めに2つの観点を考慮する必要があります。1つは、コンテナ自体の死活監視やリソース監視。もう1つは、コンテナ上で稼働しているアプリケーションやミドルウェアのログ監視です。

前者については、コンテナの運用管理に特化したコンテナ・オーケストレーター(Dockerであれば、Docker SwarmやKubernetes等)を利用して行うのがやはり効果的でしょう。これらのツールはモニタリングのみならず、例えばコンテナ異常発生時の自動復旧や処理の負荷分散等、より拡張的な機能をあわせて保有しているためです。

一方、後者についてはコンテナ・オーケストレーターではまかないきれない部分も多く、従来のシステム同様に適切なログ監視の仕組みに組み込むことが必要です。例えば、コンテナ上のログメッセージをコンテナホストのファイルシステムに出力し、その出力されたファイルを監視対象にする等の方法が考えられます。

いずれの観点にも共通して重要なのが、「統合監視」の考え方です。死活監視はコンテナ・オーケストレーターで、ログ監視は従来の監視ツールで……、と監視スコープでツールを切り分けた運用は、あまり現実的ではありません。実際には、コンテナ・オーケストレーターで検知したアラートを、統合的な監視ツールに連携し、管理するあり方がベストプラクティスとして考えられます。 ※1

またもう1つ違った観点としては、コンテナの用途に応じたモニタリングレベルの検討も重要です。コンテナの用途は開発・本番・DRと多岐に渡りますが、それらを全て同一のメトリクスでモニタリングするのは効率的ではありません。環境によってイベントの重要度が変化するのは勿論、例えば本番環境だけはアプリケーションパフォーマンス管理(APM)の観点でもモニタリングする等、利用するツール自体が異なる可能性もあります。 ※2

「どの用途のコンテナをどのレベルでモニタリングするか」、そして、「それらの情報をどのように統合管理するか」、という点がコンテナ時代の監視のポイントになるでしょう。
※1.統合的な監視ツールの例: JP1統合管理製品Zabbix
※2.APMツールの例: JENNIFER

2.運用担当者の負荷を軽減する「オペレーションの自動化」とは

コンテナに限った話ではありませんが、新しい技術の導入時には、仕様や操作コマンドを覚えたりと、運用担当者に想像以上の負荷がかかります。

もちろん、コンテナの運用性を向上させる管理ツール(先述のコンテナ・オーケストレーター)も多く存在しますが、操作方法を覚えなければならない、という点は変わりません。近年では、プロビジョニング1つにおいても、「物理サーバ」、「ハイパーバイザー型仮想環境」、「クラウドサービス」、「コンテナ」と構築方法の選択肢は多く、運用部隊は必然的に数多くの技術や管理ツールの操作方法を理解しなければなりません。とはいえ、それらを横断的に理解している技術者は少なく、スキルレベルの高い技術者に長時間の労働を課す「高コストな運用体制」になってしまいがちです。

そこで、運用作業全般を、RBA(Run Book Automation)ツール ※3 によって自動化することで、総合的な運用コストを削減します。
コンテナ技術やクラウドサービス等の台頭で扱うツールが多様化する中、「各インターフェースを統合したい」という運用現場のニーズもまた年々高まっています。RBAツールでそれらの操作を自動化することにより、現場の負担を抑えるだけでなく、ヒューマンエラーによるトラブルを未然防止できます。
これを機に、統合的なオペレーション自動化ツールの導入を検討されてみてはいかがでしょうか。
※3.システム運用作業を自動化するRBA(Run Book Automation)ツール: Operations Orchestration

また、コンテナ技術の導入は業務処理のインターフェースや連携方式にもさらなる変化をもたらします。コンテナの起動・停止や追加・削除等の管理をするためのWeb APIが浸透することにより、周辺の既存システムやクラウド等のWebサービスと連携した疎結合な業務処理がさらに増えていくことでしょう。運用側はマイクロサービス化された複雑なハイブリッドな環境においても、先述のテストツール ※1 の活用は従来のサービス品質を保つ上で有効です。また、基幹系の業務処理も従来のスクリプトベースのものからWebAPIを介した多様な処理を管理することが求められます。ジョブ管理ツール ※4 等の機能を活用することで、多様な処理の一元的な管理を推進していくこともお薦めします。
※4.バッチジョブを一元管理するツール: JP1ジョブ管理

3.開発から運用フェーズにおける「品質維持・向上」とは

まずはリリース品質の向上を目的とした「積極的な受け入れテストの実施」が考えられます。コンテナの特性を考慮すると、機能面については開発時点の品質が(理論上ですが)担保されます。しかし、検証環境とハードウェアスペックの異なる本番環境では、設計通りのパフォーマンスが発揮されることの担保がありません。このため本番環境での性能を担保するための「負荷テスト」が重要な意味を持つようになります。

また、DBデータについても本番環境と検証環境では中身が異なるので、環境差異に起因する不具合を予防するために「シナリオテスト」を実施することをお勧めします。コンテナはコードで管理されるため環境差異の影響を受け難いというメリットがありますが、すべての要素が全く変化しないわけではないことは理解しておくべきでしょう。これらのテストに対してツール ※5 を活用することで、テスト完了までの時間が従来より大幅に短縮され、コンテナ導入の目的の一つであるリリース時間の短縮が運用側で阻害されてしまう要因を排除できるようになります。

さらに、リリース後の安定稼働を目指すなら、開発側に環境を提供した時点からのコンテナのモニタリング※6 もお勧めです。開発チームの手元にある段階からリソースのモニタリングやロギングを行うことで、運用側から開発側へのアドバイス、場合によっては改善要求を行うことができます。これらのアプローチによってリリース品質の改善、ひいては本番環境でのトラブルを予防する効果が期待されます。最近は「アプリケーション観点でのモニタリング」を行うアプリケーションモニタリング(以降、APM)分野の監視製品も注目されています。APM分野の製品 ※7 をテスト段階から導入することで、アプリケーションの課題点を洗い出し、改善を推進し、DevOpsとしての品質向上に一役買うことができます。

同一ホスト・OSに複数環境が共存し、コンテナの停止や起動が不規則に発生するコンテナ環境だからこそ、アプリケーションの性能管理は欠かせません。一時的な負荷の増加は外部リソースの利用で凌ぐこともできますが、安定したサービスの提供にはリソースの最適化が不可欠であり、このアプローチを行うためには、継続的なデータ収集と中長期的な視野での分析が必要になります。

※5.シナリオテストを自動化するツール: Unified Functional Testing 、負荷テストを自動化するツール: LoadRunner
※6.サーバやネットワーク機器の障害監視・性能管理を行うツール: JP1統合管理製品Zabbix
※7.Webアプリケーションを監視するツール: JENNIFER

コンテナ運用の成功に向けて

コンテナ技術の普及により、ビジネスや開発に求められる要求スピードはさらに高まり、運用管理の対象であるインフラやアプリケーションの劇的な変化が予想されます。よってこれらの変化に柔軟に応えられるITサービス品質の維持・向上が運用業務に対しても期待されます。

KubernetesやRancher等、コンテナ環境に特化した運用管理ツールが提供されていますが、運用管理の対象はコンテナだけに限りません。物理サーバ・仮想サーバ・クラウド環境まで、各システムの運用品質を幅広く横断的に維持する必要があります。用途に応じてツールを使い分け、各業務の標準化・自動化を進めることで、コンテナを利用する本来の目的であるリソースの有効活用、リリース時間の短縮に運用側からもアプローチできるようになり、また運用業務そのものも省力化されます。ぜひ、お客様の運用業務に合わせて、最適なアプローチをご検討ください。

ITサービスマネジメントに関する課題についてお気軽にご相談ください

ITサービスマネジメントに関するご相談やご質問は、下記ボタンよりお気軽にお問い合わせください。IT運用に関するあらゆるお困りごとや具体的な課題のご相談などお客様のご希望に応じてご対応します。オンライン・対面などのご希望もお申しつけください。