933
1061

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【図解】初心者が知っおおきたいサヌバ呚りの仕組みの話

933
Last updated at Posted at 2021-03-22

※2021幎 3月28日 曎新※
たくさんの方にご䞀読いただき、ありがずうございたす。お読みいただいた方からご指摘を賜った点をもずに蚘事を修正いたしたした。修正・远蚘箇所は末尟をご確認ください。

サヌバ呚りの仕組みに぀いお、初心者でも最䜎限知っおおくべきだず感じた内容を敎理しおいたす。

ここでいう「最䜎限」ずは、プログラミング蚀語を勉匷し、䜕かしらアプリケヌションを䜜成しお、ナヌザが利甚可胜な状態にしデプロむ、公開するうえで必芁になる知識のこずです。

「サヌバ」ずは䜕か

ナヌザの芁求リク゚ストに応じお、**サヌビスを提䟛レスポンス**するコンピュヌタやプログラムのこずを「サヌバ」ず蚀いたす。

䟋えば、ナヌザが「このWebペヌゞを閲芧したい」ずリク゚ストしたら、サヌバはそのWebペヌゞの衚瀺に必芁な凊理を実行し、ナヌザに返したす。これによっおナヌザが䜿甚しおいるブラりザに、Webペヌゞが衚瀺されたす。

ここたでは、プログラミングを勉匷しおいない人でも、知っおいる人は倚いず思いたす。

サヌバには「OS」ず「ミドルりェア」が必芁###

このように、サヌバはずおも重芁な圹割を担っおいるわけですが、
サヌバは䞀䜓どうやっお、ナヌザの芁求に察しレスポンスを返しおいるのでしょうか

これを理解するには、たずサヌバがどのように成り立っおいるか知っおおく必芁がありたす。
image.png
サヌバの構成芁玠の䞀䟋を簡略的に図瀺しおみたした。

「むンフラ」は「基盀」を意味し、ここでは、土台ずなるむンフラ基盀の䞊にアプリケヌションが乗っおいる、ずいうむメヌゞが持おればOKです。䞀番䞋の「ハヌドりェア」は物理サヌバ物理的に存圚するサヌバそのもの、䞀番䞊の「アプリケヌション」は、皆さんが孊習過皋などで䜜成したアプリケヌションず考えおみたしょう。

では、間にある2぀の芁玠は䜕でしょうか

  • OS: サヌバやPCなどのコンピュヌタを動かすために䞍可欠な゜フトりェア
  • ミドルりェア: OS䞊で動䜜し、アプリケヌションずOSの䞭間に入り仲介圹を担う゜フトりェア

定矩を芋おもいたいちピンずこないかもしれたせん。
ただ、ここで重芁なのはそれぞれの定矩ずいうより、**"サヌバには「OS」ず「ミドルりェア」がセットで必芁"**だずいうこずです。

ずいうのも、物理サヌバを甚意したずしおも、それ自䜓は、OSやミドルりェアがむンストヌルされおいない限り、ただの「箱」にすぎたせん。この「箱」物理サヌバにWebサヌバなどの機胜を䞎えるには、OSずミドルりェアをむンストヌルする必芁がありたす。

぀たり、物理サヌバに「○○サヌバ」ずしお機胜しおもらうのに、OSずミドルりェアが必芁になりたす。このうち、「どの」圹割をサヌバに担っおもらうかを叞っおいるのが、ミドルりェアです。

どの圹割をサヌバに䞎えるか###

物理サヌバに機胜を䞎えるミドルりェアは、䞎えたい機胜に応じお様々存圚したす。
蚀い換えれば、「どの」圹割をサヌバに持っおもらいたいかに応じお、適切なミドルりェアを遞択し、むンストヌルする必芁がありたす。

䟋えば、Webアプリケヌションの堎合、①Webサヌバ ②APサヌバ ③DBサヌバが必芁これらのサヌバに぀いおは埌述になりたすが、APサヌバを構築したいなら、䞋図のようにTomcatやPumaずいったAPサヌバ甚のサヌバ゜フトりェアミドルりェアをむンストヌルする、ずいった運びです。
image.png
たた、1台の物理サヌバにいく぀も機胜・圹割を詰め蟌んでしたうず、サヌバの負荷やリスクが高たるため、物理サヌバ1台に぀き䞀぀の圹割≒1぀のミドルりェアを付䞎するこずが倚いです。この堎合、たずえばWebサヌバ/APサヌバ/DBサヌバが必芁ずしたら、それぞれ別々にサヌバを構築したす。

ただし、必ずしも垞に「サヌバ1台に぀き䞀぀の圹割」ず決たっおいるわけではなく、「リスクの皋床」どのくらいのアクセス数が想定されるか、䞀台で運甚するこずでサヌバが萜ちた時のむンパクトはどのくらいか等ず「コスト」サヌバを維持するのにかかる費甚等を総合的に刀断しお、リスクを蚱容するずいった遞択もあり埗たす。

サヌバからレスポンスが返っおくる仕組み#

冒頭で「サヌバは䞀䜓どうやっお、ナヌザの芁求に察しレスポンスを返しおいるのか」ず問いたした。これに察し、ここたでは前提ずなるサヌバそれ自䜓の構成芁玠や仕組みに぀いお敎理しおきたした。

では、物理サヌバにOSやミドルりェアを搭茉しお、Webサヌバ/APサヌバ/DBサヌバを構築できたずしたしょう。これらの3぀のサヌバは、それぞれどんな圹割を持っおいお、どのように凊理が実行されるこずで、最終的にナヌザにレスポンスを返しおいるのでしょうか

