さて、ここでいったん、クラウド時代になった昨今のソフトウェア開発の現状を整理します。
基本的にソフトウェア開発は、ユーザーから新規開発や既存機能の拡張などのリクエストがあり、そのリクエストに沿って開発の詳細を定義するところから始まります。そして、新たなソースコードを追加したり、既存のさまざまなソースコードを改修したり、連携させたりしていきます。
そのようなソフトウェア開発現場では、下記の4種類の環境で開発が進められます。
開発者の環境は、実際にソースコードを追加、修正する人自身が、ソースコードの挙動を確認する環境です。テスト担当者は、テスト環境を使って開発者のソースコードを別の観点からテストします。本稿では、この2つを基本的に「開発環境」とします。「ステージング環境」とは、本番前の顧客受け入れテスト用の環境です。
これらの環境において、開発者と運用管理者、それぞれの視点で課題があります。
まず、新しくソフトウェア開発を始める際に、開発環境の構築に時間がかかってしまうという課題があります。
次に、開発環境でシステムの挙動に問題がないことを確認していても、本番環境で問題が発生することがあります。
システムが動作しない理由は、OS、ミドルウェア、ネットワーク、データ、ライブラリなど、動作環境を構成するさまざまな要素にあります。どのプロジェクトにも通用する解決方法はありません。開発者は、本当に本番環境でソフトウェアがきちんと動くか、他ソフトウェアと相互作用するような不具合はないかなど、念には念を入れて検証してからリリースする必要があります。
さらに、「開発環境はオンプレミスで、本番環境はクラウド」と、環境ごとに構成が違う場合、その検証が大変という課題もあります。
運用管理者の視点で見たとき、既に稼働しているソフトウェアやアプリを更新することは、非常に慎重にならなければならない一方で、頻繁なリリースに対応しなければならないという課題があります。
本番稼働サーバにおける運用管理者の業務は、以下のようなものです。
【構築フェーズ】
【運用フェーズ】
新しくサーバを構築するのは、データが入っていないので、そこまで神経質になる作業ではありません。問題は、既に運用が始まっているサーバの更新作業です。構築期間よりも運用期間の方が長いサーバの場合、更新作業にはさまざまな制約が伴います。例えば、以下のような制約です。
会社によっては、サーバの更新のために必要なコマンドを記した工程表を作成して、作業内容を全てリストアップしたものを一つ一つ手作業で2人以上のダブルチェックを行っている企業も多いのではないでしょうか。
開発者視点と運用管理者視点で、それぞれの課題を見てきました。
開発者やサービスを提供する責任者は、より良いサービスを提供するために反復して機能の追加や改善を続けていきます。自分たちが作ったソフトウェアを早く本番で稼働させ、さらなるフィードバックが欲しいので、本番環境に早くソフトウェアをリリースしたいと考えます。
運用側は、サービスを停止せず、ソフトウェアを提供し続けることを重視します。開発者がリリースするソフトウェアに不具合があるかどうか、頻繁に検証する作業が必要になってきます。
このように、開発者や運用管理者でそれぞれ求められていることが異なります。もし、開発スピードを短縮できたり、何かあっても完全にアプリのバージョンを切り戻せたりすれば、これらの課題を解決できます。筆者は、こうしたソフトウェアの開発、運用における課題を解決する最適解として生まれてきたのが、コンテナ技術だと考えています。
Copyright © ITmedia, Inc. All Rights Reserved.