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
すこやかRails
Search
Takafumi ONAKA
PRO
November 01, 2014
Technology
0
6
すこやかRails
2014-11-01 渋谷Ruby会議01
Takafumi ONAKA
PRO
November 01, 2014
Tweet
Share
More Decks by Takafumi ONAKA
See All by Takafumi ONAKA
強いチームと開発生産性
onk
PRO
40
16k
ADRを運用して3年経った僕らの現在地
onk
PRO
21
20k
1文字エイリアスのすゝめ
onk
PRO
0
21
すこやかなサービス運営のための PWG (Performance Working Group)
onk
PRO
0
90
オブザーバビリティの Primary Signals
onk
PRO
2
4.6k
Cache Stampede
onk
PRO
1
2k
ORM - Object-relational mapping
onk
PRO
2
3.5k
デュアルトラックアジャイルとの向き合い方
onk
PRO
5
12k
技術記事を書く&楽しむチームの作り方
onk
PRO
0
1.6k
Other Decks in Technology
See All in Technology
データマネジメントのトレードオフに立ち向かう
ikkimiyazaki
6
980
OpenID Connect for Identity Assurance の概要と翻訳版のご紹介 / 20250219-BizDay17-OIDC4IDA-Intro
oidfj
0
280
モノレポ開発のエラー、誰が見る?Datadog で実現する適切なトリアージとエスカレーション
biwashi
6
810
ホワイトボードチャレンジ 説明&実行資料
ichimichi
0
130
速くて安いWebサイトを作る
nishiharatsubasa
10
13k
運用しているアプリケーションのDBのリプレイスをやってみた
miura55
1
720
CZII - CryoET Object Identification 参加振り返り・解法共有
tattaka
0
370
トラシューアニマルになろう ~開発者だからこそできる、安定したサービス作りの秘訣~
jacopen
2
2k
2/18/25: Java meets AI: Build LLM-Powered Apps with LangChain4j
edeandrea
PRO
0
120
JEDAI Meetup! Databricks AI/BI概要
databricksjapan
0
100
全文検索+セマンティックランカー+LLMの自然文検索サ−ビスで得られた知見
segavvy
2
110
急成長する企業で作った、エンジニアが輝ける制度/ 20250214 Rinto Ikenoue
shift_evolve
3
1.3k
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Practical Orchestrator
shlominoach
186
10k
Optimizing for Happiness
mojombo
376
70k
Speed Design
sergeychernyshev
27
790
GitHub's CSS Performance
jonrohan
1030
460k
Code Review Best Practice
trishagee
67
18k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
It's Worth the Effort
3n
184
28k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Building Adaptive Systems
keathley
40
2.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.1k
Transcript
すこやかRails ~クソと戦うサービス運用~ 2014-11-01 渋谷Ruby会議01 大仲 能史 a.k.a. @onk
self 1
self 大仲 能史 RubyKaja 2013 – Rails勉強会@東京 仕事 – アプリケーションエンジニア
– 主にサーバサイドの設計・開発を担当 2 @onk
self.company 2006年12月 中途入社 2009年4月よりRailsアプリに関わる – Rails暦5年半 3
運用中サービスの稼働年数 4 0年 1年 2年 3年 4年
今日の話 世界はクソ力(ちから)に満ち溢れ ていて、サービスを運用している と必ず健康状態が悪化していきま す。 5
クソ力(ちから)の例 • データの蓄積によるレスポンス速度悪化 • 仕様変更による設計の無理 • ライブラリの更新への追随を怠る • 突然応答しなくなるサーバ •
人の流動によるノウハウの低下 • クソクエリ・クソコードの混入 • 技術のブラックボックス化 6
現状を維持していると クソな状態になる 7
今日の話 実装が苦手なエンジニア でもアプリの健康状態を 維持できる仕組みづくり 8
アジェンダ 1. 検知する/計測する 2. 改善の手助けをする 9
検知する/計測する 10
検知する/計測する • infra – zabbix – Mine • error –
Sentry • User –CommunityWat cher 11 • Performance – MySQL • generalist – Rails • New Relic • CodeStyle – rake stats – metric_fu – rails_best_practices – rubocop
Mine 12
13
14 http://www.slideshare.net/KenichiMitsuki/ss-35379098
Mine • 1300台向けにセットアップしたくない – Pushでメトリクスを通知させたい • DCごとに構築したくない • rrdつらぽよ •
見た目が気に入らない 15
CommunityWatcher 16
• Twitter • 2ch • AppStoreやGooglePlayのレビュー • SNS上のコミュニティ • アプリ内の会話
17 ユーザの生の声を収集するbotたち
生の声を直接見ていると • 検知が早い • ユーザの気持ちに 立って開発できる • リリースの手ごた えを得られる 18
• ノイズが多い • あまりに生すぎて 心が折れる • ユーザの声に流さ れて大勢を見失う
Generalist 19
20 http://blog.father.gedow.net/2014/02/25/service-quality-improvement/
MySQLのgeneral log + EXPLAIN 21
クエリ品質の可視化 22
クエリの定量評価 • DQP (Dirty Query Point) –1秒当たりのクソクエリポイント • DUP (Dirty
Update Point) –1秒当たりのIO負荷 • DIP (Dirty Index Point) –不要な Index のサジェスト 23
クエリの定量評価 基本式 QPS * rows * type係数 * EXTRA係数 24
クソクエリは必ず生まれる • データベースの気持ちになって ActiveRecordを操れる人は少ない • サービスを日々改善する。アプリケー ションも日々デプロイする。 • 想定漏れがどうしても出てくる •
フリーザ様級 (DQP:53万) のクエリがたま に出てくる 25
今日の話 1. 検知する/計測する 2. 改善の手助けをする 26
改善する手助けをする • CI – Jenkins • MySQL – DQPAnalyzer •
Rails – ReliqRefactor 27 • CodeStyle – pront • Development – QueryTracer • Badge • Ranking – Gemicom
戦略1: 目標を目立たせる 28
DQPAnalyzer 29
30
31
ReliqRefactor 32
33
34
35
人間が論理的に 考えていることは コードに落とせる 36
戦略2: プライドをくすぐる 37
Badge 38
39 http://sue445.hatenablog.com/entry/2014/08/11/123000
40
戦略3: 競争を煽る 41
運用中サービスの稼働年数 42 0年 1年 2年 3年 4年 DAU、成長率等はバラバラ
43
44
gemicom 45 http://rubykaigi.org/2014/presentation/S-TakumiMiura
戦略4: ナビキャラに言わせる 46
カーチャンJ( 'ー`)し • 静的解析bot (pront) • 厳しいのでキャラクター化しないと 心が折れる 47
48 http://sue445.hatenablog.com/entry/2014/10/10/111601
改善を手助けする戦略 1. 目標を目立たせる 2. プライドをくすぐる 3. 競争を煽る 4. ナビキャラに言わせる 49
まさにソーシャル ゲームの手口ッ! 50
改善する手助けをする 51
開発と改善 52
開発:収益を増やす 改善:損失を減らす 53
改善も大事だが 本質ではない 54
改善にかけるコストを 削減していく • 一目でクソだと分からせる • 強くない人でも改善できるよう サジェストする • 意識を無理やり高めるために テクニックを使う
• 1人が改善すればみんなが幸せになるよう 共通化する 55
共通化 • RubyKaigi 2014 - “Gem of this week” 56
http://rubykaigi.org/2014/presentation/S-TakumiMiura
今後の課題 57
今後の課題 • 職種間の溝を埋める –フロントエンド⇔サーバサイド –Nativeクライアント⇔サーバ –企画者⇔開発者 • リリース前に検知する 58
REPL-client • APIエンドポイントのインタフェースを YAMLで持ち、REPL からリクエストを簡 単に発行するツール • 通信を暗号化しているので簡単に CURL できないという問題を解決
• インタフェースの明文化と、柔軟なチー ト生活に役立つ 59
QueryTracer • ARProxyを使って開発中に 問題点を見つ ける • where 1=0 とかパーティションの絞り込み ができていないクエリとか
60
まとめ 61
現状維持は悪化の一途 クソ力(ちから)は強大 検知する/計測する ユーザにストレスを強く与えるところ 開発者にストレスを強く与えるところ 改善効率を上げる 判断できるものはシステム化できる 価値の本質に注力しよう 62
すこやかとは 健康が維持できていて 改善するのにコストが かからない状態 63