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
FanstaでのCI/CD・自動化の取り組み
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
syossan27
June 20, 2022
Programming
250
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
FanstaでのCI/CD・自動化の取り組み
syossan27
June 20, 2022
More Decks by syossan27
See All by syossan27
一人SREが歩んだPlatform Engineeringスモールスタート実践録 ~ クラウドネイティブ会議版 ~
syossan27
4
2k
プロポーザル サポートガイドを読み解いていこう!
syossan27
3
840
幻滅期を越える サイトリライアビリティ エンジニアリング
syossan27
1
230
一人SREが歩んだ Platform Engineering スモールスタート実践録
syossan27
2
1.9k
SREって何? 現場で学んだサイト信頼性の第一歩
syossan27
5
1.7k
知識0からカンファレンスやってみたらこうなった!
syossan27
5
730
突然のメモリ使用率上昇へ対応! k8sカスタムコントローラー開発事例
syossan27
2
560
監視 やばい
syossan27
12
11k
最先端を追う前に、まず広めよう! 〜AIツールの普及活動のすすめ〜
syossan27
2
1.6k
Other Decks in Programming
See All in Programming
A2UI という光を覗いてみる
satohjohn
1
170
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
1
610
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
180
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
270
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
220
Oxlintのカスタムルールの現況
syumai
6
1.2k
OS アップデート対応の取り組み方がもっと共有されてほしい
andpad
0
110
Agentic UI
manfredsteyer
PRO
0
210
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
140
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
180
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
260
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
230
Featured
See All Featured
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
600
4 Signs Your Business is Dying
shpigford
187
22k
Statistics for Hackers
jakevdp
799
230k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
210
Navigating Team Friction
lara
192
16k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
240
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
610
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.6k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.6k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
Transcript
FanstaでのCI/CD・自動化 の取り組み
・Twitter: syossan27 ・何でもやる便利なおじさんです (最近はSREの真似事をやっています)
©mixi, Inc, All rights reserverd. 前置き • 時間が短いので進行が早くなりますがご容赦ください • Fanstaではアプリも扱っていますが、時間の関係上Webのみの説明とさせていただきます
• 大部分が私の加入する前に構築されていたため、技術選定などについては質問にお答え出来ない 部分もございます • Fanstaはリリース1年ほどが経ったばかり&SRE活動をやっているのが私一人のまだまだやりた いことがやれてないプロジェクト、という前提でお聞きくださると幸いです 3
©mixi, Inc, All rights reserverd. Fanstaでの取り組み - CI/CD 4
©mixi, Inc, All rights reserverd. Fanstaでの取り組み - CI/CD 5
©mixi, Inc, All rights reserverd. Fanstaでの取り組み - CI • API(Ruby/Rails)
• RSpec • RuboCop • Frontend(Next.js/TypeScript) • ESLint • Jest • Lighthouse • 計測結果をCircleCIのアーティファクトに乗せているが活用出来てない・・・ • リリースPR自動作成くん • featureブランチがdevelopブランチにマージされるとstagingブランチへのリリースPRを作成 • developブランチがstagingブランチへマージされるとproductionブランチへのリリースPRを 作成 • 内訳はgit-pr-releaseを各ブランチへのpushをトリガーにしたGitHub Actionsで動かしてます 6
©mixi, Inc, All rights reserverd. Fanstaでの取り組み - CD - GitHub
-> CircleCI • デプロイタグを契機にCircleCIが動き出す • GitHub ActionsでPRのデプロイコメントを検知してデプロイタグ付け • このタイミングで「開発環境の使用状況分かるくん」も動き出す ※「開発環境の使用状況分かるくん」についてはこちらを参照 https://syossan.hateblo.jp/entry/2021/12/22 7
©mixi, Inc, All rights reserverd. Fanstaでの取り組み - CI/CD 8
©mixi, Inc, All rights reserverd. Fanstaでの取り組み - CD - Docker
image • CircleCIでDocker imageをbuild, push • google/cloud-sdkをExecuterに設定 • Docker imageをbuildし、CIRCLE_SHA1をtagにする • GCPのContainer RegistryにDocker imageをpush • 部内で作成されたデプロイツールでIaCリポジトリへコミット • yq(jqのYAML版)やkustomizeで、IaCリポジトリにあるmanifestsのimage tagを書き換えるPRやコミットを送る • FanstaのIaCリポジトリでは、Helmでk8s manifestsを管理しています • (ついでに)またCIの取り組みとして、kubeconformを使ったvalidationを行っています • ArgoCD Image Updaterでも似たようなことをしていたりします https://mixi-developers.mixi.co.jp/kubeconform-2bb477371e06 9
©mixi, Inc, All rights reserverd. Fanstaでの取り組み - CI/CD 10
©mixi, Inc, All rights reserverd. Fanstaでの取り組み - CD - ArgoCD
• 最後にIaCリポジトリの変更を検知したArgoCDがGKEへデプロイ • ArgoCD自体もGKEで動かしています • ドキュメントも充実していて普段動かすには困らないんですが、ArgoCD自体の不具合が起こった時に解決するの がめんどい・・・(ログが追い辛い • ArgoCD Notificationsでデプロイが終わったらSlackで通知、とか出来たりします • 類似ツールにSpinnakerやCAさんが作られているPipeCDなどがあったりします ※各種ツールの比較についてはこちらの記事が分かりやすかったので紹介 https://www.pospome.work/entry/2022/02/19/153136 pospomeのプログラミング日記 - k8sの各種CDツールを比較する 11
©mixi, Inc, All rights reserverd. Fanstaでの取り組み - CI/CD - まとめ
• 基本に忠実なCI/CDを組んでいる!・・・つもり • git-ops-toolのところが他社ではArgoCD Image Updaterになっていたりするかも • CIがもうちょっとなんか出来んかとは思っているところ(継続的にコードカバレッジ見たいとか要望は出ている) • ArgoCD Notificationとかもっと色々積んでみたいが検証時間が・・・ • 現状維持を良しとしない • 気持ち的には「動いてるからまぁいっか」で済ませてしまいそうになる • より利便性を求めて開発者体験を上げるために改善箇所を見つけていく姿勢 • 開発者の「これ使いづらいんだよな〜」を拾い上げる施策などなど • Fanstaでは相談タイムを週1で設けている 12
©mixi, Inc, All rights reserverd. 【時間があったら】Fanstaでの取り組み - 自動化 • トイル(繰り返し手作業が発生するタスク)を見つけたら撲滅するよう、色々とちまちま作っている
• スクラム関連 • バーンダウンチャートを手動で管理していた • スプレッドシート × BQでポイント管理&バーンダウンチャート出力 • スプリントプランニングの際に今何ポイント積んだかが分かりづらかった • GitHub Project上にステータス毎の今のポイント数を表示するChrome拡張 • 通知関連 • ImageFluxの障害やメンテナンス情報がメールで来ていた • Slackに流すようにGAS作成 • インフラ作業をお任せしていたらIAPが外れていることがあった • IAPが外れているか都度確認するGAS作成 • PMがTwitterでFanstaのことが呟かれているか都度検索していた • SlackにFanstaに関するツイートが流れるようにGAS作成 その他etc… 13
©mixi, Inc, All rights reserverd. 【時間があったら】Fanstaでの取り組み - 自動化 • トイル(繰り返し手作業が発生するタスク)を見つけたら撲滅するよう、色々とちまちま作っている
• スクラム関連 • バーンダウンチャートを手動で管理していた • スプレッドシート × BQでポイント管理&バーンダウンチャート出力 • スプリントプランニングの際に今何ポイント積んだかが分かりづらかった • GitHub Project上にステータス毎の今のポイント数を表示するChrome拡張 • 通知関連 • ImageFluxの障害やメンテナンス情報がメールで来ていた • Slackに流すようにGAS作成 • インフラ作業をお任せしていたらIAPが外れていることがあった • IAPが外れているか都度確認するGAS作成 • PMがTwitterでFanstaのことが呟かれているか都度検索していた • SlackにFanstaに関するツイートが流れるようにGAS作成 その他etc… 14
©mixi, Inc, All rights reserverd. 【時間があったら】Fanstaでの取り組み - 自動化 - 抜粋解説
15
©mixi, Inc, All rights reserverd. 【時間があったら】Fanstaでの取り組み - 自動化 - 抜粋解説
16
©mixi, Inc, All rights reserverd. • Cloud Functions(Go) • GitHub
ProjectのCustom Fieldsでポイントを作成し管理 • GitHub Project betaの情報はGraphQL APIで取れるので、shurcooL/githubv4を使って取得 • 取得し加工したポイント情報をBigQueryに格納 • Google Spread Sheet • BQ連携するとBQテーブルがシートとして出力される • データを抽出してセルに起こす • GSSからGAS -> CFを実行するボタン作成 (認証を入れる場合直接は無理なので間接的に) • チャートをチェックする際に 都度CF実行&BQ更新 • 次のスプリントになったら抽出期間を変更 【時間があったら】Fanstaでの取り組み - 自動化 - 抜粋解説 17
©mixi, Inc, All rights reserverd. 【時間があったら】Fanstaでの取り組み - 自動化 - 抜粋解説
詳しくはこちらで! https://syossan.hateblo.jp/entry/2022/03/27/143904 18
©mixi, Inc, All rights reserverd. おわりに ザッと取り組みを話しましたが、何か一つでも得られるものがありましたら幸いです ご清聴ありがとうございました 19