YouTubeチャンネルはこちら!

【サーバーとは】初心者の僕でも理解できた!エンジニア初心者が知るべきサーバーについて解説します。

この記事は約20分で読めます。

IT系の業界にこれから転職を考えている方や検討している方は、このIT業界の情報の多さに苦戦している方もいるのではないでしょうか?

IT関連の情報って多すぎ

専門用語も多すぎてわかりずらい

サーバーってよく聞くけど結局なんだろう

こんな悩みや疑問にこの記事でお答えします。

このmoriblog(モリブログ)を書いております私はIT知識や経験がゼロの状態からエンジニアに転職をいたしました。

このmoriblog(モリブログ)は私の経験を元にエンジニアに転職をこれから考えている方にもIT業界やIT技術の事をわかりやすく知ってもらえるようこのmoriblog(モリブログ)にて発信をしておりますので、読み進めていただければ幸いです。

IT系の業界に転職を攻略するには、業界に入るためには最低限の知識を学び転職時にアピールする必要があります。

私は異業種からIT業界に転職をしましたので、転職活動時はIT業界の情報をとにかく集めました。

ですがIT系の情報って専門的の情報が多く初学者向けに解説しているメディアって結構少ないんです。

初学者の方は特にプログラミングやサーバーという言葉は聞いたことあるけど実際には正確に理解していない方も多いと思います。

この記事ではまだIT業界のスキルや知識が無い方にもサーバーについて解説しておりますので読んで頂いて情報に役立てて頂いたら幸いです。

この記事にオススメの方は・・・
  • サーバーとは何か?を知りたい
  • サーバーを学ぶ必要性について知りたい
  • サーバーで何ができるのかを知りたい
  • サーバーに関係するエンジニアの職種について知りたい

サーバーとは何か?

サーバーについてですが、IT業界でない方も言葉はよく聞いたことありますよね?

サーバーは現在様々なサービスで日常的に使われており、例えばネットゲームのパフォーマンスが落ちて動きが重くなってしまったときなんかはサーバーが重いのかな?なんて会話をしたりしてますよね?

インターネットのサービスや現実世界でもサーバーの障害が原因でアプリが使えなくなってしまったり、リアル店舗の決済に影響が出たりということもあります。

サーバあるいはサーバー(英: server)は、サービスを提供するコンピュータである。コンピュータ分野のクライアントサーバモデルでは、クライアントからの要求に対して情報や処理結果を提供する機能を果たす側のコンピュータやソフトウェアを指す。本稿ではこの意味で記載する。サーバにはファイルサーバ、メールサーバ、Webサーバなど多数の用途や種類がある。更にサーバ用のコンピュータ機器(ハードウェア)などもサーバと呼ぶ場合がある。

出典: フリー百科事典『ウィキペディア(Wikipedia)』

サーバーに関しては皆さんよく言われているのはクライアントサーバになります。

クライアント(私たち利用者)の操作を受けて何かしらのアクションを起こすために存在しておりますが、ここでいう何かしらのアクションに関してはプログラムやデータベース、APIなど様々なシステムと連携をしております。

Webサーバなども普段インターネット上で検索されたりしていますが、ブログや記事を検索して、表示するためにWebサーバは存在しております。

普段私たちが意識している部分とは別に

  • ファイルサーバ
  • メールサーバ
  • バッチサーバー
  • apiサーバー
  • プロキシサーバー

など様々な種類が存在します。

サーバーについて

提供する機能を果たす側のコンピュータやソフトウェアを指す

ということから機能自体は用途に合わせて調整して使ってくださいということです。

簡単に言うと必要な機能を入れる入れ物だと思っていただければわかりやすいのではないでしょうか?

サーバーの概要

ここからさらに詳しくみていきます。

