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
2k
プロポーザル サポートガイドを読み解いていこう!
syossan27
3
810
幻滅期を越える サイトリライアビリティ エンジニアリング
syossan27
1
230
一人SREが歩んだ Platform Engineering スモールスタート実践録
syossan27
2
1.8k
SREって何? 現場で学んだサイト信頼性の第一歩
syossan27
5
1.6k
知識0からカンファレンスやってみたらこうなった!
syossan27
5
710
突然のメモリ使用率上昇へ対応! k8sカスタムコントローラー開発事例
syossan27
2
550
監視 やばい
syossan27
12
11k
最先端を追う前に、まず広めよう! 〜AIツールの普及活動のすすめ〜
syossan27
2
1.6k
Other Decks in Programming
See All in Programming
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
160
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4k
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
530
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.6k
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
5
3.9k
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
250
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.6k
A2UI という光を覗いてみる
satohjohn
1
130
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
710
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
330
Spec-Driven Development with AI-Agents: From High-Level Requirements to Working Software
antonarhipov
2
490
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
2
280
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Navigating Team Friction
lara
192
16k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
580
Game over? The fight for quality and originality in the time of robots
wayneb77
1
190
Discover your Explorer Soul
emna__ayadi
2
1.1k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
560
How to make the Groovebox
asonas
2
2.2k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
190
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
[SF Ruby Conf 2025] Rails X
palkan
2
1.1k
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