インフラに強いプログラマになる!ざっくり理解できるサーバー運用入門
プログラムを書く際に全体のシステムについて把握しておくことは大切ですが、インフラのこととなると、学ぶ気持ちはあってもなかなか知識習得を行う機会がなく、仕事に必要な知識を局所的に習得している人たちも多いのではないでしょうか。
他のコンピュータと通信を行うシステムでは、サーバーなどの知識が必要となってくることもあり、学習が広範囲となるため、システム開発とインフラ構築はそれぞれの専任者に分担されるケースが多いのではないかと思います。
自分でサーバー環境を構築する機会が無いプログラマでも、サーバー運用担当の方とコミュニケーションを取る際に「共通言語」としての最低限の知識は身に付けておきたいものです。
サーバーの種類と仕組み
サーバーにはその働きに応じてさまざまな種類がありますが、サーバーは「Server」と書き、何かの「Service」を行うコンピュータのことを言います。
- WEBサーバー
- データベースサーバー
- メールサーバー
- 計算用サーバー
- ファイルサーバー
- DNSサーバー
- アプリケーションサーバー
- DHCPサーバー
上記は、一部に過ぎませんが、耳にしたことがあるサーバーがいくつか見当たるのではないでしょうか。
サーバーを運用するためには、サーバーのセットアップや設定、運用方法などを学んでいく必要がありますが、サーバーセキュリティの知識についても学んでいく必要があります。
これだけたくさんの知識を学習しようとすると、とても片手間で学べる量ではありません。
そのため、自分の開発分野で利用されているサーバーに限定して学習していく方が良いでしょう。、
WEBエンジニアなら、WEBサーバー・アプリケーションサーバー・DBサーバーを重点的に学習するなど、職種に応じてさまざまな学習パターンが考えられます。
WEBサーバーの種類
近年、ITサービスを行い起業する人々が増え、WEBサーバーへの需要が高まっている傾向にあり、WEBサーバーの知識は身に付けておくべきサーバー知識の1つとして大変有力なものです。
そのブームに付随する形でWEBアプリケーションサーバーへの需要が増えてきていますので、双方を並行的に学習していくことが学習をスムーズに進めるポイントではないかと思います。
- Intarnet Information Services(IIS)
- Apache Web Server
- nignx(エンジンエックス)
- WEBRick
- IBM HTTP Server
- lighttpd(ライトティーピーディー)
上術した以外にもさまざまなWEBサーバーがありますが、さまざまな大手サービスで使われているWEBサーバーでは、分散処理や高速性を重視したWEBサーバーを採用している傾向にあります。
もしご自身でWEBサーバーを構築するなら「大手サービスで採用されている実績のあるWEBサーバー」を使用するという方法も考えられます。
ただし、ブラウザへの応答速度はアプリケーションサーバーの性能に大きく左右されますので、さまざまなケースを検証し最適解を探していく必要があるかもしれません。
他にもデータ操作の応答性についてはDBサーバーも関連してきます。
どのサーバーソフトウェアを選択するのかは選択肢も多く、組み合わせも無数に存在するため、実際の運用実績を調べながら自サービスに適応できそうな構成を考えることが、実績に基づいた選択という意味では良い結果につながる可能性も高いのではないかと思います。
アプリケーションサーバー
WEBアプリケーションにおいては、クライアントに結果を返すためのデータを生成するのがアプリケーションサーバーの大きな役割ですが、プログラミング言語ごとにさまざまなアプリケーションサーバーが用意されています。
- WebSphere Application Server(Java)
- Oracle WebLogic Server
- Tomcat(Java)
- GlassFish(Java)
- Thin(Ruby)
- Unicorn(Ruby)< /li>
- Puma(Ruby)< /li>
プログラミングごとにアプリケーションサーバーが用意されているものや、WEBサーバーにモジュールとして組み込まれて動作するものなど、種々の動作方法があります。
アプリケーションサーバーの中でもWEB関連システム稼働するサーバーを「WEBアプリケーションサーバー」と呼ぶこともあります。