サーバレスアーキテクチャとは?
インターネット上でシステムを動かすためには、サーバーが必要です。そして、どんなシステムでもシステムを動かす際にはサーバーを構築するという作業が必要で、かつ、後にそれを保守・メンテナンスしていく必要もあります。
そんな中で近年、人気が出ているサーバレスアーキテクチャです。
今回はサーバレスアーキテクチャについて紹介していきます。
サーバレスアーキテクチャとは何か
サーバレスアーキテクチャと言っても、本当にサーバーがないわけではありません。実際のサーバレスの意味はサーバーを構築・管理・メンテナンスする必要がない、という意味です。
通常のサーバーだと、サーバーを構築するだけでなく、将来のアクセス数や処理の量を考慮して、サーバーの量を増やしたり、性能を上げたりなど、臨機応変に対応する必要がありました。
しかし、サーバレスの場合は、既に構築してあるサーバーにプログラムをアップロードするだけで、サーバーの保守・運用は全てサーバーを提供する側が行うため、サーバーの構築・保守・運用にかかる人件費を削減することができます。また、多くのサーバレスサービスを提供するクラウドサービスは、プログラムが呼び出された回数と稼働時間だけの従量課金制であるため、24時間サーバーを稼働させるよりも安価で済むことが多いです。
サーバレスのメリットとデメリット
先ほど述べたようにサーバレスには開発や運用において大きなメリットがありますが、もちろん、デメリットもあります。
メリット
・コスト削減
一般的なクラウドコンピューティングサービスであれば、時間当たりの従量課金となり、サーバーを動かしている限り、料金が発生します。とはいえ、いつアクセスが来るかもわからないので、サーバーを止めるわけにもいきません。つまり、24時間ずっとサーバーを稼働させている必要があります。
サーバレスであれば、アクセスが来た時にのみ、プログラムが起動します。そして、プログラムが実行した回数と時間での課金になるため、アクセスのない時間の料金を払う必要がなくなります。
・インフラ設計が容易になる
インフラ設計する際は、アクセス量や処理の大きさに応じて、サーバー数の増減やサーバーの性能の変更を設定する必要があります。また、自動でスケーリング(サーバー数の増減)するにしても、自身で設定する必要があります。
サーバレスでの運用であれば、提供者側が自動でスケーリングしてくれるので、開発者はサーバーの性能や数が意識せずに、インフラを設計することが可能です。
・サーバーの構築・管理が不要
自身でサーバーを運用する際は、サーバーを構築した後に、常に監視をしている必要があります。また、脆弱性の対策やアクセスの負荷に応じて、サーバーの増強なども必要になります。
サーバレスであれば、サービス提供側がサーバーの保守管理を行なっているため、開発者はサーバーを維持管理する必要がなくなり、アプリケーションのみに注力できます。
デメリット
・処理内容に制限がある
サーバレスで稼働できるプログラムには制限があります。
例えば、AWSの提供しているFaaS(Functions-as-a-Service)であるAWS Lambdaなら、処理時間は最大15分という制限があり、リクエストやレスポンスのデータは6MBまでという制限があります。
このように単体では重いデータを取り扱うことは難しいのが現状です。
またプログラミング言語により制限もあるため、全てのユーザーが自身の慣れている言語を自由に使えるわけではありません。
・レスポンスが遅い
リクエストが到着してから、プログラムを起動して処理を開始するため、数ミリ秒から数秒の時間を要します。そのため、低レイテンシを求められる機能には向いていません。
・開発者が少ない
未だにFaaSだけでシステムを構築するのは難しく、サーバレスでシステムを構築するにはクラウドサービスが提供している他のサービスと組み合わせなければなりません。提供されている全て機能を理解するのに費やす学習コストと時間は非常に大きいです。
そのため、現在サーバレスで適切に開発できるエンジニアは少なく、人材確保が難しいのが現状です。
また、ベンダーによって機能性や実装方法が異なるため、ベンダーロックインとなりかねません。
現在のサーバレスの使用例
今はまだ規模の大きいサーバレスのウェブアプリケーションが作られることが珍しく、細かい処理をサーバレスで対応するパターンが多いです。
例えば、保存された画像の加工処理や急を要さないデータの処理などです。
しかし、サーバレス化が一際目立つのが、モバイルアプリケーションです。
現在ではスマホはかなり高性能化がされていて、多少重い処理でも端末で行うことが出来ます。昨今まではインターネット上のサーバーで行われていたデータの加工処理も端末で行うことができるようになったので、データを送ってサーバー上で加工するのではなく、端末で加工したデータをサーバーに送ることが可能となりました。するとサーバレスアーキテクチャで対応できるような簡単なプログラムだけで処理が可能となりました。そして、モバイルアプリケーションであれば、ずっとサーバーを稼働しておく必要がなく、リクエストが来た時にだけそのリクエストに応じた内容を返せばいいので、サーバレスアーキテクチャのメリットを最大限に活かせること出来ます。
また同様の理由でサーバレスアーキテクチャが頻繁に採用されるのが、IoTです。
IoTは現在エッジコンピューティングが進んでおり、IoTデバイスでデータ加工を行い、サーバレスアーキテクチャを通してレスポンスを行い、データレイクにデータを入れておくケースがほとんどとなっています。
まとめ
今回はサーバレスアーキテクチャについての説明をしました。
サーバレスアーキテクチャはプログラムの処理時間の制限など、まだまだ考慮するべき課題はありますが、今後はどんどんサーバレス化が進んでいくと言われています。
現在では大規模システムもマイクロサービス化が進んでいて、マイクロサービス化を実現するためにはサーバレス化は必要不可欠と言っても過言ではありません。
また、インフラストラクチャーを提供する企業もサーバレス化に対応しやすいように様々なサービスを展開しており、今後より一層サーバレス化は進んでいくでしょう。
中小企業のDXをがっつりサポート!
当社では
・RPA(ロボティック・プロセス・オートメーション)
・MA(マーケティング・オートメーション)
・HP制作・改修
・SNS運用
など、企業のIT化のサポート・DX事業のサポートを行っています。
まずはお気軽にお問い合わせしてください。