【Chatwork × みてね勉強会】EKS&Aurora最新ノウハウでお話しした資料です https://mixi.connpass.com/event/293351/
『家族アルバム みてね』の安定リリースを支えるEKS運用@kohbis【Chatwork × みてね勉強会】EKS&Aurora最新ノウハウ2023.09.11
View Slide
MIXI, Inc.About MeKohei SUGIMOTO株式会社MIXI2022/04 ~『家族アルバム みてね』 SREX/GitHub : kohbis
MIXI, Inc.Agenda1. 『家族アルバム みてね』とは2. 『家族アルバム みてね』の開発環境3. Sandbox環境4. Dev & Stg環境5. Prod環境6. まとめ
MIXI, Inc.『家族アルバム みてね』
MIXI, Inc.子どもの写真・動画を、無料・無制限に 共有できるスマートフォンアプリです
MIXI, Inc.家族アルバム みてね世界中の家族の”こころのインフラ”を作る● 2015年4月リリース● 現在7言語・175の国と地域でサービスを提供● 海外では FamilyAlbum という名称で展開中● 2023年5月に利用者数が1,800万人を突破 ※1● 日本国内ではママやパパの約半数となる47.1%の方がご利用 ※2※1 iOS・Android™ アプリ登録者数、ブラウザ版登録者数の合計※2「みてね」登録時に入力されたお子さまの誕生日と厚生労働省発表「人口動態統計」から算出。2022年8月時点で47.1%
MIXI, Inc.開発環境から見る『家族アルバム みてね』のリリースフロー
MIXI, Inc.『家族アルバム みてね』の開発環境いわゆる開発環境・開発者ごとに独立したオンライン環境・統一された依存関係・K8sのマルチコンテナPodProd環境Stg環境Dev環境Sandbox環境気軽に使える検証環境・AWS各サービスとの連携・内部サービス間の連携・誰でもいつでも利用可能いわゆるQA環境・案件系のQA・外部サービス連携・複数案件を並行してQAできるように2環境構成どきどき本番環境
MIXI, Inc.『家族アルバム みてね』のリリースフローProd環境Stg環境Dev環境Sandbox環境実装動作確認動作確認QAQA依頼軽微な修正, ライブラリのマイナーアップデートなど開発者確認でよいもの
MIXI, Inc.リリースエンジニアリングの哲学(SRE本 第8章より)セルフサービスモデル● 開発チームがリリース頻度と時期を決定できる高速化● リリースを頻繁に行い、バージョン間変更を少なくする密封ビルド● ビルドマシン上のライブラリやその他ソフトウェアに影響されないポリシーと手順の強制● コードの変更承認、リリースプロセス間の各手順、リリースの作成やデプロイなどレイヤーごとに操作を行える人を指定する
MIXI, Inc.Sandbox環境
MIXI, Inc.Sandbox環境● 利用者はあるリポジトリの “自分の名前.yaml” にSSH公開鍵を登録するのみ● Argo CDが検知してApplicationを作成○ 開発マシンとなるPodやIngressを自動構築● SSHして作業可能○ Remote SSH機能があるエディタ等● 名前.xxx.mitene.us でアプリケーションにアクセス可能The Kubernetes Icons Sethttps://github.com/kubernetes/community/blob/master/icons/README.md
MIXI, Inc.Sandbox環境統一されたバージョン、解決済みの依存関係→ 問題の早期発見、安定した開発環境Helm chartsによるIaC管理→ 設定変更を一括で全体に反映自動構築による作成/削除が容易→ 新規参画者などの開発環境の準備工数が削減The Kubernetes Icons Sethttps://github.com/kubernetes/community/blob/master/icons/README.md
MIXI, Inc.Dev & Stg環境
MIXI, Inc.Dev & Stg環境● 利用者はあるリポジトリの “dev /stg.yaml” のサービスブランチ名を更新するだけ● 独自ツールがWebhookを受け取り該当サービスのArgo CD Applicationを更新○ DeploymentのImage Tagを更新○ Argo CD Image Updaterに近い# dev.yamlapp-a: “feature-xxx”app-b: “master”app-c: “main”…
MIXI, Inc.Dev & Stg環境Dev環境● Slackの専用チャンネルに「これからDev使います」と一言書けば、いつでも誰でも利用してよいStg環境● QAチームが案件ごとに計画利用● 複数案件を同時並行してQAできるように2環境構成○ コスト節約のため、EKSクラスタやAuroraクラスタは共通● (補足)家族アルバム みてねの安定リリースを支えるMagicPod活用状況
MIXI, Inc.Prod環境
MIXI, Inc.Prod環境● 利用者はmain/masterブランチにマージするのみ● 独自ツールがWebhookを〜(割愛)● すべてのテストが通らなければリリースされない● 必ず最新のmain/masterがリリースされる→ビルドプロセス中に新しいコミットが積まれたら新しいコミットを優先
MIXI, Inc.Prod環境 - リリース後● New Relicのダッシュボードにて、リリース後に問題がないか簡易モニタリング○ デプロイマーカーの利用○ 日次では毎朝SREがAWS、K8sなどの各種メトリクスをモニタリング○ (補足)「家族アルバム みてね」におけるオブザーバビリティの取り組み atgihyo.jp● 「小さくリリース」を実現できているため、問題が発生しロールバックした場合にも影響は最小限○ メインリポジトリのリリース頻度は1日平均5〜6回(2023/08)○ GitHub Dependabotによるマイナーバージョンアップデートは毎週実施
MIXI, Inc.まとめ
MIXI, Inc.まとめ● 『家族アルバム みてね』は目的ごとの環境と自動化されたリリース手段を提供○ すぐに立ち上がり開発が開始できるSandbox環境○ いつでも誰でも気軽に利用できるDev環境○ 計画的に利用するStg環境● 柔軟かつ迅速なリリースをK8s, Argo CD + 独自アプリケーションで構築○ 問題発生時も短い復旧時間● 開発者全体での相乗効果により安定リリースを実現○ 開発チームの日々の積み重ね(豊富な単体テストなど)○ 品質の高いQA(MagicPodの活用など)
MIXI, Inc.