SlideShare a Scribd company logo
1 of 41
Download to read offline
[Confidential] © 2013 Actcat, Inc. 1
モデルによるAPIの隠蔽の怖い話
レスポンスタイムへの致命的影響
[Confidential] © 2013 Actcat, Inc.
SideCIとは
n 継続的コードレビューサービス	
  
n コードを自動的に解析、問題を発見、	
  
改善を促します	
  
n Ruby,	
  PHPなどで開発されている	
  
プロジェクトで利用できます
2
[Confidential] © 2013 Actcat, Inc.
SideCIのご利用イメージ 1/2
3
GitHub	
  PullRequest	
  上の問題のあるコードに	
  
自動で問題点をコメントします	
  
[Confidential] © 2013 Actcat, Inc.
SideCIのご利用イメージ 2/2
4
コードに含まれる全ての問題点は	
  
SideCIの画面上で閲覧出来ます	
  
[Confidential] © 2013 Actcat, Inc.
SideCIのアーキテクチャ(2015/06)
8種類以上のサーバが…
n Frontend(API+Frontend+Job)	
  
n ツール毎サーバ	
  
l RaislBestPractices(API+Job)	
  
l Brakeman(API+Job)	
  
l Bundler(API+Job)	
  
n +	
  新しいアーキテクチャのサーバ	
  
l Job	
  処理サーバ(using	
  docker)	
  
l Job	
  管理サーバ	
  
5
[Confidential] © 2013 Actcat, Inc.
SideCIのアーキテクチャの歴史(の一部)
サーバ構成を4回以上変えた
n  2014/04/30	
  
l ベータ版リリース	
  
l Heroku	
  でサービス提供	
  
l 解析処理は解析ツール毎のサーバで	
  
n  2014/夏	
  
l AWSにjob処理部分を移行	
  
n  2015/03	
  
l アーキテクチャ全面見直し	
  
l 解析処理をどの解析ツールでも同じサーバ内でdocker
を用いて実施するタイプを追加	
  
n  2015/07	
  
l 解析ツール毎のサーバを全台廃止	
  
6
[Confidential] © 2013 Actcat, Inc. 7
ベータ版リリース当初アーキテクチャ
[Confidential] © 2013 Actcat, Inc.
マイクロサービスアーキテクチャ
8
www	
  
Frontend	
  +	
  
API	
  +	
  Job
Brakeman	
  
API	
  +	
  Job
Rails	
  Best	
  
Practices	
  
API	
  +	
  Job
Bundler	
  
API	
  +	
  Job
[Confidential] © 2013 Actcat, Inc.
ログイン後トップページの表示時APIコール
9
レポジトリの数だけ	
  
GitHubにAPIリクエスト
ブランチのリストAPI呼出
僕は誰?User	
  api呼出
ここらへんはDBに
保存・表示してた
[Confidential] © 2013 Actcat, Inc.
解析結果表示ページのAPIコール
10
このページはbrakeman専用サーバ
にAPIリクエスト、結果を表示
3サーバに同時にAPIリクエスト。	
  
結果が3つ揃うと表示する。	
  
(Brakeman,	
  bundler,	
  
rails_best_practicesの3サーバ)
[Confidential] © 2013 Actcat, Inc.
問題が	
  
発生したぽよ
11
[Confidential] © 2013 Actcat, Inc.
ログイン後トップページ
12
表示にかかる時間が15秒を	
  
超えてしまうユーザ多数	
  
	
  
Herokuのtimeoutが頻発	
  
[Confidential] © 2013 Actcat, Inc.
実は各ツールが頻繁にwwwを呼び出す仕様。
wwwがボトルネックに。一回金パワーした
13
www	
  
Frontend	
  +	
  
API	
  +	
  Job
Brakeman	
  
API	
  +	
  Job
Rails	
  Best	
  
Practices	
  
API	
  +	
  Job
Bundler	
  
API	
  +	
  Job
PX	
  
Dyno
[Confidential] © 2013 Actcat, Inc.
解析結果ページ表示も
timeoutしたのでこっちも金パワーした
14
www	
  
Frontend	
  +	
  
API	
  +	
  Job
Brakeman	
  
API	
  +	
  Job
Rails	
  Best	
  
Practices	
  
API	
  +	
  Job
Bundler	
  
API	
  +	
  Job
2x	
  
Dyno
2x	
  
Dyno
2x	
  
Dyno
[Confidential] © 2013 Actcat, Inc.
(お金ないけど)
15
[Confidential] © 2013 Actcat, Inc.
GitHubのAPI呼び出し回数が
ボトルネックで、timeout頻発
16
www	
  
Frontend	
  +	
  
API	
  +	
  Job
Brakeman	
  
API	
  +	
  Job
Rails	
  Best	
  
Practices	
  
API	
  +	
  Job
Bundler	
  
API	
  +	
  Job
[Confidential] © 2013 Actcat, Inc.
金パワーの限界
17
[Confidential] © 2013 Actcat, Inc. 18
実装変更
[Confidential] © 2013 Actcat, Inc.
ログイン後トップページの表示時APIコール
19
ここはRedisキャッシュで	
  
