なんか始まった
ますぐれとISUCONにむけて勉強会をやることになりました。
今日は記念すべき第1回です。
といってもなにか問題を解くとかではなく、基礎知識が足りないということで、インフラ部分から勉強するということになりました。
勉強する本は各自で決めて、時間だけ決めて勉強するって感じです。
勉強したことは、ノートとしてブログなりwikiなりに書いて、終わった後に記事を共有という流れです。
気になるって人は僕かますぐれに連絡すればいいと思います。
みんなでわいわい勉強していきたいという野望があるらしい。
僕が使う本は、Webエンジニアが知っておきたいインフラの基本 ~インフラの設計から構成、監視、チューニングまで~です。
なんか評判良かったので
勉強したとこ
Webサービスにおけるインフラの役割
インフラはどこまでを扱うか
webシステムの階層構造のコロケーションからミドルウェアまで
Webシステムの階層構造
- アプリケーション実行環境(Java、Rubyとか)
- アプリケーション(独自開発部分)
- ミドルウェア(nginx,unicorn,MySQLなど)
- OS(Linuxなど)
- ハードウェア(サーバ機器、ネットワーク機器)
- ネットワーク(接続回線などのネットワーク環境)
- コロケーション(データセンター、電源などの物理的な格納場)
結構手広くやってるんだな~
ちなみに今話題のIaaS(Infrastructure as a Service)はコロケーションからハードウェアまで、
PaaS(Platform as a Service)はコロケーションからアプリケーション実行環境までをインターネット経由で利用できるサービス。
IaaSの具体例はAWS(Amazon Web Services)、
SaaSの具体例はHerokuですね。(いつもお世話になってます)
インフラ運用までのフロー
要件定義
↓
設計
↓
調達
↓
構築
↓
運用
アプリケーションの構築と違うのは設計と構築の前に「調達」という工程が入ることらしい。
インフラ設計
インフラ設計とは、要件を実装に落とし込む工程。
要件は機能要件と非機能要件の2種類ある。
機能要件は具体的(ロードバランサ配下にWebサーバを4台配置する、など)
非機能要件は抽象的(稼働率、性能目標、保守、セキュリティ対策、環境マネジメントなどなど)
いかに非機能要件を機能要件に落とし込んでいくかがインフラエンジニアの腕の見せ所
稼働率を高める
稼働率の求め方は、
稼働率
= 障害発生間隔
÷ (障害発生間隔
+ 平均復旧時間
)
障害発生間隔
= 累積使用時間
÷ 故障回数
累積修理期間
= 累積修理期間
÷ 故障回数
で求められる。
故障とは、Webサービスで言えばユーザーがアクセスしてもWebページが表示されないなどなど。
この稼働率を高めていくのが目標。
稼働率を高めていくには、
- 要素単体の稼働率を高くする(サーバのパーツを2重化するなど)
- 要素を組み合わせた全体の稼働率を高くする(ホットスタンバイ、コールドスタンバイ)
- 負荷問題を回避する(スケールアップ、スケールアウト)
ことが大事。
おしまい
なんか毎週月曜にやっていくらしいです。
でも来週は祝日なのでやらないようです()