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
How Quipper Works with CircleCI
Search
Yuya Takeyama
December 03, 2018
Programming
4
3.1k
How Quipper Works with CircleCI
Yuya Takeyama
December 03, 2018
Tweet
Share
More Decks by Yuya Takeyama
See All by Yuya Takeyama
標準技術と独自システムで作る「つらくない」SaaS アカウント管理 / Effortless SaaS Account Management with Standard Technologies & Custom Systems
yuyatakeyama
3
1.6k
プロダクト開発、インフラ、コーポレート、そしてAIとの共通言語としての Terraform / Terraform as a Common Language for Product Development, Infrastructure, Corporate Engineering, and AI
yuyatakeyama
7
2.3k
Terraformで実現するHR Driven Provisioningとアクセス制御の自動化 / HR Driven Provisioning and automation of access control using Terraform
yuyatakeyama
1
1.4k
GitHub Actions/Docker/Terraform/Renovate で最小限の Monorepo CD パイプラインを作る / Minimalistic Monorepo CD Pipeline with GitHub Actions, Docker, Terraform and Renovate
yuyatakeyama
5
660
コンパウンドスタートアップのためのスケーラブルでセキュアなInfrastructure as Codeパイプラインを考える / Scalable and Secure Infrastructure as Code Pipeline for a Compound Startup
yuyatakeyama
5
6.6k
スタディサプリ小中高のオブザーバビリティ / Observability in StudySapuri
yuyatakeyama
1
2.9k
スタートアップは Rails を使うべきか / Should Startups Ride on Rails?
yuyatakeyama
7
2.7k
Quipper のマイクロサービス化への道のり / Quipper's Road to Microservices
yuyatakeyama
5
2.2k
Quipper における SRE チームの紹介 ~僕が SRE になった理由~ / Why I Became an SRE at Quipper
yuyatakeyama
3
3.1k
Other Decks in Programming
See All in Programming
CSC509 Lecture 11
javiergs
PRO
0
310
生成AIを活用したリファクタリング実践 ~コードスメルをなくすためのアプローチ
raedion
0
110
Nitro v3
kazupon
2
320
モビリティSaaSにおけるデータ利活用の発展
nealle
0
580
Building AI with AI
inesmontani
PRO
1
250
仕様がそのままテストになる!Javaで始める振る舞い駆動開発
ohmori_yusuke
8
4.6k
TypeScript 5.9で使えるようになった import defer でパフォーマンス最適化を実現する
bicstone
1
380
Feature Flags Suck! - KubeCon Atlanta 2025
phodgson
0
160
AI 時代だからこそ抑えたい「価値のある」PHP ユニットテストを書く技術 #phpconfuk / phpcon-fukuoka-2025
shogogg
1
580
全員アーキテクトで挑む、 巨大で高密度なドメインの紐解き方
agatan
6
8.6k
なぜ強調表示できず ** が表示されるのか — Perlで始まったMarkdownの歴史と日本語文書における課題
kwahiro
12
7.2k
スタートアップを支える技術戦略と組織づくり
pospome
8
11k
Featured
See All Featured
Faster Mobile Websites
deanohume
310
31k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.3k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
We Have a Design System, Now What?
morganepeng
54
7.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.6k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
For a Future-Friendly Web
brad_frost
180
10k
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