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

current_status_and_future_of_freee_deployment_flow

 current_status_and_future_of_freee_deployment_flow

20230416 freee技術の日
TAMARIBA Stage 15:45~16:00
freee会計のデプロイフローの現状とこれから_miyahika
登壇資料

hikaru-miyazawa

April 19, 2023
Tweet

More Decks by hikaru-miyazawa

Other Decks in Programming

Transcript

  1.   Agenda • freee会計のデプロイツール ◦ ArgoCD ◦ image build&push の仕組み

    ◦ Perfect Sutekakuとは? • freee会計のデプロイフロー ◦ staging デプロイ ◦ staging環境確認作業 ◦ master デプロイ ◦ canary release • freeeにおけるこれからのデプロイ • まとめ
  2.   ArgoCD - freee会計のデプロイツール Argo CDとは Argo CD はKubernetes⽤の継続的デリバリーツールです。 Argo

    CDは、gitリポジトリで管理されたKubernetesのマニフェストの 変更を、Kubernetesクラスタへデプロイします。 Argo CDは GitOps という⼿法に基づいています。
  3.   image build&push の仕組み - freee会計のデプロイツール Github Actions • assets

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

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

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

    ◦ PR作成‧マージ ▪ developブランチ‧stagingブランチ‧masterブランチ
  7.   Perfect Sutekaku とは? - freee会計のデプロイツール • Perfect Sutekaku ができること

    ◦ ステージング確認リストを作成‧Slackへ表⽰ ◦ デプロイ可否チェック ◦ ステージング確認⾃動催促メッセージ ◦ ステージングデプロイ/マスターデプロイ完了通知
  8.   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になっているので⾃動で⾏われる。
  9.   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する。
  10.   canary release - freee会計のデプロイフロー production 環境では、ArgoCDでcanary releaseを採⽤している。 • デプロイ後30分経つまでは、web/api/workerなどのリソースの

    約5%のみが新バージョンのアプリケーションにリクエストされるよ うになる。 • 30分が経過すると⾃動で100%新バージョンに適⽤される。 全体にすぐに適⽤したい場合はskip⽤のscriptを実⾏することで、 canary releaseをスキップして変更を即時適⽤することができる。
  11.   freeeにおけるこれからのデプロイ deliveryの⽣産性を測って常に可視化されている • 4keys ◦ デプロイ頻度 ◦ リードタイム •

    デプロイの⾃動化を進めより少ないstep‧⼯数でデプロイできるようにする ◦ サービス復旧の所要時間 • 障害になりうる変更を検知して⾃動ロールバックが実施される ◦ 変更失敗率 • e2e-infraを持続可能なテスト環境として運⽤している • 新規プロダクト⽴ち上げ時 ◦ CI/CDの設定の⼤部分が⾃動で設定される ◦ チームやプロダクトごとの差異が少ないように標準化されている
  12.   まとめ • freee会計のデプロイツール ◦ ArgoCD ◦ image build&push の仕組み

    ◦ Perfect Sutekakuとは? • freee会計のデプロイフロー ◦ staging デプロイ ◦ staging環境確認作業 ◦ master デプロイ ◦ canary release • freeeにおけるこれからのデプロイ