Slide 1

Slide 1 text

アプリデバッグ効率化のための バイナリ配信ソリューション 2022/08/09

Slide 2

Slide 2 text

2 SIerにて業務システム開発に従事した後、2019年に株式会社コロプ ラに中途入社 バックエンドエンジニアとして主にアプリバイナリ配信のための社内シ ステムの運用を担当 氏名  : 部署名 : H.I 技術基盤本部 第2バックエンドエンジニア部 インターナルグループ 自己紹介

Slide 3

Slide 3 text

1. 社内向けアプリバイナリ配信 ● 課題とシステム導入経緯 ● 現在の社内向けアプリバイナリ配信フロー ● アプリバイナリ配信システムの成り立ち ● アプリバイナリ配信システムの役割 2. アプリバイナリ配信のための社内システム 3. アプリデバッグ効率化のための工夫 3 アジェンダ

Slide 4

Slide 4 text

システム導入経緯 課題 4 ➜ テスターによるアプリデバッグのためにエンジニアから共有されたアプリバイナリを PC経由で実機にインストールしていた ➜ エンジニア/テスターが本来の業務に専念できる環境づくりを目指す アプリバイナリの受け渡しと実機へのインストールに時間と手間がかかる システムによってアプリデバック開始までの時間と手間を解消したい 課題とシステム導入経緯

Slide 5

Slide 5 text

5 ビルド環境 エンジニア エンジニア/テスター アップロード ダウンロード アプリバイナリ配信システム 内製のアプリバイナリ配信システムを導入 ➜ アプリバイナリの受け渡しとPC経由での実機へのインストールを不要に アプリバイナリ配信フロー 現在の社内向けアプリバイナリ配信フロー

Slide 6

Slide 6 text

6 アプリバイナリの受け渡し、 実機へのインストールの際の 時間と手間が課題に 課題に対応するために アプリバイナリ配信システムの 導入を進める 2015 2020 内製のアプリバイナリ配信システム Tempuraが誕生 システムリプレイス システム導入開始 運用する中で認証/認可の仕組みが複雑化し、管 理負担が課題に GCPのマネージドサービスを活用したシ ステム構成にリプレイス 課題の対応に合わせて サーバー費用と運用コストの 最適化を進める アプリバイナリ配信システムの成り立ち

Slide 7

Slide 7 text

必要な機能 主な役割 7 ➜ デバッグ業務でのエンジニア /テスターへの配布 ➜ 社内βでの対象社員への配布 社内へのアプリバイナリ配布 ● アプリバイナリのアップロード /ダウンロード ● アプリタイトル毎の細かな権限管理 ➜ タイトルの機密性や所属メンバーの役職 /職種によって権限が異なるため アプリバイナリ配信システムの役割

Slide 8

Slide 8 text

1. 社内向けアプリバイナリ配信 2. アプリバイナリ配信のための社内システム ● アプリバイナリ配信システムの構成 ● アプリバイナリ配信システムに求めたこと ● 内製理由と実現方法 3. アプリデバッグ効率化のための工夫 8 アジェンダ

Slide 9

Slide 9 text

9 ● アクセス元IP制限をなくして リモートワークに対応 ● Googleアカウント認証で 社内アカウントのアクセスを許可 ● アプリタイトル毎に細かな権限設定が可能 内製のPC/スマホ向け 社内アプリバイナリ配信システム 特徴 アプリバイナリ配信のための社内システム

Slide 10

Slide 10 text

アプリ一覧ページ 10 ● 開発者毎に個人用のアプリページが作成可能 ● アプリタイトルの開発状況別に一覧を表示 ● アプリタイトル毎にアプリページを用意 工夫 アプリバイナリ配信のための社内システム

Slide 11

Slide 11 text

11 ● アプリバイナリは施策 /バージョン毎に グルーピングして表示 ● アプリバイナリの更新履歴を全件保持 ● 開発フェーズ/提供プラットフォーム別に アプリバイナリ一覧を表示 アプリページ 工夫 アプリバイナリ配信のための社内システム

Slide 12

Slide 12 text

12 ● ユーザー/ドメイン/メーリングリストの単位 で対象指定が可能 ● 管理者/開発者/閲覧者の単位で ロール指定が可能 アプリページの権限管理 工夫 アプリバイナリ配信のための社内システム

Slide 13

Slide 13 text

13 Cloud Load Balancing App Engine Cloud Sheduler Cloud IAP Databases & Storage Cloud Storage Memorystore Cloud SQL User BigQuery Management Logging Monitoring Jenkinsビルドサーバー Compute Engine Cloud Run アプリバイナリ配信システムの構成

Slide 14

Slide 14 text

