Slide 1

Slide 1 text

©MIXI ©MIXI 複数のスマホゲームアプリのリ リース⽤処理の仕組みを共通化 してプランナーさん向けに作っ た話 2023/10/31 開発本部CTO室SREグループ ⼩池知裕 MIXI SRE秋祭り 〜 MIXIのもうひとつのSRE 〜

Slide 2

Slide 2 text

22 ©MIXI ⾃⼰紹介 【名前】 小池 知裕(こいけ ともひろ) 【所属】株式会社 MIXI 開発本部 CTO 室 SRE グループ 【自己紹介】 • 2008年1月株式会社ミクシィ(現 株式会社MIXI)入社。 SNS mixiでのインフラ、システム運用などを経験後、現 在はモンスターストライクをはじめとしたゲームアプリ や注力事業の支援、全社横断的なプロジェクトに幅広く 従事している。また若手エンジニアメンバーの育成にも 力を入れている。

Slide 3

Slide 3 text

33 ©MIXI ⽬次 ● 開発本部 CTO 室 SRE グループの紹介 ● 外部の開発会社からの納品からリリースまで ● サーバレスでリリース⽤署名をする ● 概要説明 ● 運⽤でのポイント ● まとめ

Slide 4

Slide 4 text

©MIXI 開発本部 CTO 室 SRE グループの紹介

Slide 5

Slide 5 text

55 ©MIXI 開発本部 CTO 室 SRE グループの紹介 特定のプロダクト・ サービスに所属するエンジニア 横断的に複数のサービス・ プロジェクトに関わるエンジニア SRE

Slide 6

Slide 6 text

6 ©MIXI 開発本部 CTO 室 SRE グループの紹介 ミッション ● MIXI Group における注⼒事業‧サービスの価値向上 ● MIXI Group のエンジニアの開発⼒‧⽣産性の最⼤化 ⽅針 ● 注⼒事業への機動的な配置 ● 領域の拡⼤ ● 内製化進めていく ● エンジニアの教育‧育成を積極的にしていく 業務内容 ● 注⼒事業(プロダクト)の⽀援(サポート) ● エンジニアのいない領域への⽀援(サポート) ● 全社的な横軸での案件サポート

Slide 7

Slide 7 text

7 ©MIXI 開発本部 CTO 室 SRE グループの紹介 ミッション ● MIXI Group における注⼒事業‧サービスの価値向上 ● MIXI Group のエンジニアの開発⼒‧⽣産性の最⼤化 ⽅針 ● 注⼒事業への機動的な配置 ● 領域の拡⼤ ● 内製化進めていく ● エンジニアの教育‧育成を積極的にしていく 業務内容 ● 注⼒事業(プロダクト)の⽀援(サポート) ● エンジニアのいない領域への⽀援(サポート) ● 全社的な横軸での案件サポート 今日はこの辺の話

Slide 8

Slide 8 text

©MIXI 外部の開発会社からの納品からリリースまで

Slide 9

Slide 9 text

99 ©MIXI 外部の開発会社からの納品からリリースまで ● MIXIからリリースしているスマホゲームアプリのうちいくつかのタイトル ○ パブリッシャーはMIXI ○ アプリは外部の開発会社様で開発‧納品

Slide 10

Slide 10 text

10 10 ©MIXI 外部の開発会社からの納品からリリースまで 開発会社 ● 開発したiOS/AndroidのアプリをMIXI側へ納品 ● 納品形式は様々 MIXI側 ● 納品されたアプリの検品(動作確認等) ● 各種プラットフォームのストアへ並べるために本番⽤配布証明書で署名する ○ これを以下では「再署名」と呼びます ● 再署名されたiOS/Androidのアプリを各プラットフォームでパブリッシュ

Slide 11

Slide 11 text

11 11 ©MIXI 外部の開発会社からの納品からリリースまで 「各種プラットフォームのストアへ並べるために本番⽤証明書で署名する」 ● プラットフォームの本番で配布するための鍵‧証明書は渡したくない ● iOS に関しては鍵‧証明書はパブリッシャーで共通のもの ○ Apple Developer Center の仕様 ■ https://developer.apple.com/jp/support/certificates/ ○ 各所に配置するよりもまとめたい

Slide 12

Slide 12 text

12 12 ©MIXI 外部の開発会社からの納品からリリースまで 今まで ● リリース⽤ iOS / Android アプリが納品されるたびに再署名を実施 ● 社内のビルドマシン(Mac)で実施していた ● エンジニアが再署名作業を実施 課題 ● 対象のアプリが増えてきた ○ 依頼をもらって対応するには頻度が増えてきた ● 営業時間外での対応もしたい ○ 対応する⼈はエンジニアとは限らない ○ プランナーの⽅でもできるように

Slide 13

Slide 13 text

