Slide 1

Slide 1 text

1 / 13 RDSのレプリカが便利過ぎて涙が出た話 [ 京都] テクテクテック #7 DB勉強会(新機能や運営でのあれこれ) 2019/1/16 LT発表 @21ma

Slide 2

Slide 2 text

2 / 13 自己紹介 西村匡司(@21ma) 株式会社スプーキーズ 創業メンバー 経理兼総務兼ソフトウェアエンジニア テクテクテック運営者

Slide 3

Slide 3 text

3 / 13 キャンペーンサイトを構築することになった 年末年始向けのとあるキャンペーンサイト ユーザ投稿による画像生成有り

Slide 4

Slide 4 text

4 / 13 アーキテクチャ Nginx( 1.12) FuelPHP( PHP7.2) Flask( Python3.6) pillow: 画像生成 MySQL( 5.6.40) テーブル数: 6

Slide 5

Slide 5 text

5 / 13 サーバ構成(AWS) EC2 RDS MySQL Elasticache memcached S3

Slide 6

Slide 6 text

6 / 13 求められる性能 500req/s

Slide 7

Slide 7 text

7 / 13 本番直前の負荷対策中 「RDS のCPU が100% で張り付いて、スケールアウトしないです」 な、なんだって!! たかだか1テーブルの参照にそんなにかかるのか?! 必要ないと思ってたけど、スレーブ構成を検討。

Slide 8

Slide 8 text

8 / 13 今までやってたスレーブ構成準備 1. スレーブ用mysqlサーバ準備 2. my.cnfでレプリケーション設定(server‑id, log‑bin, relay‑log等設定) 3. mysql再起動 4. master statusでPositionを記録 5. dumpデータ作成 6. スレーブにdumpデータインポート 7. スレーブにPositionを設定 8. スレーブ開始 あーめんどくさい

Slide 9

Slide 9 text

9 / 13 RDSのレプリカ機能 これ押してちょっと設定するだけ。設定10秒。インスタンス作成5分くらい インスタンス作成がもう少し早ければなー・・

Slide 10

Slide 10 text

10 / 13 2つ目も3つ目も簡単 同じ操作を繰り返すだけ。

Slide 11

Slide 11 text

11 / 13 消すときも、ボタン一つ。

Slide 12

Slide 12 text

12 / 13 お陰様で 500req/s 達成 わーい!! (他にも、S3画像転送速度、memcachedエラー等いろいろありましたが・・。それはま たー別のお話。)

Slide 13

Slide 13 text

13 / 13 まとめ 便利そうだなーとは思っていたけど、本番反映直前の時間が無いときにこの簡易さは神だ った。 EC2借りてその中にMySQL手動でインストールなんてしないでRDSですよー。 (高いけど) 今年はAWS使いこなすぞー!