Slide 1

Slide 1 text

運用しているアプリケーションのDBの リプレイスをやってみた KMiura(@k_miura_io)

Slide 2

Slide 2 text

自己紹介 • 三浦 耕生(こうき) • Acallのバックエンドエンジニア • JAWS UG名古屋&神戸 運営 • 鯱.py 運営 @k_miura_io koki.miura05

Slide 3

Slide 3 text

今年もお守り当てました!

Slide 4

Slide 4 text

• 3年ぐらい前にDjangoの初学者向けに教材 を作成した • Techpitで公開中 (https://www.techpit.jp/courses/189) • 今回はこの教材用に公開しているサンプルア プリの話 今回の話のきっかけ&ちょっと宣伝

Slide 5

Slide 5 text

Jobpit • ジョブカン風の勤怠管理アプリ • 打刻以外にも、打刻修正申請、 申請承認(管理者向け)の機能 がある • 唯一個人開発で公開している アプリケーション

Slide 6

Slide 6 text

DEMO https://www.jobpit.kmiura.org/

Slide 7

Slide 7 text

システム構成 (初代)

Slide 8

Slide 8 text

特徴 • すべてLightsailで完結 • AWSでまともに触った ことがあるのが Lambdaしかなかった ので手軽に動かせる ように構成 • 途中でSSHで手動デ プロイするのが面倒に なってコンテナに移行

Slide 9

Slide 9 text

問題点 • DBで月15ドル払うのは微妙(Containerと合わせると23ドル程度) • 頻繁にアクセスされるわけでも無いので40GBもいらない

Slide 10

Slide 10 text

リニューア ル構成

Slide 11

Slide 11 text

特徴 • コンセプトは「脱・AWS 初心者」w • ECSは高すぎるので AppRunnerを採用 • DBはTiDBを採用

Slide 12

Slide 12 text

TiDBとは? • MySQL互換の分散型データベース • 柔軟でスケーラビリティを備えた分散アー キテクチャ • TiDB Serverlessならメールアドレス一つで 無料ではじめられる https://docs.pingcap.com/ja/tidb/stable/tidb- architecture

Slide 13

Slide 13 text

TiDB Serverless無料枠 クラスタ数 5つまで 行ストレージ 25GB 列ストレージ 25GB リクエストユニット 250MB https://pingcap.co.jp/tidb-serverless-pricing-details/

Slide 14

Slide 14 text

インポート • mysqldumpを使用したDB移行に対応 • データはローカルやS3にあるCSVをインポート してテーブル作成することもできる • Djangoだと複数のテーブルを使用するため、 今回はSQLクライアントを使用してdumpを 行った • 念の為、DB移行作業中はメンテナンスモード にしておいた

Slide 15

Slide 15 text

詰まったところ • Djangoで使っていたMySQLクライアントの バージョンにズレがあったことで移行元のDB で使ってた文字コードが使えずエラーになった • mysqlclientのバージョンを調整したら問題な く接続できた

Slide 16

Slide 16 text

使用量

Slide 17

Slide 17 text

TiDB Serverlessに移行して良かったこと その1 • DBに一度でもアクセスがあった週には Weeklyレポートがメールで送られてその週に 実行されたSQLを確認できる • レポートが送られる=誰かに使ってもらってい ることがわかって一人ニッコリ(^^) • 最近は大体一人でデバッグでアクセスしてい るだけのことが多いw

Slide 18

Slide 18 text

TiDB Serverlessに移行して良かったこと その2 • 定期的なバックアップをサポート • 無料版は1日1回決まった時間の定期バックアップに対応しているが、従量課金プランに するとバックアップの設定もカスタムできる

Slide 19

Slide 19 text

TiDB Serverlessに移行して良かったこと その3 • ブラウザ上でSQLを叩けるエディタを提供している • Chat2QueryでAIが目的に沿ったSQLを生成してくれる • エラーが出たSQLの修正もAIがやってくれる

Slide 20

Slide 20 text

おまけ • LightSailの時と比べてランニングコストが上 がったw • App Runnerのスペックを上げたのと、Route 53 やSecrets Mangerを導入したのが原因 • AWS Community Builderのクレジットを使って いるので実質無料(今のところは)

Slide 21

Slide 21 text

まとめ • TiDBにリプレイスしてランニングコストを下げて安定稼働を実現できた • MySQL互換でMySQLのアダプターが問題なく機能した • Weekly ReportなどDBの運用にあると便利な機能が充実している

Slide 22

Slide 22 text

END