Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
current_status_and_future_of_freee_deployment_flow
Search
hikaru-miyazawa
April 19, 2023
Programming
0
24k
current_status_and_future_of_freee_deployment_flow
20230416 freee技術の日
TAMARIBA Stage 15:45~16:00
freee会計のデプロイフローの現状とこれから_miyahika
登壇資料
hikaru-miyazawa
April 19, 2023
Tweet
Share
More Decks by hikaru-miyazawa
See All by hikaru-miyazawa
Small_Start_Conscious_Development_Productivity_Improvement_Practices_at_freee
hikarumiyazawa
3
14k
Practices_for_improving_freee_development_productivity
hikarumiyazawa
0
9.9k
ArgoCD_version_up_merit_and_precaution
hikarumiyazawa
1
680
CircleCI初心者が、AWS/EC2へWEBページの反映作業を自動化してみた!
hikarumiyazawa
1
370
Other Decks in Programming
See All in Programming
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.2k
Pythonではじめるオープンデータ分析〜書籍の紹介と書籍で紹介しきれなかった事例の紹介〜
welliving
3
850
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
920
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2k
AtCoder Conference 2025
shindannin
0
1k
Fragmented Architectures
denyspoltorak
0
140
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.6k
2年のAppleウォレットパス開発の振り返り
muno92
PRO
0
190
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
160
rack-attack gemによるリクエスト制限の失敗と学び
pndcat
0
260
dchart: charts from deck markup
ajstarks
3
970
高速開発のためのコード整理術
sutetotanuki
1
330
Featured
See All Featured
HDC tutorial
michielstock
1
330
Writing Fast Ruby
sferik
630
62k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Mind Mapping
helmedeiros
PRO
0
55
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
180
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
300
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
270
The World Runs on Bad Software
bkeepers
PRO
72
12k
KATA
mclloyd
PRO
34
15k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
75
Code Review Best Practice
trishagee
74
19k
Transcript
freee会計のデプロイフロー の現状とこれから miyahika 2023年4⽉16⽇
ここに円に切り抜いた画像を入れてく ださい miyahika 2022年1⽉にfreeeに⼊社。前職は美容系スタートアップで、創業 メンバーとして⽴ち上げから参加。SREとしてサービスの基盤を 全て0から構築運⽤しました。freeeに⼊ってからはDeveloper eXperience Teamで、開発者体験を向上する取り組みを⾏ってき ました。 好きな技術:Kubernetes,Terraform,ArgoCD,Prometheus
趣味はカラオケ、ポケカ 開発者体験向上エンジニア(Developer eXperience Team)
Agenda • freee会計のデプロイツール ◦ ArgoCD ◦ image build&push の仕組み
◦ Perfect Sutekakuとは? • freee会計のデプロイフロー ◦ staging デプロイ ◦ staging環境確認作業 ◦ master デプロイ ◦ canary release • freeeにおけるこれからのデプロイ • まとめ
ArgoCD - freee会計のデプロイツール Argo CDとは Argo CD はKubernetes⽤の継続的デリバリーツールです。 Argo
CDは、gitリポジトリで管理されたKubernetesのマニフェストの 変更を、Kubernetesクラスタへデプロイします。 Argo CDは GitOps という⼿法に基づいています。
image build&push の仕組み - freee会計のデプロイツール Github Actions • assets
build assetsとは、JavaScriptやCSSといったフロントエンドに配布される ファイル群。build 成果物は、S3にuploadされる。 • build&push DockerImageのbuildとECR pushを⾏なっている。 • image tag 更新PR作成
image build&push の仕組み - freee会計のデプロイツール • build&push ◦ DockerImageのbuildとECR
push • image tag 更新PR作成
Perfect Sutekaku とは? - freee会計のデプロイツール • Perfect Sutekaku とは?
◦ freee社内向けのデプロイ補助ツール ◦ firebase functionsで動いている ◦ WEB UIで操作出来る
Perfect Sutekaku とは? - freee会計のデプロイツール • Perfect Sutekaku ができること
◦ PR作成‧マージ ▪ developブランチ‧stagingブランチ‧masterブランチ ◦ ステージング確認リストを作成‧Slackへ表⽰ ◦ デプロイ可否チェック ◦ ステージング確認⾃動催促メッセージ ◦ ステージングデプロイ/マスターデプロイ完了通知 • Perfect Sutekaku ができないこと ◦ デプロイ
Perfect Sutekaku とは? - freee会計のデプロイツール • Perfect Sutekaku の画⾯とSlack通知
◦ PR作成‧マージ ▪ developブランチ‧stagingブランチ‧masterブランチ
Perfect Sutekaku とは? - freee会計のデプロイツール • Perfect Sutekaku ができること
◦ ステージング確認リストを作成‧Slackへ表⽰ ◦ デプロイ可否チェック ◦ ステージング確認⾃動催促メッセージ ◦ ステージングデプロイ/マスターデプロイ完了通知
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になっているので⾃動で⾏われる。
staging環境確認 - freee会計のデプロイフロー デプロイにPRが含まれている開発者に向けて、ステージングPR動作確 認のお願いがsutekaku-catによりメンションされる。 staging環境で以下の確認を⾏う。 • 障害につながる現象が起こっていないか確認 •
⾃分のコミットに関係しそうなBugsnagが⾶んでいないか • コミットしたPR内容が正しく動いているか →PR内容に問題があった場合Hotfix対応をする。
staging環境確認 - freee会計のデプロイフロー QAチームの確認 • E2Eテストが完了しているか、また落ちていないかどうか
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する。
canary release - freee会計のデプロイフロー production 環境では、ArgoCDでcanary releaseを採⽤している。 • デプロイ後30分経つまでは、web/api/workerなどのリソースの
約5%のみが新バージョンのアプリケーションにリクエストされるよ うになる。 • 30分が経過すると⾃動で100%新バージョンに適⽤される。 全体にすぐに適⽤したい場合はskip⽤のscriptを実⾏することで、 canary releaseをスキップして変更を即時適⽤することができる。
freeeにおけるこれからのデプロイ deliveryの⽣産性を測って常に可視化されている • 4keys ◦ デプロイ頻度 ◦ リードタイム •
デプロイの⾃動化を進めより少ないstep‧⼯数でデプロイできるようにする ◦ サービス復旧の所要時間 • 障害になりうる変更を検知して⾃動ロールバックが実施される ◦ 変更失敗率 • e2e-infraを持続可能なテスト環境として運⽤している • 新規プロダクト⽴ち上げ時 ◦ CI/CDの設定の⼤部分が⾃動で設定される ◦ チームやプロダクトごとの差異が少ないように標準化されている
まとめ • freee会計のデプロイツール ◦ ArgoCD ◦ image build&push の仕組み
◦ Perfect Sutekakuとは? • freee会計のデプロイフロー ◦ staging デプロイ ◦ staging環境確認作業 ◦ master デプロイ ◦ canary release • freeeにおけるこれからのデプロイ
None