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
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
160
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
150
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
440
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
470
TAKTでAI駆動開発の品質を設計する
j5ik2o
6
1k
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
510
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
1.9k
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
260
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
450
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.3k
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
660
Agentic UI
manfredsteyer
PRO
0
110
Featured
See All Featured
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
Optimising Largest Contentful Paint
csswizardry
37
3.7k
The untapped power of vector embeddings
frankvandijk
2
1.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
460
Crafting Experiences
bethany
1
170
What's in a price? How to price your products and services
michaelherold
247
13k
Done Done
chrislema
186
16k
Amusing Abliteration
ianozsvald
1
200
BBQ
matthewcrist
89
10k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
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