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
23k
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
10k
Practices_for_improving_freee_development_productivity
hikarumiyazawa
0
6.4k
ArgoCD_version_up_merit_and_precaution
hikarumiyazawa
1
610
CircleCI初心者が、AWS/EC2へWEBページの反映作業を自動化してみた!
hikarumiyazawa
1
340
Other Decks in Programming
See All in Programming
エンジニアが挑む、限界までの越境
nealle
1
340
マイコンでもRustのtestがしたい/KernelVM Kansai 11
tnishinaga
1
920
知識0からカンファレンスやってみたらこうなった!
syossan27
5
280
AIコーディングの本質は“コード“ではなく“構造“だった / The essence of AI coding is not “code” but "structure
seike460
PRO
2
500
開発者フレンドリーで顧客も満足?Platformの秘密
algoartis
0
230
Design Pressure
hynek
0
140
VibeCoding時代のエンジニアリング
daisuketakeda
0
240
GitHub Copilot for Azureを使い倒したい
ymd65536
1
340
CursorとDevinが仲間!?AI駆動で新規プロダクト開発に挑んだ3ヶ月を振り返る / A Story of New Product Development with Cursor and Devin
rkaga
5
1.1k
実践Webフロントパフォーマンスチューニング
cp20
45
10k
クラス設計の手順
akikogoto
0
120
状態と共に暮らす:ステートフルへの挑戦
ypresto
3
1.3k
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
268
20k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Balancing Empowerment & Direction
lara
0
32
For a Future-Friendly Web
brad_frost
177
9.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
40
7.3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
33k
Unsuck your backbone
ammeep
671
58k
BBQ
matthewcrist
88
9.6k
Embracing the Ebb and Flow
colly
85
4.7k
Being A Developer After 40
akosma
91
590k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
710
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.7k
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