Upgrade to Pro — share decks privately, control downloads, hide ads and more …

『家族アルバム みてね』の安定リリースを支えるEKS運用 / FamilyAlbum release-flow on EKS

kohbis
September 11, 2023

『家族アルバム みてね』の安定リリースを支えるEKS運用 / FamilyAlbum release-flow on EKS

【Chatwork × みてね勉強会】EKS&Aurora最新ノウハウでお話しした資料です
https://mixi.connpass.com/event/293351/

kohbis

September 11, 2023
Tweet

More Decks by kohbis

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. MIXI, Inc.
    子どもの写真・動画を、無料・無制限に

    共有できるスマートフォンアプリです


    View Slide

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

    View Slide

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

    View Slide

  8. MIXI, Inc.
    『家族アルバム みてね』の開発環境
    いわゆる開発環境
    ・開発者ごとに独立した
    オンライン環境
    ・統一された依存関係
    ・K8sのマルチコンテナ
    Pod
    Prod環境
    Stg環境
    Dev環境
    Sandbox環境
    気軽に使える検証環境
    ・AWS各サービスとの連

    ・内部サービス間の連携
    ・誰でもいつでも利用可

    いわゆるQA環境
    ・案件系のQA
    ・外部サービス連携
    ・複数案件を並行してQA
    できるように2環境構成
    どきどき本番環境

    View Slide

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

    View Slide

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

    View Slide

  11. MIXI, Inc.
    Sandbox環境

    View Slide

  12. 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

    View Slide

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

    View Slide

  14. MIXI, Inc.
    Dev & Stg環境

    View Slide

  15. 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”

    View Slide

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

    View Slide

  17. MIXI, Inc.
    Prod環境

    View Slide

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

    View Slide

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

    View Slide

  20. MIXI, Inc.
    まとめ

    View Slide

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

    View Slide

  22. MIXI, Inc.

    View Slide