昨日はこれに参加してきました。
LT枠で申し込んでいたのでLTもしましたよ!
今回は、AWSの藤原さん(@twingo_b)のAmazon Auroraの話と、オミカレの曽根さん(@soudai1025)のデータベースモニタリングの話で、どちらも内容が濃くて面白かったです。
togetterまとめ
まとめがありますので、当日の様子はこちらでご確認ください。
Amazon Aurora ベストプラクティスと最新アップデート
私自身はAWSほとんど使ったことがないのですが、RDSとAuroraは何が違うのかイマイチわかっていなかったので楽しみにしていました。
Auroraすごい
Auroraはハイエンドデータベースのような性能と可用性で、オープンソースデータベースのMySQLとPostgreSQLのどちらかを選択できる。PostgreSQLの場合は、9.6互換。データベースを通常のRDSからAuroraに変更するだけで普通に動く。プログラム側の変更なしで高速化できる!5倍速いとかネット上で見かけた。
お試し用にt2のインスタンスが選択できる。ただし、MySQLのみ。PostgreSQLはまだ選べない。残念…。
速くて障害に強い理由は、DB専用に作られたストレージと、3つのアベラビリティゾーンに分散化されたストレージノードにストライピングされていること、各AZにコピーが作られていること、マスターとレプリカが同じストレージ上にあること、など。
AWSのサービスなので他のAWSとのサービスとの連携が強み。例えば…
- プロシージャからLambdaの呼び出し
- S3にバックアップ
- IAMでアクセス制御
- CloudWatchで監査ログやシステムメトリクスをとる
などなど。
一番嬉しいのは、ユーザーはアプリケーション最適化だけ考えればいいという点だと思う。DBのチューニングは、インスタンスサイズによって最初から適切な設定が行われているとか、最高。
RDSはスケールアップでもそんなに性能が上がらないことがあるけれど、Auroraにするとかなり上がる。そして移行は容易。Auroraにしない理由が見つからない…(お金以外で)。とはいえ、Auroraにすることでコスト削減っていう話もあった。管理コストも下がるし、商用DBからの移行で下がるという話だったかなと思う。商用DBからの移行用のサービス・ツールもある。データ移行サービス(DMS)と、スキーマコンバージョンツール(SCT)。
あとは新機能についての話題があったのだけれど、Aurora Serverlessが今後出るとか…。オンデマンドで起動するDBで、瞬発的にアクセスが多くなるようなものに使えるという話だった。ブログとか、BIツールとかによさそうとTLでは上がってたかなと思う。
Amazon Lockerすごい
話の導入前に、藤原さんがAmazonの本社に行ってたときの話があったのだけれど、Amazon Lockerという、買ったものがコインロッカーに届くというサービスが向こうでは始まってるらしい。日本でいうコンビニ配達みたいなものなのだけれど、人の手を介さずに荷物を受け取れるのですごくよさそう。流通も最適化されるだろうし、日本にも早く導入してほしい〜!
気づき
Auroraに変えるだけでパフォーマンスが向上する、というのは正直すごい。なんだかんだで多少は面倒臭いんだろうなとか思っていたけれど、移行が容易というのがよかった。PostgreSQLでもt2インスタンス使えるようになってほしい…。
今から始めるデータベース監視 ~あなたのデータベースは大丈夫?~
DBのモニタリング、スロークエリくらいは時々見ているけれど、あんまりちゃんとできていないしこれから趣味アプリでMackerelとか使っていくかーと考えていたので、ちょうどよかったです。
なぜモニタリングするのか?
モニタリングする理由は、
- 素早く障害に気づくため
- 原因究明のため
- 未然に障害を防ぐため
そもそも障害が起きてしまってはいけないので、サービスが落ちる前に気づけるようにしないといけない。
監視の勘所
監視は、サービスが正しく動いているかをモニタリングするわけだけれど、定量データを取り続けることで、意図しない挙動に気づくことができる。
アクセス監視でいえば、
- 特定のページにアクセスがない
- 特定の時間帯でアクセスがない
サーバ監視でいえば、
- batchのジョブ数の変化
- キューの数の変化
- DNS, NTPは問題ないか
サービス自体の監視でいえば、
- ユーザーのプレイ状況(アクティブユーザー数など)
- 検索ワード
- 申し込みボタンのクリック数
これらで、サービスの課題に気づきやすくなる。
DBのモニタリング
DBのモニタリングにはMackerelってやつがいいよという話と、DBの得意・不得意を知っておくことの重要性と、おすすめの本の紹介など。あとは内部構造がわかれば何を監視すればいいかが見えてくるという話もあった。
DBの得意・不得意
MySQLはキー1発でデータを取ってくるのは得意だけれど、JOINとか、複数INDEXを扱うのが苦手なので、それを知っていれば、一部をNoSQLに逃すとかの対策が打てる。DBだけでなんとかしようとしてもどうにもならないことがあるのを知っておくことが大事。
おすすめの本
Webエンジニアが知っておきたいインフラの基本 ~インフラの設計から構成、監視、チューニングまで~
- 作者: 馬場俊彰
- 出版社/メーカー: マイナビ
- 発売日: 2014/12/27
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る
この本は知らなかったので、読んでみたい。というか、社内で読書会するかな〜。募ってみるか。
- 作者: Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,菊池研自,株式会社クイープ
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/11/25
- メディア: 大型本
- この商品を含むブログ (7件) を見る
エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド
- 作者: 奥野幹也
- 出版社/メーカー: 技術評論社
- 発売日: 2010/06/12
- メディア: 大型本
- 購入: 16人 クリック: 204回
- この商品を含むブログ (35件) を見る
MySQLについてはこれらの本がおすすめらしい。もうMySQLは数年は触っていないな…。ちなみに家には結構MySQLの本ある(妻の持ち物とか)。
内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 Software Design plus
- 作者: 勝俣智成,佐伯昌樹,原田登志
- 出版社/メーカー: 技術評論社
- 発売日: 2014/09/17
- メディア: Kindle版
- この商品を含むブログを見る
PostgreSQLに関してはこの本は本当にいい。この本はバージョン9.3の頃のやつなのだけれど、そろそろ新しいのが出るらしいという噂を聞いたので個人ではまだ持ってないけれど新しいのが出たら買う!
Mackerelプラグインのコードリーディングがいい
Mackerelプラグインのコードを読むと、どういうSQLでどういう値を取得しているかがわかって面白いらしい。オープンソースだからこそって話でよかった。
LT
LTは3枠あったのだけれど、キャンセルや交通機関の影響?で、私だけだった。
OSS-DB Silverという資格を取ったのだけれど、体系的にデータベースの基本知識を学べるのでおすすめですというLTをした。Goldいつ取るの?と煽られたので、頑張ろうと思う。
お悩み相談タイム
JPUGの中国支部長のお悩み相談タイム、のはずが、本人が用事で急遽参加できなくなったため、相談内容だけ残してみんなで喧々諤々の話し合いが行われた。割と、身もフタもない話が展開されつつも、面白い話題になってよかったと思います。雑にまとめたツイートを自分がしていたので、とりあえず貼っておくけれど、togetterまとめを見た方がいいでしょう。
DBAの専任者は会社にいるか?「シーン」 #ChugokuDB
— パトラッシュ@育児休業中 (@patorash) 2018年6月30日
Q:インデックスのアプローチってどうやって進めますか?
— パトラッシュ@育児休業中 (@patorash) 2018年6月30日
A:予算を取れ#ChugokuDB
OracleやSQL Serverは勝手にインデックス貼ってくれるんか。すげー。 #ChugokuDB
— パトラッシュ@育児休業中 (@patorash) 2018年6月30日
Q:予算をとるには?
— パトラッシュ@育児休業中 (@patorash) 2018年6月30日
A:決裁者と仲良くなりましょう。#ChugokuDB
Q:できる人が東京に行ってまうんですが…
— パトラッシュ@育児休業中 (@patorash) 2018年6月30日
A:…#ChugokuDB
データベースリファクタリング(絶版)がおすすめ! #ChugokuDB
— パトラッシュ@育児休業中 (@patorash) 2018年6月30日
Q:どれにインデックスを貼るべきか?
— パトラッシュ@育児休業中 (@patorash) 2018年6月30日
A:コードを書かないやつに設計書を書かせるな#ChugokuDB
やっぱりDB設計もレビューが大事だな。 #ChugokuDB
— パトラッシュ@育児休業中 (@patorash) 2018年6月30日
自分なりの気づき
「SELECT INSERT or UPDATEはINSERT(UPDATE)中にSELECTの結果が変わってしまってはいけないからSELECTしている行もロックされる」という話題があって、なるほど〜!!と思いました。大量のデータで気軽にやったらシステム止まっちゃうよということだったので、忘れないようにしたい。
あとネットでは業務内容に絡むので話題にしづらいけれど、DB勉強会ではある程度踏み込んだ相談ができるので、そのあたり実際にDBに詳しい人たちに会って聞けるってのはほんま恵まれた機会だなと思います。
今回も充実した内容で楽しかったです!また参加したいと思います。