はじめに
ずっと食わず嫌いだったインフラ関連のお話。
「難しそう」「ハードウェアか」みたいに思ってて、なかなか勉強にとりかかることもなくここまできてしまいました。
感覚的にざっくりどんな感じかはわかっているけど、何がどういう働きをしているのか、それぞれの専門用語をちょっとは調べたけど全部がつながっていない状態。
でも、一人だけチームの話についていけてない感満載だし、サーバどうとかいう話は完全には理解しきれなくて。。ただの悔しさから1冊の本を買ってみたので、その一部をまとめます。
クラウドサービスのIaaSとPaaSの違い
ネットワークの階層構造を利用して、特定階層までをパッケージングして提供しているのがクラウドサービス。
IaaS(Internet as a Service):サーバやネットワークなどインフラ部分をインターネット経由で利用できる
PaaS(Platform as a Service):インフラ部分はあまり意識せずに用意された【開発環境】環境をインターネット経由で利用できる
なので、AWS(EC2)などはIaaS、HerokuなどはPaaS。
※1つの会社が両方用意する傾向あり
ファイアウォールってなんだっけ
ファイアウォールはネットワーク内でのセキュリティに使われる。
中から外、外から中への通信内容を制御し、意図しない通信が発生しないように接続要求を遮断することで、ネットワークのセキュリティが向上する。
「ACID」という考え方
インフラの性能を向上するときに必要な考え方(意識)らしい。
- 原子性(Atomicity):これがないと2つで1つの処理が片方実行されない状態が発生し、処理が中途半端になる
- 一貫性(Consistency):これがないと、操作の途中に状態が見えるようになってしまう
- 独立性(Isolation):これがないと一連の処理として順番に行いたいものが実行されず、処理途中で見えてしまう
- 永続性(Durability):これがないと処理が完了したのにデータが保存されていない事態が起こる
よく聞く「マスター」と「スレーブ」という言葉
システムの冗長化をする仕組みの中で出てくる
冗長化とは
システムの一部に何らかの障害が発生した場合に備えて、障害発生後でもシステム全体の機能を維持し続けられるように予備装置を平常時からバックアップとして配置し運用しておくこと。
by Wikipedia
そのデータの整合性をとるための方法として「Shared Nothing方式」がある。
この方式の場合、ストレージ間で通信してデータの整合性を取っている。これを「レプリケーション」と呼び、データの送信元を「マスター」、データの受信元を「スレーブ」と呼ぶ。
マルチ・マスター(Multi-Master)という相互にマスターとスレーブの役割を持たせるやり方もあるが、トラブルが多くなりがちなので、あまり使わない。
負荷分散(ロードバランシング)とは
ロードバランシングの方法は2種類あり、
- ロードバランサというサーバ側の仕組み
- DNSラウンドロビンというクライアント側の仕組み
※基本的にはロードバランサを利用しながら、適宜DNSラウンドロビンを併用する
DNSラウンドロビンの仕組みは、同じURLに2つのIPアドレスを設定しておくことで、ランダムに振り分けられるので、負荷の軽減になると考えられたもの。
ロードバランサのメリット・デメリット
メリットは確実に意図通りに分散できること。
デメリットはボトルネックにならないよう、冗長化も考える必要がある
DNSラウンドロビンのメリット・デメリット
メリットは設備はいらないのでボトルネックにはなりません。
デメリットは切り替えがうまくいくわけではない。
実際にやってみる
Google Cloud Platformでやってみたけど、実力不足で全然前に進まず。。。
AWSの方が簡単らしいので、やり方変えてみる。