見出し画像

マネージドサービス、コンテナ、サーバレス

デジタル庁クラウドチーム
Cloud Architect 山本教仁

前回はガバメントクラウドで考える「イミュータブルな運用」について説明しました。

インフラ構成をIaCコードとツールによって管理し、インフラ環境やOSにログインして直接変更することを禁止することで、インフラ運用にセキュリティやコスト削減の観点で大きな効果があると考えています。

こうしたOSにログインしない運用を実現するためには、マネージドサービスやコンテナ、サーバレスと呼ばれるFaaS(Function as a Service)等の活用も重要になってきます。

マネージドサービスやコンテナ、サーバレスについて

マネージドサービスについて

マネージドサービスとは、一般的には、サービス提供者がインフラの管理や運用を含めてサービスとして提供する形態のことを指します。

クラウドの文脈では、クラウドサービスプロバイダーがデータベースや監視といったインフラ機能をサービスとして提供するもので、機能を実現するための裏側の仕組みや他サービスとの継続的なインテグレーション、パッチ適用等すべてをサービス提供側が管理し、利用者が意識することはなくAPI等を通してそのサービスを利用する形態を指します。

クラウドにおけるマネージドサービスの一例としては、リレーショナル・データベースをSQLインタフェースおよび管理用APIで利用させるものや、ストレージを独自APIやNFS、CIFSといった一般的なインタフェースで利用させるもの、インフラ監視をGUI画面やAPIで提供するものなどがあり、主要なクラウドサービスプロバイダーでは100以上のサービスの種類があることが一般的です。

コンテナについて

Dockerを代表としたコンテナ技術の定義について詳細はここでは述べませんが、OSやハードウェアの違いを意識せずアプリケーションを実行できる環境を用意できる技術で、これを使えばOSを意識することなくミドルウェアやライブラリ等アプリケーション実行環境をどこででも実現できます。

クラウドにおいては、Dockerコンテナを実際に本番稼働アプリケーションとして実行できるように、コンテナイメージの管理やコンテナ実行環境の管理、周辺機能との連携を自動的に実現するコンテナのマネージドサービスが提供されています。

これを使うことで、手元のPCで開発していたアプリケーションコードを、OSやインフラをほとんど意識することなくそのままクラウドのコンテナサービスで実際に使用するかたちで稼働させることができます。

サーバレスについて

サーバレスは、アプリケーション実行環境がマネージドサービスとして提供されたもので、一般的には実行された分や秒といった時間だけ課金されるオンデマンドなサービスです。

広義でのサーバレスは、コンテナサービスも含めてサーバを意識させないマネージドサービス全体を指すこともありますが、ここではアプリケーション実行環境としてのサーバレスを指します。

クラウドの文脈でのコンテナサービスとの違いは、コンテナサービスがDockerfileといったコンテナの定義であったりコンテナの実行環境や実行数を意識させるものに対して、サーバレスはアプリケーションコードだけを意識すればよく、純粋に実行された時間のみの課金となる点です。

一方で、サーバレスは、サポートされている開発言語が限定的で、かつ特定の作法にのっとって開発する必要があるという制約があります。

マネージドサービス、コンテナ、サーバレスの効果

マネージドサービスやコンテナ、サーバレスの効果としては、いわゆるIaaS(Infrastructure as a Service)としてのサーバインスタンスで同等機能を実現するよりもクラウド利用料を低減できるということがあります。

とくにコンテナサービスやサーバレスは純粋な実行時間課金のものもあるため、ずっとサーバインスタンスを起動しているより安く機能を実現できます。マネージドサービスについても付随する運用機能などをサーバインスタンスで一から実装することを考えると一般的にはコスト安に利用できますし、運用機能系のマネージドサービスであれば付随機能としてほとんどコストがかからないものもあり、コスト削減効果は大きいと考えます。

純粋な利用料の削減効果に加えて、ここではとくに、マネージドサービスやコンテナ、サーバレスを活用することでOSが不要になることの効果について詳細を説明したいと思います。

マネージドサービスやコンテナ、サーバレスを使えば、インスタンスの管理やOSに関連したメンテナンスをほとんど意識しなくてもよくなります。利用者は、汎用インタフェースや管理APIからサービスを構成し利用すればよく、インスタンスやOSは見えません。

監視やバックアップ、ログ管理等はあらかじめ機能として用意され、多くの場合は標準サービスとして統合され、それぞれのサービスを自由に組み合わせて使えるようになっています。

OSのパッチ運用についても多くの場合は利用者側で意識することなく自動的に運用されます。システムを構成する際に、一から運用機能を作り込まなければいけないといったことがなくなり、初期の構築やその後の運用で大きな効果を発揮します。

利用者がインスタンスやOSを意識しなくてよくなりメンテナンスが不要になることでいろいろな追加効果が得られますが、ここでは次の3つを取り上げます。

