企業のITインフラやさまざまなITサービスを実現するうえで「サーバ」は欠かせない存在で、企業が求めるIT人材として知っておきたい必須知識の1つでもあります。
本連載では、「サーバとはいったいどのようなものか?」に始まり、利用方法や種類などの基礎的な知識とともに、セキュリティ対策や仮想化、サーバレスなど効率的にサーバを利用・管理するうえでのポイントといった、情報システム担当者の実務に役立つ話題を紹介していきます。
連載第6回は、NTTデータ先端技術の田﨑公平さんに「サーバレス」について、その中でもシステム開発でよく使用されるFaaS(Function as a Service)を解説してもらいます。
プログラミング言語選択でランタイムを即時利用できるFaaS
前回はオンプレミスやクラウドなどサーバの利用形式についてご紹介しました。今回紹介するサーバレスもサーバの利用形式の1つと言えます。
サーバレスという名前をはじめて聞くとサーバ自体がないことを連想するかもしれませんが、もちろんサーバレスのサービスにもサーバは存在しています。サーバレスとは、サーバ利用者がサーバを管理していないことを意味しています。
つまり、サーバレスサービスを提供する事業者がサーバの保守・運用を実施するため、その利用者はアプリケーションの開発やデータの管理に専念することができます。現在、サーバレスサービスだけを用いて構築されたシステムも多く存在します。本記事では、コンピューティングにおけるサーバレスサービスについて紹介します。
現在、提供されているサーバレスサービスは数多くありますが、今回はシステム開発でよく使用されるFaaSと呼ばれるサーバレスサービスについて紹介します。FaaSは、アプリケーション開発で必要となる機能(Function)を提供するサービスです。
通常、アプリケーションを開発したい場合は、事前にサーバを用意して開発に必要な環境を構築します。例えば、物理サーバもしくはクラウドのIaaS(Infrastructure as a Service)のような仮想サーバを用意して、アプリケーション開発のためサーバ上にJavaやPythonなどのプログラミング言語が動作するように事前準備が必要です。
対して、FaaSでは利用したいプログラミング言語を選択すれば、選択した言語に合わせた実行環境(ランタイムと言います)が即座に提供されます。サーバの手配やプログラミング言語のインストールなどの事前準備をすることなく、アプリケーション開発をすぐに開始することができます。そのため、FaaS利用者はサーバの存在を意識することはなく、アプリケーションのソースコードの検討に多くの時間を割くことができます。
物理サーバ(オンプレミス)や、仮想サーバと比べて、サーバレスは責任範囲が狭く、ランタイムより上のレイヤであるアプリケーション、データに専念できる点が特徴です。
要件満たせないケースも散見、事業者によるサービス終了に注意
サーバ運用者から見たサーバレスの特徴は、サーバ運用者がサーバを管理しない形式のため、OSのセキュリティパッチ適用などの保守作業を実施する必要がないことです。また、多くのサーバレスサービスでは、アプリケーションにかかっている負荷に合わせてコンピューティングリソースを自動的に増減させるスケーリング機能や、データやアプリケーションを複数のデータセンターに保持することで障害に備える高可用性が最初から備わっています。
そのため、サーバ運用者がサーバを管理する場合に重要となる非機能要件の検討および構築にかかる時間を削減することができ、アプリケーションの機能要件に専念したシステム開発を実施することができます。
また、サーバレスでは事前にリソースを確保する必要がない、という特徴があります。システム内である処理を実行するためには、用意したサーバを起動させる必要があります。オンプレミスであれば物理サーバを事前に購入する必要があり、クラウドのIaaSでは仮想サーバを立ち上げてリソースを確保する必要があります。
対して、サーバレスでは、サーバの確保をサーバ運用者が意識することはありません。なぜなら、ある処理が実行された際に、事業者側が管理しているサーバで処理が実行されるからです。
物理サーバもしくは仮想サーバを確保している場合、処理を実行していないアイドル時間であってもサーバを起動させているためコストが発生しますが、多くのサーバレスサービスではアイドル時間にコストは発生せず、処理を実行した時間分だけ課金が発生する従量課金制になっています。アプリケーションの実行頻度や処理内容などにもよりますが、サーバを自前で用意するアーキテクチャより、サーバレスアーキテクチャで構築した方が低コストになります。
運用面の負担が軽減され、コストが抑制できるため、一見サーバレスサービスが優れているように見えますが、制約もあります。例えば、サーバレスサービスの機能は事業者が決定しているため、性能や機能面からシステムに必要な要件を満たすことができないケースも多くあります。
また、システムを構築した際には使用できていた機能が、運用フェーズ中にサポートが終了し使用できなくなることもあります。先日も、筆者がサーバレスサービスで実行していたプログラムのランタイムがサポート終了となり、ソースコード全体を見直すなどの保守作業が発生しました。そのため、サーバレスサービスを使用する場合は、事業者のサポートが終了した際の影響を検討しておくことが重要で、許容できないレベルであれば自前でサーバを用意することも検討したほうが良いでしょう。
利用が広がるサーバレス、SLAや費用対効果などを評価
今回、システム開発におけるコンピューティングリソースのサーバレスサービスとして、FaaSを紹介しました。現在ではコンピューティングリソースだけでなく、ストレージやデータベースなどをサーバを意識しなくて利用できるサービスが提供されています。そのため、パブリッククラウドでシステムを構築する場合、ユーザが直接アクセスしないバッチサーバやジョブ管理など、システムの保守・運用の面でもサーバレスが使用されています。
今後はさらにサーバレスサービスの種類・性能・機能が充実していき、システムにおけるサーバレスの割合は増えていくと予想されます。そのため、サーバレスサービスを正しく認識した上で評価する力がより求められていくでしょう。
具体的には、サーバレスサービスを利用することで削減できる運用負荷を含めて費用対効果が見合うか、事業者が提示しているSLA(Service Level Agreement)はシステム要件を満たしているかなど、機能だけではなく費用や運用を含めた多角的な評価視点が必要となります。
執筆:田﨑公平(たさきこうへい)
NTTデータ先端技術に入社してから、AWS(Amazon Web Services)を用いたシステム開発に携わり、クラウドシステムの構築から運用保守まで経験。クラウドの特性を活かし、クラウドシステムにおける運用保守の自動化を推進。現在はオンプレミスシステムのクラウドシフト案件に従事。
NTTデータ先端技術 Altemista(アルテミスタ)テクノロジーコンサルティング室 デジタル推進担当
監修:佐々木 亨(ささきとおる)
天体物理を専攻し、博士号を取得。研究活動中に利用していたサーバに興味を持ってNTTデータ先端技術へ入社。オンプレミスのシステム開発経験を経て、自社のクラウドを利用したマネージドサービスの立ち上げを経験。現在はクラウドを活用したシステムの開発提案から保守運用までマルチに従事しつつ、後進の育成に注力している。
NTTデータ先端技術 Altemista(アルテミスタ)テクノロジーコンサルティング室 デジタル推進担当