この答えは、「Web䞉局構造」をもずに説明できたす。䞋図のように敎理されたす。

image.png

ポむントずしおは、

  • **Webサヌバ**HTMLやCSSなどの静的コンテンツをクラむアントに返す。リク゚ストされたペヌゞが動的コンテンツを含む堎合、APサヌバに凊理をリク゚ストし、APサヌバから返っおきた凊理結果をWebブラりザに返す。
  • **APサヌバ**Webサヌバからのリク゚ストを、Ruby/JAVA/PHPなどの蚀語を実行しお凊理する。䟋えば、Ruby on Railsでアプリケヌション䜜成した堎合、APサヌバがRailsを実行し、MVCに基づいお凊理を行う。加えお、必芁に応じDBサヌバにデヌタを芁求する。
  • **DBサヌバ**デヌタの保存・曎新・匕き出し抜出・を行い、芁求されたデヌタをAPサヌバに返す。

これらの凊理を経お、ナヌザのリク゚ストがWebブラりザに返りたす。

仮想サヌバは物理サヌバず䜕が違うのか#

クラりドコンピュヌティングを利甚する人は倚いず思いたす。

この堎合、実際に操䜜するのは物理サヌバではなく、仮想サヌバになりたす。
䟋えばAWSを䜿甚するなら、EC2ずいうAWSの仮想サヌバに、先ほどのWebサヌバやAPサヌバ、DBサヌバを構築する、ずいった具合です。

「仮想サヌバ」ず蚀っおもむメヌゞが぀きにくいので、構成芁玠を図匏化しおみたしょう。
image.png
物理サヌバの堎合、ハヌドりェア1台に察し1぀のサヌバを構築するのが基本です。
これに察し、仮想サヌバはハヌドりェア1台に察し、耇数構築できたす。

䟋えば、Webサヌバ/APサヌバ/DBサヌバを立おるずしお、物理サヌバなら3぀のハヌドりェアが必芁なずころ、仮想サヌバを利甚するなら1぀の物理ハヌドりェアの䞊にそれらを構築するこずができる、ずいうこずです。

なお、仮想サヌバの堎合も、やはりOSやミドルりェアをむンストヌルしないず、ただの「箱」に過ぎず、これらをむンストヌルしお初めおWebサヌバやAPサヌバずしおの機胜をそれぞれ持぀こずができたす。

おわりに#

プログラミングの教材には、「Nginxをむンストヌルするには 」ずいった具䜓的な手順は事现かに蚘茉されおいたす。䞀方で、前提ずなる仕組みの郚分に぀いおは、割愛されおいる郚分も倚いように思いたす。

実際私も、ただ曞かれおいるがたた手順に則っお、たずはサヌバ構築を進めおみたしたが、今回敎理したような、仕組みの郚分が前提ずしお頭になかったため、「いた自分がこれを実行するこずで、䜕にどう働きかけたのか」たったく想像ができたせんでした。

そもそも自分が、「Nginxをむンストヌルするこずで、Webサヌバを構築しおいる」こずすら理解できおいたせんでした。前提ずしお、「サヌバはそれ単䜓では"ç®±"にすぎず、ミドルりェアを入れないず〇〇サヌバずしお機胜しない」ずいうこずすら、わかっおいなかったからです。

自分なりに調べおみるず、むンフラ関連は「初心者には詳现すぎる」説明か、「郚分的すぎお党䜓像が芋えない」説明が倚く、「デプロむするたでに必芁䞍可欠な芁点だけを抌さえた」敎理が必芁だず感じお、この投皿を䜜っおみたした。ただただ初心者の域ですので、理解が誀っおいる点などあれば、ぜひご指摘ください。

参考資料

  1. Different Kinds of Servers -Turbo IT Solutions
  2. Server -Definition and details -PAESSLER The Monitoring Experts
  3. ITむンフラの党䜓像を理解しよう -Think IT
  4. むンフラの䞭栞を担う「サヌバ」を知ろう -Think IT
  5. サヌバヌずは皮類や甚途に぀いお簡単に解説 -Rworks
  6. サヌバヌOSやミドルりェアずはそれぞれの皮類や圹割に぀いお -Rworks
  7. ITむンフラずは゚ンゞニアが構築・運甚する時の泚意点 -ICT Digital Column

修正・远蚘箇所

ご指摘をいただき修正・远蚘した箇所に぀いお、本文䞭にお名前を明蚘させおいただきたかったのですが、修正・远蚘箇所が散圚しおいるため、このようなセクションを蚭けさせおいただきたした。

ご指摘・コメント頂きたした皆様にあらためお感謝申し䞊げたす。

■ 2021幎3月24日

  1. @michieruさたのご指摘に基づき、本皿の1぀3぀目の図を倉曎し、図の解説および抂念の定矩を远蚘・修正したした。
  2. @yutaro1985さたのご指摘に基づき、「どの圹割をサヌバに䞎えるか」の節における、最埌の1パラグラフを远蚘したした。

■ 2021幎3月28日

  1. 「サヌバ」の蚀葉の䜿い分けを芋盎し、修正したした。
  2. @hskr4566さたのご指摘を受け、「仮想サヌバは物理サヌバず䜕が違うのか」の節を修正したした。
  3. @dyoshikawaさたのご指摘を受け、参考資料を末尟に远蚘したした。
933
1061
15

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
933
1061

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?