1つ目がインフラ構成のブラックボックス化防止です。インスタンスやOSの構成や運用機能の都度開発は、インフラのブラックボックス化の要因となりえます。設計書を修正することなく、手動でOSの構成を変え、運用機能を都度作り込んでいくことで、インフラのブラックボックス化が進み、新しい機能に変更したり別の環境へ移したりができなくなってコスト高につながります。

マネージドサービスやコンテナ、サーバレスを使えば、構成をIaCコードだけで管理しやすくなり、コードを見れば今の構成がわかるようになり、ブラックボックス化を防げます。

2つ目として、こうしたOSのないインフラ環境を実現できれば(実際には利用者がOSを意識しなくてもよくなれば)、OSログインの仕組みやパッチ適用の仕組みを用意する必要もなくなり、インフラ運用が非常にシンプルになり、必要な運用機能も減ってコスト削減につながります。

従来はOSにログインして手作業で操作するために、専用のサーバを立てたりして管理していました。また、OS構成が正しく維持されているかの監査なども必要でした。こうした仕組みや運用も不要になります。

最後に、インスタンス運用やOS運用がなくなり、IaCコードでインフラ構成を管理できるようになることで、アプリケーション開発者が自分たちでインフラの運用管理もできるようにもなってきています。

広範囲な可用性であったりセキュリティであったり、インフラの専門家が必要な領域もまだまだありますが、アプリケーション稼働環境やデータベース等のアプリケーション周りのインフラ運用管理はアプリケーション開発者自身でIaCコードを使ってできるようになります。

これにより、インフラ構成変更を伴うアプリケーション変更や改善が実施しやすくなったり、よりよいアプリケーションにするためにインフラの構成を含めて変更するということが実現しやすくなり、アプリケーションの改善スピードも向上すると考えます。

インフラ専門家は、アプリケーション実行環境としてのインフラ構成はアプリケーション開発者に任せ、より広範囲のアーキテクチャ全体の信頼性の向上に専念できるようになります。結果、アプリケーション改善のスピードを上げつつ、インフラの信頼性を向上させていくという取り組みが可能になると考えています。

OSがないインフラ運用はイメージしにくいかもしれませんが、最近のソフトウェア構成や実行環境においては、サイレントインストールやパッケージ管理の仕組みが進化してきており、OSを直接構成したり操作したりすることが必須ではなくなってきています。

監視やログ管理、バックアップのマネージドサービス化と合わせて、クラウドにおけるマネージドサービス、コンテナ、サーバレスを使えば、現実的な運用としてOSを意識しなくてよい環境が実現できるようになってきています。

マネージドサービス、コンテナ、サーバレスの考慮点

一方で、マネージドサービスやコンテナ、サーバレスの考慮点としては、大きく、(1)実現したい機能がない(2)ベンダーロックインになる、といったことが上げられます。

(1)実現したい機能がない、という点については、マネージドサービスにそもそもその機能を実現するものがなかったり、コンテナをサポートしていないソフトウェアを使いたいということであったり、サーバレスがサポートされていないライブラリが必要といったケースが考えられます。

この場合は、汎用的な仮想サーバとOSが必要になります。一方で、最近の主要なオープンソースソフトウェアはすでにマネージドサービスとして提供されていますし、多くのソフトウェアがコンテナやサーバレスをサポートするようになってきています。

逆に、マネージドサービスになっていなかったり、コンテナやサーバレスに対応していないソフトウェアはかなりニッチなもので、今後のサポートや運用コストを考えると使用を避けたほうがよいものもあるかもしれません。本当に必要なソフトウェアなのかは十分検討が必要と考えます。

(2)ベンダーロックインになる、については、詳細は別途機会をあらためての説明としますが、マネージドサービスの文脈で言うと、もしロックインが気になるようであれば、クラウド独自のマネージドサービスではなくオープンソースソフトウェアのマネージドサービスを使ったり、コンテナサービスを使えば、別のクラウドサービス等に移行しても同じオープンソースソフトウェアを利用し続けられたり、同じコンテナイメージを使い続けることができます。

ロックインを嫌って汎用OSの上にソフトウェアを一から独自に組み上げると、今後は逆にそのソフトウェアの構成や運用機能がブラックボックスとなりロックインの原因となります。

その意味では、一般的なクラウドのマネージドサービスであれば、すべての仕様が公開されており、そのサービスの運用経験があるエンジニアも多数いるため、汎用OSの上に一から作り上げるよりも逆にロックインにはなりにくいとも考えられます。ロックインも考慮しつつ、迅速性や運用負荷、運用コストとの両天秤で使用を判断していく必要があります。

ガバメントクラウドでのマネージドサービスやコンテナ、サーバレス活用の考え方

