モバイルアプリのバックエンドアーキテクチャの構築
モバイル・アプリのバックエンド・アーキテクチャを、手間なく拡張できるように構築したいですか?このステップバイステップの実践ガイドに従って、スケーラブルなモバイルアプリのバックエンドアーキテクチャを構築しましょう。
Contents
モバイルアプリの概要
モバイルアプリは、タブレット、携帯電話、スマートウォッチなどのスマートデバイス上で動作するプログラムである。モバイルアプリには、ネイティブ、ウェブ、ハイブリッドのいずれかの形態があります。
ネイティブアプリがAndroidのような特定のオペレーティングシステム向けに設計されているのに対し、ウェブアプリはHTMLやCSSのようなウェブベースのテクノロジーを使ってアプリを作る。一方、ハイブリッド・アプリは、ネイティブ・コンテナ内で動作するウェブ・アプリである。
次に、モバイルアプリのバックエンドアーキテクチャの意味について説明する。
モバイルアプリのバックエンドアーキテクチャの概要
スケーラブルなモバイル・アプリのバックエンド・アーキテクチャを構築する手順は複雑である。
スケーラブルなアプリは、安全で信頼性が高く、パフォーマンスを低下させることなく数百万人のユーザーを同時にサポートしなければならない。要するに、そのようなアプリはピーク時でもクラッシュせず、常に利用可能で、読み込みが高速でなければならない。
ここでは、モバイルアプリのための堅牢なバックエンドアーキテクチャを作成する手順について考えていきます。モバイルアプリのアーキテクチャのベストプラクティスを発見するために読み進めてください。
モバイルアプリのアーキテクチャの構成要素
ここでは、堅牢なアプリのバックエンドアーキテクチャを形成するために連携するさまざまな要素を紹介する。
- データベースサーバー
- アプリのホスティングサーバー
- 負荷分散技術
- オブジェクト・ストレージ・サービス
- コンテンツ・デリバリー・ネットワーク
- API
- SDK
- アプリケーション公開プラットフォーム。
次に、これらの構成要素について順を追って説明しよう。
データベースサーバー
バックエンドサーバーは、すべてのアプリのデータトランザクションを管理する強力なデータベースインスタンスのクラスタで構成されるモバイルアプリのバックエンドアーキテクチャの重要な側面である。
設計に基づいて、データベースはアクティブにも冗長にもなる。いずれにせよ、スケーラブルなアーキテクチャでは、クラウド上で即座にデータを同期する2つ以上のデータベース・インスタンスを持つべきである。
アプリホスティングサーバー
アプリケーション・サーバーは、モバイル・アプリケーションのビジネス・ロジックを管理する。設計では、アプリケーション・サーバーはコンテンツ配信ネットワークとデータベース・サーバーの間に設置される。
負荷分散アーキテクチャ
ロードバランシング技術は、ロードバランサーと呼ばれるサーバー群を使って設計されている。アプリのリクエストをサーバーに分散させることで、1つのサーバーの過負荷を防ぎ、全体的な効率を高める。
スケーラブルなモバイルアプリのバックエンドアーキテクチャでは、CDNはアプリのリクエストをサーバー間で分散するように設定されたロードバランサーアプリケーションに直接リンクする。
また、必要に応じてサーバー数を拡張し、高い可用性とサーバー・リソースの最適な利用を保証します。
オブジェクト・ストレージ・サービス
モバイルアプリは、ファイル、ビデオ、画像などのコンテンツをアプリユーザーに配信する必要があることが多い。これらのコンテンツはオブジェクト・ストレージに保存される。しかし、CDNはこれらのコンテンツをキャッシュとしてサーバーに保存し、様々な地域にいるユーザーにより速く配信する。
コンテンツ・デリバリー・ネットワーク
CDNは、アプリのユーザーにコンテンツをより速く配信するために、世界中の様々な場所に分散されたサーバー群の形をとる。
CDNは、近くにいるユーザーを特定し、CDNサーバーに近いユーザーに画像や動画などのコンテンツを配信することで機能する。このアプローチにより、アプリのレスポンスやダウンロードが速くなる。
CDNを使用する利点は数多くある。遅延を最小限に抑える最適なルーティング経路を使用し、データ転送コストが大幅に削減され、DDoS攻撃を防ぐことでアプリのセキュリティも強化される。
API – アプリケーション・プログラミング・インターフェース
APIは、アプリのクライアント側(フロントエンド)とサーバー側(バックエンド)の通信を容易にするソフトウェアである。APIは、自動化、サービス配布、カスタマイズ機能、柔軟なデータトランザクションの管理など、アプリのパフォーマンスとスケーラビリティを向上させるいくつかの利点を提供する。
SDK – ソフトウェア開発キット
SDKとはソフトウェア開発キットの略で、スケーラブルなモバイルバックエンドアーキテクチャを構築するために不可欠なツールである。 一般的なSDKには、ライブラリ、API、ドキュメント、デバッガなどのツールが含まれています。
同様に、Mobile Backend SDKには、アプリのクライアントサイドとサーバーサイドを接続するユーティリティに加えて、上記のすべてのツールが含まれている。
SDKは、開発者がストレスなく様々なアプリ機能を統合するのに役立ちます。典型的な例は、バックエンドからアプリのユーザーインターフェースにプッシュ通知を送信する機能です。
アプリ公開プラットフォーム
開発者はアプリを作るために様々なテクノロジーを使う。例えば、SwiftはネイティブiOSアプリの開発に使われ、Java/KotlinはネイティブAndroidアプリを開発し、React Nativeはクロスプラットフォームアプリを開発する。
開発ツールに関係なく、すべてのアプリはGoogle PlayやApp Storeなどの配信プラットフォームでアプリユーザーによってダウンロードされる。
この手順では、開発者がアプリをパブリッシング・プラットフォームに提出し、承認後にユーザーがアプリをダウンロードしてインストールできるようにする。アプリ配信プラットフォームのユーザーはアプリを検索し、ダウンロードしてインストールした後、レビューを残すことができる。
デベロッパーがアプリを承認し公開するには、App StoreとGoogle Playの独自のガイドラインに沿う必要があります。
しかし、Progressing Web Applicationテクノロジーを使用したIonic、Angular、またはReactでアプリを開発すれば、パブリッシング・プラットフォームの精査プロセスを回避できる。
モバイルアプリのスケーリング手順
スケーラブルなモバイルアプリのバックエンドアーキテクチャを構築するには、2つのアプローチがある。
この最初の方法は、MBaaS(Mobile Backend as a Service)であり、すべてのバックエンド要件を自動的に処理するマネージド・プラットフォームである。
2つ目の方法は、Infrastructure as a Serviceプロバイダーのリソースを活用し、スケーラブルなモバイルアプリのバックエンドアーキテクチャを一から構築する方法だ。
これら2つのアプローチには、それぞれ独自のメリットとデメリットがある。MBaaSは、SDKやビルディング・ブロックなどのリソースを統合したレディメイドのインフラを提供し、開発作業を迅速化する。 このアプローチにより、開発者はハンズフリーでスケーラブルなインフラを迅速に構築することができる。
スケーラブルなインフラを一から構築することで、開発者はBaaSにはない柔軟性を得ることができる。
しかし、このアプローチは、スケーラブルなモバイルアプリのバックエンド・インフラストラクチャを構築するために必要なすべての要素を確立する技術的ノウハウを持っているかどうかに大きく依存する。
この2つの方法について詳しく見ていこう。それぞれのニーズに合ったアーキテクチャを選択してください。
BaaS – サービスとしてのバックエンド
BaaSを使ったモバイルアプリのスケーリング手順は、タスクを達成するために必要なツールがすべてすでに用意されているため、迅速で手間がかからない。
BaaSプラットフォームの目標は、開発プロセスを高速化し、アプリのスケーリングプロセスを迅速かつ安全で簡単にすることだ。
Back4appのようなBaaSプロバイダーを使えば、わずか数分でスケーラブルなバックエンドを作成できる。手順は簡単で、プラットフォームにサインアップし、提案するアプリの名前を入力します。
その後、その他のステップはすべてプラットフォームが自動的に処理する。BaaSプラットフォームは、アプリ・サーバーを起動し、データ・モデルを作成し、スケーリング・ポリシーを設計し、バックアップ手順とセキュリティ・ポリシーを自動的に確立する。
次のインターフェイスでは、インフラストラクチャ、API、アプリ機能、データモデルの設定で構成されるGUIを操作することができる。
設定が完了すれば、スケーラブルなバックエンドはアプリをデプロイする準備が整う。必要なのは、SDKを通じてクライアントサイドとサーバーサイドをリンクし、ビジネスロジックを作成し、必要なデータをアップロードすることだけだ。
Back4appで利用可能な開発ツールには、Xamarin、iOS、Android、Flutter、React NativeなどのSDKがあります。
Back4appのBaaSプラットフォームで最初のアプリケーションを構築する方法については、Back4appで最初のアプリケーションを作成する方法についての記事をお読みください。
モバイル・アプリケーション・インフラのスケーリングに関する実践例
このセクションでは、BaaSを使ったアプリのスケーリングの利点を示す2つの現実的なシナリオを考える。
- Broadcast Oslo
この最初のケーススタディでは、オスロの最高のクラブ、コンサート、フェスティバルへの手間のかからないガイドを提供するノルウェーを拠点とする新興企業、Broadcast Osloを詳しく見ていこう。
この会社は、iOSとAndroidのユーザー向けにモバイルアプリ「Broadcastoslo」を開発した。 ダウンロードすると、オスロで開催予定のイベントにアクセスできる。
このアプリのもう一つの印象的な特徴は、リアルタイムのフェスティバル・イベントにアクセスできることだ。
2022年6月4日に開催されたMusikkfest Oslo 2022は、20,000人以上の参加者を誇った。これほど多くのユーザーが同時にデータをアップロードし、アクセスするアプリは、クラッシュを防ぐためにシームレスに拡張する必要があります。
この課題を解決するために、技術チームはBack4appのスケーラブルなインフラを採用しました。その結果、すべてのアプリユーザーに支障のない体験を提供することができました。
イベント終了後、Broadcast Osloのティム・ハリスCEOは、Back4appの素晴らしいサービスに感謝した。彼は、アプリへのアクセス中に不具合を経験したユーザーは一人もいなかったと証言した。
- Fight List
Fight Listは、アメリカとフランスで1000万ダウンロードを超えるトップゲームアプリのひとつです。Two4Teaが開発した7カ国語以上のQ&Aゲームです。 何千人ものユーザーが同時にゲームをプレイするため、このゲームアプリではスケーラビリティが重要な課題となります。
Two4Teaはスケーラブルなインフラの課題を解決するため、Back4appのサービスを利用することにした。アップグレード後は、ピーク時に1万件のリクエストを不具合なく処理できるようになった。
Back4appのスケーラブルなインフラストラクチャのパワーを体験した後、Two4TeaのCEOであるニコラス・ブーシュ氏は、Back4appを採用したことは正しい選択であったと証言しています。なぜなら、Back4appのチームは課題を見事に特定し、それを解決するカスタマイズされたソリューションを提供してくれたからです。
クラウド・サービス・プロバイダーを利用したスケーラブルなバックエンドの構築手順
スケーラブルなモバイルアプリのバックエンドインフラを構築する2つ目のアプローチは、Digital Ocean、Azure、Google Cloud、AWSなどのクラウドサービスを利用することだ。
このアプローチの主な利点は、高い柔軟性を提供し、全プロセスを監督し、好きなようにインフラをコントロールできることだ。
欠点としては、このアプローチには大規模なエンジニアリングのノウハウ、定型的なコードの構築、インフラを24時間体制で拡張・監視するシステムの開発などが必要となる。
この例では、AWS上にモバイルバックエンドアーキテクチャを構築し、デプロイする。
アカウントを取得し、実行したら、次のステップは、スケーラブルなモバイルアプリのアーキテクチャを作成するという目的を達成するために必要なサービスを選択することです。以下は典型的な例です:
- EC2インスタンス
- CDN – CloudFront
- ロードバランサー
- S3 – シンプル・ストレージ・システム
- EBS – Elastic Block Storage
それぞれのサービスを詳しく見てみよう。
EC2インスタンス
シームレスにスケールするバックエンド・インフラストラクチャを構築するには、アプリケーション・サーバーとデータベース・サーバーとして機能する仮想マシンが必要だ。 まず、アプリケーション・サーバーとデータベース・サーバーとなるサーバー・インスタンスを作成する必要がある。
AWSは、一般的な用途など、さまざまな目的に合わせて特別に設計されたインスタンスを幅広く提供している。また、ストレージ、メモリ集約型アプリケーション、コンピューティング・タスク、高速コンピューティング向けに最適化されたものもある。
このシナリオでは、一般的なコンピューティング・インスタンスをデプロイする。 バースト可能なプロセスの管理に優れたT4Gインスタンスを選択する。このタイプのインスタンスの時間あたりのコストもリーズナブルだ。
その手順を以下に示す:
- AWSへのログイン
- EC2を選択
- 次のメニューからインスタンスを選ぶ
- 新しいインスタンスを立ち上げる
この段階で、オペレーティング・システムを選択し、インスタンスのサイズやタイプ、ネットワーク、セキュリティ設定などのその他の要素を選択し、ブロック・ストレージ・インスタンスを追加する必要があります。
サーバークラスタが稼働したら、ワークロードに完璧に対応するスケーリングポリシーを設定する必要がある。
サーバークラスタは水平方向にも垂直方向にも拡張できることに注意する必要がある。
水平スケーリングでは、作業負荷の増加に対応するためにクラスタのサーバーインスタンスを増やします。
垂直スケーリングでは、インスタンス(RAM/CPU)のサイズが、追加のワークロードを処理するために増やされる。
アプリケーション・サーバーの場合、水平スケーリングが望ましいスケーリング・モデルだ。一方、データベースクラスタでは垂直スケーリングが効果的です。
アプリケーションサーバーに水平スケーリングを実装するのは簡単だ。 AWSでスケーリングを実現するには、オートスケーリングメニューを起動して設定を作成するだけだ。
逆に、サイズを大きくするためにインスタンスをシャットダウンするとサービスのダウンタイムにつながるため、垂直スケーリングは複雑になる可能性がある。
データベース・サーバーに垂直スケーリングを実装する最善のアプローチは、より大きなインスタンスを作成し、すべてのデータを同期し、アクティブなワークロードを新しいインスタンスに転送することである。この手順は簡単ですが、自動化は複雑です。
アプリケーションのワークロードが、垂直スケーリングが現実的でなくなるレベルまで増加したシナリオでは、最良のアプローチは、過剰なワークロードを複数のインスタンスに分散することである。この手順は複雑であるため、最後の手段としてのみ使用すべきである。
EBS – Elastic Block Storage
各EC2サーバーインスタンスは、ストレージを処理するためにEBSボリュームを必要とすることに注意する必要がある。ただし、内蔵ストレージを備えたエフェメラル・インスタンスを使用している場合は、EBSは必要ないかもしれない。
この単純なステップは、仮想マシンの初期化中に設定される。しかし、回避可能なコストを発生させることなく、必要なストレージ容量を処理するために最適なサイズを設定することは困難である。
このプラットフォームにはSSDと磁気ディスクのオプションがある。リーズナブルな予算で最適なパフォーマンスを実現するためには、適切なEBSサイズとタイプを選択することが極めて重要です。
S3 – シンプル・ストレージ・サービス
スケーラブルなアプリのバックエンドインフラを実現するには、信頼性の高いオブジェクトストレージが不可欠だ。AWSでオブジェクトストレージを実装する最良の方法はS3を使うことで、手順は簡単だ。
S3バケットを作成するには、ファイルストレージ用のリージョンを定義する必要がある。最善の方法は、EC2インスタンスと同じリージョンを選択することだ。
この手順では、オブジェクトの所有権の指定、パブリック・アクセス・ルール、暗号化オプション、バケツのバージョニングなどの追加設定が必要です。
ロードバランサー
適切なロードバランシングルールを実装することは、スケーラブルなモバイルアプリのバックエンドアーキテクチャを構築するために不可欠です。AWSでは、複数のロードバランシングオプションにアクセスできる。
アプリケーションのロードバランサーは、アプリのリクエストをクラスタ内の適切なEC2インスタンスにルーティングし、その健全性を監視し続ける。 ロードバランサーをインスタンスにアタッチする手順は簡単だ。 手順を以下に示す:
- EC2のダッシュボードに移動する。
- ロードバランシングをクリック
- ロードバランサーを作成する
- ロードバランサータイプを選択します。
- アベイラビリティゾーン、VPC、IPアドレスの種類、追加サービスオプションなどのロードバランサーパラメータを設定する。
CloudFront CDN
AWSはCloudFrontと呼ばれる統合コンテンツデリバリーネットワークを300以上のグローバル拠点で展開している。CDNは動的・静的コンテンツの配信をより速く、より安全にする。CloudFrontを他のAWS製品と統合する手順は簡単だ。
スケーラブルなモバイルアプリのバックエンドインフラを実現するには、CloudFrontをS3バケットやロードバランサーと統合する必要がある。 EC2ダッシュボードには、CloudFrontの統合に必要なツールが用意されている。手順は以下の通りだ:
- EC2ダッシュボードに移動する
- ロードバランサーを作成する
- ターゲット・グループを選択する
- 配信オプションを微調整する。
CloudFrontダッシュボードからS3バケットを接続する手順も非常に簡単だ。CloudFrontディストリビューションを作成し、オリジンドメインに接続するだけだ。
結論
モバイルアプリは、スマートフォン、タブレット、その他のスマートデバイス上で動作するプログラムです。これらのタイプのアプリは、ネイティブ、ウェブ、またはハイブリッド設計のいずれかになります。
スケーラブルなモバイルアプリのバックエンドアーキテクチャは、サーバーの負荷が増加してもアプリのパフォーマンスが向上するように設計されています。
また、クラッシュやパフォーマンスのボトルネックを防ぎ、アプリのセキュリティを向上させる。スケーラブルなモバイルアプリ・アーキテクチャのコンポーネントには、データベースやアプリケーション・サーバー、ロードバランサー、CDNS、API、SDK、アプリ公開プラットフォームなどがある。
スケーラブルなモバイルアプリのインフラを構築するための2つのアプローチは、AWSのようなクラウドサービスを利用したカスタムメイドのバックエンドと、Back4appのようなプラットフォームによるリードメイドのBaaSソリューションだ。
Backend as a Serviceを使えば、セキュアでスケーラブルなアプリのバックエンドを、ストレスなく迅速にデプロイできます。
カスタムメイドのバックエンドは面倒で時間がかかるが、より高いレベルの柔軟性とコントロールを提供する。
この記事で、優れたモバイルアプリのバックエンド・アーキテクチャを構成する要素について学んだはずだ。
インフラ管理にストレスを感じることなく、スケーラブルなアプリのバックエンドをより速く作りたいのであれば、私たちとBack4appにソリューションを求めてください。
よくあるご質問
モバイルアプリケーションとは何ですか?
モバイルアプリは、タブレット、携帯電話、スマートウォッチなどのスマートデバイスで動作するプログラムです。モバイルアプリは、ネイティブ、ウェブ、またはハイブリッドの形式を取ることができます。
優れたモバイルアプリのアーキテクチャとは?
スケーラブルなモバイルアプリのアーキテクチャの構成要素には、データベースおよびアプリケーションサーバー、ロードバランサー、CDN、API、SDK、アプリ公開プラットフォームが含まれます。
スケーラブルなモバイルアプリのアーキテクチャをどう構築しますか?
スケーラブルなモバイルアプリのインフラを構築するための2つのアプローチは、AWSのようなクラウドサービスを使用したカスタムバックエンドと、Back4appのようなプラットフォームからの既製のBaaSソリューションです。