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
FanstaでのCI/CD・自動化の取り組み
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
syossan27
June 20, 2022
Programming
270
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
不具合issueを撲滅! SREsとQAチームの連携事例のご紹介
syossan27
3
620
数値変えただけで年間約100万円コスト削減した話
syossan27
4
970
一人でちいさくはじめる Platform Engineering
syossan27
4
3.2k
一人SREが歩んだPlatform Engineeringスモールスタート実践録 ~ クラウドネイティブ会議版 ~
syossan27
4
2.4k
プロポーザル サポートガイドを読み解いていこう!
syossan27
3
1.1k
幻滅期を越える サイトリライアビリティ エンジニアリング
syossan27
1
290
一人SREが歩んだ Platform Engineering スモールスタート実践録
syossan27
2
2.1k
SREって何? 現場で学んだサイト信頼性の第一歩
syossan27
5
1.9k
知識0からカンファレンスやってみたらこうなった!
syossan27
5
820
Other Decks in Programming
See All in Programming
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
3
1.4k
AI Augmentation Techniques with Liberty
ivargrimstad
1
400
선언형 햅틱 라이브러리 진동을 소개합니다
l2hyunwoo
1
300
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
360
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
220
SFCで実現する病院・医療システムの動的組み立て式UI
koukimiura
1
170
高橋メソッドでCVE解説シリーズ 〜CVE-2026-112816〜
hakkadaikon
0
230
AIが実装を担う時代の「技術設計」と「チームマネジメント」
kamina_zzz
2
230
AI時代のFlutter品質設計 — アプリ品質を守るQuality Layers
omatty198
0
360
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
140
Getting Started with Vibe Coding
miccheng
0
190
私なりのハーネスエンジニアリング ~独自の言語処理系の開発を通して~
seosoft
0
180
Featured
See All Featured
Designing for Timeless Needs
cassininazir
1
550
How to train your dragon (web standard)
notwaldorf
96
6.9k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Paper Plane
katiecoart
PRO
5
55k
The SEO Collaboration Effect
kristinabergwall1
1
620
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.9k
It's Worth the Effort
3n
188
29k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
330
What the history of the web can teach us about the future of AI
inesmontani
PRO
3
790
Mind Mapping
helmedeiros
1
430
The Language of Interfaces
destraynor
162
27k
Test your architecture with Archunit
thirion
2
2.5k
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