13 13 ©MIXI 外部の開発会社からの納品からリリースまで 解決するための案 ● 対象のアプリが増えてきた ● 営業時間外での対応もしたい ⇨ GitHub Actions を利⽤してサーバレス(ビルドマシンレス)で実現

Slide 14

Slide 14 text

©MIXI サーバレスでリリース⽤署名をする仕組み

Slide 15

Slide 15 text

15 15 ©MIXI サーバレスでリリース⽤署名をする仕組み 概略図 Google Drive GitHub Actions iOS アプリ Android アプリ ②アプリA ⽤の再署名 ②アプリB ⽤の再署名 ③Slack への結果通知 ①ダウンロード 再署名システムの流れ概要: ①Google Drive にあるiOS/Android アプリをダウンロード ②GitHub Actions 内で再署名を⾏う ③結果を社内のSlackチャンネルへ通知 ④再署名したアプリをアップロード ④アップロード

Slide 16

Slide 16 text

©MIXI 仕組みの概説

Slide 17

Slide 17 text

17 17 ©MIXI 仕組みの概説 ①Google Drive にあるiOS/Android アプリをダウンロード ● GitHub Actions 内で完結させることに拘ったため、CLI で⾏う必要 ○ いくつかGoogle Driveを操作するツールがありました ■ gdrive ■ skicka ■ Rclone ■ 等々 ● 検討‧検証した結果 RClone (https://rclone.org/) を採⽤しました ○ 積極的に開発されている ○ 様々なプラットフォームに対応 ■ OneDrive ■ Box ■ などなど..

Slide 18

Slide 18 text

18 18 ©MIXI 仕組みの概説 ②GitHub Actions 内で再署名を⾏う ● GitHub Actions 内では以下のような処理をしています ○ 指定のGoogle Drive から対象の iOS/Android アプリをダウンロードしてくる ○ 環境のセットアップ ■ 証明書やプロファイルの準備や必要なソフトウェアをインストール ● fastlane ● Android SDK ○ iOS なら fastlane を利⽤して再署名 ○ Android なら apksigner を利⽤して再署名 ○ 結果をSlack へ通知 ○ 指定のGoogle Drive へ再署名した iOS/Android アプリをアップロード

Slide 19

Slide 19 text

19 19 ©MIXI 仕組みの概説 ④再署名したアプリをアップロード ● GitHub Actions 内からRcloneを利⽤して指定のGoogle Drive へアップロードします

Slide 20

Slide 20 text

©MIXI 運⽤について

Slide 21

Slide 21 text

21 21 ©MIXI 運⽤について 再署名システムの運⽤について ● 仕組みは出来た。次は運⽤だ。 ● 運⽤フローは以下で運⽤中 1. 納品されたiOS/Androidアプリを特定のGoogle Drive へアップロード a. プランナーの⽅が⾏うことも b. アップロード先は固定(プロジェクトごとに決まってる) 2. GitHub ActionsをWorkFlow⼿動実⾏ a. プランナーの⽅が⾏うことも 3. 再署名が⾏われ、特定のGoogle Drive へアップロード a. アップロード先は固定(プロジェクトごとに決まってる) 4. 再署名されたiOS/Androidアプリをストアで配布 ここポイント ここポイント

Slide 22

Slide 22 text

22 22 ©MIXI 運⽤について なぜ固定の共有ドライブ? ● 社内向けツールをいくつか作った経験から ● この仕組みでの運⽤を考えた時に優先したものは「トラブル対応のスピード」 ○ 原因調査 ○ ⼀時対応 ● 緊急の場合もあるため、再署名処理がサービスのボトルネックにならないように

Slide 23

Slide 23 text

23 23 ©MIXI 運⽤について トラブル対応のスピードを重視 ● Google Drive、GitHubなどのトラブル時には再署名の処理を⼿動で実⾏で復旧 ○ なるべくシンプルに ● ミスをした場合に問題点の特定をしやすくする ○ プランナーの⽅の作業⾃由度を制限 ○ 制限したことで原因を絞り込みやすくする ○ ファイル指定の際のミスやtypoなどを排除できる ● 考えることを少なくしてストレスを低減 ● 汎⽤的‧柔軟な対応ができることを⽬指しがちだがそこは我慢

Slide 24

Slide 24 text

©MIXI まとめ

Slide 25

Slide 25 text

25 25 ©MIXI まとめ ● MIXIでパブリッシャーとしている複数のアプリで利⽤する再署名のシステムを作った ○ 共通で利⽤している ● 社内でのツール開発やそのトラブルでの経験を⽣かす ● 「メンテナンスコストの低減」‧「シンプルな運⽤フロー」を⽬指して運⽤ ○ あえて制限することで運⽤をシンプルにできる ● 複数のサービスに跨ってサービスの価値向上のための⾏動をする

Slide 26

Slide 26 text

©MIXI