1. 他の内製ツールと認証/アカウント管理の仕組みを合わせたい ➜ Googleアカウント認証で社内アカウントのみアクセスを許可したい ➜ 社内アカウントの多重管理を避けたい 2. アプリビルドサーバーとの内部連携を可能にしたい ➜ APIトークンが漏洩しても社外からのアクセスは遮断できるようにしたい 3. システムの維持費用を可能な限り抑えたい ➜ サーバー/ストレージ費用を削減したい 14 アプリバイナリ配信システムに求めたこと

Slide 15

Slide 15 text

他の内製ツールと認証/アカウント管理の仕組みを合わせたい 15 ✖ 外部サービス上のアカウント発行が必要(外部アカウントベースの認証 /認可) ✔ Googleアカウントでアクセス可否を管理できる Cloud IAPを導入し、 社内ドメインのアカウントをアクセス許可 ➜ Googleアカウント認証で社内アカウントのみアクセスを許可したい ➜ 社内アカウントの多重管理を避けたい ✖ 組織メンバーの追加 /削除といった管理が必要 ✔ 内製の社員情報管理システムから社内アカウントを同期 求めたこと1. 外部サービス. 内製システム. 外部サービス. 内製システム. 内製理由と実現方法

Slide 16

Slide 16 text

クラウド(GCP) アプリビルドサーバーとの内部連携を可能にしたい 16 ✖ APIトークン漏えいによる情報漏えいのリスクがある ✔ APIトークンによる認証を社内からのアクセスのみに制限 ➜ APIトークンが漏洩しても社外からのアクセスは遮断できるようにしたい 求めたこと2. 外部サービス. 内製システム. APIトークン 社内(ビルド環境) Jenkins ビルドサーバー Cloud Armor IPアドレス制限 社外 Cloud IAP Tempura ユーザー認証 トークンチェック 内製理由と実現方法

Slide 17

Slide 17 text

システムの維持費用を可能な限り抑えたい 17 ✖ 提供されるユースケース外の機能分の料金が上乗せされてしまう ✔ GCP(Google Cloud Platform)のマネージドサービスを活用して維持費用を削減 ➜ サーバー/ストレージ費用を削減したい 求めたこと3. 外部サービス. 内製システム. ➜ GAE/Cloud Run(GCPのマネージドサービス) を活用 ● サーバー稼働分だけ費用が発生するため必要最低限の費用に収まる ➜ GCS(GCPのクラウドストレージ) のストレージクラスを活用 ● アクセスの少ないアプリバイナリを通常より安い料金体系で保持 内製理由と実現方法

Slide 18

Slide 18 text

1. 社内向けアプリバイナリ配信 2. アプリバイナリ配信のための社内システム 3. アプリデバッグ効率化のための工夫 ● 目的のアプリバイナリを探す時間の削減 ● アプリバイナリをダウンロードするまでの手間を削減 ● アプリバイナリを主体とした継続的インテグレーションを可能に 18 アジェンダ

Slide 19

Slide 19 text

19 全てのバージョン/履歴に直接アクセス可能な 共有用URLが取得可能 目的のアプリバイナリを探す時間の削減 ✔ アプリバイナリアップロード完了後、 共有用URLをSlackチャンネルに通知できる ✔ バージョン/履歴がどれだけ増えても すぐに目的のアプリバイナリにアクセスできる アプリデバッグ効率化のための工夫

Slide 20

Slide 20 text

20 パスワード認証でアプリバイナリを ダウンロードできる機能を用意 アプリバイナリをダウンロード するまでの手間を削減 ✔ Googleアカウントのログインの手間を削減 ✔ 共有端末でのログアウト忘れにより権限が ない情報が参照できてしまうリスクを防止 ➜ 共有端末でのログインを原則禁止に アプリデバッグ効率化のための工夫

Slide 21

Slide 21 text

21 エンジニア/テスターの個人端末 デバッグ端末 デバッグ端末への配布用 URLとパスワードを発行 URLのアクセス先でパスワードを入力してダウンロード QRコード アプリデバッグ効率化のための工夫

Slide 22

Slide 22 text

22 アプリバイナリのアップロード APIと ダウンロードAPIを用意 アプリバイナリを主体とした インテグレーションを可能に ✔ アプリビルド完了後の自動アップロード、 社内の他システムからダウンロードが可能 ✔ aab(Android App Bundle)形式のアプリバイナリを apk形式 に変換する機能を用意し、 Android端末に直接インス トールできるように 開発 変換 / 配信 ビルド アップロード ダウンロード レポート コミット テスト メモリ計測 アプリデバッグ効率化のための工夫

Slide 23

Slide 23 text

● 課題であったアプリデバック開始までの時間と手間を解消するために アプリバイナリ配信システムの導入を進めた ● 外部サービスでは困難な条件を満たすためにアプリバイナリ配信システム Tempuraを内製し運用していた ● 運用する中で発生した認証、内部連携、費用削減の課題をリプレイスにより解決し た ● 内製、リプレイス、改善によりエンジニア、テスターが本来の業務に専念 できる環境づくりを実現することができた 23 まとめ