テスト駆動開発を読んだので感想じゃない何かを書く

ネムネムですが、思ったことを書き連ねたい気分なので書く。

昼に食べた激辛カレーのせいで腹が痛いので、トイレと布団を行き来しながら書く

続きを読む

ISUCON7の過去問をやったら自信がアルゼンチンに行ってしまった話

どうもnasaです。

最近お昼ご飯にスリランカカレーばっかり食ってたらバイト先の人にカレーマンと呼ばれました。

スリランカカレーマンと呼んでほしいです、、、

ラブライブサンシャインの映画を見て自分の目でイタリアの町並みを見てみたくなり、100万円欲しさにISUCON優勝を夢見て、ISUCON7の過去問を解きました。

その備忘録を書きます。

続きを読む

GitHub issueの起票リンクを生成するツールを作った

どうもnasaです。 最近webアプリケーションのパフォーマンスチューニングがいい感じに書いてある本が読みたいお年頃です。おすすめあったら教えてください。

風邪が長引いて悲しいので、ストレスをアウトプットに変えようと思いこのツールを作りました(?)

続きを読む

DBのレプリケーションとシャーディングについて雑に書く

どうもnasaです。 本日、データベース実践入門という本を読んでいて、DBのスケールアウトに関する話が面白かったので、自分なりにメモしようと思い書いています。

スケールアウト

一旦スケールアウトもメモメモしていく

自分のWEBアプリでは経験ないけど、単一DBサーバーでは性能限界が来てしまうらしい。

そこで、スループット向上の方法としてスケールアウトがある。

スケールアウトはサーバーマシンを複数用いてアプリケーションからの負荷を分散する方法。

実際に処理能力がスケールするかは処理の内容やアーキテクチャによる。とのこと

レプリケーション

レプリケーションは、スケールアウトの代表的なアーキテクチャ

DBサーバーに含まれるデータを他のDBサーバーへ複製する技術。

複製のもとになるDBをマスタ、複製先をスレーブと呼ぶ。

DBへの更新処理はマスタへ行い、それをスレーブに反映する。そして、参照系の処理はスレーブへ行うことで参照系の負荷を分散している。 (トランザクション内での必要な参照はマスタに対して行う必要あり。)

シャーディング

シャーディングは行ごとにデータの格納先DBを変更するアーキテクチャ

僕のイメージではパーティショニングをほぼ一緒。 DBが別々だけど、

例が正しいかわからんけど、user_idの1~100はシャード1へ、101~200はシャード2へ、、、みたいな感じ。

どのシャードにデータを格納するべきか?というロジックがアプリケーション側に必要になるので、少しアプリケーションが複雑になる。

アプリケーションを複雑にしてでも、更新系処理の性能を上げたい!天元突破したい!というときにはシャーディングがおすすめらしい。

参照系もスケールさせたいときは、レプリケーションと組み合わせるのがいいよ。

感想

「サーバーサイドエンジニア見習いです!」みたいなことを言っておきながら、ここらへんの話も知らず、恥ずかしいです。

ことしはサーバー/インフラを支える仕組みを学ぶ一年にしたいな〜と思いました。

でも、ここらへんのことって、実践する機会が少なくない? 個人規模ではあまり必要なさそうだし、インターンの分際にはやらしてもらえなさそうだし。

どうするのが良いのですかね?