新人エンジニアのインフラ入門
大体が他の本で読んだ内容。見出し見る限りは新出はなさそうなので、ざっくりとまとめてく。
ITインフラの全体像
そもそもインフラって何?から始まる
用語の解説
テープ装置って特定の状況においてはバックアップとして使えるのだな
災害等の有事に備えてハードディスクの内容をバックアップする目的で使用する。〜中略〜テープだけ取り出せば持ち運びが可能なため離れた場所に保管しているシステムもあります。
サーバ
サーバーとは何か、から始まりWebサーバーを構成する要素についての解説
ネットワーク
よくある郵便物の例えで通信に仕組みをざっくり解説
https://gyazo.com/07484c371ae7bcb9965ee773463f2dfb
この図は非常に分かりやすい。ペイロードっていうのがわからない人にもわかる図。
各階層では、色の濃いところしか読みこまない
ポートの説明の図も比較的わかりやすい
https://gyazo.com/f446e975cb0b1029a593a1c902c12120
スイッチとルーター
スイッチ
コンピュータやネットワーク装置を接続してLANを組む際に使用します。
L2スイッチ=ネットワークインターフェース層、L3スイッチ=インターネット層
ルーター
LAN同士を組み合わせてWANを組む際に使用する。インターネット層までの処理を担当する。
仮想化とクラウド
仮想化のメリットとクラウドサービスのざっくりした解説
サーバやネットワークといった物理的資源を抽象化し、論理的に見せる手法が仮想化
例:4つのCPUを搭載した物理サーバの存在を隠して、1つのCPUを搭載した4台の論理サーバーを構成する
ホスト型とハイパーバイザ型
可用性、拡張性、運用保守性に優れる
クラウドサービスの管理範囲の比較
https://gyazo.com/b9c481809b647b84b4f4cd52b4e6faba
クラウドサービスで使われている仮想化技術が違う
Azure HyperーV
GCP KVM
AWS Xen
物理サーバ
コンピュータの仕組みと構成要素
コンピュータの5大装置
演算、制御、記憶、入力、出力
メモリとHDDの違い
メモリはCPUが直接アクセスできる記憶装置(=メインメモリ)
HDD(=補助記憶装置)はCPUが直接アクセスできない
BIOS(Basic input output system)
ファームウェアの一種(Firm=固定したの意)、頻繁に更新されないのでこの名前
ファームウェアってソフトウェアと対になる言葉だったのか!mochi5o.icon
BIOSはハードウェアのチェックやOSの起動を担当する
OSが起動するためにはHDDを認識する必要がある
OSがインストールされていない場合はDVDドライブから読み込む(そのためにDVDドライブを認識する)
OS
OSの構成要素についての解説
狭義のOSは制御プログラムのことを指す
制御プログラムは一般的にカーネル(kernel)と呼ばれている
カーネルの役割
メモリ管理
タスク管理
データ管理
ハードウェアの抽象化
アプリケーションはOS(カーネル)を通してしかハードウェアにアクセスできない
OSがハードウェアにアクセスするための仕組みがシステムコール
https://gyazo.com/01f73cd81d73b6f7eb7dbe3d803fbabf
ここで急にstrace使った例が出てきたプロセスをアタッチするだけじゃなくてtimeみたいに使える(こっちがノーマルな使い方かも)
code:strace
$ strace ls /
メモリ管理
ページアウトとページイン(スワップインとスワップアウト)
必要なページだけが物理メモリに読み込まれて実行される
不要なデータを追い出すことをページアウトという
ページインとページアウトはvmstatというコマンドで観察できるようだ
code:vmstat
$ vmstat 1 10
タスク管理
マジックナンバー(4)±1で5つのタスクを1日にこなす、という考え方
なるほmochi5o.icon
タスクはコンピュータが処理する最小単位
プロセスとは
プログラムは実行する際に物理メモリに読み込まれるが、そのとき作成されるメモリの状態が「実行イメージ」
この実行イメージと管理情報を含めたものがプロセス
データ管理
ミドルウェア(Web, AP, DB)
ミドルってどことどこの間?
アプリケーションとOSの間(=広い)
アプリケーションに比べて汎用的な機能を提供する
機能としてはアプリケーションよりであるが、設計はOSなどの設計と密接に関わるためインフラエンジニアが受け持つ領域
Web3層構造
https://gyazo.com/b94e537caff77bdbc0a1eb4f455e5b33
唐突に、Apacheのインストールが始まってびっくり
実際にsystemctlで立ち上げてアクセスしているけど、IPアドレスとかは書いてないからあくまで解説として見るってことみたい(初心者にはこの情報だけではApache起動〜アクセスは無理だと思う)
Tomcatもインストールしている!
さらにMariaDBも!
なぜWeb3層構造が採用されるのか
セキュリティの高さ
管理がしやすい
ミドルウェア(システム運用)
システム障害は「起きるもの」として考える
いかに早く復旧できるか
単一障害点をなくし、バックアップを定期的に取得し、障害検知のために監視をすること
運用のためのミドルウェアはその上にアプリケーションを搭載して動作させるものではない
各種監視ツールやバックアップのツールなどが運用のミドルウェアになる
インフラエンジニアの仕事
具体的なトラブルシュートの話
straceここでも出てきた。インフラエンジニアが使えるべきコマンド。
構築とテスト
cksumとかmd5sumでデータ転送前後のファイルの破損を確認する
code:chksum
$ cksum data.tar.gz
$ md5sum data.tar.gz
構築の自動化
Chef、Ansible、Puppet
バックアップとリストア
リストアとリカバリ
https://gyazo.com/1c33749c3894afb1e0ee676b31c42194
セキュリティ
いまさらだけど、DosとDDosの違い
DoS攻撃とは、1台のパソコンでターゲットに大量のアクセスやデータを送り、負荷をかけることです。一方、DDoS攻撃は大量のパソコンを踏み台にしてDoS攻撃を行うことを指します。
プログラミング
コンパイル方式とインタプリタ方式
コンパイル方式は、コンピュータの実行前にソースプログラムを機械語で書かれた実行プログラムに変換する
インタプリタ方式は、コンピュータの実行時にソースプログラムを機械語で書かれた実行プログラムに変換する
自分用のまとめ
初出はなかったのでザーッと数時間で読破。所々で分かりやすい図があってよかった。
入門書と言うことで、それぞれ浅く広くなのは承知しているが、それでも章として必要かな?と思ってしまう箇所もあった。
特に最後の方。プログラミングはまあ要らないかなぁ。
それならセキュリティについてもっと掘り下げたり参考書籍を載せるなりしたほうがいいのでは。