Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
current_status_and_future_of_freee_deployment_flow
Search
hikaru-miyazawa
April 19, 2023
Programming
24k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
current_status_and_future_of_freee_deployment_flow
20230416 freee技術の日
TAMARIBA Stage 15:45~16:00
freee会計のデプロイフローの現状とこれから_miyahika
登壇資料
hikaru-miyazawa
April 19, 2023
More Decks by hikaru-miyazawa
See All by hikaru-miyazawa
Small_Start_Conscious_Development_Productivity_Improvement_Practices_at_freee
hikarumiyazawa
3
17k
Practices_for_improving_freee_development_productivity
hikarumiyazawa
0
13k
ArgoCD_version_up_merit_and_precaution
hikarumiyazawa
1
740
CircleCI初心者が、AWS/EC2へWEBページの反映作業を自動化してみた!
hikarumiyazawa
1
400
Other Decks in Programming
See All in Programming
アクセシビリティから考える情報設計
high_g_engineer
0
380
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
650
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
2.8k
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
200
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
0
140
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
540
Jetpack Compose メカニズム
skydoves
0
470
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
560
スマート反転とウェブアクセシビリティ
camiha
0
210
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
170
一人だけ、Kiroが静止する日
hideg
0
130
SREの越境 / SRE Collaboration
y0hgi
2
270
Featured
See All Featured
Thoughts on Productivity
jonyablonski
76
5.4k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
550
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Why Our Code Smells
bkeepers
PRO
340
58k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
KATA
mclloyd
PRO
35
15k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
360
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
290
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
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