サーバとは、本来はコンピュータネットワークで使用される分散コンピューティング技術の1つであるクライアントサーバモデルでの用語である。サーバはクライアントからの要求(リクエスト)に応じて、何らかのサービス(処理)を提供する側の機能あるいはシステムである。提供するサービスはサーバの種類によって異なり、例えばファイルサーバであれば保管しているファイル(データ)の提供、プリントサーバであればプリンターへの印刷処理の提供、ウェブサーバであればウェブページを構成するHTMLファイルや画像ファイルなどのデータの提供をするなど、さまざまである。

なお、物理的に1台のコンピュータの中に、例えばFTPサーバとウェブサーバなど複数のサーバが稼働することもあるし、同様にサーバとクライアントの両方の機能が置かれる事もある。また一部のプリントサーバのように、アプライアンスとしてハードウェアの形態で提供されるサーバも存在する。

1980年代のクライアントサーバモデルおよび概念の普及以来、従来は大型コンピュータ、メインフレーム、ミニコンピュータ、オフィスコンピュータなどと呼ばれていた、比較的中型から大型のコンピュータ自体も、オープン標準対応への進展もあり「サーバ」と呼ばれる事が増加した。

出典: フリー百科事典『ウィキペディア(Wikipedia)』

プリントサーバなどに関しては想像ができると思います。社内の様々なPCから一括でプリントの命令を受けれるようにプリントサーバーがしているということですね。

例えばファイルサーバであれば保管しているファイル(データ)の提供

上記に関しましてはSNSなどで画像などをアップロードできる機能ありますよね?そのアップロードしたファイルの保管先はこのファイルサーバーになります。ここで保管されたデータを読み込んだり書き込んだり削除したり操作することで管理しています。

ウェブサーバであればウェブページを構成するHTMLファイルや画像ファイルなどのデータの提供をするなど、さまざまである。

htmlに関しましては別の記事にも書きましたが、インターネット上で文字などの情報を取得する為には必要不可欠なファイルとなります。

上記から皆さんが見ているブログなどにはウェブサーバが関わっていることがわかりますね

物理的に1台のコンピュータの中に、例えばFTPサーバとウェブサーバなど複数のサーバが稼働することもあるし、同様にサーバとクライアントの両方の機能が置かれる事もある。また一部のプリントサーバのように、アプライアンスとしてハードウェアの形態で提供されるサーバも存在する。

上記はサーバー1台に対して複数入れれますよということと、製品の中に組み込んで使えますよということです。

サーバーの歴史

引き続きサーバーの歴史を見ていきます。

1960年代まではメインフレームやオフィスコンピュータに代表される集中処理が行われていた。当時コンピュータは非常に高価で、研究機関や大企業の専門部署にごく限られた数しか存在しなかった。処理能力も(現在と比べれば)貧弱で、多数の利用者が1台のコンピュータの処理能力を分け合っていた。コンピュータ処理の大半は中央の「ホストコンピュータ」側で行われ、「端末」(ターミナル)側は最低限の画面制御(入力チェック、描画等)しか担当しなかった。

1970年代から1990年代にかけて、分散処理に移行していった。コンピュータの性能が向上する一方で価格は下がるダウンサイジングで、サーバ用ホストマシンを目的別に部課単位で手軽に用意できるようになった。同時にワークステーションやパーソナルコンピュータなど高機能な「クライアント」も身近になり、処理の多くを「クライアント」で行い、「サーバはクライアントからの要求を処理する(のみ)」というクライアントサーバモデルが普及した。

1990年代後半から2000年代、インターネットが普及すると、サーバはより身近な存在になった。素人でも自宅サーバやホスティングサーバを利用するようになった。企業のサーバ用ホストマシン利用も進んだ。しかし、サーバ用ホストマシンの乱立は管理上好ましくないため、サーバ機能をデータセンタなどに集約し、1台のホストマシンの中で複数のサーバプログラムを稼働させる仮想化など新しい形態の集中処理が普及した。

