Slide 1

Slide 1 text

『家族アルバム みてね』の 安定リリースを支える EKS運用 @kohbis 【Chatwork × みてね勉強会】EKS&Aurora最新ノウハウ 2023.09.11

Slide 2

Slide 2 text

MIXI, Inc. About Me Kohei SUGIMOTO 株式会社MIXI 2022/04 ~『家族アルバム みてね』 SRE X/GitHub : kohbis

Slide 3

Slide 3 text

MIXI, Inc. Agenda 1. 『家族アルバム みてね』とは 2. 『家族アルバム みてね』の開発環境 3. Sandbox環境 4. Dev & Stg環境 5. Prod環境 6. まとめ

Slide 4

Slide 4 text

MIXI, Inc. 『家族アルバム みてね』

Slide 5

Slide 5 text

MIXI, Inc. 子どもの写真・動画を、無料・無制限に
 共有できるスマートフォンアプリです


Slide 6

Slide 6 text

MIXI, Inc. 家族アルバム みてね 世界中の家族の”こころのインフラ”を作る ● 2015年4月リリース ● 現在7言語・175の国と地域でサービスを提供 ● 海外では FamilyAlbum という名称で展開中 ● 2023年5月に利用者数が1,800万人を突破 ※1 ● 日本国内ではママやパパの約半数となる47.1% の方がご利用 ※2 ※1 iOS・Android™ アプリ登録者数、ブラウザ版登録者数の合計 ※2「みてね」登録時に入力されたお子さまの誕生日と厚生労働省発表「人口動態統計」から算出。2022年8月時点で47.1%

Slide 7

Slide 7 text

MIXI, Inc. 開発環境から見る 『家族アルバム みてね』のリリースフロー

Slide 8

Slide 8 text

MIXI, Inc. 『家族アルバム みてね』の開発環境 いわゆる開発環境 ・開発者ごとに独立した オンライン環境 ・統一された依存関係 ・K8sのマルチコンテナ Pod Prod環境 Stg環境 Dev環境 Sandbox環境 気軽に使える検証環境 ・AWS各サービスとの連 携 ・内部サービス間の連携 ・誰でもいつでも利用可 能 いわゆるQA環境 ・案件系のQA ・外部サービス連携 ・複数案件を並行してQA できるように2環境構成 どきどき本番環境

Slide 9

Slide 9 text

MIXI, Inc. 『家族アルバム みてね』のリリースフロー Prod環境 Stg環境 Dev環境 Sandbox環境 実装 動作 確認 動作 確認 QA QA依頼 軽微な修正, ライブラリのマイナーアップデートなど 開発者確認でよいもの

Slide 10

Slide 10 text

MIXI, Inc. リリースエンジニアリングの哲学(SRE本 第8章より) セルフサービスモデル ● 開発チームがリリース頻度と時期を決定できる 高速化 ● リリースを頻繁に行い、バージョン間変更を少なくする 密封ビルド ● ビルドマシン上のライブラリやその他ソフトウェアに影響されない ポリシーと手順の強制 ● コードの変更承認、リリースプロセス間の各手順、リリースの作成やデプロイなどレ イヤーごとに操作を行える人を指定する

Slide 11

Slide 11 text

MIXI, Inc. Sandbox環境

Slide 12

Slide 12 text

MIXI, Inc. Sandbox環境 ● 利用者はあるリポジトリの “自分の名 前.yaml” にSSH公開鍵を登録するのみ ● Argo CDが検知してApplicationを作成 ○ 開発マシンとなるPodやIngressを 自動構築 ● SSHして作業可能 ○ Remote SSH機能があるエディタ等 ● 名前.xxx.mitene.us でアプリケーショ ンにアクセス可能 The Kubernetes Icons Set https://github.com/kubernetes/community/blob/master/icons/README.md

Slide 13

Slide 13 text

MIXI, Inc. Sandbox環境 統一されたバージョン、解決済みの依存関係 → 問題の早期発見、安定した開発環境 Helm chartsによるIaC管理 → 設定変更を一括で全体に反映 自動構築による作成/削除が容易 → 新規参画者などの開発環境の準備工数が 削減 The Kubernetes Icons Set https://github.com/kubernetes/community/blob/master/icons/README.md

Slide 14

Slide 14 text

MIXI, Inc. Dev & Stg環境

Slide 15

Slide 15 text

MIXI, Inc. Dev & Stg環境 ● 利用者はあるリポジトリの “dev / stg.yaml” のサービスブランチ名を更 新するだけ ● 独自ツールがWebhookを受け取り該当 サービスのArgo CD Applicationを更新 ○ DeploymentのImage Tagを更新 ○ Argo CD Image Updaterに近い # dev.yaml app-a: “feature-xxx” app-b: “master” app-c: “main” …

Slide 16

Slide 16 text

MIXI, Inc. Dev & Stg環境 Dev環境 ● Slackの専用チャンネルに「これからDev使います」と一言書けば、いつでも誰でも利 用してよい Stg環境 ● QAチームが案件ごとに計画利用 ● 複数案件を同時並行してQAできるように2環境構成 ○ コスト節約のため、EKSクラスタやAuroraクラスタは共通 ● (補足)家族アルバム みてねの安定リリースを支えるMagicPod活用状況

Slide 17

Slide 17 text

MIXI, Inc. Prod環境

Slide 18

Slide 18 text

MIXI, Inc. Prod環境 ● 利用者はmain/masterブランチにマー ジするのみ ● 独自ツールがWebhookを〜(割愛) ● すべてのテストが通らなければリリー スされない ● 必ず最新のmain/masterがリリースさ れる →ビルドプロセス中に新しいコミット が積まれたら新しいコミットを優先

Slide 19

Slide 19 text

MIXI, Inc. Prod環境 - リリース後 ● New Relicのダッシュボードにて、リリース後に問題がないか簡易モニタリング ○ デプロイマーカーの利用 ○ 日次では毎朝SREがAWS、K8sなどの各種メトリクスをモニタリング ○ (補足)「家族アルバム みてね」におけるオブザーバビリティの取り組み at gihyo.jp ● 「小さくリリース」を実現できているため、問題が発生しロールバックした場合にも 影響は最小限 ○ メインリポジトリのリリース頻度は1日平均5〜6回(2023/08) ○ GitHub Dependabotによるマイナーバージョンアップデートは毎週実施

Slide 20

Slide 20 text

MIXI, Inc. まとめ

Slide 21

Slide 21 text

MIXI, Inc. まとめ ● 『家族アルバム みてね』は目的ごとの環境と自動化されたリリース手段を提供 ○ すぐに立ち上がり開発が開始できるSandbox環境 ○ いつでも誰でも気軽に利用できるDev環境 ○ 計画的に利用するStg環境 ● 柔軟かつ迅速なリリースをK8s, Argo CD + 独自アプリケーションで構築 ○ 問題発生時も短い復旧時間 ● 開発者全体での相乗効果により安定リリースを実現 ○ 開発チームの日々の積み重ね(豊富な単体テストなど) ○ 品質の高いQA(MagicPodの活用など)

Slide 22

Slide 22 text

MIXI, Inc.