サーバレス技術では、プログラマーが基盤の管理を気にせずソフトの開発や削除を行えます。最新の技術ではサーバーは使用されていますが、実際に目にすることはありません。このアーキテクチャでは、設定や運用、拡張といった地味な作業をクラウド提供者が担当するため、プログラマーはコード記述に専念する時間が増えます.
「サーバレス」と「Function as a Service」は同義語として用いられることが多いです.
FaaSは、クラウドホスティングサービスの一種で、個人が共有の仮想サーバ上でアプリを作成、削除、管理できる仕組みです。上位層と下位の基盤が完全に分離されることで、リクエストに応じてデータや記録が提供されます。クラウドサービス提供者のハードウェアやソフトも、利用されていないときは停止し、必要なときに再起動されます。要望が満たされると、サーバーは停止することが可能です。FaaSの意味を明確にするポイントは以下の通りです:
FaaSを利用する前に、まずそのメリットを示すツールを採用する必要があります。
この分散方式を使う開発者は、アプリサーバーを常時稼働させる必要がなくなります。代わりに、サービス提供者がサーバーを別の場所で管理し、必要なときに貴社に提供します。FaaSでは、プログラマーが「関数」と呼ばれるコードの部品を、必要に応じて実行できるようになります。
サービス運営者は、新たにサーバーを起動し、関数を実行した後、処理が終わるとサーバーを停止することがよくあります。必要なときだけプログラムが動くため、常時稼働させる必要がなく、FaaSの仕組みは人気を集めています。処理後は、次の作業に備えてサーバーを停止できます。
FaaSでは、サービス提供者が全てのソフトウェアリソースの安全管理と連携を行うので、プログラマーはコードの記述に専念できます。基盤は、ジョブやタスクのスケジューリング、Webリクエストの処理、メッセージのキューイングといった、単純で繰り返し行う作業に適しています。
クラウドサービス提供組織がアプリのデプロイ時のサーバー管理を担うことで、開発者はホスト管理や移行よりも、プログラムの論理設計に注力できます。
近年、多くのクラウドサービス提供者がFaaSをサービスに加えています。ベンダーは、技術の柔軟性やマイクロサービスアーキテクチャとの相性を評価しています。FaaSの得意な点は以下の通りです:
FaaSを導入する前には、いくつかの課題も検討する必要があります。主な懸念点は以下の通りです:
FaaSは、大量かつ並列的な処理に適しており、トランザクションを分離・拡張することが容易です。顧客向けアプリに加え、データ処理、フォーマット変換、エンコーディング、データ集約などのバックエンド業務にも利用できます。
オンラインチャットボットやIoT機器向けのバックエンド、データやストリームの管理に特に有利です。また、外部リソースの制御と活用も促進されます。例えば、Androidアプリの開発において、バッチ処理など特定のリクエストがあった時のみクラウドアクセスの料金が発生するため、コスト削減につながります。
処理能力の面でも大きな効果が期待できます.
クラウドコンピューティングの例として、IaaS(Infrastructure as a Service)、PaaS(Platform as a Service)、およびFaaS(Function as a Service)などがあります。これらの違いは、利用者とそのインフラとの関係にあります.
IaaSでは、プログラマーが必要な抽象化レイヤーを自由に選べます。すべて自前で管理するか、ロードバランサーやManaged Kubernetes、Managed Databasesなどのサービスを組み合わせることも可能です.
PaaSは、プログラムを迅速にリリースするための整った環境を提供します。サービス提供者が構造やその他の機能を管理するため、開発者はコード記述に専念できます.
キッチンを、食品を冷やし、温め、焼くことができるモノリシックなソフトと考えてみてください。モノリシックなアプリは、全体を複数のサーバーに複製して拡張するため、焼く作業が増えると新たなキッチンが必要になります.
キッチンをマイクロサービスに分割すれば、冷蔵庫、冷凍庫、コンロ、コーヒーメーカー、電子レンジといった個別の機器になります。この場合、必要な部分だけを拡張できるので、新しいキッチンを用意せずにオーブンを増設できます.
コーヒーメーカーはコーヒーだけを作りますが、冷蔵庫は水の供給、氷の生成、食品の保冷が可能です。サーバレスアーキテクチャでは、各関数が独自のコードを持ち、個別にスケールすることができ、全体のソフトを展開する必要がないため、資源を最も効率的に利用できます.
近年のソフトウェア設計では、これらの技術が幅広い用途に利用されています.
これらは同一のソフト内で共存することも可能です。たとえば、コンテナを用いた分散アプリをクラウド向けに設計し、マイクロサービスのコード実行やイベントに応じたトリガーで動作を開始することが考えられます.
当初は同義でしたが、現在「サーバレス」は、自社のビジネスロジックに加え、共通サービスも利用するより広い構造パターンや手法を指します.
コンテナ化とスケール、状態管理が可能であれば、マイクロサービスや従来のプログラムもサーバレスを採用できます.
"サーバレス"は、データベースやメッセージングシステムのように、開発者や管理者が個別に管理する必要のないマネージドサービスを示す場合もあります.
オープンソースのFaaSや、主にイベント駆動で連携するデータベース、メッセージング、認証などの一般的なバックエンドサービスは、サーバー管理を必要としない開発者に大きな助けとなります.
デプロイをスムーズにし、良い成果を得るためには、以下のFaaS導入のベストプラクティスに従うとよいでしょう.
FaaSを適切に導入すれば、開発プロセスの簡略化や運用コストの削減など、大きな効果が期待できます。サービス志向の流れが進む中、開発者は特に得意とする分野に、より多くの時間を注げるようになります.
最新情報を購読