2010年代には、クラウドコンピューティングの普及が進んだ。サーバ用ホストマシンはサービス提供者に集約していく可能性がある。業種によっては、クラウドサービスとオンプレミスの使い分けるというサーバ利用形態が一般的となった[1]。また、IoTという新たなトレンドも生まれ、サーバーで処理するデータは今後も増加していくと見られている。

2008年、世界で約810万台、日本で約60万台のサーバ用のホストマシンが出荷された[2]。2008年に世界で出荷されたサーバ用ホストマシンの2割をマイクロソフト、グーグル、ヤフー、アマゾンの4社が購入したという推計もある。

出典: フリー百科事典『ウィキペディア(Wikipedia)』
事業者サーバ用ホストマシン保有台数
Amazon7万〜10万台(推定)
Google300万台(推定)
Facebook3万台

これを読み取ると1960年代ではコンピューター自体庶民には手に入らなかった代物で

1970年代から1990年代にかけて分散処理ができるようになり性能が向上し、価格が下がり今のパソコンが出てくるようになったということですね。そしてこの時期に現在もf使われているクライアントサーバーモデルが普及したようです。

1990年代後半から2000年代にはインターネットが普及し始め企業もサーバーを立て始めたようです(オンプレミス)。仮想化技術が登場し一つのサーバーを複数のサーバーとして使えるような技術が確立されたようです。

2010年代にはクラウドコンピューティングが登場してレンタルサーバーや、AWSなどのクラウドサービスが普及し、企業のサービスもオンプレミスかクラウドかを選択することができる時代になります。

IoT:Internet of Things(モノのインターネット)

IoTに関してもこの頃に有名になった言葉だと思いますが、スマートスピーカーやみんなが大好きなルンバ君もこのIoTと呼ばれます。同時にAIなんかよく聞くようになりましたよね?これらはモノがインターネットにつながりサーバーに情報を送りその情報からモノに指示を送り動作する技術なのでInternet of Things(モノのインターネット)と呼ばれているのですね。

サーバ用ホストマシン保有台数

という情報もありますが、インターネットのサービスの提供もサーバーで行われています。グーグル、ヤフーなどの検索エンジンやブラウザーの処理ですね。

グーグルが誕生が1998年ですが誕生してからまだそんなに経っていないと感じるのは私だけでしょうか?

2020年は5Gという通信技術が注目される年となりますが、これから更なる生活の変化があるかもしれません。

サーバーのソフトウェアについて

サーバーのソフトウェアについてみていきます。

ソフトウェアはコンピューターを動かすプログラムのことです。

サーバソフトウェアの特徴

サーバソフトウェアの重点項目は以下になります。

  • 多数のユーザーの同時アクセスに対応できる、性能とデータ整合性
  • アカウント管理やポリシー管理やログ管理などの、セキュリティーや対監査性
  • 連続稼働に耐える信頼性、可用性、保守容易性
  • 将来の変更や拡張が容易な、拡張性

アプリケーションにおいてログの保管は重要です。サービスに何か問題があった時はサーバーのログを頼りに調査することになりますので、商用のアプリケーションではサーバーのログ管理は必須になります。

基本的にサーバーは立ち上げっぱなしなので連続で動かしても壊れたりおかしくならないよね?ということに重点を置いているということです。

ハッカー集団によるサーバー攻撃という言葉も聞いたことがある方は多いと思いますが、サーバーには重要な情報もありますので、アカウント管理やセキュリティー対策をするのが必須ということです。

ソフトウェアの種類

サーバ機能を提供する主なソフトウェアの種類には以下があります。

サーバ機能
データベースサーバデータベース処理
トランザクションサーバトランザクション処理
アプリケーションサーバアプリケーション処理(特に Java アプリケーションサーバ)
ウェブサーバウェブアプリケーション処理(Apacheなど)
メールサーバメールサービス(Sendmail など)
FTPサーバファイル転送
ファイルサーバファイル共有
プリントサーバプリンター共有
DNSサーバ
DHCPサーバ
プロキシサーバ