ガバメントクラウドでのマネージドサービスやコンテナ、サーバレスの利用イメージ

ガバメントクラウドでは、マネージドサービスやコンテナ、サーバレスは積極的に活用する方向で検討し、利用を推奨していきたいと考えています。

具体的には、監視やログ管理、バックアップ等運用機能は、クラウドサービスにマネージドサービスとして一通り揃っているのでこれを活用することが考えられます。

RDB等データベースも、商用ソフトウェアやオープンソースのものが一通りマネージドサービスとして提供されているのでこの利用ができます。こうしたデータベースのマネージドサービスにはクラスター構成やバックアップ機能等必要な機能はすでに実装されており数クリックで構成可能です。

アプリケーションサーバについては、コンテナサービスやサーバレスを使う構成案が考えられます。アプリケーションサーバを冗長化し負荷分散するためのロードバランサーもマネージドサービスが利用できます。

そもそも、アプリケーションアーキテクチャをAPIベースでサービス化することでこのあたりの構成も軽量化できます。従来のWeb3層構成では、Webアプリケーションサーバで画面構成を作ったり画面遷移間のセッション情報を保持したりと重たい処理を実行しており、大規模アプリケーションではアプリケーションサーバに大きなサーバリソースや台数が必要でした。

Web APIアーキテクチャにして、プレゼンテーションはブラウザ側のJavaScriptやスマートフォンアプリ側に任せ、バックエンドはWeb APIを介してデータをステートレスに送受信するだけにすることで、バックエンドのアプリケーションサーバは大幅に軽量化でき、コンテナ化することも合わせて、大規模なアプリケーションでもそこまでコストかけずにアプリケーションサーバを実現できるようになっています。

こうしたAPIアーキテクチャについても別途ガバメントクラウドでの考え方を説明する予定です。最後に、従来ファイルサーバを使っていたようなファイルの保存についても、ファイルサーバの代わりにマネージドサービスであるオブジェクトストレージを使うことで可用性高くコスト安にデータを保管可能です。

ガバメントクラウドでのマネージドサービスやコンテナ、サーバレスの効果

マネージドサービスやコンテナ、サーバレスの効果として次の5点を整理しました。

  1. クラウド利用料の低減

  2. インスタンスやOS運用負荷の軽減

  3. IaCコードでの管理と合わせたインフラ構成ブラックボックス化の防止

  4. インフラ運用機能のシンプル化

  5. 開発者がインフラ構成することでインフラ構成変更を伴うアプリケーション改善の迅速性向上

ガバメントクラウドでもマネージドサービスやコンテナ、サーバレスを積極的に活用することでこれらの効果を出していきたいと考えています。ガバメントクラウドが目指す、コスト効率がよく、迅速かつ柔軟で、セキュアなインフラを実現していくにあたって、非常に効果が高いと考えます。

ガバメントクラウドでのマネージドサービスやコンテナ、サーバレスの方向性

これまで述べてきたとおり、ガバメントクラウドでは、マネージドサービスやコンテナ、サーバレスを積極的に活用する方向で検討を進めたいと考えています。

ガバメントクラウドの利用者にも、こうしたサービスの活用を勧めていきたいと考えています。そのために、マネージドサービスやコンテナ、サーバレスを利用しやすいようにサンプルとなるIaCコードの開発やそのガイドの作成等も検討していきます。

マネージドサービスやコンテナ、サーバレスを使えば、OSのないインフラ環境、正確には利用者がOSを意識する必要のないインフラ環境は、実際に運用できるものとして現実のものになってきています。

そして、その効果は上に記述したとおり、インフラ構築コスト削減やインフラ運用コスト削減、インフラ構成のブラックボックス化防止やアプリケーション改善の俊敏性向上、そもそものクラウド利用料の削減など多岐にわたり、単なるインフラ運用管理の軽減以上の高い効果が期待できますし、実際にそういう効果を出しているインフラ環境が実現されてきています。

これまでのインフラ運用と大きく変わるため、最初に取り組んでみるところで学習コストがかかるかもしれませんが、マネージドサービス等はエンジニアが使ってみればすぐに使えるようなものも多く、コスト削減効果は比較的早く得ることができると考えます。

また、中長期的に見れば、IaCコードによるインフラ管理やイミュータブルな運用と合わせて、これまで記述したようなさまざまな効果が得られるようになると考えています。

ガバメントクラウドが掲げる、コスト効率がよく、迅速かつ柔軟で、セキュアなインフラを実現していくために、マネージドサービスやコンテナ、サーバレスといったインフラ環境には積極的に取り組んでいきたいと考えています。

関連するデジタル庁の採用情報はこちら


◆デジタル庁Techブログの記事はこちら。

◆デジタル庁の採用に関する情報はこちら。

みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!