ふみんさんの備忘録

私さんのブログです。読んだ本と行った場所の備忘録

『新人エンジニアのためのインフラ入門』chapter1~4

『新人エンジニアのためのインフラ入門』

 

 

『新人エンジニアのためのインフラ入門』これが、unlimitedに入っていたのでとりあえず読んでみることにした。

これはそれの備忘。

今回はchapter1~4まで

 

 

##chapter1

ITインフラの全体像システム=アプリケーション+インフラ(ITインフラ)・アプリケーションー業務やサービスに合わせて個別に作るもの
・インフラはシステムソフトウェアとハードウェアの二種類に分けられる


●ハードウェアに関して
物理サーバ24時間365日稼働、高速処理といった要件のシステムで使用される。cf)IAサーバ(Intel Architecture)ーパソコンの構造を許可したものUNIXサーバ -ワークステーション構造をもとに強化したものがある
ストレージ装置データ格納や信頼性といった要件に合わせたデータ保存に特化した装置基本的には物理サーバに接続し、筐体内のハードディスクと同じように使用する(NASはサーバに接続せずに、ネットワーク越しにファイルアクセスできる)
テープ装置ハードディスクの内容をバックアップする目的で使用する装置cf)LTO規格によって読み書き性能が向上した
ネットワーク装置物理サーバ間を相互に接続するための装置。LANケーブルを使用し物理サーバをネットワーク装置に接続する。(構成によってはネットワーク装置とネットワーク装置を接続することもある。)一定規模以上のシステムは2台で1セットとして運用している(固有情報以外は全く同じ設定を2台に対して行っている)ことが多く障害時には自動で通信経路が切り替わることで業務を継続できる。


cf)ファシリティエンジニアデータセンタでハードウェアを設置するラック電源や通信といった設備を扱う。搬入搬出など各種工事にかかわるエンジニア
ラック企業システムはデータセンターやサーバールームに設置されている。その中で、「効率よくハードウェアを設置できるように」と規格化された収納製品

 

 

●システムソフトウェアに関して
OSアプリケーションやミドルウェアが共通で使用する機能を提供するソフトウェア
ミドルウェアOSとアプリケーションの間に存在するソフトウェア。ex.ミドルウェアを使うことでデータベースとの接続を管理してくれるなどのメリットが存在する

 

 

●システムにおけるインフラ
クライアント・サーバシステムシステム利用者が使うコンピュータであるクライアントサービスを提供するコンピュータであるサーバに分かれる
webシステムクライアント・サーバシステムの中でもクライアント側のソフトウェアとして「Webブラウザ」を使用するシステムが主流になっている。
Web3層構造1、Webサーバ静的コンテンツの提供
2、APサーバ動的コンテンツの提供
3、DBサーバデータの提供。主にAPサーバからのリクエストに応じてデータを返す
WebサーバとAPサーバを一台に統合してwebAPサーバとする場合やWebサーバがない場合もある。

 

●システムにおけるインフラとはWeb、AP、DBの3つのサーバを中心にユーザー認証が必要ならば「認証サーバ」、監視・ジョブ管理などを行う「運用管理サーバ」など周辺を固める。

 

 

 

##chapter2サーバ

 


●サーバとはITシステムではクライアントにサービスを提供するモノがサーバであるまた、サーバを用意することで複数のクライアントからの要求を同時に処理できる

特定の役割を持つサーバ
特定の役割を持つサーバ本書では「物理サーバ」を示す。同じ物理サーバであっても導入するソフトウェアによって役割が異なってくる

Webサーバ役割
//TODO:この範囲に関してはインフラの構成に関する書籍や資料を参照

物理サーバ・CPU演算と制御を担当している。
・メモリ

・メモリ一時期的にプログラムや処理データを置くために使用される。基本的には各ソフトウェア(OS、ミドルウェア)の使用料を積み上げて必要な容量を決める

・HDDすぐには使用しないアプリケーションやファイルを入れておくために使用する。HDD容量が大きければ多くのアプリケーションやファイルを保存しておくことができる。(使える状態になるまでに少し時間がかかるという特徴がある)
CPU、メモリ、HDD、はサーバの性能に大きく関係するため、必要な性能や容量を見誤ると「処理能力低下」や「処理不能」に不能につながる。(対処法として、該当サーバのCPUやメモリの追加、物理サーバの増設などを検討する)

 

 

●OS(オペレーティングシステム)OSは「オペレーティングシステム」の略で「基本ソフトウェア」とも呼ばれる。ハードウェアとアプリケーション、ミドルウェアの間に位置し、メモリ管理やネットワーク処理など多くのソフトウェアが共通して利用する機能を提供する。
以下はサーバでよく使用されるOSである

・WindowServer>Microsoft社が提供。普段使い慣れたwindowsのPCと同じ感覚で使用することができる。

Red Hat enterprlse LinuxRHEL)>Red Hat社が提供。コストパフォーマンスに優れている。