アプリケーションサーバ に関してはJavaアプリケーション以外でもphpやrubyなどのサーバーサイド言語でも使用されます。

webサーバーとしての機能を付与させるにはApacheなどのウェブアプリケーション処理ができるソフトウェアが必要になります。

これらサーバ用ソフトウェアは、1台のコンピュータ(ハードウェアやオペレーティングシステム)で複数の種類を稼働させる場合や、ネットワーク上の複数のコンピュータ間で相互に連携する場合がある。また同じ種類のサーバを複数のコンピュータで稼働させてコンピュータ・クラスター構成として、負荷分散やスケーラビリティや障害対策とする場合もある。

出典: フリー百科事典『ウィキペディア(Wikipedia)』

商用のサービスでは

単一障害でサービスが止まることの損失が大きい為複数の同じ設定のコンピューターを稼働させて負荷分散をさせて大量のアクセスに対して障害が起きないように対策する必要があります。

単一障害というのは一つのサーバーがもし壊れてしまった場合にサービスが停止してしまうということで、単一障害を作らないというのはサーバーのコピーをいくつか用意して、逃げ道を作ってあげるということになります。

単一障害点を作らない為にサーバーを別の場所にそれぞれ配置するということも考慮する必要があります。(例としては電源が同じ場所であった場合停電時同じように障害が起きてしまう為)

 

サーバーのOS基本知識

ここからはサーバーのOSについて解説していきます。

OSは WindowsやMac Androidのスマートフォンやipone にもそれぞれ別のOSが搭載されています。

OSによって提供されている機能や能力が異なることは皆さんご存じだと思います。これらのOSはコンピューター内のサーバーの中に入れて動かしております。

そしてこのOSはライセンス料などが通常発生するのですが、無償で商用利用も可能なOSが存在します。それがLinuxです。

エンジニアが実際の業務に触れる多いサーバーはこのLinuxサーバーになります。

Linuxの特徴としては

  • オープンソースとなっているので無償利用可能
  • カスタマイズが容易
  • 各社Linux用のソフトウェアも開発している
  • コマンド操作が基本

という特徴があります。

Linuxの操作

Linuxのサーバーを操作するには管理者がログインする必要があります。

Linuxを操作するためにはサーバーにログインした後に、windowsのようにマウスで操作するということではなく、コマンドを打って操作をします。

例えば特定のファイルの場所に行きたいときはwindowsであればエクスプローラーからマウスで選択することで移動できますが、

Linuxの場合は

cd フォルダ名

というコマンドで移動する必要があり

ファイルの中身を見るには

cat ファイル名

というコマンドを実行する必要があります。

Linuxはコマンドを入力することで必要な機能やソフトウェア、ツールなどをインストールすることができ、マシンをカスタマイズすることが出来ます。

データベースのミドルウェアをインストールすればデータベースサーバーのソフトウェアとして使うことができるようになり、apacheのソフトウェアをインストールしてphpのアプリケーションを入れればアプリケーションサーバーになります。

windowsのようなグラフィックがLinuxは無いので軽量という特徴もあり、プログラマーが開発したアプリケーションを入れる器としても利用されます。

このLinuxはエンジニアとして仕事をする場合は必ず登場しますので、

プログラマやシステムエンジニア志望の方も、基本の知識は入れておきましょう。

サーバーを学ぶ必要性について

エンジニア未経験者や初心者がサーバーについて学ぶ必要性としては以下になります。

  • エンジニアになる以上は避けては通れない。
  • プログラマーは開発にサーバーを使う
  • プログラマー以外でも使う機会はある
  • システムを動かすにはまずサーバーが必要
  • サーバーの学習は就職に役立つ

それぞれ見ていきますね。

エンジニアになる以上は避けては通れない。

今世の中のIT化がどんどん進んでいます。コロナショックもありこれからも現実世界のモノよりもインターネット上のサービスなどに関心が高まる状況ではないでしょうか?

