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.8k
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.4k
スタートアップは Rails を使うべきか / Should Startups Ride on Rails?
yuyatakeyama
7
2.4k
Quipper のマイクロサービス化への道のり / Quipper's Road to Microservices
yuyatakeyama
5
1.8k
Quipper における SRE チームの紹介 ~僕が SRE になった理由~ / Why I Became an SRE at Quipper
yuyatakeyama
3
2.3k
Other Decks in Programming
See All in Programming
爆速の日経電子版開発の今
shinyaigeek
1
510
花き業界のサプライチェーンを繋げるプロダクト開発の進め方
userlike1
0
120
はてなリモートインターンシップ2022 インフラ 講義資料
hatena
4
2.1k
tidy_rpart
bk_18
0
560
Writing Greener Java Applications
hollycummins
0
330
Step Functions Distributed Map を使ってみた
codemountains
0
100
Excelの助けを借りて楽にシナリオを作ろう
rpa_niiyama
0
210
Spring BootとKubernetesで実現する今どきのDevOps入門
xblood
0
340
Remix + Cloudflare Pages + D1 で ポケモン SV のレンタルチームを検索できるアプリを作ってみた
kuroppe1819
4
1.3k
Refactor with using `available` and `deprecated`
417_72ki
3
380
ペパカレで入社した私が感じた2つのギャップと向き合い方
kosuke_ito
0
150
ECS Service Connectでマイクロサービスを繋いでみた
xblood
0
530
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
38
3.6k
From Idea to $5000 a Month in 5 Months
shpigford
374
44k
Web development in the modern age
philhawksworth
197
9.6k
Done Done
chrislema
178
14k
Build your cross-platform service in a week with App Engine
jlugia
221
17k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
7
570
The Pragmatic Product Professional
lauravandoore
21
3.4k
Building a Scalable Design System with Sketch
lauravandoore
451
31k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
109
16k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
217
21k
Rebuilding a faster, lazier Slack
samanthasiow
69
7.5k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
6
840
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