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
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
2.1k
プロポーザル サポートガイドを読み解いていこう!
syossan27
3
850
幻滅期を越える サイトリライアビリティ エンジニアリング
syossan27
1
240
一人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
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
240
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
150
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
0
150
スマートグラスで並列バイブコーディング
hyshu
0
280
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.6k
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
340
フィードバックで育てるAI開発
kotaminato
1
100
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.7k
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
160
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
14
6.7k
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
220
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
760
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
6.2k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
310
The SEO Collaboration Effect
kristinabergwall1
1
500
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
350
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
180
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
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