今ではスマートフォンやPCがあれば様々なことができてしまいます。

  • オンラインでゲーム
  • ショッピング
  • VOD(動画)を見る
  • 生配信(LIVE)を見る

など自粛期間中でも様々な娯楽やサービスがインターネット上であふれていますよね?

芸能人もTVでの仕事が減ってしまいYouTuberに転向している話もよく聞きます。

これらのサービスを実現するにはプログラミングも必要なのですが、その土台にはサーバーが必要です。

プログラムを書くだけではこれらのサービスは実現できないんですね

自分はエンジニアの最初のプロジェクトがテストフェーズでした。

テスト工程というのはプログラマーが書いたプログラムが要件通り(お客さんの要望通り)なのかを確認していく工程でエンジニアの仕事の中でも難易度は低いです。新米エンジニアがテスト工程を担当したりします。

このテストの工程といえど、Linuxを使う機会はありますので

エンジニアになる以上は避けては通れない。

ということをお伝えしました。

私はその後データベースとLinuxを使う方向に仕事がシフトしていったので、テスト工程の担当だったとしてもデータベースやサーバーを使う機会はありますので、どんなエンジニアを目指してもサーバーについては学習する必要があります。

エンジニアとしてできることが増えればそれだけキャリアアップにもつながります。

プログラマーは開発にサーバーを使う

プログラマーという職業その名の通りプログラムを書く人になります。

ですが、プログラミングだけやっていればいいのかと言えばそうではなく

  • 作ったプログラムは正常に動くのか?
  • ちゃんとお客さんの要望に応えられているのか?

ということをプログラムを作った人は責任を持たなくてはなりません。

これを単体テストと呼びます。

プロジェクトにもよりますが、今まで携わったプロジェクトでは、プログラミングしたプログラマがその部分の単体テストを行い問題がないか確認を行っておりました。

場合によってはプログラマが単体テスト仕様書を用意して別の方にやってもらうパターンもあるかもしれません。

アプリケーションにおけるプログラムの内容は多岐にわたる為 サーバー内やサーバーと連携するプログラムも少なくありません。

その為Linuxが使えないと問題になりますのでプログラマー志望の方でもLinux の基本はしっかりできるようになっていきましょう。

プログラマー以外でも使う機会はある

ITエンジニア=プログラマというわけではないことは皆さんご存じでしょうか?

IT系の職業は様々ありますが、その中の技術職であるエンジニアに関してもいくつかの職種に分かれています。

一つのプロジェクトを完成させるためには様々なIT系の業種が関わっています。

サーバーはシステムの核になりますので。IT業界に関わるのであれば実際にプログラミングをしてプログラムを作るプログラマー以外にも関わる部分が大いにあります。

その為プログラミングが苦手の方でもサーバーに関しても知識やスキルがあればプログラマー以外にも活躍できる道はたくさんあります

システムを動かすにはまずサーバーが必要

システムを動かせるにはまず器が必要です。それが無いとプログラムは動かせません。

自分のパソコン内であれば自分のPC上でapacheなどのソフトウェアをインストールして確認することはできます。

これをローカルの開発環境と言います。

ローカルの環境では自分のPCでしか作ったプログラムを確認することができません。インターネット上で世界向けて公開するのであれば、サーバーを構築してネットワークを通す必要があります。

開発段階であればローカル環境で動かして問題ないかの操作確認を行うということはよく行われますが、最終的には、インターネット上で公開したサーバーにアプリケーションを移行して動作確認は必要になります。

システムを動かすにはまずサーバーが必要なので、現在では

AWS などのクラウドサービスが普及しており、サーバーの構築は 数分で作れてしまいます。

これはオンプレミスではありえない速さでサーバー環境が構築できてしまう画期的なサービスとなります。

