IT企業で働くための最低限の知識(前半戦)
インターネット業界で働く上で、そもそものパソコンに関する知識、コンピュータサイエンスの基礎は知っておかないといけないと考えた。この段階で、クックパットの新人研修用資料がとても参考になったので、自分のインターネットに関する知識のアウトプットとしてブログに書き記すことにした。
- 目次
- コンピュータ
- クライアント
- サーバー
- ネットワーク
- エンジニア
- リクエストとレスポンス
- セキュリティ
Top画面にデータが表示されるまでに起こっていること
ズバリ、「ネットワークを介してコンピュータ同士が通信をしている」のだ。
抽象的に流れを描くと、
1 クライアントがサイトにアクセスする
⇨クライアントとサーバ
2 データを要求する
⇨ネットワーク
3 サーバが色々処理する
⇨サーバ
4 クライアントにサーバがデータを送り返す
⇨サーバとネットワーク
5 受け取ったデータを画面に表示する
⇨ネットワークとクライアント
コンピュータ
ハードウェアとソフトウェアに分けることができる
ハードウェア
手にとって触れる機会、パソコンやスマートフォン、タブレットなど
ソフトウェア
物理的に触れられないもの。
プログラミングを指す。OSやアプリケーションのこともさす。
OSとは、オペレーティングシステムの略。
アプリケーションとは、特定用途のために作られたものを指す
アプリケーションを作るには、プログラミング言語が必要になる。
プログラミング言語を効率よく使うための共通部品、ライブラリが存在する
-
種類
Facebookでログインするための部品
Swiftで書かれた画像加工の共通部品
検索機能を実装するための部品
ライブラリは、フレームワークの中に存在する。
クライアント
具体的なクライアント
サーバ
リクエストを受け付けてレスポンスを返す役割を持つアプリケーションやコンピュータ
レスポンスとは
クライアントからの欲しい情報リクエストに対して応答すること
リクエストに応じて4つ種類がある
-
例
WEBサーバ
APサーバ
DBサーバ
検索サーバ
WEBサーバ
クライアントからリクエストを受け付けてWebページや画像を返すサーバを指す。
あらかじめ用意しておいた、ページや画像ファイルなどの静的ファイルを送り返す役割を持つ。
-
例
NginX
Apache HTTP Server
APサーバ
Webアプリケーションを動かすためのサーバ
リクエストに応じて内容が変化する動的ページを返す。
application.html.erbに書かれたページの<%= render %>部分がそうなのかも。同じレイアウトでも、ユーザーによって違うページを返す
-
例
DBサーバ
データを保存したり取り出したりする。
検索サーバ
大量のデータの中から索引する。
DBサーバからのリクエストに対して、ここにデータがあるよといったレスポンスを返す。
-
例
Elasticsearch
Solr
クライアントがデータをリクエストしたときの流れ
クライアント⇨webサーバ→
APサーバ→検索サーバ→
APサーバ→DBサーバ→
APサーバ→webサーバ⇨クライアント
補足
webサーバは静的ファイルを作成している
動的ファイルはAPサーバが作成してレスポンスしている
ネットワーク
複数のコンピュータを繋いでデータを送受信するもの
コンピュータ同士をケーブル中継器で繋いている
エンジニアの種類
-
フロントエンド
モバイルアプリやweb画面を作っているエンジニア
-
バックエンド
サーバで動くアプリケーションを作るエンジニア
-
サービス開発
ユーザに向けてサービス(画面、機能)を作る
-
基盤エンジニア
サービス開発エンジニアに向けて開発環境を整えたり、複数のサービスで使われる共通部分を作ったりする。
-
SRE(インフラエンジニア)
Site Reliability Engineeringをしている。
サービスがいつでも快適に利用できるように保つ
サービス開発エンジニアが素早くリリースできる仕組みを作っている
「大量のアクセスに耐える仕組みを作る」「サービスが正常に動いているか24時間体制で簡易する」「素早くリリースできる環境を整える」
-
研究開発エンジニア/リサーチャー
サービス開発に活かすために新しい技術を研究・開発する。
・機械学習
・音声インターフェイス(Amazon echo)