第8回:サーバーって何?

~Webアプリを世界に公開する仕組み~

こんにちは、開発チームのカーキです!

開発チームでは主にwebアプリを作成しています。開発時には手元のPC上で動かして動作確認をしますが、実際に使ってもらうには様々な人がアクセスできるようにサーバー上で動作させる必要があります。

今回は「サーバー」について解説していきます!

サーバーとは?

サーバーとは、ネットワークに接続され、24時間稼働し続けることを前提としたコンピューターのことです。そのため、皆さんが普段使っているPCよりも高い信頼性や耐久性を持っています。

インターネットに接続した先に広がるWebページはもちろん、YouTube、X、Instagramといった皆さんが日常的に利用しているアプリも、そのデータやプログラムはすべてサーバーに置かれ、サーバー上で動いています。また、企業や組織内で所属している人のみがアクセスできるファイルを一元管理しているコンピューターも、ファイルサーバーと呼ばれるサーバーの一種です。

サーバーを使うには?

個人のPCをネットワーク上に公開してサーバーとして使うことも技術的には可能ですが、現在ではクラウドサービスでサーバーを借りるのが一般的です。

主なクラウドサービスとしては、以下のようなものがあります。

  • Amazon Web Services (AWS):Amazonが提供する、世界で最も利用されているクラウドサービスの一つです。
  • Google Cloud:Googleが提供する、AIや機械学習の技術に強みを持つサービスです。
  • Microsoft Azure:Microsoftが提供する、Windows環境との連携に優れたサービスです。

これらは世界中で利用されている主要なクラウドサービスで、非常に多機能で様々なニーズに対応できます。それ以外にもクラウドサーバーを提供するサービスは様々なものがあります。

私たち開発チームでは、上記の3社ほどの多様なサービスや高度な機能は必要ないため、より学習コストが低くシンプルで低価格な Digital Ocean からサーバーを借りて使用しています。


サーバーを操作してみよう

サーバーでは高い信頼性や耐久性が求められるため、個人用PCで使用されているような Windows や Mac とは異なるOSが使われることが多いです。サーバー用の Windows も存在しますが、多くのサーバーではオープンソースの LinuxベースのOSが採用されています。 

Linux の主な特徴

オープンソースで無料

Linuxはオープンソースであるためライセンス料がかかりません。また、そのソースコードは誰でも見ることができるため、透明性と信頼性が非常に高く、悪意のあるコードや隠れた脆弱性が埋め込まれるリスクが低いとされています。

CUI(キャラクターユーザーインターフェース)での操作が基本

Linux は CUI で操作することが一般的です。

Windows などのGUI(グラフィカルユーザーインターフェース)では画面上をマウスでカーソルを動かして操作しますが、CUI はその名の通り、文字(コマンド)を入力して操作します。

CUI は GUI のように画面にグラフィックを描画する必要がないため、CPUやメモリといったシステムリソースの消費が少なく、軽量に動作するのが特徴です。クラウドサービスではCPUやメモリの容量によって値段が変わってくるため、リソース消費が少ないCUIはサーバー環境に適していると言えます。

また、CUIは一度コマンドを覚えてしまえばマウス操作よりもはるかに速く、複雑な作業を自動化しやすいというメリットもあります。日々のサーバー管理や、大量のファイルを一括で処理する際に非常に役立ちます。

CUIの画面

サーバーにアクセスするには?

ネットワークにつながったサーバーに別のコンピュータからアクセスするには、そのサーバーを識別するためにIPアドレスが必要です。IPアドレスはネットワーク上の「住所」のようなもので、「192.168.1.1」のように、0〜255の4つの数字をドットで区切った形式をしています。
より多くのアドレスを使用できるIPv6という形式もあります。

この数字の羅列は覚えにくいですよね?そこで登場するのが、ドメインという覚えやすい名前です。例えば「google.com」などがドメインにあたります。私たちがブラウザでドメインを入力してアクセスしようとすると、コンピューター内部では最終的にそのドメインに対応するIPアドレスに変換されて、目的のサーバーにアクセスする仕組みになっています。

まとめ

今回はサーバーについて解説しました。
Webアプリケーションは私たちが作ったものをサーバーで公開することで、実際に多くの人がアクセスして利用できるようになります。学ぶ前はサーバーについて漠然としたイメージしかありませんでしたが、実際に私たちが作成したものをサーバーで動かすことで、その仕組みを深く理解することができました。


次回はデータベースについて紹介する予定です。