Web3層アーキテクチャってなに?Alibaba Cloud, AWS, Azure, Google Cloud のWeb3層アーキテクチャを比べてみました

2022年6月22日掲載

キービジュアル

Web3層アーキテクチャは、ユーザインターフェースとなるWebサーバ層(プレゼンテーション層)、アプリケーション処理となるAPPサーバ層(アプリケーション層)データ処理や保存更新するDBサーバ層(データ層)で編成しながら、Webアプリケーションの構造化の原則を定義した多層アーキテクチャです。

今回、Alibaba Cloud、 Amazon Web Services、Micosoft Azure、Google Cloudなど主要クラウドサービスのそれぞれのプロダクトサービスを使いつつ、Web3層アーキテクチャの比較をしてみます。
※クラウドサービスの並び順はアルファベット順となります。

目次

  • この記事は初心者向けの記事です
  • Web3層アーキテクチャを各主要クラウドごとに比較します
  • どのクラウドサービスを利用するべきか判断するために役立ちます

1.Web3層アーキテクチャ構造

1-1.Web3層アーキテクチャは

Web3層アーキテクチャは、大規模WebシステムやWebアプリケーションを支える技術の1つで、Webアプリケーションの3層構造は大きく3種類の構造で編成されています。Webアプリケーションとして、ユーザがアプリケーションを直接操作するためのインターフェースを構成するWebサーバのプレゼンテーション層、Webサーバのプレゼンテーション層にあるインターフェース上の操作を処理するAPPサーバのアプリケーション層、APPサーバのアプリケーション層からのデータの保存や更新、削除をするDBサーバのデータ層で構成されています。

それぞれの階層ごとに目的や処理内容が異なりますが、これはユーザからの操作を一連の処理としてデータ処理を引継ぎながら、相互作用として処理します。例えば、ユーザインターフェースはGoogle ChromeやFirefox、iPhoneのSafariなどWebブラウザで閲覧するだけで、そこにデータを入れたりした場合、アプリケーション処理基盤がそのデータを処理しつつ、データベースがそのデータを保存したり更新することができます。これにより、コンテンツを動的にロードおよび保存することが出来ます。このようにそれぞれの層が明確に分離されているため、例えばWebアプリケーションに対して10万人が同時アクセスした場合、プレゼンテーション層のWebサーバで処理能力を超えるデータ処理からWebサーバが輻輳(ふくそう)しても、アプリケーション層のAPPサーバ、データ層のDBサーバは分離されてるため、プレゼンテーション層のWebサーバだけスケーリングすることで輻輳問題を暫定的に回避することが可能です。

Web3層
 役割
WebサーバWebブラウザなどフロントエンドを通じてユーザと直接やり取りを行うサーバ
APPサーバWebサーバからのリクエストをJavascript、ruby、go、phpなどのプログラミング言語による処理を行うサーバ
DBサーバWebサイトに必要なデータ(商品情報、価格、会員情報など)を保存したり抽出したりするサーバ

1-2.クラウドベースのWeb3層アーキテクチャのメリット

Web3層アーキテクチャは、Webアプリケーションを3つ以上の層へ分けるため、プレゼンテーション層、アプリケーション層、データ層それぞれが独自のインフラストラクチャーで実行されるため、他サーバへ影響を与えずに済みます。これがクラウドベースのWeb3層アーキテクチャだと、どういうメリットがあるのでしょうか? クラウドサービス上のWeb3層アーキテクチャの主なメリットは次の通りです。

 

-  開発利便性

Web三層は3つ以上の異なる層へ分けて同時開発することができるため、複数チームが同時に取り組むことが出来ます。一方、少人数あるいは個人開発といったエンジニアリングリソースが不足している場合でも、クラウドサービスの恩恵としてWebコンソールを数回クリックするだけでフルマネージド型サービスの繋ぎ合わせからWebアプリケーションを柔軟かつ素早く開発することができます。

- 構築スピードの向上

クラウドベースで構築するため、各層に応じたフルマネージド型プロダクトサービスを使用することで、素早くWebアプリケーションを開発することができます。また、それぞれの層において構成をTerraformやDocker等、Infrastructure as Codeで管理することにより、開発環境や本番環境との差異を少なくするためのバージョンアップや設定変更、チューニングなどの状態管理をしないといったImmutable Infrastructureアプローチが行えるため、総じて開発環境から本番環境に向けた構成反映等継続デプロイができます。

