私はサポートエンジニアになりたい

元教師・現開発エンジニアの挑戦

クラウドとは何か

クラウドとは

ユーザーがネットワークを使い、サーバが提供するサービスを利用する形態のこと

ユーザーはサーバやソフトを用意しなくていい。

クラウドサービスを選ぶメリット

クラウドサービスを使うことで、ハードウェア導入に伴う初期投資やリソースの調達、メンテナンスをしなくてよい。

クラウドサービスの種類

SaaS(サース)

インターネット経由することでPCにインストールしなくても利用できるソフトウェアを提供する。

例:Gmail, Google Drive

PaaS(パース)

インターネット経由することでソフトウェアとハードウェアの間で機能するプラットフォームを提供する。

例:アプリケーションサーバ, データベース, 開発ツール

IaaS(イァース)

インターネット経由でインフラ機能を提供する。

例:サーバ, ネットワーク, セキュリティシステム, ストレージ

クラウドのデプロイモデル

クラウド

アプリケーションがクラウド上にデプロイされており、アプリケーション全体がクラウド上で実行される。

ハイブリッド

クラウド上のリソースとオンプレミスのリソースとの間でインフラとアプリケーションを接続する方法。

クラウドのリソースを社内システムに接続することで組織のインフラをクラウドに拡張して大きくする。

オンプレミス

リソースをオンプレミスでデプロイすることや、仮想化・リソース管理ツールを使用すること。

参考

クラウドとは?意味やクラウドサービスのメリットを初心者にもわかりやすく解説! – ルートテック|ビジネスライフとキャリアを応援する情報メディア

クラウド (クラウドサービス) とは?|AWS

データ保存の仕組み

ファイル管理はOSの機能。

以下の手続きを行ってファイルを扱うOSが多い。

  1. ファイルをオープンする
  2. 読み書きをする
  3. ファイルをクローズする

ファイルをオープンをもっと詳しく

  1. プログラムがOSに対してファイルのオープンを依頼
  2. OSは指定されたファイルをプログラムが操作できるように設定
  3. そのファイルに関する情報をプログラムに渡す
  4. プログラムはその情報をもとにファイルの状態を把握

C言語でファイルを開く

C言語ではこれらがFILE型の構造体にまとめられている。

Cでは、オープンしたファイルをFILE型の構造体(FILE構造体)へのポインタを介してアクセスする。

  1. fopen関数でファイルのオープンに成功する
  2. オープンしたファイルに関する情報を記録したFILE構造体が準備され、fopen関数からそれへのポインタが返される
  3. オープン後はファイルポインタを介してファイルに対する読み書きをなどの操作を行う

ファイルを開くプログラム

#include <stdio.h>

int main(void) {

    // ファイルを開く
    FILE *fpointer = fopen("data.txt","r");

    return 0;
}

fopen関数でファイルをオープンするとメモリ上にFILE型の構造体が生成され、fopen関数はそれへのポインタを返す(ファイルポインタ)。

FILE型構造体のポインタ

「FILE *fp;」はFILE型のポインタであり、FILE構造体の実態はfopen関数が生成する。

オープンに成功した後は、このファイルポインタを引数としてファイル操作関数を呼び出し、ファイルを操作します。

構造体

変数の型の種類のひとつで、中に入れられる物の種類や数を自分で決められるやつ

https://wa3.i-3-i.info/word13243.html

ポインタ変数
  • 変数である
  • 値として(他の変数の)メモリ上のアドレスを取る
  • ポインタ変数を経由して、他の変数の中身を見たり変更したりできる

https://wa3.i-3-i.info/word12814.html

ファイルを閉じてメモリを開放する

ファイルをクローズする処理をしないと使われないメモリ領域が残ったままになるので注意。

参考

「C言語」の「ファイル操作の仕組み」とプログラムの書き方を学ぼう! | ~プログラミングライフスタイル~

もう一度基礎からC言語 第37回 ファイルの扱い(2)~ファイル操作の実例 FILE構造体の中身

もう一度基礎からC言語 第36回 ファイルの扱い(1)~オープン/クローズと読み書き オープンとクローズ

 

データ保存の仕組み|データ復旧

コンピュータで、「ファイルを開く」という概念がよく理解できま… - 人力検索はてな

第八回-02 メインメモリとは何か

ハードディスクが物理的にデータを記録している仕組みがわかるムービー「How do hard drives work?」 - GIGAZINE

どのデータをどこに載せるか、OSのメモリー管理機能の仕組み | 日経クロステック(xTECH)

シングルサインオンとは何か

シングルサインオン(SSO)とは

1つのIDとパスワードで複数のサービスにログインできる仕組み

シングルサインオンの仕組み(4種)

代行認証方式

クライアントの代わりに専用エージェントが代行して各システムのID・パスワードを入力する方式

