Webに関する仕組みもろもろ
はじめに
背景
今までWebシステムの開発をしてきて、アプリケーション面は割とやってきた自身があったものの、Webの全体の仕組みはふんわりしかわかっていない + 人に説明できないことがはっきりとわかったので、仕組みを理解するために、自分用の備忘録を作成することにしました。
目的
- Webの仕組みを自分の言葉と図で説明できる
Web仕組みもろもろ
Webとは
Webアプリケーションって?
デスクトップアプリケーション Webアプリケーション 処理の主体 手元のPC サーバ 画面の表示 OS上で表示 Webブラウザ上で表示 インストール 必要 不要
といった、普段YahooやらAmazonやらでお世話になっているのが、Webアプリケーション。で、Excelなどがデスクトップアプリケーションでイメージするとわかりやすいかも。あと、今ではスマホやタブレットで動かすものはモバイルアプリケーションなんかと言ったりもするかと。
Webが生まれた背景って?
はじまりとしては、研究者の間で世界の研究資料を効率よく共有したい。(電子メールとかファイル転送だと共有しづらい・・・これはプロジェクト開発でもよく見る光景かと・・・最近ではだいぶ便利になってきたけど)
そこで、生まれたのが「HTML(Hyper Text Markup Language)」。文章や図などが必要な研究成果をテキストファイルのみで表現できるようになる。
このHTMLに主要な仕組みとして、「Hyper Text(ハイパー・テキスト)」があり、文書間の参照が「Hyper Link(ハイパー・リンク)」といったコンピュータに理解できる形式で記述され、瞬時に参照先の文章を閲覧できるようになり、今までめんどくさかった共有がネットワーク経由で可能になった。
これにより、ネットワーク上のハイパーリンクのつながりが蜘蛛の巣のように見えるため、「World-Wide Web(世界に広がる蜘蛛の巣)」と表現され、今のWebが生まれた。
Webを支える技術って?
- WebサーバとWebクライアント
- URL(Uniform Resource Locator)
- インターネット上のコンテンツを一意にする仕組み
- スキーム:リソースを取得する方法
- ホスト名:リソースが存在するホスト(コンピュータ)
- パス名:ホスト上のリソースの位置
- HTTP(Hyper Text Transfer Protocol)
HTTPとは
HTTPの知識は重要?
Webアプリケーション開発に関わる人は特に重要、それに今はクラウドが主流になってきていることからHTTTPの理解は必須。(と思う。)で重要な理由としては、Webアプリケーションはフレームワークを使えばHTTPを意識せず開発できてしまうが・・・トラブル時には仕組みを理解しておかないと対応できないため、重要。(なんでも作れるだけでなく、運用・保守ができないといけないということ)
HTTPの通信レイヤってどこ?
HTTPの通信がどのようにコンピュータに届く?
- インターネット上の住所:IPアドレス
- インターネットに接続されたすべてのコンピュータはIPアドレスで識別される。(例:192.168.0.1)
- IPアドレスを頼りに情報を届ける:TCP/IP
- IPアドレスで特定したホストへ任意の情報を届ける役割を担う
- 情報を「パケット(Packet)」と呼ばれる小さな単位に分割して送信し、受け取った側で元に組み立ててからWebサーバなどのアプリケーションへ渡す
- 送受信の効率性を上げるためにこま切れにしている(失敗時には失敗したパケットだけ送りなおせるようなしくみ)
- ホスト名をIPアドレスに変換する:DNS(Domain Name System)
- DNSの仕組み
- ホスト内の宛先を決定するポート番号
おわりに
今回は大枠の仕組みや考え方を整理する形となったが、この部分を自分の言葉で整理しておくことで、詳細の理論や実装を行う際にイメージしながら知識を身に着けていけると感じる。また、この知識はクラウドを活用していく上で前提となると感じているため、もう少し踏み込んだ部分まで身に着けておかないとクラウド化はしたけど、トラブル対応ができません状態になってしまいそうな気がした。
また、Webアプリケーションのアーキテクチャ面に関する仕組み理解は今度整理しまとめていこうと思う。思いとしては、kubernetesを使ったマイクロサービスアーキテクチャと絡めてまとめられればと思う。
今回参考にした本は「プロになるためのWeb技術入門」でした。