- スケーラビリティ

それぞれの層は各種プロダクトサービスとして導入するため、全体像からみてサービスごとに分離し独立した構成なので、ワークロードや処理規模等、必要に応じて他の層(サーバ)へ影響を与えずにプロダクトサービスのスペック変更といったスケーリングをすることが出来ます。クラウドベースとして、コンソールやAPI、自動設定などで素早くスケーリングすることが可能なので、Webアプリケーションの基盤設備の補充導入作業といった長期的なメンテナンスによるサービス停止は不要になります。

- 可用性向上

それぞれの層のサーバとなるプロダクトサービスを同一リージョン配下にマルチ構成、またはマルチリージョン、マルチゾーン化することで、特定のプロダクトサービスが障害時でも素早く別の同じプロダクトサービスへスイッチングすることが出来ます。クラウドサービスであれば、ヘルスチェックによる切り替えスイッチが伴えることや、単一障害点を排除した負荷分散構成が容易に実現できます。

- セキュリティ対策

Webサーバ、APPサーバ、DBサーバはそれぞれローカルのIPアドレスおよびPort、あるいは特定のEndpointを指定しながら段階的にデータをやり取りするので、例えば外部ユーザからプレゼンテーション層となるWebサーバを通じてDDoS攻撃等不正アクセスしても、階層間の疎通構造によるファイアウォールとしてブロックすることや、構造的にWebサーバからデータ層へ直接アクセスすることが出来ないため、セキュリティインシデントを抑制することができます。

ただし、デメリットもあります。このWeb三層アーキテクチャが大規模になればなるほど、コストが大きくなってしまいます。

2.Web3層クラウド比較

2-1.クラウドベースでのWeb3層アーキテクチャの考え方について

各種クラウドのWeb3層アーキテクチャを比較する前に、共通事項としてWeb3層アーキテクチャの基本的な考え方をみてみましょう。

クラウドベースのWeb3層アーキテクチャとして、ユーザがWebブラウザ、もしくはモバイルアプリから動的Webサイトへアクセスした場合、まず最初に当たるのがロードバランサです。ロードバランサは複数のユーザからのアクセスリクエストを分散しながらプレゼンテーション層となるそれぞれのWebサーバへ処理を振り分けます。基本はラウンドロビンで負荷分散を行いますが、性能に差があるサーバへ任意で振り分けしたい場合、重みやプライオリティ等で振り分けすることが出来ます。セッション維持数が少ないサーバ、処理リソースに余裕があるため応答時間が短いサーバへ振り分けすることも出来ます。このロードバランサのメリットは、処理の負荷分散をするだけでなく、それぞれのサーバのヘルスチェックが行えることや、セッション管理が行えることです。

プレゼンテーション層のサーバへ動的リクエストが届いたら、HTMLやJavascript等、Webサーバとしてユーザからのリクエストに応じてその結果を返却します。そのため、Webサーバは仮想コンピューティング系プロダクトサービスか、サーバレス系プロダクトサービスを配置する必要があります。注意として、Webサーバはさまざまな構成があり、例えば、フロントエンドとサーバサイドを分離したSPA(Single Page Application)、DBサーバの役割を抑えたSSR(Server Side Rendering)、APPサーバの役割を不要とするサーバレス構成などがありますが、Web3層アーキテクチャ全体像から俯瞰的にみて、プレゼンテーション層の役割はさほど変わらないです。

プレゼンテーション層のWebサーバからデータをやり取りするために、アプリケーション層のAPPサーバへデータのリクエストをします。アプリケーション層へのアクセスはHTTPリクエスト(L7、TCPベースのプロトコル)なので、疎通窓口が限られてる分、ブラウザからの動的リクエストより負荷がかかりやすいです。従って、Webサーバと同じくアプリケーション層のAPPサーバ手前にロードバランサを配置します。これにより、APPサーバの負荷分散を実現することができます。APPサーバも仮想コンピューティング系プロダクトサービスか、サーバレス系プロダクトサービスを配置します。

最後はデータ層となるデータベースサーバです。データベースサーバはデータベース系プロダクトサービスであれば、災害復旧対策を意識したマルチゾーン・マルチリージョンといった複数の場所に配置をすることが出来ます。

