サーバレス構成のススメ
はじめに
X.1では新たなシステム開発を請け負う際、まずはじめにサーバレス構成が適すかどうかを考えます。
すべてのシステムがサーバレスが最善であるとは限らないので、要件定義フェーズでしっかりと顧客の実現したいシステムの全容をヒアリングし、それを元に最適なアーキテクチャを考えます。
サーバレスとは
サーバーレスアーキテクチャは、サーバーを必要としない、コンピューティングリソースのプロビジョニング方法です。サーバーレスアプリケーションは、必要なときにのみコンピューティングリソースを起動し、必要なときに停止することができます。これにより、アプリケーションの実行に必要なリソースのみが使用され、コストの削減とスケーラビリティの向上が実現されます。
不要な瞬間には起動していない状態を作れるのでコストを下げることができます。
また、サーバの監視が不要になるため、サーバの再起動等の人的リソースの削減も可能です。
例
弊社では主にクラウドサービスとしてAWSを採用しておりますのでAWSの場合で例をあげると、従来のEC2などの開発者がコンピューティングリソースを起動するサービスに対し、LambdaやAPIGatewayのようなリクエストに応じて自動的に起動するリソースがサーバレスなサービスです。
アーキテクチャ例
サーバレスに適すサービス
サーバレスアーキテクチャは、以下のようなシナリオに最適です。
トラフィックが不定期なWebアプリケーション
例えば、社内向け打刻システムの場合、出勤時と退勤時にアクセスが集中し、それ以外の時間帯はほとんどアクセスがないというシステムになりそうです。
この場合、アプリケーションが常時駆動するのはとても無駄がありそうですね。
こういった場合はサーバレスにするとぐっとコストダウンが実現できます。
バッチ処理
バッチ処理の場合、連続した処理の塊がいくつか存在することが多いです。
その場合、AWS Step Functionsを使って段階式のLambdaを組んだり、SQSなどのキューサービスを用いて複数のLambdaでイベントをリレーすることで効率よく処理することが可能です。
サーバレスが適さない場合の選択肢
サーバレスを使用しない場合、アプリケーションは通常、仮想マシンや物理サーバでホストされます。この場合、コストが高くなり、スケーラビリティが低下する可能性があります。また、サーバのセットアップ、管理、および保守にかかる時間と費用も増加します。
そのため、多くのケースにおいてサーバレスアーキテクチャは、コスト効率が良く、スケーラビリティが高い、現代のWebアプリケーションにおいてもっとも適したアーキテクチャの1つと言えます。
しかし、24時間ひっきりなしにアクセスされるWebサイトなど、サーバレスだとコストが逆に高くなってしまうケースもあります。その場合はECSなどのコンテナサービスを使い、物理的にサーバをホスティングすべきでしょう。
ECSはサーバレスほどインフラから解放はされませんが、それでも従来のEC2のホスティングに比べればほとんどインフラ監視を不要にできる優れたサービスです。
おわり
X.1では選択する技術は一定ではありません。そのときそのときで最適解を導きます。
そんな会社で働いてみたい方はぜひ弊社HPよりお問い合わせください❗
Discussion