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
22k
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
9.5k
Practices_for_improving_freee_development_productivity
hikarumiyazawa
0
5.7k
ArgoCD_version_up_merit_and_precaution
hikarumiyazawa
1
600
CircleCI初心者が、AWS/EC2へWEBページの反映作業を自動化してみた!
hikarumiyazawa
1
340
Other Decks in Programming
See All in Programming
Defying Front-End Inertia: Inertia.js on Rails
skryukov
0
460
Develop Faster With FrankenPHP
dunglas
2
3.2k
remix + cloudflare workers (DO) docker上でいい感じに開発する
yoshidatomoaki
0
130
Preact、HooksとSignalsの両立 / Preact: Harmonizing Hooks and Signals
ssssota
1
1.4k
新しいPHP拡張モジュールインストール方法「PHP Installer for Extensions (PIE)」を使ってみよう!
cocoeyes02
0
340
AWS で実現する安全な AI エージェントの作り方 〜 Bedrock Engineer の実装例を添えて 〜 / how-to-build-secure-ai-agents
gawa
8
710
Ruby's Line Breaks
yui_knk
2
470
S3静的ホスティング+Next.js静的エクスポート で格安webアプリ構築
iharuoru
0
220
プロダクト横断分析に役立つ、事前集計しないサマリーテーブル設計
hanon52_
2
390
「”誤った使い方をすることが困難”な設計」で良いコードの基礎を固めよう / phpcon-odawara-2025
taniguhey
0
120
Code smarter, not harder - How AI Coding Tools Boost Your Productivity | Webinar 2025
danielsogl
0
120
コンテナでLambdaをデプロイするときに知っておきたかったこと
_takahash
0
180
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
How STYLIGHT went responsive
nonsquared
99
5.5k
Gamification - CAS2011
davidbonilla
81
5.2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
135
33k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
19
1.1k
Building an army of robots
kneath
304
45k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
Bash Introduction
62gerente
611
210k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.7k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
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