クラウドベースのWeb3層アーキテクチャとして、これらのプロダクトサービスを1つの地理的に冗長配置および処理スペック強化を図ることでスケーラビリティの向上が見込めますし、地理的に異なる場所へ配置することで、可用性をはじめアベイラビリティ向上が出来ます。

なお、これはWeb3層アーキテクチャではないですが、静的Webサイトとしての対処であれば、CDN(Content Delivery Network)およびストレージの組み合わせで実現することができます。CDNは仮想コンピューティング系プロダクトサービス、 サーバレス系プロダクトサービス、 API Gateway系プロダクトサービス、 CDN系プロダクトサービス、ストレージは仮想コンピューティング系プロダクトサービス、サーバレス系プロダクトサービス、ストレージ系プロダクトサービス、データベース系プロダクトサービスなどで実現できます。

 

2-2.クラウドベースでのWeb3層アーキテクチャの比較

それでは、クラウドベースのWeb3層アーキテクチャの比較をしてみます。Web3層アーキテクチャはさまざまなスタイルがありますが、ここでは純粋にベーシックなWeb3層アーキテクチャとして比較します。

 

・ Alibaba Cloud

Alibaba Cloudには5つのさまざまなWebアプリケーションのベストプラクティスがあります。一般的なWeb3層、コンテンツ配信を併用したWeb3層、自動スケーリングによるWeb3層、IOパフォーマンス対策のWeb3層、マルチデータセンターのWeb3層、マルチリージョンWeb3層構成などがあります。今回のアーキテクチャは一般的なWeb3層であり、ベーシックな分だけコストが安く済みます。構築する場合、WebサーバはECS仮想コンピューティング、データベースはApsaraDB for MySQL、ロードバランサはSLBのALB、コンテンツ配信はCDN、オブジェクトストレージはOSSを使います。

・ Amazon Web Service

Amazon Web ServiceはAlibaba Cloudと異なり、NAT Gatewayを配置する必要があります。これは外部ユーザがインターネットを通じて、単一障害を避けるための複数のEC2インスタンスへアクセスするために、複数のEC2インスタンスが台数分あるPrivate IPアドレスをNAT Gatewayで1つのPublicIPアドレスへ変換するためです。構築する場合、WebサーバはEC2インスタンス、データベースはAmazon RDS MySQL、ロードバランサにELB、コンテンツ配信にCloudFront CDN、オブジェクトストレージにS3を使います。

・ Microsoft Azure

Azureは可用性に特化したさまざまなWebアプリケーションのサンプルやベストプラクティス情報がいくつかあります。今回はベーシックなWeb3層アプリケーションを使用していますが、マルチリージョン、あるいはマルチゾーンで展開する場合、Azure CDNより後にTrafficManagerを配置することを推奨しています。TrafficManagerによる常時ヘルスチェックで死活監視しつつ、有事の際は切り替えするというアプローチです。構築する場合、WebサーバはVirtual Machine、データベースはAzure Database for MySQL、ロードバランサはAzure Load Balancer、コンテンツ配信はAzure CDN、オブジェクトストレージはAzure Blob Storageを使います。

・ Google Cloud

Google CloudはAlibabaCloud、AWS、Azureと異なり、VPCがRegionより外へ配置されています。Google Cloudの公式ドキュメント情報によれば、1つのVPCで複数の国や異なる地域へサービス提供することが出来るため、ユーザからのリクエストに対し、ネットワーク系プロダクトサービス不要ながら異なるRegion/Zoneへ分散することが出来ます。構築する場合、WebサーバはCompute Engine、データベースはCloud SQL MySQL、ロードバランサはCloud Load Balancing、コンテンツ配信はCloud CDN、オブジェクトストレージはCloud Storageを使います。

2-3.クラウド上でSpecと料金試算例

各クラウドサービスごとのSpec、サイジング条件を統一しつつ、プロダクトサービスごとの料金を比較してみます。

※ 2022/6/16時点で日本、東京リージョンを前提としての価格で計算しています。
※ 為替レート計算は$1USD=¥130円です。
※ Webサーバ、データベースは以下のインスタンスで計算しています。
※ AWSのみNAT Gatewayが必要ですが、今回は純粋な比較を行うため、除外して計算します。

プロダクトAlibaba CloudAWSAzureGoogle Cloud
Webサーバecs.g6.largem5.largeD2sV4e2-standard-2
データベースmysql.x4.medium.2cdb.m4.largeE2 v4db-standard-2

 