詳細な仕組み
  1. 専用エージェントがユーザー認証を行う
  2. アカウント情報DBから各システムのID・パスワードを取得
  3. ID・パスワード等をメモリ上に保持
  4. 各システムのログイン画面を検知し、ID・パスワードを自動入力
導入に必要なもの
  • クライアントPCに専用のエージェントを導入
  • アカウント情報DBに接続できる環境
特徴
  • 導入するシステムの制限が少ない
  • クライアントサーバシステムにも導入可能

リバースプロキシ方式

リバースプロキシという中継サーバを介して認証を行う

詳細な仕組み
  1. リバースプロキシサーバに対してWeb認証を実施
  2. リバースプロキシサーバから認証済みCookieが発行される
  3. ログインしたいサービスに対してリバースプロキシサーバ経由でアクセス
導入に必要なもの
  • リバースプロキシサーバ(とここを経由する設計)
特徴
  • 既存システムへの影響なく事前検証ができる
  • 導入から開始までの工数を短縮しやすい

エージェント方式

 

詳細な仕組み
  1. エージェントを導入したWebシステムにWeb認証を実施。
  2. WebシステムはSSOサーバに対して認証チェックを実施
  3. Webシステムから認証済みCookieが発行される
  4. Cookieを保持して各Webシステムにアクセスする
  5. SSOサーバがアクセス権限をチェック
導入に必要なもの
  • SSOサーバ
  • 導入するエージェントに対応しているSSOシステム
特徴
  • リバースプロキシ方式に比べアクセス集中によるボトルネックが発生しにくい
  • 既存のネットワーク環境に変更を加えなくていい
  • エージェントに対応していないシステムには導入できない

SAML認証方式(Security Assertion Markup Language)

主にクラウドのリソースを含めたSSO実装に使う仕組み

詳細な仕組み
  1. クラウドサービス(Service Provider)へアクセスする
  2. IdP(Identity Provider)に対する認証要求(SAML)を生成し、IdPへリダイレクト
  3. IdPはSPからの認証要求を受けてクライアントに認証要求実施(ログイン画面表示)
  4. ユーザー認証実施
  5. ログイン成功後、IdPは認証応答(SAML)を生成し、SPへリダイレクト
  6. SPはIdPより送られた認証応答(SAML)を受けて検証し、クラウドサービスへの自動ログインを実施
  7. 自動ログイン後、クラウドサービス画面が表示
SAML(Security Assertion Markup Language)とは

異なるインターネットドメイン間でユーザー認証を行うための標準規格。

特徴

Google WorkspaceやMicrosoft365などのクラウドサービスがSAMLに対応

参考

【図解つき】シングルサインオン(SSO)とは?機能や仕組み、導入メリット、デメリットをわかりやすく解説! | mobiconnect(モビコネクト)

シングルサインオンの仕組みとは?5つの認証方式とメリットも解説!|ITトレンド

シングルサインオン(SSO)の選び方と仕組みの解説 | アシスト

Webサービスについて

SOAP

元々は「Simple Object Access Protocol」の略称がSOAPであり、HTTPやXMLなどのインターネット標準技術を使うことによって、Web上の分散オブジェクトをプラットフォームの壁を越えて利用することを可能にするために開発されたプロトコルである。その後、Webサービス間で交換されるメッセージについての汎用的なフレームワークとなった。

 

SOAPメッセージというXMLによってメッセージ交換をおこなう方法

ネットワーク上に存在しているオブジェクトにアクセスするためのプロトコルとして開発されたもの。

 

 

Webサービスの主役、SOAP誕生の背景:Webサービスのキホン(1) - @IT

REST

「Representational State Transfer」の略称がRESTである。

HTTPを使って通信をおこなう手法であり、HTTPのGETメソッドを使ってあるURLにアクセスすると、XMLが返ってくる。

WebブラウザにURLを入力すれば動作確認できる

Webブラウザで容易に動作確認ができるため、すでに存在しているサービスに対しては「まずはアクセスしてみて必要な情報が得られるか確認し、実際に使うかどうかはそれから考える」という使い方ができる。わざわざテスト用アプリを作る必要がない。

クライアント/サーバを開発する際、サーバを開発する側はWebブラウザを使って動作確認ができ、クライアントを開発する側は想定しているレスポンスをファイルに準備すればテストできる。(手間の省略)

REST vs SOAP

WSDL

WSDLはWeb サービスを記述するための XML 表記のこと

SOAPの定義方法にWSDL(Web Services Description Language)がある。

開発ツールにWSDL文書を読み込ませることによって、Webサービスを呼び出すモジュールのコードを自動生成できるようになる。

 

WSDL:Webサービスのインターフェイス情報:Webサービスのキホン(4) - @IT

XML

