rabbit-slide-kou-droonga-meetup-1 2014.7.30.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 311f2054de437e02b6df6412b45c3e7b671452d8
4
+ data.tar.gz: f1287887f86558ef7c80dca88c56a3eed300c8e3
5
+ SHA512:
6
+ metadata.gz: 6a69ff3be15f6250739966aa3a0ba24e745322169aca680d9b1cb1625b366917537cde4f3455c842075b209dd6fe99e98b4f69bdd80f5df7de019bf272af4561
7
+ data.tar.gz: 4e3841f118a46d5cce25f771517f77d8f8e59e76f3a674b37a2a98a6a34841307edbb8a06eb63a8e842b46ca699a01bca489f120c4f9e10e45b7d3550ffbe3d4
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ droonga-world.rab
@@ -0,0 +1,54 @@
1
+ = Droonga移行後の世界
2
+
3
+ GroongaからDroongaに移行した後、どんな世界が待っているかを説明します。例えば、どのように運用すればよいか、どのようなケースが得意か、今後どのような機能を強化していくなどです。
4
+
5
+ === 画像
6
+
7
+ ==== Groonga関連プロジェクトの画像
8
+
9
+ images/以下にある以下のファイル。
10
+
11
+ * droonga-icon.svg
12
+ * droonga-icon-full-size.svg
13
+ * droonga-logo.svg
14
+ * groonga-icon.svg
15
+ * groonga-icon-full-size.svg
16
+ * groonga-logo.svg
17
+
18
+ CC BY-SA 3.0
19
+
20
+ 原著作者名は以下の通りです。
21
+
22
+ * Groongaプロジェクト
23
+
24
+ === その他
25
+
26
+ 上述以外のファイルです。
27
+
28
+ CC BY-SA 3.0
29
+
30
+ 原著作者名には以下のどちらかを使ってください。
31
+
32
+ * 須藤功平
33
+ * Kouhei Sutou
34
+
35
+ == 作者向け
36
+
37
+ === 表示
38
+
39
+ rake
40
+
41
+ === 公開
42
+
43
+ rake publish
44
+
45
+ == 閲覧者向け
46
+
47
+ === インストール
48
+
49
+ gem install rabbit-slide-kou-droonga-meetup-1
50
+
51
+ === 表示
52
+
53
+ rabbit rabbit-slide-kou-droonga-meetup-1.gem
54
+
@@ -0,0 +1,17 @@
1
+ require "rabbit/task/slide"
2
+
3
+ # Edit ./config.yaml to customize meta data
4
+
5
+ spec = nil
6
+ Rabbit::Task::Slide.new do |task|
7
+ spec = task.spec
8
+ task.spec.files += Dir.glob("images/**/*.*")
9
+ # task.spec.files -= Dir.glob("private/**/*.*")
10
+ task.spec.add_runtime_dependency("rabbit-theme-groonga")
11
+ end
12
+
13
+ desc "Tag #{spec.version}"
14
+ task :tag do
15
+ sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
16
+ sh("git", "push", "--tags")
17
+ end
@@ -0,0 +1,23 @@
1
+ ---
2
+ id: droonga-meetup-1
3
+ base_name: droonga-world
4
+ tags:
5
+ - rabbit
6
+ - groonga
7
+ - droonga
8
+ presentation_date: 2014-07-30
9
+ version: 2014.7.30.0
10
+ licenses:
11
+ - CC BY-SA 3.0
12
+ slideshare_id: droonga-meetup-1
13
+ speaker_deck_id: droongayi-xing-hou-falseshi-jie
14
+ ustream_id:
15
+ vimeo_id:
16
+ youtube_id:
17
+ author:
18
+ markup_language: :rd
19
+ name: Kouhei Sutou
20
+ email: kou@clear-code.com
21
+ rubygems_user: kou
22
+ slideshare_user: kou
23
+ speaker_deck_user: kou
@@ -0,0 +1,406 @@
1
+ = Droonga\n移行後の世界
2
+
3
+ : author
4
+ 須藤功平
5
+ : institution
6
+ 株式会社クリアコード
7
+ : content-source
8
+ Droonga Meetup 1
9
+ : date
10
+ 2014/07/30
11
+ : allotted-time
12
+ 30m
13
+ : theme
14
+ .
15
+
16
+ = 目指すこと
17
+
18
+ Droonga移行後の\n
19
+ システムを\n
20
+ 想像できること
21
+
22
+ = 話題
23
+
24
+ * 運用方法(('note:(重点的に説明)'))
25
+ * 特有の機能(('note:(軽く説明)'))
26
+ * 今後の開発(('note:(軽く説明)'))
27
+
28
+ = 質疑応答時間アリ
29
+
30
+ * 気になったら…
31
+ * メモ→最後に質問
32
+ * その場で質問
33
+ * 気になることは聞いて欲しい
34
+ * 何が気になるか知りたい
35
+
36
+ = 話題1
37
+
38
+ * ((*運用方法*))
39
+ * 特有の機能
40
+ * 今後の開発
41
+
42
+
43
+ = 運用方法
44
+
45
+ * 死活監視
46
+ * パフォーマンス監視
47
+ * ノード構成の変更方法
48
+
49
+ = 死活監視
50
+
51
+ * システムが正常動作しているか\n
52
+ 継続的に確認
53
+ * →システムの構成要素は?
54
+ * →正常動作とは?
55
+ * Droongaの場合
56
+ * クラスターの構成要素は?
57
+ * それぞれの提供サービスは?
58
+
59
+ = Droongaクラスター
60
+
61
+ # image
62
+ # src = images/droonga-system.svg
63
+ # relative-height = 100
64
+
65
+ = ポイント
66
+
67
+ * SPOFなし
68
+ * 管理ノードなし
69
+ * すべてのエンジンは同列
70
+ * 管理情報はすべてのエンジンが持つ
71
+ * ユーザーはHTTPでアクセス
72
+
73
+ = HTTPサーバー図
74
+
75
+ # image
76
+ # src = images/droonga-http-server.svg
77
+ # relative-height = 100
78
+
79
+ = HTTPサーバー
80
+
81
+ * 1番ユーザーに近い
82
+ * ここで正常動作を確認
83
+ * →Droongaクラスターは正常動作
84
+ * n台構成推奨
85
+ * 冗長化・負荷分散
86
+ * ロードバランス対象
87
+
88
+ = HTTPサーバー:役割
89
+
90
+ * HTTPのAPIを提供
91
+ * 実体はプロキシ
92
+ * バックエンドは\n
93
+ Droongaエンジンクラスター
94
+ * プロトコルを変換
95
+ * データを持っていない
96
+
97
+ = HTTPサーバー:監視図
98
+
99
+ # image
100
+ # src = images/droonga-http-server-monitor-items.svg
101
+ # relative-height = 100
102
+
103
+ = HTTPサーバー:監視項目
104
+
105
+ * HTTPを話せるか?
106
+ * 基本的な監視
107
+ * "/"をGETして200か監視
108
+ * プロキシできているか?
109
+ * 詳細な監視
110
+ * 検索してヒットするか監視
111
+
112
+ = HTTPサーバー:監視効果
113
+
114
+ * HTTPを話せるか?
115
+ * サービスは生きている
116
+ * 役割を果たしているとは限らない
117
+ * プロキシできているか?
118
+ * 役割を果たしている
119
+ * 実現方法はデータに依存
120
+
121
+ = HTTPサーバー:監視効果図
122
+
123
+ # image
124
+ # src = images/droonga-http-server-monitor-items.svg
125
+ # relative-height = 100
126
+
127
+ = エンジンクラスター図
128
+
129
+ # image
130
+ # src = images/droonga-engine-cluster.svg
131
+ # relative-height = 100
132
+
133
+ = エンジンクラスター
134
+
135
+ * エンジンが連携して動作
136
+ * クラスター内にnレプリカ存在
137
+ * 障害度合いとサービスレベル
138
+ * 低: 100%サービス利用可
139
+ * 中: 構成変更中の書き込み不可
140
+ * 高: サービス不可(参照も不可)
141
+
142
+ = 監視項目
143
+
144
+ * 2つ以上のレプリカが生存?
145
+ * 障害度合い:低(('note:(100%サービス利用可)'))
146
+ * 構成を考慮した死活チェック
147
+ * 1つ以上のレプリカが生存?
148
+ * 障害度合い:中(('note:(構成変更中の書き込み不可)'))
149
+ * 検索してヒットするか監視
150
+
151
+ = 監視効果
152
+
153
+ * 2つ以上のレプリカが生存?
154
+ * 障害なし or
155
+ * サービスレベル低下なしで復旧可能
156
+ * 1つ以上のレプリカが生存?
157
+ * サービスは提供できている
158
+ * サービスレベル低下するが復旧可能
159
+
160
+ = 監視効果図
161
+
162
+ # image
163
+ # src = images/droonga-engine-cluster-monitor-items.svg
164
+ # relative-height = 100
165
+
166
+ = エンジン図
167
+
168
+ # image
169
+ # src = images/droonga-engine.svg
170
+ # relative-height = 100
171
+
172
+ = エンジン
173
+
174
+ * データを持ち、処理する
175
+ * 1エンジンnワーカー
176
+ * マルチプロセス
177
+ * 自律的に構成変更を検知
178
+ * 管理ノードなし
179
+ * あるエンジンがダウンしたら\n
180
+ 自分が持つクラスター情報を更新
181
+
182
+ = 監視項目
183
+
184
+ * 監視しなくてよい
185
+ * エンジンクラスター監視で十分
186
+
187
+ = 死活監視のおさらい
188
+
189
+ * 目的
190
+ * システムの正常動作を確認
191
+ * システムの構成要素
192
+ * HTTPサーバー(('note:(監視対象)'))
193
+ * エンジンクラスター(('note:(監視対象)'))
194
+ * エンジン
195
+
196
+ = Droongaクラスター
197
+
198
+ # image
199
+ # src = images/droonga-system.svg
200
+ # relative-height = 100
201
+
202
+ = HTTPサーバーの監視
203
+
204
+ # image
205
+ # src = images/droonga-http-server-monitor-items.svg
206
+ # relative-height = 100
207
+
208
+ = エンジンクラスターの監視
209
+
210
+ # image
211
+ # src = images/droonga-engine-cluster-monitor-items.svg
212
+ # relative-height = 100
213
+
214
+ = 死活監視
215
+
216
+ * HTTPサーバー
217
+ * HTTPの機能をチェック
218
+ * プロキシの機能をチェック
219
+ * エンジンクラスター
220
+ * 生存レプリカ数をチェック
221
+ * エンジン
222
+ * 死活監視しなくてよい
223
+
224
+ = 運用方法:死活監視
225
+
226
+ * ((*死活監視*))
227
+ * パフォーマンス監視
228
+ * クラスター構成の変更方法
229
+
230
+ = パフォーマンス監視
231
+
232
+ * 死活監視
233
+ * ((*パフォーマンス監視*))
234
+ * クラスター構成の変更方法
235
+
236
+ = パフォーマンス監視
237
+
238
+ * 監視項目
239
+ * 監視方法
240
+
241
+ = 監視項目
242
+
243
+ * 検索時間
244
+ * 目的:スロークエリを発見
245
+ * キャッシュヒット率
246
+ * 目的:検索処理の削減
247
+ * CPU使用率
248
+ * 目的:ボトルネックの解消
249
+
250
+ = 監視方法
251
+
252
+ * 検索時間
253
+ * アプリケーション側で計測
254
+ * キャッシュヒット率
255
+ * "/statistics/cache"をGET
256
+ * CPU使用率
257
+ * 既存の統計情報可視化ツール
258
+ * 例:Munin
259
+
260
+ = 検索時間:計測場所と粒度
261
+
262
+ * アプリケーション
263
+ * 全体の時間
264
+ * HTTPサーバー
265
+ * Droonga側の処理全体の時間\n
266
+ (('note:(X-Response-Time HTTPヘッダー)'))
267
+ * エンジン
268
+ * 各処理の時間\n
269
+ (('note:(クエリーログ:未実装)'))
270
+
271
+ = キャッシュヒット率
272
+
273
+ (('tag:center'))
274
+ http://.../statistics/cache
275
+
276
+ # coderay json
277
+ {
278
+ "nGets": 8,
279
+ "nHits": 6,
280
+ "hitRatio": 0.75
281
+ }
282
+
283
+ = CPU使用率
284
+
285
+ * ボトルネックはCPUになるはず
286
+ * HTTPサーバーの場合
287
+ * 数を増やして負荷分散
288
+ * エンジンの場合
289
+ * CPUのコア数までワーカーを増やす
290
+ * リクエスト受信エンジンを分散
291
+
292
+ = HTTPサーバーの負荷分散
293
+
294
+ # image
295
+ # src = images/droonga-http-server-cpu-performance.svg
296
+ # relative-height = 100
297
+
298
+ = エンジンの負荷分散
299
+
300
+ # image
301
+ # src = images/droonga-engine-cpu-performance.svg
302
+ # relative-height = 100
303
+
304
+ = おさらい
305
+
306
+ * 目的
307
+ * 高速化
308
+ * ボトルネックの解消
309
+ * 監視項目
310
+ * 検索時間(('note:(ボトルネックの解消)'))
311
+ * キャッシュヒット率(('note:(高速化)'))
312
+ * CPU使用率(('note:(ボトルネックの解消)'))
313
+
314
+ = 構成変更
315
+
316
+ * 死活監視
317
+ * パフォーマンス監視
318
+ * ((*クラスター構成の変更方法*))
319
+
320
+ = Droongaクラスターの構成図
321
+
322
+ # image
323
+ # src = images/droonga-engine-cluster-data-architecture.svg
324
+ # relative-width = 100
325
+
326
+ = Droongaクラスターの構成
327
+
328
+ * シャーディング構成
329
+ * レプリカ毎に設定可
330
+ * シャーディング構成変更
331
+ * 運用しながら変更可
332
+ * レプリカの増減
333
+ * 運用しながら変更可
334
+
335
+ = 構成変更の基本作戦図
336
+
337
+ # image
338
+ # src = images/droonga-engine-cluster-change-architecture.svg
339
+ # relative-height = 100
340
+
341
+ = 構成変更の基本作戦
342
+
343
+ * レプリカを1つ外す
344
+ * ↑からデータをダンプ
345
+ * ↑を新しいレプリカに投入
346
+ * 外したレプリカを戻す
347
+ * 新しいレプリカを追加
348
+
349
+ = 運用方法のおさらい
350
+
351
+ * 死活監視
352
+ * 構成要素毎に紹介
353
+ * パフォーマンス監視
354
+ * 項目と目的を紹介
355
+ * クラスター構成の変更方法
356
+ * 特徴と流れを紹介
357
+
358
+ = 特有の機能
359
+
360
+ * 運用方法
361
+ * ((*特有の機能*))
362
+ * 今後の開発
363
+
364
+ = 特有の機能
365
+
366
+ * 多段ファセット
367
+ * Solrでいうピボットファセット
368
+ * Elasticseachでいうaggregations
369
+ * ファセット内のレコードを取得
370
+ * 利用例:スレッドでグループ化し、\n
371
+ 各スレッド内のコメントを数件表示
372
+
373
+ = 今後の開発
374
+
375
+ * 運用方法
376
+ * 特有の機能
377
+ * ((*今後の開発*))
378
+
379
+ = 今後の開発1
380
+
381
+ * Groongaとの互換性強化
382
+ * 未実装の機能を実装
383
+ * よく使われている機能から順に
384
+ * 検索処理の高速化
385
+ * 通信量を減らす
386
+ * ルーティング周りの処理の軽量化
387
+
388
+ = 今後の開発2
389
+
390
+ * 導入の簡易化
391
+ * パッケージの提供
392
+ * Chefとの連携
393
+ * 運用支援機能の開発
394
+ * ダッシュボード
395
+ * リクエスト受信エンジンを\n
396
+ 自動で負荷分散
397
+
398
+ = まとめ
399
+
400
+ * 運用方法
401
+ * 監視・構成変更方法
402
+ * 特有の機能
403
+ * Groongaのコアができることを解放
404
+ * 今後の開発
405
+ * いろいろ
406
+ * ユーザーの声を考慮して優先度決定