CentOSCentOSプロジェクトから無償提供されているサーバOS。RHELとの完全互換を目指しているため、機能に遜色はない。開発環境にはCentOSを本番環境にはRHELをなどの使い分けも見られる。

・HP-UXHP社社が提供。大規模なシステムや重要なサーバでの採用実績が多くあり「信頼性の高いOS」と言われている。その分、導入費用が高くコストがデメリット。フロントサーバ(Webサーバ、APサーバ)はLinux、DBサーバはHP-UXという組み合わせも見られる。

・AIXIBM社が提供するHP-UXと同じ立ち位置にあるサーバOS
OSに関する勉強法>>RHELCentOSUNIXの基礎を勉強するのが良い。

 

 

ミドルウェアミドルウェアはアプリケーションとOSの中間的な役割を持つソフトウェアである。Webサーバはweb機能、APサーバにはアプリケーション機能、DBサーバはデータベース機能...特化した機能を提供する。これらのミドルウェアを導入することで、サーバに役割を持たせることができる。
//TODO:バックアップ、ジョブ運用、監視、高可用性クラスタなど勉強不足

 

 

●周辺装置

1、ストレージ装置高性能なHDDを複数積んだ「データ保存に特化した装置」。大きいものでは大型冷蔵庫くらいのものもある。1セットで数億円というのも珍しくない。データを失われないように耐障害性に優れ、サーバ内のHDDでデータを保存するよりも安全である。また高速の読み書きを実現する為に、多くのパーツがHDD周辺を固めている。機能も豊富であるex)装置内のHDD間でデータを複製する機能。など

2、テープ装置テープ装置はストレージ装置と同様に「テープ保存に特化した装置」である。
ストレージ装置は装置内部に搭載されたHDDにデータを保存する⇔テープ装置は装置内部に装填されたテープメディアにデータを保存する。主にバックアップをターゲットにした装置でテープメディアを取り出すこともできるため、システムとは別の場所に保管して災害などからデータを守るという考え方を取り入れているシステムもある。
テープ装置は、持ち運び性やデータ保存の単価が安い点がメリット。鳴れていないと少し操作が難しいため毛嫌いする人もいる。

 

ウォーターフォール型開発の流れ要件定義→基本設計→詳細設計→構築→単体テスト結合テストシステムテスト>各フェイズの考慮不足や設計ミスにより手戻りすることもある。

 

##chapter3 ネットワーク

 

●ネットワークとは一般的には人やモノを網状につないだものを「ネットワーク」と呼ぶ。現在のネットワークにおける取り決めの基準は「TCP/IP」(プロトコル)である。TCP/IPは元々インターネットを支える技術だったが、インターネットの広がりとともに、TCP/IPを使用しないネットワークを見つけるほうが難しくなった。
LANとWANネットワークにはその接続範囲で分類したときにLANとWANの二種類が存在する。LAN-家庭内や企業の拠点内の閉じたネットワークを指して使われる。WAN-LANをお互いにつなげたものを指す。

 

TCP/IP・階層構造による通信アプリケーション層(ex.HTTP)トランスポート層(ex.TCP)インターネット層(ex.IP)ネットワークインターフェース層(ex.イーサネット)データを送信するコンピュータはこの階層に従って上から下へと処理を行い、データを受信するコンピューターは下から上に処理を行う。

 

●Web通信の例・アプリケーション層WebのミドルウェアApache間でHTTP通信が成り立っている

トランスポート層ポートの使用。コンピュータにはポートが65,536個用意されている。クライアントはwebサーバの80番ポート宛にデータを送信、webサーバでは80番ポートにデータが届いたためApacheが自分宛のデータとして処理した

・インターネット層IPプロトコルが使用される。ネットワークに繋がる機器にはIPアドレスに関する経路情報(ルーティングテーブル)が保存されている、宛先のIPアドレス確認し、次のどの機器へ転送するかが決まる。

・ネットワークインターフェース層イーサネットネットワークに繋がる機器には全てMACアドレスと呼ばれる一意のアドレスが付与されている。MACアドレスは同一ネットワークにおけるダイレクト通信時に使用される。

 

●ネットワーク装置・スイッチコンピュータやネットワーク装置を接続してLANを組む際に使用する。L2スイッチ(ネットワークインターフェース層まで)やL3スイッチ(インターネット層まで)の処理を担当する。L3スイッチではVLANという機能によりハードウェアレベルでIPルーティングが可能である。

・ルータLAN同士を組み合わせてWANを組む際に使用し、インターネット層までの処理を担当する。ルータはソフトウェアでルーティング処理を行うため、ハードウェアでルーティング処理を行うL3スイッチと比較すると処理速度が遅いが様々なプロトコルに対応している点がメリットである。そのため、WANの接続に複雑なプロトコルが必要となる場合に使用されるケースが多くなる。

ファイアウォールインターネットとの境界やLANとLANの境界に配置されることが多い装置。ファイアウォールトランスポート層までの処理を行うことができ、IPアドレスやポート番号の情報を基に通信を許可・遮断する(cf.WAF Webアプリケーションを狙った攻撃から守るため、Webアプリケーションに特化してファイアーウォールを提供する製品)