なんとか
DBにデータ突っ込み	
  
[Confidential] © 2013 Actcat, Inc.
各サーバがRedisでキャッシュ
20
www	
  
Frontend	
  +	
  
API	
  +	
  Job
Brakeman	
  
API	
  +	
  Job
Rails	
  Best	
  
Practices	
  
API	
  +	
  Job
Bundler	
  
API	
  +	
  Job
Redis	
  CacheRedis	
  Cache
SideCI	
  API	
  Result	
  
Redis	
  Cache
一部	
  
Redis	
  Cache
[Confidential] © 2013 Actcat, Inc.
なんとか動くように	
  
なったけど…	
  
21
[Confidential] © 2013 Actcat, Inc.
つぎはぎの対応ばかり。	
  
全体的に無駄・無理が多い	
  
22
[Confidential] © 2013 Actcat, Inc.
結論:	
  
マイクロサービス	
  
アーキテクチャは辞めて	
  
新しいアーキテクチャで再実装
23
[Confidential] © 2013 Actcat, Inc. 24
原因分析
[Confidential] © 2013 Actcat, Inc.
なぜこんなことが	
  
起こったか?
25
[Confidential] © 2013 Actcat, Inc. 26
www	
  
Frontend	
  +	
  
API	
  +	
  Job
Brakeman	
  
API	
  +	
  Job
Rails	
  Best	
  
Practices	
  
API	
  +	
  Job
Bundler	
  
API	
  +	
  Job
APIのリクエストが多すぎた	
  
[Confidential] © 2013 Actcat, Inc.
なぜこんなに	
  
APIリクエストが	
  
多かったのか?
27
[Confidential] © 2013 Actcat, Inc. 28
www	
  
Frontend	
  +	
  
API	
  +	
  Job
Brakeman	
  
API	
  +	
  Job
Rails	
  Best	
  
Practices	
  
API	
  +	
  Job
Bundler	
  
API	
  +	
  Job
各サーバにとって必要な情報が、	
  
他のサーバの管轄だった。	
  
各サーバは管轄サーバに	
  
APIで問い合わせるしかなかった
[Confidential] © 2013 Actcat, Inc.
なんでこんな面倒な	
  
設計で実装が出来たのか?
29
[Confidential] © 2013 Actcat, Inc.
なんでこんな面倒な	
  
設計で実装が出来たのか?
30
[Confidential] © 2013 Actcat, Inc.
ActiveResource 超便利!
31
[Confidential] © 2013 Actcat, Inc.
さもDBに入っている	
  
データであるかのように、	
  
APIのデータを使ってた。
32
[Confidential] © 2013 Actcat, Inc.
惜しげも無く	
  
