Slide 1

Slide 1 text

freee会計のデプロイフロー の現状とこれから miyahika 2023年4⽉16⽇

Slide 2

Slide 2 text

ここに円に切り抜いた画像を入れてく ださい miyahika 2022年1⽉にfreeeに⼊社。前職は美容系スタートアップで、創業 メンバーとして⽴ち上げから参加。SREとしてサービスの基盤を 全て0から構築運⽤しました。freeeに⼊ってからはDeveloper eXperience Teamで、開発者体験を向上する取り組みを⾏ってき ました。 好きな技術:Kubernetes,Terraform,ArgoCD,Prometheus 趣味はカラオケ、ポケカ 開発者体験向上エンジニア(Developer eXperience Team)

Slide 3

Slide 3 text

  Agenda ● freee会計のデプロイツール ○ ArgoCD ○ image build&push の仕組み ○ Perfect Sutekakuとは? ● freee会計のデプロイフロー ○ staging デプロイ ○ staging環境確認作業 ○ master デプロイ ○ canary release ● freeeにおけるこれからのデプロイ ● まとめ

Slide 4

Slide 4 text

  ArgoCD - freee会計のデプロイツール Argo CDとは Argo CD はKubernetes⽤の継続的デリバリーツールです。 Argo CDは、gitリポジトリで管理されたKubernetesのマニフェストの 変更を、Kubernetesクラスタへデプロイします。 Argo CDは GitOps という⼿法に基づいています。

Slide 5

Slide 5 text

  image build&push の仕組み - freee会計のデプロイツール Github Actions ● assets build assetsとは、JavaScriptやCSSといったフロントエンドに配布される ファイル群。build 成果物は、S3にuploadされる。 ● build&push DockerImageのbuildとECR pushを⾏なっている。 ● image tag 更新PR作成

Slide 6

Slide 6 text

  image build&push の仕組み - freee会計のデプロイツール ● build&push ○ DockerImageのbuildとECR push ● image tag 更新PR作成

Slide 7

Slide 7 text

  Perfect Sutekaku とは? - freee会計のデプロイツール ● Perfect Sutekaku とは? ○ freee社内向けのデプロイ補助ツール ○ firebase functionsで動いている ○ WEB UIで操作出来る

Slide 8

Slide 8 text

  Perfect Sutekaku とは? - freee会計のデプロイツール ● Perfect Sutekaku ができること ○ PR作成‧マージ ■ developブランチ‧stagingブランチ‧masterブランチ ○ ステージング確認リストを作成‧Slackへ表⽰ ○ デプロイ可否チェック ○ ステージング確認⾃動催促メッセージ ○ ステージングデプロイ/マスターデプロイ完了通知 ● Perfect Sutekaku ができないこと ○ デプロイ

Slide 9

Slide 9 text

  Perfect Sutekaku とは? - freee会計のデプロイツール ● Perfect Sutekaku の画⾯とSlack通知 ○ PR作成‧マージ ■ developブランチ‧stagingブランチ‧masterブランチ

Slide 10

Slide 10 text

  Perfect Sutekaku とは? - freee会計のデプロイツール ● Perfect Sutekaku ができること ○ ステージング確認リストを作成‧Slackへ表⽰ ○ デプロイ可否チェック ○ ステージング確認⾃動催促メッセージ ○ ステージングデプロイ/マスターデプロイ完了通知

Slide 11

Slide 11 text

  stagingデプロイ - freee会計のデプロイフロー 1. develop to staging PRを作成する。  perfect-sutekakuの画⾯からPRを作成する。  新たに追加されたコミットのみのPRを作成できる。 2. develop to staging PRをマージする ● Github Actionsによって ○ assets Build と S3 Push ○ image Build と ECR Push ○ image tag 置き換えPRの作成 3. image tagを置き換えるPRをマージする。 4. ArgoCDでstagingデプロイを⾏う  Auto Syncになっているので⾃動で⾏われる。

Slide 12

Slide 12 text

  staging環境確認 - freee会計のデプロイフロー デプロイにPRが含まれている開発者に向けて、ステージングPR動作確 認のお願いがsutekaku-catによりメンションされる。 staging環境で以下の確認を⾏う。 ● 障害につながる現象が起こっていないか確認 ● ⾃分のコミットに関係しそうなBugsnagが⾶んでいないか ● コミットしたPR内容が正しく動いているか  →PR内容に問題があった場合Hotfix対応をする。

Slide 13

Slide 13 text

  staging環境確認 - freee会計のデプロイフロー QAチームの確認 ● E2Eテストが完了しているか、また落ちていないかどうか

Slide 14

Slide 14 text

  masterデプロイ - freee会計のデプロイフロー 1. staging to master PRを作成する。 2. staging to master PRをマージする 3. image tagを置き換えるPRをマージする。 4. ArgoCDでmasterデプロイを⾏う  production ArgoCDは Auto SyncがONになっていないので  ⼿動でSyncする。

Slide 15

Slide 15 text

  canary release - freee会計のデプロイフロー production 環境では、ArgoCDでcanary releaseを採⽤している。 ● デプロイ後30分経つまでは、web/api/workerなどのリソースの 約5%のみが新バージョンのアプリケーションにリクエストされるよ うになる。 ● 30分が経過すると⾃動で100%新バージョンに適⽤される。 全体にすぐに適⽤したい場合はskip⽤のscriptを実⾏することで、 canary releaseをスキップして変更を即時適⽤することができる。

Slide 16

Slide 16 text

  freeeにおけるこれからのデプロイ deliveryの⽣産性を測って常に可視化されている ● 4keys ○ デプロイ頻度 ○ リードタイム ● デプロイの⾃動化を進めより少ないstep‧⼯数でデプロイできるようにする ○ サービス復旧の所要時間 ● 障害になりうる変更を検知して⾃動ロールバックが実施される ○ 変更失敗率 ● e2e-infraを持続可能なテスト環境として運⽤している ● 新規プロダクト⽴ち上げ時 ○ CI/CDの設定の⼤部分が⾃動で設定される ○ チームやプロダクトごとの差異が少ないように標準化されている

Slide 17

Slide 17 text

  まとめ ● freee会計のデプロイツール ○ ArgoCD ○ image build&push の仕組み ○ Perfect Sutekakuとは? ● freee会計のデプロイフロー ○ staging デプロイ ○ staging環境確認作業 ○ master デプロイ ○ canary release ● freeeにおけるこれからのデプロイ

Slide 18

Slide 18 text

No content