「eXtensible Markup Language」の略称がXMLである。

タグで囲むことで構造を表現する言語(マークアップ言語)のひとつ

(ファイルの書き方ルールのひとつ)

マークアップ言語とは、文章を構造化するための言語

 

タグを使うことで、要素名を自由に定義することが可能。

使いどころ

インターネットを経由して複数のアプリケーション間でデータをやり取りするのに適した構造を持っています。

このため、膨大なコンテンツの中から一定のルールに基づいて情報を抽出したり、複数のWebサービスを組み合わせたアプリを制作したりする際に非常に便利です。

記述例

<?xml version="1.0" encoding="Shift_JIS" ?>
<staff>
    <member>
        <name>田中</name>
        <position>サポートエンジニア</position>
        <age>29歳</age>
    </member>
    <member>
        <name>Aさん</name>
        <position>営業</position>
        <age>20歳</age>
    </member>
</staff>

 

 

https://wa3.i-3-i.info/word1577.html

マークアップ言語とは↓

https://mynavi-creator.jp/blog/article/what-is-mark-up-language

XMLのことを幅広く書いている↓

XMLとは?XMLの基礎と使い方をわかりやすく解説!HTMLとの違いは?タグと要素・文書の構造やフォーマット作成もご紹介| ITフリーランスエンジニア案件ならA-STAR(エースター)

 

XMLの基礎を理解しよう 〜これだけ知っていれば大丈夫!〜:新入社員のためのXML入門講座(1) - @IT

 

 

SOAPとRESTの共通点

Web アプリケーション間のデータ通信を可能にするAPIの構築方法を定義する。

RESTは、一連のアーキテクチャ原則です。

SOAPは、World Wide Web Consortium (W3C) が管理する公式プロトコルです。

主な違いは、SOAPプロトコルであるが、REST はプロトコルではないという点

SOAP

SOAP は標準プロトコルです。元々、異なる言語および異なるプラットフォームで構築されたアプリケーションが通信できるようにすることを目的に設計されました。

REST

REST は、軽量の Web サービスおよびモバイル・アプリケーションのニーズに合わせた一連のアーキテクチャ原則。

REST API へのデータのリクエストは、HTTP を介して送信されます。要求が受信されると、REST用に設計された API は、さまざまな形式(HTML、XML、プレーンテキスト、JSON)でメッセージを返すことができます。

JSONは、あらゆるプログラミング言語で読み取ることができ、人間も機械も読み取り可能で軽量であるため、メッセージ形式としてよく利用されています。このように、RESTful API はより柔軟で、セットアップが容易です。

SOAPとRESTのどちらを選ぶか

SOAP Web サービスは、多くのエンタープライズのニーズに合わせた組み込みのセキュリティとトランザクションコンプライアンスを提供しますが、それによってサービス自体は重くなります。

REST API は軽量で、IoT (モノのインターネット)、モバイル・アプリケーション開発、サーバーレス・コンピューティングなどの先進的なコンテキストに向いている。

 

SOAP と REST とは|API の種類| Red Hat

ステートフルとステートレス

セッションの状態の話

セッションとは:通信における開始から終了まで(ログインからログアウトまでを指すことが多い)

https://wa3.i-3-i.info/word1791.html

トランザクションの話も出てくる

トランザクションとは:「商品を渡して、代金を受け取る」のように「ここからここまでワンセット」になっている処理のこと(DBとかでよく耳にした)

https://wa3.i-3-i.info/word16325.html

ステートフル

サーバがクライアントのセッションの状態を保持する

セッションの状態によってリクエストに対するレスポンスが変わる

何度も繰り返し使うもの

毎回同じサーバを使ってユーザーの要求を処理する

ウィンドウの場所、ユーザー設定、最近のアクティビティなどを追跡する

例:オンラインバンキング, 電子メール

ステートフルなプロトコル(何を保持しているか?どんなコネクションかに注目)

FTP, TCP, BGP, OSPF, EIGRP, SMTP, SSH

 

ステートレス

サーバがクライアントのセッションの状態を保持しない

セッションの状態によらずリクエストに対するレスポンスが変わらない

過去のトランザクションに関する情報や参照は保持されない

単一の要求に対して単一の応答をする

ステートレスなプロトコル

HTTP, UDP, IP, DNS (UDPの性質を使っているこれらもたぶんそうDHCP, NTP, SNMP)

HTTP

HTTPは状態を保持できないからセッション管理でユーザーを特定しよう!みたいな話になる(cookieとかの話ここ)

「HTTPはステートレスだからセッション管理が必要」を詳しく解説 | OFFICE54

UDP

コネクションが確立しているかどうかを確認する状態(ステート)がない(逆に3ウェイハンドシェイクをするTCPはステートフル)

インターネット用語1分解説~UDPとは~ - JPNIC

