Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
How Quipper Works with CircleCI
Yuya Takeyama
December 03, 2018
Programming
4
2.7k
How Quipper Works with CircleCI
Yuya Takeyama
December 03, 2018
Tweet
Share
More Decks by Yuya Takeyama
See All by Yuya Takeyama
スタディサプリ小中高のオブザーバビリティ / Observability in StudySapuri
yuyatakeyama
1
2.3k
スタートアップは Rails を使うべきか / Should Startups Ride on Rails?
yuyatakeyama
7
2.3k
Quipper のマイクロサービス化への道のり / Quipper's Road to Microservices
yuyatakeyama
5
1.7k
Quipper における SRE チームの紹介 ~僕が SRE になった理由~ / Why I Became an SRE at Quipper
yuyatakeyama
3
2.2k
Other Decks in Programming
See All in Programming
Lookerとdbtの共存
ttccddtoki
0
620
10歳の minne から、これから長く続くプロダクトを作るすべての人へ
tsumichan
9
3.6k
プロダクトのタイプ別 GraphQL クライアントの選び方
shozawa
0
8.2k
Better Angular Architectures: Architectures with Standalone Components @DWX2022
manfredsteyer
PRO
1
380
「困りごと」から始める個人開発
ikumatadokoro
4
250
AWS Config Custom Rule、ノーコードでできるかな?
watany
0
250
このタイミングで知っておきたい 開発生産性の高いエンジニア組織の特徴とは / dev-sumi-20220721-productivity-features
findyinc
7
2.6k
Recap CDN, Edge, WebAssembly | ワインと鍋.js#1
sadnessojisan
2
1.2k
More Than Micro Frontends: 3 Further Use Cases for Module Federation @DWX 2022
manfredsteyer
PRO
0
360
Efficient UI testing in Android
alexzhukovich
1
120
Google IO 2022 社内LT会 / What's new in Android development tools
shingo_kobayashi
0
390
WindowsコンテナDojo:第6回 Red Hat OpenShift入門
oniak3ibm
PRO
0
170
Featured
See All Featured
Web Components: a chance to create the future
zenorocha
303
40k
Thoughts on Productivity
jonyablonski
44
2.4k
Creatively Recalculating Your Daily Design Routine
revolveconf
207
10k
Scaling GitHub
holman
451
140k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
39
13k
The Mythical Team-Month
searls
210
39k
Fashionably flexible responsive web design (full day workshop)
malarkey
396
62k
Clear Off the Table
cherdarchuk
79
290k
Product Roadmaps are Hard
iamctodd
35
6.8k
Designing for Performance
lara
597
63k
Why You Should Never Use an ORM
jnunemaker
PRO
47
7.6k
Keith and Marios Guide to Fast Websites
keithpitt
404
21k
Transcript
How Quipper Works with CircleCI @yuya-takeyama
01 02 03 04 05 Agenda | 自己紹介 GitHub/CircleCI を中心としたワークフロー
CircleCI で monorepo を CI する Quipper で使っている CircleCI 関連ツールの紹介 まとめ
01 自己紹介
@yuya-takeyama ➔ 2015年9月~: Web Developer at Quipper ◆ Rails/Backone.js/React.js/React Native
などなど ➔ 2018年4月~: SRE at Quipper ◆ Kubernetes への移行や Kubernetes の運用およびその効率化 ◆ Kubernetes 環境への移行に向けた開発者のサポートもミッション ◆ インフラ・SRE としてはまだまだ修行中
02 GitHub/CircleCI を中心としたワークフロー
Quipper にとっての CircleCI ➔ ほぼ全てのリポジトリで CI/CD に利用している ◆ アプリケーションもインフラも ◆
Infrastructure as Code をかなり徹底してやってきている ➔ ぶっちゃけメチャメチャ依存度が高い ◆ CircleCI が止まるとデプロイとか止まってしまう ◆ 私とかであれば手動でなんとできるといえばできるけど、仕組み化できて ない... (その辺は追い追い)
GitHub/CircleCI を中心としたワークフロー ➔ 大きく分けて 2 種類 ◆ フィーチャーブランチをマージしてデプロイ ◆ master
にマージした後、デプロイ用のブランチにさらにマージしてデプロイ
フィーチャーブランチをマージするとデプロイされるパターン ➔ 細かくは... ◆ develop/master が分かれてたり ◆ release でリリーステスト環境が作られたり ◆
フィーチャーブランチもステージング環境にデプロイされたり ➔ アプリケーションはだいたいこのパターン ➔ インフラも一部はこのパターン ◆ miam による AWS IAM, roadworker による Route 53 の DNS
None
デプロイ用のブランチにさらにマージしてデプロイするパターン ➔ 一つのリポジトリからのデプロイ対象がたくさんある時に使用する ◆ Ansible, Terraform, Kubernetes クラスタ ➔ master
へのマージ時にはテストや差分の確認等のみ行われる ◆ 破壊的な変更はその時点ではしない ➔ release/*** というブランチにマージすると *** の環境へのデプロイが行われる ◆ 例: release/reverse-proxy-staging, release/reverse-proxy-production
None
None
03 CircleCI で monorepo を CI する
None
Monorepo について ➔ サブディレクトリごとに変更をシェルスクリプトで検知 ◆ 変更があったサービスだけテストを実行する・デプロイする ◆ CircleCI の機能でできてほしい... ➔
最適化が大変 ◆ 変更の有無によってコマンドの実行自体スキップするので、実行時間がバ ラバラ ◆ コマンド実行時だけ実行時間を Datadog に送っていい感じにモニタリング できるようにするツールを作ろうとしている
04 Quipper で使っている CircleCI 関連ツールの紹介
circle-ghc ➔ CircleCI の実行結果を GitHub の Pull Request にコメントしてくれる ◆
差分の出力ができるツールを使ったレビューにおいて大変便利 ➔ Quipper SRE @lamanotrama さん作 ➔ Bash のシェルスクリプトで書かれている ➔ オープンにしない理由は特にないのでめんどくさくて放置されている? ➔ 個人プロジェクトで使いたかったので Rust に移植した ◆ https://github.com/yuya-takeyama/circle-gh-tee
None
yuya-takeyama/circleci-queue-to-datadog ➔ CircleCI のジョブがどれぐらい実行されているか・キューがどれぐらい詰まって いるかを Datadog に記録する ➔ Performance Pricing
Plan にすればそもそも気にしなくてよくなるけど... ◆ その辺ちゃんと知らない頃に作った ◆ Quipper は頃合いを見つつ Performance Pricing Plan にしたい ◆ 現状 30 containers ➔ 管理者権限持ってるなら実行時間は管理画面からも見られる
実行中のジョブ キューで詰まっているジョブ
circleci-env ➔ CircleCI のプロジェクトごとの環境変数を Infrastructure as Code する ◆ Ruby
の DSL で定義できる ➔ 元 Quipper SRE の @hakobera さんの作 ➔ 秘密情報は vault で暗号化して保持・適用が可能 ➔ SSH 秘密鍵も管理できる ➔ Undocumented な API を使っているので現状未公開!!!
Undocumented な API ➔ DELETE /api/v1.1/project/:project_id/ssh-key ➔ GET /api/v1.1/project/:project_id/settings
05 まとめ
Quipper は CircleCI、 CircleCI Japan及び そのコミュニティのご発展を お祈りしています!
None