Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
ピクスタのエンジニアリングとCircleCI / Software Engineering with CircleCI at PIXTA
yasaichi
January 16, 2020
Technology
1
260
ピクスタのエンジニアリングとCircleCI / Software Engineering with CircleCI at PIXTA
CircleCI ユーザーコミュニティミートアップ#8(2020/01/16)
yasaichi
January 16, 2020
Tweet
Share
More Decks by yasaichi
See All by yasaichi
Active Recordから考える次の10年を見据えた技術選定 / Architecture decision for the next 10 years at PIXTA
yasaichi
46
17k
Active Recordから考える次世代のRuby on Railsの方向性 / Directions for the next generation of Ruby on Rails: From the viewpoint of its Active Record
yasaichi
36
16k
Ruby on Railsの正体と向き合い方 / What is Ruby on Rails and how to deal with it?
yasaichi
131
75k
SSR以後の世界へ / techcamp05
yasaichi
3
1.3k
サービス開発の現場からOSSを生み出す思考技術 / genbaweb04
yasaichi
3
770
Capybaraで変更に強いE2Eテストを書く / TokyuRubyKaigi12
yasaichi
5
1.3k
今更始めるGo言語 / techcamp04
yasaichi
0
2.7k
とある企業のモバイル対応 / Rails Developers Meetup 2017
yasaichi
1
3.2k
テスト駆動開発と私 / TechBookWalk TDD
yasaichi
3
1.6k
Other Decks in Technology
See All in Technology
CityGMLとFBXの連携で地理空間のエンタメ化
soh_mitian
0
730
森林情報のオープンデータと QGISでの利用
kou_kita
0
310
IBM Cloud Festa Online 2022 Summer
1ftseabass
PRO
0
200
〇〇みたいな検索作ってと言われたときに考えること / thinking before developing search system like that one
ryook
5
2.7k
ReverseETLでユーザーに価値を届ける基盤を実現した話
hakky
0
350
Cloud Foundryの移行先はどこか? オープンソースPaaS探し
kolinz
0
350
バッファープールが大きいMySQL v5.7でDROP DATABASEが詰まった原因と対策 / Causes and Remedies for DROP DATABASE Stuck in MySQL v5.7 with Large Buffer Pool
line_developers
PRO
4
810
#awsbasics [LT] サーバレスECにおける Step Functions の使い方
miu_crescent
0
850
psql, my favorite tool!
nuko_yokohama
1
180
ソフトウェアアーキテクチャの基礎: Software Architecture in a Nutshell
snoozer05
31
8.9k
金融スタートアップの上場準備で大事にしたマインドセット / 2022-08-04-the-mindset-in-preparing-for-ipo
stajima
0
320
品質特性のすすめ
honamin09
0
170
Featured
See All Featured
Support Driven Design
roundedbygravity
87
8.6k
What's in a price? How to price your products and services
michaelherold
229
9.4k
GraphQLの誤解/rethinking-graphql
sonatard
31
6.8k
Designing on Purpose - Digital PM Summit 2013
jponch
106
5.7k
Bootstrapping a Software Product
garrettdimon
296
110k
The Power of CSS Pseudo Elements
geoffreycrofte
47
4k
Scaling GitHub
holman
451
140k
Principles of Awesome APIs and How to Build Them.
keavy
113
15k
Designing the Hi-DPI Web
ddemaree
272
32k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
349
27k
Clear Off the Table
cherdarchuk
79
290k
Visualization
eitanlees
125
12k
Transcript
ピクスタのエンジニアリングとCircleCI Yuichi Goto (@_yasaichi) January 16, 2020 @ CircleCI ユーザーコミュニティミートアップ#8
self.inspect ! Yuichi Goto ! @_yasaichi " yasaichi " ピクスタ株式会社
執行役員CTO兼開発部長 2
コーポレートサイトトップ: https://pixta.co.jp 3 [PR] ピクスタはクリエイティブプラットフォームを創る会社です
Agenda 4 1. ピクスタにおける技術の位置づけ 2. ピクスタにおけるCircleCI活用事例 3. まとめ
目指すエンジニアリング組織像 • あるべき姿: 経営課題の達成に必要な要求に対して、質の高いアウトプットを速く継続 的に出せている状態 • ギャップを埋めるためのアプローチ: 仮説検証サイクルを高速化し、不確実性を乗りこなせる組織を作る 5
ソフトウェア技術の位置づけ • 位置づけ: 仮説検証サイクルのボトルネックを解消する手段のひとつ • KPI: • サイクルタイム(コードを書き始めてからデプロイ可能になるまで) • 開発者1人あたりの1日のデプロイ件数
• MTTR(Mean Time To Recovery、平均修復時間) 6 こう自分に言い聞かせないと好きに技術を使ってしまう…
CI/CDパイプラインへの期待 • 高速な自動テストの実行によりコードの誤りにすぐ気づけるようにし、手戻り (≒サイクルタイム)を減らしたい • デプロイ作業の自動化・高速化により、気軽にリリースできるようにしたい • 任意時点の本番環境にすぐ切り戻せるようにし、障害を最小限に抑えたい 7 CI/CDパイプラインの構築・改善は広範な問題を解決できる
Agenda 8 1. ピクスタにおける技術の位置づけ 2. ピクスタにおけるCircleCI活用事例 3. まとめ
https://pixta.jp 9 事例1: PIXTA(デジタル素材のマーケットプレイス)の場合
PIXTAにおける課題と解決策 • 課題: 10年近い歴史のある"本体"アプリケーションの自動テストの実行に マシン一台だと数時間かかり、CIの結果を待たずにデプロイされてしまう • 解決策: 1. RRRSpec(by Cookpad)の導入による自動テストの並列分散実行
2. ↑のEOLにより、当時トライアルだったPerformanceプランを採用して CircleCIに移行し、並列実行はそのままに運用負荷の低減を実現 10 明らかにボトルネックだったとわかる
https://fotowa.com 11 事例2:fotowa(出張撮影プラットフォーム)の場合
fotowaにおける課題と解決策 • 課題: Kubernetes導入に伴い、自動テストが通ったらDockerイメージを ビルドしてクラスタにデプロイしたい(もちろん全て自動で) • 解決策: 1. Workflowsを使ってビルドジョブの後に`setup_remote_docker`で Dockerイメージをビルドし、ECRにpush
2. pushをフックにしてCodePipelineが起動し、EKSクラスタにデプロイ 12
補足: その他のマネージドCI/CDサービスの採用事例 • CodeBuild: デプロイ自動化のみ必要な場合(例: CMS)に利用 • GitHub Actions: https://github.com/pixta-dev/repository-
mirroring-action を作り、GitHub → CodeCommitへのミラーに利用 13 CIは基本CircleCI、CD+αは各サービスで行う、という使い分け
Agenda 14 1. ピクスタにおける技術の位置づけ 2. ピクスタにおけるCircleCI活用事例 3. まとめ
まとめ • 速く継続的に経営課題を達成するために、エンジニアリング組織としては 仮説検証サイクルの高速化にフォーカスしている • 技術は仮説検証サイクルのボトルネックを解消する手段のひとつ • CI/CDパイプラインの構築・改善は広範な問題を解決でき、てこが効く • 用途に応じてCircleCIとその他マネージドサービスを使い分けている
15
ご清聴ありがとうございました 16