参考

ステートフルとステートレスの違いとは?

https://www.redhat.com/ja/topics/cloud-native-apps/stateful-vs-stateless

TCPとUDPの違いは

TCP(Transmission Control Protocol)の特徴

  • コネクション型プロトコル
    通信相手とコネクションを確立することで相手に通信が届いていることを確認させ、コネクションを確立させる。
    TCPにおけて使用されるコネクションの確立のことを3ウェイハンドシェイクという
  • (コネクションを確立するため)信頼性が高い
    事前にコネクションを確立し、双方で送受信できていることを都度確認している。
  • 制御機能を備えている
    ネットワークの状況によっては正しくデータが伝送されないケースがある。そのためウィンドウ制御やセグメントの再送制御、送信するセグメントの量の制御などが用意されている
  • 重複を排除する
    重複を排除することでデータが1つであることを保証する

TCPの方はTCPセグメント呼ぶ

TCPのサーバポートの例

HTTP:TCP80番ポート

SMTP:TCP25番ポート

TCPが使われているサービス

  • Web通信
  • メール通信
  • ファイル転送

 

後で見る

TCP vs RTP:何故RTPが必要なのか?:Geekなぺーじ

第13回 データグラム通信を実現するUDPプロトコル:基礎から学ぶWindowsネットワーク(1/4 ページ) - @IT

C言語-ソケットプログラミング_UDPソケット CapmNetwork

トランスポート層の仕事 - ネットワークエンジニアを目指して

UDP(User Datagram Protocol)の特徴

UDPヘッダーを付与したデータの通信単位をUDPデータグラムという

UDPのサーバポートの例

DNS:UDP53ポート

UDPが使われているサービス

  • 音声や動画などのリアルタイムサービス
  • モニター監視
  • DNS
  • NTP
  • SNMP
  • TFTP

 

TCPとUDPの主な特徴6つ|代表的なポート番号や使い分ける方法も紹介 | テックマガジン from FEnetインフラ

UDPヘッダのフォーマットとサイズの基本 | IT情報サイト ”ITアベイラボ”

OSとは何か説明する

OSとは

複数のプログラムを同時に安定動作させ、ハードウェアコンポーネントを効率的に使えるよう抽象化するためのプログラム。

OSの構成

ブートローダ

PC起動時によびだされ、OSなどを動かす仕事をしているプログラム。

PCの電源を入れる→BIOS起動→ブートローダ起動→OS起動

カーネル

ハードウェアとソフトウェアをつなぐソフトウェア

  • リソース管理
    • CPU(プロセッサ)
      多数のプログラムの中からプロセッサを割り当てるべきものを選択する
    • メモリ
      各プロセスにメモリを割り当て、全体としてメモリが不足した場合、対処を決定する
    • 入出力デバイス(キーボード・HDD・USBなど)
      アプリケーションから入出力要求を受け付け、適切なデバイスに対して入出力を実行し、デバイスを使用するための便利な方法を提供
  • プロセス管理
    アプリケーションの実行を許可し、ハードウェア抽象化などの機能でサポートする
  • メモリ管理
    ユーザープロセスの要求に応じて安全なメモリアクセスを提供
  • バイス管理
    ドライバが物理的にデバイスにアクセスするための入出力ポートやメモリ空間を用意する
  • システムコール

デーモン

LinuxUNIXにおいてメモリ上に常駐してるプロセス

Windowsでは「サービス」とよばれる

利用者の操作とは無関係に処理を行うバックグラウンドプロセスの一種で、別のプログラムや機器、通信相手など外部からの要求を受け付けて処理を実行したり、あらかじめ設定されたタイミングで自律的に特定の処理を実行したりする。

systemd, syslogd, tcpd, httpd, sshdなど

シェル

ユーザからの入力をPCに伝えるプログラム

ユーザが入力したコマンドをシェルが解釈しカーネルに伝え、

カーネルはシェルから伝達された要求に応えてプログラムの操作を行い、その結果をシェルに返す。

返ってきた結果をシェルが解釈し、ユーザ側に出力する

-----

カーネル←シェル←ユーザ

カーネル→シェル→ユーザ

-----

デスクトップ環境

ツールバー、ファイル、背景画像などから成り立つ。

デスクトップ環境のおかげで画面表示でのPC操作環境が快適に行える。

アプリケーション

様々な情報やプログラミングを組み合わせ、OSの機能を拡張していく事ができ、PC操作が快適に使えるようにしてくれるようにプログラムされたソフトウェア

OSの機能

  • タスク管理
  • メモリ管理
  • ファイル管理
  • 周辺機器の管理
  • APIの提供

参考

milestone-of-se.nesuke.com

qiita.com

www.geekly.co.jp

e-words.jp

recruit.cct-inc.co.jp