サーバーの設定に関しても自動化が進んでおりansibleなどの構成管理ツールを使うことで、 コマンド一つでLinuxの設定ができてしまいます。

サーバーの学習は就職に役立つ

システム構成に欠かせないサーバーについてスキルや知識があればエンジニアの転職において大きな武器になることは間違いありません。

プログラミングが苦手な方でも、インフラエンジニア、サーバーエンジニアとしてキャリアを形成する選択があります。

ただエンジニアの転職に関しては 自分一人で進めるより 転職のプロにサポートを受けた方が就職時の条件は間違いなく良いです

私は最初に入社したIT会社は、自分で求人サイトに応募して入社しましたが、 実際はブラック企業ということがわかり毎月10人近く退職していました。

個人でのリサーチですと企業の内部的な部分の調査が難しいので 転職のプロである転職エージェントにサポートを受けるのがおすすめです。

未経験からサーバーのスキルを身に着けインフラエンジニア、サーバーエンジニアを目指したいのであれば、エンジニアスクールを利用することがおすすめです。

エンジニアスクールではインフラエンジニア向けのコースを持っているところがいくつかありますので、エンジニアスクールを利用することで、未経験からのエンジニアへの転職は容易になります。

以下の記事にエンジニアスクールについてまとめていますので、プログラマーやインフラエンジニア、サーバーエンジニアを目指している方は確認してください。

この記事のまとめ

この記事では

  • サーバーについて
  • サーバーの用途
  • サーバーの種類
  • エンジニアとサーバーとの関係

を見てきました。

現在はITエンジニアとして成長するための仕組みが整っています。

しかしプログラムはオンラインやWEBアプリで学べても、実際にサーバーを用意してハンズオンで学べるサービスは全然見かけません。

サーバーを実際に操作するには

  • 自分のPCに構築して用意する
  • AWSで構築
  • レンタルサーバーを借りる

ということで可能になります。

近年では

  • 仮想化
  • コンテナ

という技術が流行っており、

Dockerというアプリを使えば一つのOSの中に別のOSを作って動かしたりできます。

自分のPCを仮想化するソフトウェアはいくつかありますが、

無料で使えますのでまずはVirtualBoxを使うのがいいと思います。

上記のDockerも無料で使えますが設定が多少複雑で使用するOSによってはエラーが出てハマることもあります。

しかし流行りの技術なので苦労してでも使っておいても損はないと思います。

サーバーエンジニアに興味がある方は以下の記事を確認してみてください。

エンジニアの種類について知りたい方は以下の記事を確認してみてください。

未経験からエンジニアを目指している方は以下の記事を確認してみてください。

コメント

プロフィール

シュン@pgfrat

高校卒業後に製菓学校に進学し製菓関連の国家資格を取得する。
専門学校卒業後に個人の洋菓子店やレストランなどで洋菓子や料理に携わるが、ブラックな勤務体制により絶望と脱獄、転職を繰り返してニートやフリーターを数年経験。

サラリーマンとして再起を図るものの、リーマンショックにより正社員にも関わらずリストラされてまたもやニート生活に堕ちる。
その後は奇跡的に大手家電量販店に転職し、接客販売業に従事。
数年間満足した生活を送ったが、夢を見たくて再度ホテルとレストランで修行を開始。

数年で身体を壊して為飲食業自体をリタイアしまたもやニートになりながらも何かしらの正社員にならないとマズイなと思う。
その後転職活動を営業、事務、などのデスクワーク中心の業種に絞り転職活動を行う。

今から営業は無理だと思いIT業界を目指して勉強を開始し転職を成功させて現在に至る。

現在はエンジニアとしてシステムエンジニアとして上流工程から下流工程まで浅く広く。

趣味は料理、it関連、音楽、映画、ゲーム、レジャー、ガジェット、ダーツなど

定期的にmoriblogを更新しておりますので読んでいただけたら幸いです。

シュン@pgfratをフォローする

カテゴリー

タイトルとURLをコピーしました