はじめに
この記事はコミュニケーション&アプリケーションサービス部でビジネスdアプリを開発している丸山、葛岡、露口、西谷、富田の共同執筆です。
今回は、NTTコミュニケーションズで提供するモバイルアプリ、「ビジネスdアプリ」の具体的なアーキテクチャやCI/CDの仕組みに焦点を当てて説明します。
前編では、開発背景やサーバレスサービスを活用したアーキテクチャの概要を中心に解説しています。前編はこちらからご覧ください。
なお、本記事の内容は2024年8月2日にGoogle Cloud Next Tokyo '24で発表した講演をベースに再構築したものです。 講演資料はこちらからご覧ください。
目次
Push通知のアーキテクチャについて
本項ではビジネスdアプリのアーキテクチャの中でPush通知(図の赤枠部分)に焦点をおいて説明します。
ビジネスdアプリは多数のユーザを想定しており、それに耐えうるアーキテクチャを構成しています。
下図はビジネスdアプリのPush通知のアーキテクチャをより詳細にした図です。
アーキテクチャの各構成要素は次の通りです。
- Cloud Run: Google Cloudが提供するサーバレスのコンテナの実行環境です。ビジネスdアプリでは多数のユーザに対して同時にPush通知を実施することを想定しているため、複数のCloud Runで分担させてPush通知処理を実施しています。
- Pub/Sub: メッセージの送信側と受信側のサービスを分離し、非同期処理するスケーリング可能なメッセージングサービスです。
- Firebase Cloud Messaging: メッセージを送信するためのメッセージングソリューションです。
- Spanner: Google Cloudが提供する水平スケーリング可能なRDBMS(Relational DataBase Management System)です。メンテナンス時間なしで運用されています。
Cloud Run 関数がPub/Subに通知対象のお知らせ毎にトピックを1つ、サブスクリプションを1つ、メッセージを送信ユーザ数に応じて複数作成します。 複数のCloud Runがサブスクライバーとしてメッセージを受信してプッシュ通知を送信することで負荷分散を行なっています。
ビジネスdアプリでは、Spannerで管理されたクライアントアプリごとにユニークなPush通知用のトークンをCloud Runを使ってFirebase Cloud Messagingに渡すことでPush通知を実現しています。
行動データ収集のアーキテクチャについて
本項ではビジネスdアプリのアーキテクチャーの中で行動データ収集(図の赤枠部分)に焦点をおいて説明します。
モバイルアプリでの行動データは、アプリケーション・プライバシーポリシーに則ってGoogle Analytics(以下、GA)に送信され、そこからさらにBigQueryにエクスポートされます。
ビジネスdアプリでは、行動データを詳しく分析するためにDataflowを活用し、Spannerの一部のデータとGAの行動データを組み合わせて分析しています。
Dataflowは標準で用意されているテンプレートを利用することで、容易にSpannerからデータを読み取り、BigQueryにデータを書き込むことができます。詳しくは、Google Cloud Next Tokyo '24での講演資料をご覧ください。
CI/CDについて
もともとビジネスdアプリの開発では開発チケットが完了するたびに手動でモバイルアプリのビルドと配布作業を実施し、実機での検証作業を行なっていました。
しかしこの場合、配布に30分程度の時間を要する課題がありました。 そこでCI/CD環境を構築することで検証時間を大幅に削減しました。
サーバーのソースコードをPushした場合のCI/CDのアーキテクチャについて
ビジネスdアプリではGitHubでソースコード管理しています。
開発者が開発完了しソースコードをPush後、GitHub Actionsで、JavaScriptテスティングフレームワークであるJestの実施とビルドが行われています。
GitHub Actionsは、Google Compute Engine上でセルフホステッドランナーを構築し、実行しています。
GitHub Actions処理の完了後、Google App Engineに自動デプロイされます。
モバイルアプリのソースコードをPushした場合のCI/CDのアーキテクチャについて
AndroidとiOSで配布方法が異なります。
Androidの場合は、開発者が開発完了しソースコードをPush後、セルフホステッドランナー上でGitHub Actionsが実行され、Jestとビルドが行われます。そしてビルドファイルがFirebaseに送られ、FirebaseからAndroid端末に自動配布されます。
iOSの場合は、開発者が開発完了しソースコードをPush後、Xcode Cloud上でJestとビルドが行われます。そしてビルドファイルがTestFlightに送られ、TestFlightからiOS端末に自動配布されます。
終わりに
今回の記事では、ビジネスdアプリの具体的なアーキテクチャやCI/CDの仕組みについて紹介しました。
ビジネスdアプリでは2024年11月29日に社内報機能・タスク管理機能をリリースしてます。
社内報機能は、社内報投稿をグループメンバー全体または指定したユーザに共有したり、リマインドPush通知や完了リアクションを送ったりできる機能です。また投稿者・管理者は、投稿を閲覧したユーザの一覧を確認できるので、社員の方に依頼する必要がある業務全体の効率化を実現できます。
タスク管理機能は、タスクの作成/編集/削除やタスクのステータス変更、リマインドPush通知などができる機能となります。外出先でも手軽にスケジュール確認/管理ができます。
今後は機会があれば、社内報機能・タスク管理機能についての詳しいアーキテクチャもブログ記事で紹介したいと考えています。
現在ビジネスdアプリでは、社内報機能・タスク管理機能の他にお得なクーポンや中小企業向けのニュースコンテンツも提供しています。もしご興味があれば以下のリンク・QRコードよりダウンロードしてみてください! ダウンロードリンクはこちらです。