料金からみるところ、Alibaba Cloudはコンテンツ配信料金および外部へのトラフィック料を含めたオブジェクトストレージ料金が最も安く、静的WebサービスであればAlibaba Cloud OSS+CDNを活用するのも有効そうです。

AWSはデータベースを含めて普段から可用性を優先していない分、可用性のあるベーシックなWeb3層アーキテクチャによる構成としては最も料金が高いです。加えて上記料金表には入っていないですが、NAT Gatewayの料金を加えると高額傾向になります。そのため、AWSサービス全体のコスト構造を把握したうえで構築したほうが良さそうです。例えば、今回のサイジングに合わせた最も安価なEC2インスタンスファミリーの選定、NAT Gatewayでなくゲートウェイ型のVPCエンドポイントを設定することで安く済ませるなど、工夫が必要です。

Azureはデータベースをはじめ各プロダクトサービスがパブリッククラウドサービス4社の中で比較的安い傾向もあり、ベーシックなWeb3層アーキテクチャによる構成としてはパブリッククラウドサービス4社の中で最も安い料金です。

GCPは仮想コンピューティングだけが安い分、ベーシックなWeb3層アーキテクチャによる構成としてはパブリッククラウドサービス4社の中で二番目に安い料金になります。ただし、今回は日本リージョン、Tokyo (asia-northeast1) だとCompute Engineがストレージ代を含め合計84.85USDに対し、USアイオワ州リージョン、Iowa (us-central1) だと65.25USDとなり、ベーシックなWeb3層アーキテクチャによる構成として総合的にはGCPが最も安い料金になります。(他クラウドサービスも他リージョンにして計算してもGCP USアイオワ州リージョンが最も最安) そういう意味ではRegionごとにクラウドサービス全体の料金が変わりやすいこともポイントです。

料金の計算用シミュレーターはこちらになります。

3. まとめ

クラウドベースのWeb3層アーキテクチャの構成方法は多種多様です。今回はAlibaba Cloud、AWS、Azure、Google Cloudごとにベーシックな構築方法で紹介してみましたが、Azureが一番安い結果になります。ただし、プレゼンテーション層やアプリケーション層を仮想コンピューティング系プロダクトサービスでなく、サーバレスプロダクトサービスにしたり、データ層をNoSQL系プロダクトサービスかストレージ系プロダクトサービス、ホスティングサービスをFirebase、Heroku、Netlifyにしたり、CDNをCloudflareにすれば料金や状況もかなり変わると思います。JAMStackというバックエンドサーバに依存しないまま、フロントエンドサーバで各層が結託するWeb三層スタイルもあるし、Webサービスの目的や規模に応じて適材適所な構築デザインから最適な料金が出せればよいと思います。

余談ですが、各クラウドサービスごとに無料料金枠があるので、Region指定やリクエスト数、期間限定等その条件のもとでWeb三層アプリケーションを無料で作ることも出来ますので、参考にしてみるといいでしょう。

途中話が逸れてしまいましたが、パブリッククラウドサービスごとのベーシックなWeb3層アーキテクチャとして本記事をご参考に頂ければ幸いです。

参考記事リンク

関連サービス

Amazon Web Services (AWS)

ソフトバンクはAWS アドバンストティアサービスパートナーです。
「はじめてのAWS導入」から大規模なサービス基盤や基幹システムの構築まで、お客さまのご要望にあわせて最適なAWS環境の導入を支援します。

Microsoft Azure

Microsoft Azureは、Microsoftが提供するパブリッククラウドプラットフォームです。コンピューティングからデータ保存、アプリケーションなどのリソースを、必要な時に必要な量だけ従量課金で利用することができます。

Google Cloud

Google サービスを支える、信頼性に富んだクラウドサービスです。お客さまのニーズにあわせて利用可能なコンピューティングサービスに始まり、データから価値を導き出す情報分析や、最先端の機械学習技術が搭載されています。

Alibaba Cloud

Alibaba Cloudは中国国内でのクラウド利用はもちろん、日本-中国間のネットワークの不安定さの解消、中国サイバーセキュリティ法への対策など、中国進出に際する課題を解消できるパブリッククラウドサービスです。

おすすめの記事

条件に該当するページがございません