APIリクエスト
33
[Confidential] © 2013 Actcat, Inc.
APIリクエストである認識が
そもそもなかった
34
[Confidential] © 2013 Actcat, Inc. 35
ここまでのまとめ
[Confidential] © 2013 Actcat, Inc.
ActiveResouceはAPIだ!
n APIは隠蔽してもAPIだ(当たり前だ!	
  
n Cache	
  Resourceで多少問題回避出来たが、
Cacheの管理のほうが大変になる。
n 隠蔽していても、APIだという認識で設計、
実装が不可欠
36
[Confidential] © 2013 Actcat, Inc. 37
ちなみに現在
[Confidential] © 2013 Actcat, Inc.
各ツール毎のサーバを廃止。APIの集約廃止。
必要なデータはJob Enqueue時に付与
38
www	
  
Frontend	
  +	
  
(API)	
  +	
  Job
Job管理	
  
サーバ
Job実施	
  
サーバ
必要なデータが入っ
たリクエストで
Enqueue
[Confidential] © 2013 Actcat, Inc. 39
SIDECIの宣伝
[Confidential] © 2013 Actcat, Inc.
開発メンバー募集中です
n アーキテクチャ綺麗になりました	
  
n スケーラブルなアーキテクチャです	
  
n 開発メンバー募集中です!
40
[Confidential] © 2013 Actcat, Inc. 41
もしまだ使ったことない方ぜひ。	
  
設定は30秒で終わります。	
  
Just	
  nowでSign	
  Upして貰えると嬉しいです	
  
https://www.sideci.com/	
  

More Related Content

What's hot

Datadog による Container の監視について
Datadog による Container の監視についてDatadog による Container の監視について
Datadog による Container の監視についてMasaya Aoyama
 
5分でわかる Capabilities と Privilege + KubeCon Recap
5分でわかる Capabilities と Privilege + KubeCon Recap5分でわかる Capabilities と Privilege + KubeCon Recap
5分でわかる Capabilities と Privilege + KubeCon RecapMasaya Aoyama
 
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...Takayoshi Tanaka
 
JAWS Osaka July 2014, Opsworks + Node.js
JAWS Osaka July 2014, Opsworks + Node.js JAWS Osaka July 2014, Opsworks + Node.js
JAWS Osaka July 2014, Opsworks + Node.js Martin Heidegger
 
202202 open telemetry .net handson
202202 open telemetry .net handson202202 open telemetry .net handson
202202 open telemetry .net handsonTakayoshi Tanaka
 
20190725 Argo Project Latest News
20190725 Argo Project Latest News20190725 Argo Project Latest News
20190725 Argo Project Latest NewsDaisuke Taniwaki
 
KustomizeとGitHub Actionsを利用したUbieのデプロイの仕組み
KustomizeとGitHub Actionsを利用したUbieのデプロイの仕組みKustomizeとGitHub Actionsを利用したUbieのデプロイの仕組み
KustomizeとGitHub Actionsを利用したUbieのデプロイの仕組みDaisuke Taniwaki
 
LightNode - Micro RPC/REST Framework
LightNode - Micro RPC/REST FrameworkLightNode - Micro RPC/REST Framework
LightNode - Micro RPC/REST FrameworkYoshifumi Kawai
 
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践Yoshifumi Kawai
 
Kubernetes に開かれる新しい海 -Project Pacific とは?-
Kubernetes に開かれる新しい海 -Project Pacific とは?-Kubernetes に開かれる新しい海 -Project Pacific とは?-
Kubernetes に開かれる新しい海 -Project Pacific とは?-Masahiro Tabuki
 
mruby_nginx_module〜Embedded mruby into Nginx〜
mruby_nginx_module〜Embedded mruby into Nginx〜mruby_nginx_module〜Embedded mruby into Nginx〜
mruby_nginx_module〜Embedded mruby into Nginx〜Tatsuhiko Kubo
 
Harbor RegistryのReplication機能
Harbor RegistryのReplication機能Harbor RegistryのReplication機能
Harbor RegistryのReplication機能Masanori Nara
 
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜Masaya Aoyama
 
mruby_nginx_module at pyfes 2013.11
mruby_nginx_module at pyfes 2013.11mruby_nginx_module at pyfes 2013.11
mruby_nginx_module at pyfes 2013.11Tatsuhiko Kubo
 
The History of Reactive Extensions
The History of Reactive ExtensionsThe History of Reactive Extensions
The History of Reactive ExtensionsYoshifumi Kawai
 

What's hot (20)

Datadog による Container の監視について
Datadog による Container の監視についてDatadog による Container の監視について
Datadog による Container の監視について
 
5分でわかる Capabilities と Privilege + KubeCon Recap
5分でわかる Capabilities と Privilege + KubeCon Recap5分でわかる Capabilities と Privilege + KubeCon Recap
5分でわかる Capabilities と Privilege + KubeCon Recap
 
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...20190604 Containerized MagicOnion on kubernetes with Observability with New R...
20190604 Containerized MagicOnion on kubernetes with Observability with New R...
 
JAWS Osaka July 2014, Opsworks + Node.js
JAWS Osaka July 2014, Opsworks + Node.js JAWS Osaka July 2014, Opsworks + Node.js
JAWS Osaka July 2014, Opsworks + Node.js
 
202202 open telemetry .net handson
202202 open telemetry .net handson202202 open telemetry .net handson
202202 open telemetry .net handson
 
ng build --prod & Continuous Delivery
ng build --prod & Continuous Deliveryng build --prod & Continuous Delivery
ng build --prod & Continuous Delivery
 
20190725 Argo Project Latest News
20190725 Argo Project Latest News20190725 Argo Project Latest News
20190725 Argo Project Latest News
 
Deploy TypeScript Application by CodePipeline
Deploy TypeScript Application by CodePipelineDeploy TypeScript Application by CodePipeline
Deploy TypeScript Application by CodePipeline
 
KustomizeとGitHub Actionsを利用したUbieのデプロイの仕組み
KustomizeとGitHub Actionsを利用したUbieのデプロイの仕組みKustomizeとGitHub Actionsを利用したUbieのデプロイの仕組み
KustomizeとGitHub Actionsを利用したUbieのデプロイの仕組み
 
LightNode - Micro RPC/REST Framework
LightNode - Micro RPC/REST FrameworkLightNode - Micro RPC/REST Framework
LightNode - Micro RPC/REST Framework
 
React and-rx
React and-rxReact and-rx
React and-rx
 
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
 
Kubernetes に開かれる新しい海 -Project Pacific とは?-
Kubernetes に開かれる新しい海 -Project Pacific とは?-Kubernetes に開かれる新しい海 -Project Pacific とは?-
Kubernetes に開かれる新しい海 -Project Pacific とは?-
 
OpenStack Octavia入門
OpenStack Octavia入門OpenStack Octavia入門
OpenStack Octavia入門
 
mruby_nginx_module〜Embedded mruby into Nginx〜
mruby_nginx_module〜Embedded mruby into Nginx〜mruby_nginx_module〜Embedded mruby into Nginx〜
mruby_nginx_module〜Embedded mruby into Nginx〜
 
Harbor RegistryのReplication機能
Harbor RegistryのReplication機能Harbor RegistryのReplication機能
Harbor RegistryのReplication機能
 
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
 
mruby_nginx_module
mruby_nginx_modulemruby_nginx_module
mruby_nginx_module
 
mruby_nginx_module at pyfes 2013.11
mruby_nginx_module at pyfes 2013.11mruby_nginx_module at pyfes 2013.11
mruby_nginx_module at pyfes 2013.11
 
The History of Reactive Extensions
The History of Reactive ExtensionsThe History of Reactive Extensions
The History of Reactive Extensions
 

Viewers also liked

rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41thrablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41thKoichiro Sumi
 
Sansan x ESM Ruby合同勉強会 2015.05.15
Sansan x ESM Ruby合同勉強会 2015.05.15Sansan x ESM Ruby合同勉強会 2015.05.15
Sansan x ESM Ruby合同勉強会 2015.05.15Tetsuya Mase
 
ActiveResourceが面白すぎる件
ActiveResourceが面白すぎる件ActiveResourceが面白すぎる件
ActiveResourceが面白すぎる件Kazuki MATSUMOTO
 
API通信周りの継続的なテストの仕組み~SideCIでの実践~
API通信周りの継続的なテストの仕組み~SideCIでの実践~API通信周りの継続的なテストの仕組み~SideCIでの実践~
API通信周りの継続的なテストの仕組み~SideCIでの実践~Koichiro Sumi
 
PHPMD, PHP_CodeSniffer x SideCIによる継続的コードチェック
PHPMD, PHP_CodeSniffer x SideCIによる継続的コードチェックPHPMD, PHP_CodeSniffer x SideCIによる継続的コードチェック
PHPMD, PHP_CodeSniffer x SideCIによる継続的コードチェックKoichiro Sumi
 
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurbKoichiro Sumi
 
CIを取り入れ始めて超楽になったこと
CIを取り入れ始めて超楽になったことCIを取り入れ始めて超楽になったこと
CIを取り入れ始めて超楽になったことKoichiro Sumi
 
Windows 8 sansan 名刺管理
Windows 8   sansan 名刺管理Windows 8   sansan 名刺管理
Windows 8 sansan 名刺管理Yuki Motoyama
 
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devloveプロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devloveKoichiro Sumi
 
スタートアップの開発体制、流れのBASIC PATTERN
スタートアップの開発体制、流れのBASIC PATTERNスタートアップの開発体制、流れのBASIC PATTERN
スタートアップの開発体制、流れのBASIC PATTERNKoichiro Sumi
 
どうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCIどうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCIKoichiro Sumi
 
Eight iOS/Android開発の裏側
Eight iOS/Android開発の裏側Eight iOS/Android開発の裏側
Eight iOS/Android開発の裏側Kenta Kuwata
 
スタートアップの開発体制、流れ POPULAR PATTERN
スタートアップの開発体制、流れ POPULAR PATTERNスタートアップの開発体制、流れ POPULAR PATTERN
スタートアップの開発体制、流れ POPULAR PATTERNKoichiro Sumi
 
Ruby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorb
Ruby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorbRuby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorb
Ruby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorbKoichiro Sumi
 
CIツールのまとめとSide CI - CIツール勉強会@福岡
CIツールのまとめとSide CI - CIツール勉強会@福岡CIツールのまとめとSide CI - CIツール勉強会@福岡
CIツールのまとめとSide CI - CIツール勉強会@福岡Koichiro Sumi
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShareSlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShareSlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareSlideShare
 

Viewers also liked (19)

rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41thrablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
 
Sansan x ESM Ruby合同勉強会 2015.05.15
Sansan x ESM Ruby合同勉強会 2015.05.15Sansan x ESM Ruby合同勉強会 2015.05.15
Sansan x ESM Ruby合同勉強会 2015.05.15
 
ActiveResourceが面白すぎる件
ActiveResourceが面白すぎる件ActiveResourceが面白すぎる件
ActiveResourceが面白すぎる件
 
About SideCI
About SideCIAbout SideCI
About SideCI
 
API通信周りの継続的なテストの仕組み~SideCIでの実践~
API通信周りの継続的なテストの仕組み~SideCIでの実践~API通信周りの継続的なテストの仕組み~SideCIでの実践~
API通信周りの継続的なテストの仕組み~SideCIでの実践~
 
PHPMD, PHP_CodeSniffer x SideCIによる継続的コードチェック
PHPMD, PHP_CodeSniffer x SideCIによる継続的コードチェックPHPMD, PHP_CodeSniffer x SideCIによる継続的コードチェック
PHPMD, PHP_CodeSniffer x SideCIによる継続的コードチェック
 
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
 
CIを取り入れ始めて超楽になったこと
CIを取り入れ始めて超楽になったことCIを取り入れ始めて超楽になったこと
CIを取り入れ始めて超楽になったこと
 
Windows 8 sansan 名刺管理
Windows 8   sansan 名刺管理Windows 8   sansan 名刺管理
Windows 8 sansan 名刺管理
 
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devloveプロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
 
スタートアップの開発体制、流れのBASIC PATTERN
スタートアップの開発体制、流れのBASIC PATTERNスタートアップの開発体制、流れのBASIC PATTERN
スタートアップの開発体制、流れのBASIC PATTERN
 
どうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCIどうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCI
 
Eight iOS/Android開発の裏側
Eight iOS/Android開発の裏側Eight iOS/Android開発の裏側
Eight iOS/Android開発の裏側
 
スタートアップの開発体制、流れ POPULAR PATTERN
スタートアップの開発体制、流れ POPULAR PATTERNスタートアップの開発体制、流れ POPULAR PATTERN
スタートアップの開発体制、流れ POPULAR PATTERN
 
Ruby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorb
Ruby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorbRuby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorb
Ruby用の静的コード解析ツールざくっと紹介 by SideCI #omotesandorb
 
CIツールのまとめとSide CI - CIツール勉強会@福岡
CIツールのまとめとSide CI - CIツール勉強会@福岡CIツールのまとめとSide CI - CIツール勉強会@福岡
CIツールのまとめとSide CI - CIツール勉強会@福岡
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

Similar to ActiveResourceモデルによるAPIの隠蔽の怖い話 ~レスポンスタイムへの致命的影響~ at #shinjukurb

技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
cndjp: 「Microclimate」by capsmalt
cndjp: 「Microclimate」by capsmaltcndjp: 「Microclimate」by capsmalt
cndjp: 「Microclimate」by capsmaltcapsmalt
 
ハイブリットクラウド環境におけるモダンアプリケーション開発
ハイブリットクラウド環境におけるモダンアプリケーション開発ハイブリットクラウド環境におけるモダンアプリケーション開発
ハイブリットクラウド環境におけるモダンアプリケーション開発政雄 金森
 
Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話Katsunori Kanda
 
脅威へ、しなやかかつ持続可能に対応するためのIaC環境 ~循環型IaC~ (CloudNative Security Conference 2022 プレ...
脅威へ、しなやかかつ持続可能に対応するためのIaC環境 ~循環型IaC~ (CloudNative Security Conference 2022 プレ...脅威へ、しなやかかつ持続可能に対応するためのIaC環境 ~循環型IaC~ (CloudNative Security Conference 2022 プレ...
脅威へ、しなやかかつ持続可能に対応するためのIaC環境 ~循環型IaC~ (CloudNative Security Conference 2022 プレ...NTT DATA Technology & Innovation
 
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...NTT DATA Technology & Innovation
 
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しAkira Nagata
 
Tech summit 2018_ad15_ver_1106
Tech summit 2018_ad15_ver_1106Tech summit 2018_ad15_ver_1106
Tech summit 2018_ad15_ver_1106Shotaro Suzuki
 
Microsoft open tech night 2020 feb18
Microsoft open tech night 2020 feb18Microsoft open tech night 2020 feb18
Microsoft open tech night 2020 feb18Masatomo Ito
 
Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Makoto Haruyama
 
Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016Godai Nakamura
 
進化するEdge! ~Creators Update版の新機能から既存機能までまとめて解説!~
進化するEdge! ~Creators Update版の新機能から既存機能までまとめて解説!~進化するEdge! ~Creators Update版の新機能から既存機能までまとめて解説!~
進化するEdge! ~Creators Update版の新機能から既存機能までまとめて解説!~Saki Homma
 
進化するEdge! Creators Update版の新機能一挙紹介!
進化するEdge! Creators Update版の新機能一挙紹介!進化するEdge! Creators Update版の新機能一挙紹介!
進化するEdge! Creators Update版の新機能一挙紹介!Saki Homma
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-Saki Homma
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発Yuta Matsumura
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Shotaro Suzuki
 

Similar to ActiveResourceモデルによるAPIの隠蔽の怖い話 ~レスポンスタイムへの致命的影響~ at #shinjukurb (20)

技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
cndjp: 「Microclimate」by capsmalt
cndjp: 「Microclimate」by capsmaltcndjp: 「Microclimate」by capsmalt
cndjp: 「Microclimate」by capsmalt
 
ハイブリットクラウド環境におけるモダンアプリケーション開発
ハイブリットクラウド環境におけるモダンアプリケーション開発ハイブリットクラウド環境におけるモダンアプリケーション開発
ハイブリットクラウド環境におけるモダンアプリケーション開発
 
Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話
 
脅威へ、しなやかかつ持続可能に対応するためのIaC環境 ~循環型IaC~ (CloudNative Security Conference 2022 プレ...
脅威へ、しなやかかつ持続可能に対応するためのIaC環境 ~循環型IaC~ (CloudNative Security Conference 2022 プレ...脅威へ、しなやかかつ持続可能に対応するためのIaC環境 ~循環型IaC~ (CloudNative Security Conference 2022 プレ...
脅威へ、しなやかかつ持続可能に対応するためのIaC環境 ~循環型IaC~ (CloudNative Security Conference 2022 プレ...
 
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...
 
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
Tech summit 2018_ad15_ver_1106
Tech summit 2018_ad15_ver_1106Tech summit 2018_ad15_ver_1106
Tech summit 2018_ad15_ver_1106
 
Microsoft open tech night 2020 feb18
Microsoft open tech night 2020 feb18Microsoft open tech night 2020 feb18
Microsoft open tech night 2020 feb18
 
Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介
 
第9回しゃちほこオラクル倶楽部
第9回しゃちほこオラクル倶楽部第9回しゃちほこオラクル倶楽部
第9回しゃちほこオラクル倶楽部
 
Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016
 
Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2
 
進化するEdge! ~Creators Update版の新機能から既存機能までまとめて解説!~
進化するEdge! ~Creators Update版の新機能から既存機能までまとめて解説!~進化するEdge! ~Creators Update版の新機能から既存機能までまとめて解説!~
進化するEdge! ~Creators Update版の新機能から既存機能までまとめて解説!~
 
進化するEdge! Creators Update版の新機能一挙紹介!
進化するEdge! Creators Update版の新機能一挙紹介!進化するEdge! Creators Update版の新機能一挙紹介!
進化するEdge! Creators Update版の新機能一挙紹介!
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...Application development with c#, .net 6, blazor web assembly, asp.net web api...
Application development with c#, .net 6, blazor web assembly, asp.net web api...
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
 

More from Koichiro Sumi

Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会
Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会
Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会Koichiro Sumi
 
エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...
エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...
エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...Koichiro Sumi
 
ベトナムのホーチミン・ハノイ・ ダナンを1週間見て回った話
ベトナムのホーチミン・ハノイ・ダナンを1週間見て回った話ベトナムのホーチミン・ハノイ・ダナンを1週間見て回った話
ベトナムのホーチミン・ハノイ・ ダナンを1週間見て回った話Koichiro Sumi
 
Git plus something / Git+何かで更にGitを使いこなす
Git plus something / Git+何かで更にGitを使いこなすGit plus something / Git+何かで更にGitを使いこなす
Git plus something / Git+何かで更にGitを使いこなすKoichiro Sumi
 
ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9
ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9
ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9Koichiro Sumi
 
Rubyでも今すぐ始められるCI How-to & Tips - SideCI TokyuRuby会議07 LT資料 #tqrk07
Rubyでも今すぐ始められるCI How-to & Tips - SideCI TokyuRuby会議07 LT資料 #tqrk07Rubyでも今すぐ始められるCI How-to & Tips - SideCI TokyuRuby会議07 LT資料 #tqrk07
Rubyでも今すぐ始められるCI How-to & Tips - SideCI TokyuRuby会議07 LT資料 #tqrk07Koichiro Sumi
 
Spath Workshop | 世の中をより良くするアイデアを形に出来るようになる会議 β版 20130420
Spath Workshop | 世の中をより良くするアイデアを形に出来るようになる会議 β版 20130420Spath Workshop | 世の中をより良くするアイデアを形に出来るようになる会議 β版 20130420
Spath Workshop | 世の中をより良くするアイデアを形に出来るようになる会議 β版 20130420Koichiro Sumi
 
Spath for enterprise
Spath for enterpriseSpath for enterprise
Spath for enterpriseKoichiro Sumi
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果Koichiro Sumi
 
スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜
スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜
スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜Koichiro Sumi
 
iOSアプリの広告による収益化 ~各アドネットワークの傾向、SmAddによる収益最大化~
iOSアプリの広告による収益化 ~各アドネットワークの傾向、SmAddによる収益最大化~iOSアプリの広告による収益化 ~各アドネットワークの傾向、SmAddによる収益最大化~
iOSアプリの広告による収益化 ~各アドネットワークの傾向、SmAddによる収益最大化~Koichiro Sumi
 

More from Koichiro Sumi (13)

Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会
Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会
Siderご紹介スライド@第2回 GitHub Enterprise ユーザ会
 
エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...
エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...
エンジニアが作りたいものを本気で作るための起業という選択肢。レビュー支援サービスSiderの着想から現在、未来 | Rails developers me...
 
ベトナムのホーチミン・ハノイ・ ダナンを1週間見て回った話
ベトナムのホーチミン・ハノイ・ダナンを1週間見て回った話ベトナムのホーチミン・ハノイ・ダナンを1週間見て回った話
ベトナムのホーチミン・ハノイ・ ダナンを1週間見て回った話
 
Git plus something / Git+何かで更にGitを使いこなす
Git plus something / Git+何かで更にGitを使いこなすGit plus something / Git+何かで更にGitを使いこなす
Git plus something / Git+何かで更にGitを使いこなす
 
ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9
ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9
ただのSEが初めてArduinoで遊んでみたw(今更 : 品モノラボ #9
 
Rubyでも今すぐ始められるCI How-to & Tips - SideCI TokyuRuby会議07 LT資料 #tqrk07
Rubyでも今すぐ始められるCI How-to & Tips - SideCI TokyuRuby会議07 LT資料 #tqrk07Rubyでも今すぐ始められるCI How-to & Tips - SideCI TokyuRuby会議07 LT資料 #tqrk07
Rubyでも今すぐ始められるCI How-to & Tips - SideCI TokyuRuby会議07 LT資料 #tqrk07
 
Spath Workshop | 世の中をより良くするアイデアを形に出来るようになる会議 β版 20130420
Spath Workshop | 世の中をより良くするアイデアを形に出来るようになる会議 β版 20130420Spath Workshop | 世の中をより良くするアイデアを形に出来るようになる会議 β版 20130420
Spath Workshop | 世の中をより良くするアイデアを形に出来るようになる会議 β版 20130420
 
Spath for enterprise
Spath for enterpriseSpath for enterprise
Spath for enterprise
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果
 
スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜
スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜
スマートアップ スマートフォンサービス マーケティング手法 〜避けよう!弊社の失敗談編〜
 
iOSアプリの広告による収益化 ~各アドネットワークの傾向、SmAddによる収益最大化~
iOSアプリの広告による収益化 ~各アドネットワークの傾向、SmAddによる収益最大化~iOSアプリの広告による収益化 ~各アドネットワークの傾向、SmAddによる収益最大化~
iOSアプリの広告による収益化 ~各アドネットワークの傾向、SmAddによる収益最大化~
 
Smadd概要資料
Smadd概要資料Smadd概要資料
Smadd概要資料
 

ActiveResourceモデルによるAPIの隠蔽の怖い話 ~レスポンスタイムへの致命的影響~ at #shinjukurb

  • 1. [Confidential] © 2013 Actcat, Inc. 1 モデルによるAPIの隠蔽の怖い話 レスポンスタイムへの致命的影響
  • 2. [Confidential] © 2013 Actcat, Inc. SideCIとは n 継続的コードレビューサービス   n コードを自動的に解析、問題を発見、   改善を促します   n Ruby,  PHPなどで開発されている   プロジェクトで利用できます 2
  • 3. [Confidential] © 2013 Actcat, Inc. SideCIのご利用イメージ 1/2 3 GitHub  PullRequest  上の問題のあるコードに   自動で問題点をコメントします  
  • 4. [Confidential] © 2013 Actcat, Inc. SideCIのご利用イメージ 2/2 4 コードに含まれる全ての問題点は   SideCIの画面上で閲覧出来ます  
  • 5. [Confidential] © 2013 Actcat, Inc. SideCIのアーキテクチャ(2015/06) 8種類以上のサーバが… n Frontend(API+Frontend+Job)   n ツール毎サーバ   l RaislBestPractices(API+Job)   l Brakeman(API+Job)   l Bundler(API+Job)   n +  新しいアーキテクチャのサーバ   l Job  処理サーバ(using  docker)   l Job  管理サーバ   5
  • 6. [Confidential] © 2013 Actcat, Inc. SideCIのアーキテクチャの歴史(の一部) サーバ構成を4回以上変えた n  2014/04/30   l ベータ版リリース   l Heroku  でサービス提供   l 解析処理は解析ツール毎のサーバで   n  2014/夏   l AWSにjob処理部分を移行   n  2015/03   l アーキテクチャ全面見直し   l 解析処理をどの解析ツールでも同じサーバ内でdocker を用いて実施するタイプを追加   n  2015/07   l 解析ツール毎のサーバを全台廃止   6
  • 7. [Confidential] © 2013 Actcat, Inc. 7 ベータ版リリース当初アーキテクチャ
  • 8. [Confidential] © 2013 Actcat, Inc. マイクロサービスアーキテクチャ 8 www   Frontend  +   API  +  Job Brakeman   API  +  Job Rails  Best   Practices   API  +  Job Bundler   API  +  Job
  • 9. [Confidential] © 2013 Actcat, Inc. ログイン後トップページの表示時APIコール 9 レポジトリの数だけ   GitHubにAPIリクエスト ブランチのリストAPI呼出 僕は誰?User  api呼出 ここらへんはDBに 保存・表示してた
  • 10. [Confidential] © 2013 Actcat, Inc. 解析結果表示ページのAPIコール 10 このページはbrakeman専用サーバ にAPIリクエスト、結果を表示 3サーバに同時にAPIリクエスト。   結果が3つ揃うと表示する。   (Brakeman,  bundler,   rails_best_practicesの3サーバ)
  • 11. [Confidential] © 2013 Actcat, Inc. 問題が   発生したぽよ 11
  • 12. [Confidential] © 2013 Actcat, Inc. ログイン後トップページ 12 表示にかかる時間が15秒を   超えてしまうユーザ多数     Herokuのtimeoutが頻発  
  • 13. [Confidential] © 2013 Actcat, Inc. 実は各ツールが頻繁にwwwを呼び出す仕様。 wwwがボトルネックに。一回金パワーした 13 www   Frontend  +   API  +  Job Brakeman   API  +  Job Rails  Best   Practices   API  +  Job Bundler   API  +  Job PX   Dyno
  • 14. [Confidential] © 2013 Actcat, Inc. 解析結果ページ表示も timeoutしたのでこっちも金パワーした 14 www   Frontend  +   API  +  Job Brakeman   API  +  Job Rails  Best   Practices   API  +  Job Bundler   API  +  Job 2x   Dyno 2x   Dyno 2x   Dyno
  • 15. [Confidential] © 2013 Actcat, Inc. (お金ないけど) 15
  • 16. [Confidential] © 2013 Actcat, Inc. GitHubのAPI呼び出し回数が ボトルネックで、timeout頻発 16 www   Frontend  +   API  +  Job Brakeman   API  +  Job Rails  Best   Practices   API  +  Job Bundler   API  +  Job
  • 17. [Confidential] © 2013 Actcat, Inc. 金パワーの限界 17
  • 18. [Confidential] © 2013 Actcat, Inc. 18 実装変更
  • 19. [Confidential] © 2013 Actcat, Inc. ログイン後トップページの表示時APIコール 19 ここはRedisキャッシュで   なんとか DBにデータ突っ込み  
  • 20. [Confidential] © 2013 Actcat, Inc. 各サーバがRedisでキャッシュ 20 www   Frontend  +   API  +  Job Brakeman   API  +  Job Rails  Best   Practices   API  +  Job Bundler   API  +  Job Redis  CacheRedis  Cache SideCI  API  Result   Redis  Cache 一部   Redis  Cache
  • 21. [Confidential] © 2013 Actcat, Inc. なんとか動くように   なったけど…   21
  • 22. [Confidential] © 2013 Actcat, Inc. つぎはぎの対応ばかり。   全体的に無駄・無理が多い   22
  • 23. [Confidential] © 2013 Actcat, Inc. 結論:   マイクロサービス   アーキテクチャは辞めて   新しいアーキテクチャで再実装 23
  • 24. [Confidential] © 2013 Actcat, Inc. 24 原因分析
  • 25. [Confidential] © 2013 Actcat, Inc. なぜこんなことが   起こったか? 25
  • 26. [Confidential] © 2013 Actcat, Inc. 26 www   Frontend  +   API  +  Job Brakeman   API  +  Job Rails  Best   Practices   API  +  Job Bundler   API  +  Job APIのリクエストが多すぎた  
  • 27. [Confidential] © 2013 Actcat, Inc. なぜこんなに   APIリクエストが   多かったのか? 27
  • 28. [Confidential] © 2013 Actcat, Inc. 28 www   Frontend  +   API  +  Job Brakeman   API  +  Job Rails  Best   Practices   API  +  Job Bundler   API  +  Job 各サーバにとって必要な情報が、   他のサーバの管轄だった。   各サーバは管轄サーバに   APIで問い合わせるしかなかった
  • 29. [Confidential] © 2013 Actcat, Inc. なんでこんな面倒な   設計で実装が出来たのか? 29
  • 30. [Confidential] © 2013 Actcat, Inc. なんでこんな面倒な   設計で実装が出来たのか? 30
  • 31. [Confidential] © 2013 Actcat, Inc. ActiveResource 超便利! 31
  • 32. [Confidential] © 2013 Actcat, Inc. さもDBに入っている   データであるかのように、   APIのデータを使ってた。 32
  • 33. [Confidential] © 2013 Actcat, Inc. 惜しげも無く   APIリクエスト 33
  • 34. [Confidential] © 2013 Actcat, Inc. APIリクエストである認識が そもそもなかった 34
  • 35. [Confidential] © 2013 Actcat, Inc. 35 ここまでのまとめ
  • 36. [Confidential] © 2013 Actcat, Inc. ActiveResouceはAPIだ! n APIは隠蔽してもAPIだ(当たり前だ!   n Cache  Resourceで多少問題回避出来たが、 Cacheの管理のほうが大変になる。 n 隠蔽していても、APIだという認識で設計、 実装が不可欠 36
  • 37. [Confidential] © 2013 Actcat, Inc. 37 ちなみに現在
  • 38. [Confidential] © 2013 Actcat, Inc. 各ツール毎のサーバを廃止。APIの集約廃止。 必要なデータはJob Enqueue時に付与 38 www   Frontend  +   (API)  +  Job Job管理   サーバ Job実施   サーバ 必要なデータが入っ たリクエストで Enqueue
  • 39. [Confidential] © 2013 Actcat, Inc. 39 SIDECIの宣伝
  • 40. [Confidential] © 2013 Actcat, Inc. 開発メンバー募集中です n アーキテクチャ綺麗になりました   n スケーラブルなアーキテクチャです   n 開発メンバー募集中です! 40
  • 41. [Confidential] © 2013 Actcat, Inc. 41 もしまだ使ったことない方ぜひ。   設定は30秒で終わります。   Just  nowでSign  Upして貰えると嬉しいです   https://www.sideci.com/