Share
Embed
2023-10-31-SRE-MIXITECHTALK.pdf
Tomohiro Koike
October 31, 2023
Transcript
26 slides
-
©MIXI ©MIXI 複数のスマホゲームアプリのリ リース⽤処理の仕組みを共通化 してプランナーさん向けに作っ た話 2023/10/31 開発本部CTO室SREグループ ⼩池知裕 MIXI
SRE秋祭り 〜 MIXIのもうひとつのSRE 〜 -
22 ©MIXI ⾃⼰紹介 【名前】 小池 知裕(こいけ ともひろ) 【所属】株式会社 MIXI 開発本部
CTO 室 SRE グループ 【自己紹介】 • 2008年1月株式会社ミクシィ(現 株式会社MIXI)入社。 SNS mixiでのインフラ、システム運用などを経験後、現 在はモンスターストライクをはじめとしたゲームアプリ や注力事業の支援、全社横断的なプロジェクトに幅広く 従事している。また若手エンジニアメンバーの育成にも 力を入れている。 -
33 ©MIXI ⽬次 • 開発本部 CTO 室 SRE グループの紹介 •
外部の開発会社からの納品からリリースまで • サーバレスでリリース⽤署名をする • 概要説明 • 運⽤でのポイント • まとめ -
55 ©MIXI 開発本部 CTO 室 SRE グループの紹介 特定のプロダクト・ サービスに所属するエンジニア 横断的に複数のサービス・
プロジェクトに関わるエンジニア SRE -
6 ©MIXI 開発本部 CTO 室 SRE グループの紹介 ミッション • MIXI
Group における注⼒事業‧サービスの価値向上 • MIXI Group のエンジニアの開発⼒‧⽣産性の最⼤化 ⽅針 • 注⼒事業への機動的な配置 • 領域の拡⼤ • 内製化進めていく • エンジニアの教育‧育成を積極的にしていく 業務内容 • 注⼒事業(プロダクト)の⽀援(サポート) • エンジニアのいない領域への⽀援(サポート) • 全社的な横軸での案件サポート -
7 ©MIXI 開発本部 CTO 室 SRE グループの紹介 ミッション • MIXI
Group における注⼒事業‧サービスの価値向上 • MIXI Group のエンジニアの開発⼒‧⽣産性の最⼤化 ⽅針 • 注⼒事業への機動的な配置 • 領域の拡⼤ • 内製化進めていく • エンジニアの教育‧育成を積極的にしていく 業務内容 • 注⼒事業(プロダクト)の⽀援(サポート) • エンジニアのいない領域への⽀援(サポート) • 全社的な横軸での案件サポート 今日はこの辺の話 -
10 10 ©MIXI 外部の開発会社からの納品からリリースまで 開発会社 • 開発したiOS/AndroidのアプリをMIXI側へ納品 • 納品形式は様々 MIXI側
• 納品されたアプリの検品(動作確認等) • 各種プラットフォームのストアへ並べるために本番⽤配布証明書で署名する ◦ これを以下では「再署名」と呼びます • 再署名されたiOS/Androidのアプリを各プラットフォームでパブリッシュ -
11 11 ©MIXI 外部の開発会社からの納品からリリースまで 「各種プラットフォームのストアへ並べるために本番⽤証明書で署名する」 • プラットフォームの本番で配布するための鍵‧証明書は渡したくない • iOS に関しては鍵‧証明書はパブリッシャーで共通のもの
◦ Apple Developer Center の仕様 ▪ https://developer.apple.com/jp/support/certificates/ ◦ 各所に配置するよりもまとめたい -
12 12 ©MIXI 外部の開発会社からの納品からリリースまで 今まで • リリース⽤ iOS / Android
アプリが納品されるたびに再署名を実施 • 社内のビルドマシン(Mac)で実施していた • エンジニアが再署名作業を実施 課題 • 対象のアプリが増えてきた ◦ 依頼をもらって対応するには頻度が増えてきた • 営業時間外での対応もしたい ◦ 対応する⼈はエンジニアとは限らない ◦ プランナーの⽅でもできるように -
13 13 ©MIXI 外部の開発会社からの納品からリリースまで 解決するための案 • 対象のアプリが増えてきた • 営業時間外での対応もしたい ⇨
GitHub Actions を利⽤してサーバレス(ビルドマシンレス)で実現 -
15 15 ©MIXI サーバレスでリリース⽤署名をする仕組み 概略図 Google Drive GitHub Actions iOS
アプリ Android アプリ ②アプリA ⽤の再署名 ②アプリB ⽤の再署名 ③Slack への結果通知 ①ダウンロード 再署名システムの流れ概要: ①Google Drive にあるiOS/Android アプリをダウンロード ②GitHub Actions 内で再署名を⾏う ③結果を社内のSlackチャンネルへ通知 ④再署名したアプリをアップロード ④アップロード -
17 17 ©MIXI 仕組みの概説 ①Google Drive にあるiOS/Android アプリをダウンロード • GitHub
Actions 内で完結させることに拘ったため、CLI で⾏う必要 ◦ いくつかGoogle Driveを操作するツールがありました ▪ gdrive ▪ skicka ▪ Rclone ▪ 等々 • 検討‧検証した結果 RClone (https://rclone.org/) を採⽤しました ◦ 積極的に開発されている ◦ 様々なプラットフォームに対応 ▪ OneDrive ▪ Box ▪ などなど.. -
18 18 ©MIXI 仕組みの概説 ②GitHub Actions 内で再署名を⾏う • GitHub Actions
内では以下のような処理をしています ◦ 指定のGoogle Drive から対象の iOS/Android アプリをダウンロードしてくる ◦ 環境のセットアップ ▪ 証明書やプロファイルの準備や必要なソフトウェアをインストール • fastlane • Android SDK ◦ iOS なら fastlane を利⽤して再署名 ◦ Android なら apksigner を利⽤して再署名 ◦ 結果をSlack へ通知 ◦ 指定のGoogle Drive へ再署名した iOS/Android アプリをアップロード -
21 21 ©MIXI 運⽤について 再署名システムの運⽤について • 仕組みは出来た。次は運⽤だ。 • 運⽤フローは以下で運⽤中 1.
納品されたiOS/Androidアプリを特定のGoogle Drive へアップロード a. プランナーの⽅が⾏うことも b. アップロード先は固定(プロジェクトごとに決まってる) 2. GitHub ActionsをWorkFlow⼿動実⾏ a. プランナーの⽅が⾏うことも 3. 再署名が⾏われ、特定のGoogle Drive へアップロード a. アップロード先は固定(プロジェクトごとに決まってる) 4. 再署名されたiOS/Androidアプリをストアで配布 ここポイント ここポイント -
22 22 ©MIXI 運⽤について なぜ固定の共有ドライブ? • 社内向けツールをいくつか作った経験から • この仕組みでの運⽤を考えた時に優先したものは「トラブル対応のスピード」 ◦
原因調査 ◦ ⼀時対応 • 緊急の場合もあるため、再署名処理がサービスのボトルネックにならないように -
23 23 ©MIXI 運⽤について トラブル対応のスピードを重視 • Google Drive、GitHubなどのトラブル時には再署名の処理を⼿動で実⾏で復旧 ◦ なるべくシンプルに
• ミスをした場合に問題点の特定をしやすくする ◦ プランナーの⽅の作業⾃由度を制限 ◦ 制限したことで原因を絞り込みやすくする ◦ ファイル指定の際のミスやtypoなどを排除できる • 考えることを少なくしてストレスを低減 • 汎⽤的‧柔軟な対応ができることを⽬指しがちだがそこは我慢 -
25 25 ©MIXI まとめ • MIXIでパブリッシャーとしている複数のアプリで利⽤する再署名のシステムを作った ◦ 共通で利⽤している • 社内でのツール開発やそのトラブルでの経験を⽣かす
• 「メンテナンスコストの低減」‧「シンプルな運⽤フロー」を⽬指して運⽤ ◦ あえて制限することで運⽤をシンプルにできる • 複数のサービスに跨ってサービスの価値向上のための⾏動をする