関連記事
プログラマーのためのサーバーの基礎
この記事の動画版はこちら(画像クリックでYoutubeに飛びます)
今回は、「サーバー(基礎編)」ということで、初心者向けに「サーバーとは何か?」という基礎的な部分をご説明したいと思います。
サーバーは、Webサービスを動かすための土台であり、Webサービスを作る上で無くてはならない存在です。
サーバーを構築したり、運用やメンテナンスを行うためのスキルは、プログラミングスキルとは異なるため、開発会社などでは「サーバーエンジニア」や「インフラエンジニア」といった形で、サーバー専門のエンジニアがいることも多いです。
しかし、Webサービス開発をすべて1人でこなす「フルスタックエンジニア」を目指す上では、サーバーのスキルは必須になります。
サーバーのスキルを基礎からしっかり学んでいきましょう!
サーバーの基本
サーバー(Server)とは、「サービスを提供するコンピュータ」のことです。
このサーバーと呼ばれるコンピューターは、24時間365日電源がONになっており、ネットワークを介して常時接続が出来るようになっています。
サーバーが常に稼働しているから、僕たちはいつでもGoogleやAmazonやTwitterといったWebサービスを使うことが出来るんですね。
世界中のWebサービスは、それぞれ専用のサーバーに設置されて動いています。
小規模なWebサービスの場合は、サーバーは1台構成で動いていますが、大規模なWebサービスになると何百万台ものサーバー構成で動いている場合もあります。
例)Amazonのサーバーは約10万台、Googleのサーバーは約300万台!
1台で処理できるアクセスには限界があるため、アクセスの多いWebサービスにはそれだけ多くのサーバーが必要になります。
なぜサーバーが必要なのか?
サーバーは、Webサービスを動かすための「エンジン」のような役割をします。
サーバーが無いと、Webサービスを動かすことは出来ません。
サーバーの内部では、このように様々なサーバーソフトウェアが動いています。
・サーバー全体の動きを管理する「オペレーティングシステム(OS)」
・Webアプリケーションの動作を管理する「Webサーバー」
・各種データを保管し管理する「データベースサーバー」
・メールの送受信を管理する「メールサーバー」
・外部からのリモート接続を管理する「SSHサーバー」
これらのサーバーソフトウェアのことを「ミドルウェア」と呼ぶこともあります。
(OSとWebサービスの中間に位置するため、ミドルウェアと呼ばれます)
Webサービスのプログラムは、これらの上で稼働します。
サーバーとミドルウェアが正しくセットアップされていて初めて、Webサービスは動作することが出来るのです。
サーバーはどこにある?
サーバーは常時稼働しているため、電源の確保や発熱対策が必要になります。
停電や災害などで稼働が停止してしまうと、Webサービスも停止してしまうため、不測の事態が起こっても稼働し続けられる環境に置いておく必要があります。
一般的には、サーバーは「データセンター」という施設に設置されています。
データセンターには、自家発電装置や予備電源、冷却のための温度管理、高速インターネット回線などが完備されており、災害リスクの少ない場所に設営されています。
セキュリティの観点から、データセンターの正確な場所は公開されていませんが、世界中の様々な場所に存在しており、各Webサービスのサーバーが稼働しています。
サーバーはどうやって準備する?
Webサービスを作るためには、サーバーを準備しなくてはなりません。
最も簡単な手段は「レンタルサーバー」を利用することです。
レンタルサーバーは、上記のようなミドルウェアが予めセットアップされており、作ったWebサービスのプログラムを設置するだけで動かすことが出来ます。
価格も安価なプランでは月額数百円~といったものも多いため、プログラミング学習段階や小規模なサービスを試験的に公開する場合には充分に使えます。
また、最近ではAmazonの「AWS」というサービスを始めとした「クラウドサーバー」というものが一般化しています。
クラウドサーバーでは、従来のレンタルサーバーのように「決まったサーバー/ミドルウェア構成」をレンタルするのではなく、必要に応じてサーバーやミドルウェアの構成を変更したり、アクセスが多い時期だけサーバーの台数を増やすといったことが柔軟に行えます。
サーバーを自分でセットアップ出来るスキルを身につけよう!
フルスタックエンジニアを目指すなら、最終的にはサーバーOSやミドルウェアを自分でセットアップ出来るスキルを身につけていきましょう。
これらを自分でセットアップ出来るようになると、大規模なWebアプリケーションを開発する際にも対応出来ますし、サーバーに問題が発生した際にも自分で対処することが出来ます。
アクセスが集中してサーバーが止まったり、セキュリティホールが見つかって急遽対処が必要になったり、ドメインやSSLの更新を行ったりと、実際にWebサービスを運営する際にはサーバースキルは必須になります。
また、サーバーの知識があるからこそ、サーバー面を考慮した1段階上のサービス設計やプログラミングが出来るようになります。
これこそが、フルスタックエンジニアです。
サーバースキルをしっかり学んで、フルスタックエンジニアを目指していきましょう!
なお、レンタルサーバーとクラウドサーバーの違いについては以下の記事でも解説しています。