・ロードバランサWebサーバやAPサーバの前段階に配置し、付加情報により送信先のサーバを変える、パケットの内容に従って送信先のサーバを変えたりする機能を持つネットワーク装置。アプリケーション層までの処理ができ、HTTPヘッダの内容に応じて送信先のサーバ変えるといった柔軟な動作も可能
コラム「要件定義」・機能要件システムに搭載すべき機能(ex.顧客管理機能・メンテナンス機能)

・非機能要件機能要件以外でシステムが備えるべき要件。(可用性、性能・拡張性、運用・保守性、移行性、セキュリティ)

 

 

##chapter4 仮想化とクラウド

 

●仮想化とは・仮想化とは「仮想化」は物理的な構成を隠して、論理的かつ柔軟に構成するための技術である。

 

・サーバの仮想化物理サーバの仮想化

 

1、ホスト型(ex.VirtualBox)物理サーバにインストールされたOSと仮想化ソフトウェア上で仮想サーバが稼働する。アプリケーション感覚で仮想化でき、手軽。

2、ハイパーバイザ型(ex.hyper-V)物理サーバにインストールされた「ハイパーバイザ」と呼ばれる仮想化専用ソフトウェア上で仮想サーバが稼働する。OSが不要なため物理サーバのリソースが制御しやすく、性能面でホスト型よりもメリットがある。

(3、コンテナ型ーex.dockerホストOS内にコンテナを作り、アプリケーションを動作させるに必要なライブラリなどをコンテナ内に閉じ込めることによって個別のサーバのように使用することができるようにしたもの)

 

・仮想化の特徴

1、可用性物理サーバに障害が発生した場合でも他の物理サーバへ切り替え稼働できる。また、仮想サーバの実態はファイルの集合体で容易にバックアップやリストアできるため復旧も容易にできる。

2、拡張性仮想サーバの容量拡張の場合には設定画面でHDDの容量を変更するだけで拡張できる。仮想サーバの自体の追加でも、既存の仮想サーバやテンプレートから複製するだけで追加できる。

3、運用保守性仮想化すると物理的なIT資源を一元管理しやすくなる。1つの管理画面で複数の仮想サーバを管理、コマンドで仮想サーバの運用の自動化することも可能。

 

※1台のサーバのCPU数を変更しているはずが、他のサーバのCPUにも影響を与えてしまうなどの事故。仮想サーバがどのCPUを使用しているのかどのタイミングで設定が変更されるのか正しく理解しておく必要がある。
クラウドとはクラウドとはインターネットなどのネットワークを通じて様々なサービスを提供するシステム形態を指す。自社が持つサービスシステムと異なる点は、クラウドではユーザーはサービス提供を受けるのみであり、実際のコンピューターがどこでどのような構成で稼働しているかネットワークがどのように接続されているかは意識する必要がない。各種サービスはWebブラウザから利用でき、操作性もシンプルである。
・サービス形態IaaSinfrastructure as a Service の略。システムで使用するCPU、メモリ、ハードディスクなどのハードウェアやそのシステムで稼働するOS、ネットワーク環境を提供するサービスである。ユーザが使用するミドルウェアやアプリケーションは利用者が導入・設定する必要がある。
PasSPlartform as a Service の略。アプリケーションが稼働するためのプラットフォームを提供するサービス。IaaSの構成要素に加え、アプリケーションの開発・実行環境に必要なソフトウェアやミドルウェアを提供する
SaaSSoftware as a Service の略。アプリケーションソフトウェアの機能を分割し、ユーザが必要とする機能を提供する。(ex office365)
DasSDesktop as a Service の略。クライアントのデスクトップ環境を提供するサービス。ユーザーはディスプレイとキーボードの準備するだけで利用できる。手元にデータが残らないためセキュリティ面でのメリットもある。
クラウドに対して自社のサーバやネットワークを利用してシステムを構築し運用することをオンプレミスと呼ぶ。
オンプレミスーIaaSーPaaS-SaaSと利用者が管理できる部分が減っていく。

 

・最近の動向クラウドファースト企業がシステムを設計・構築する際にオンプレミスではなく第一にクラウドサービスの利用者を検討すること
クラウドネイティブクラウドサービスを最大限利用し、その特性や利点を生かしてアプリケーションを実装すること

 

クラウドにおけるインフラ・必要となる知識クラウドのベースには仮想化技術が使用されています。AWSXen」、Azure「Hyper-V」、Google Cloud「KVM」と別々の仮想化技術が採用されている。
・自動化クラウド事業者が提供する自動化ツールを利用できることもクラウドを利用する一つのメリットです。(ex. 基本となるマスタテンプレートを元にサーバ用途ごとに異なるミドルウェアをインストールする、構築後のテストまで一貫して自動化したりといったことが自動化ツールで行われている)