0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

自己開発に当たる前に確認するべき「webアプリ」の種類

Posted at

こんにちは、steveです。
エンジニアであれば、一度は自己開発に取り組む機会があると思うのですが、自己開発に当たる時は、何かしらのフレームワークを使うと思います。

フレームワークは、簡単にwebアプリケーションを作成させることができるのが強みですが、それゆえに裏側のwebアプリの仕組みがブラックボックス化して、エンジニアリングの知識が抜けていても作れてしまうようです。

実際に、過去に面接で自分の自己開発を紹介した時、djangoを使っていたということもあり、もの珍しさがあったのか「djangoのクライアント、サーバー間の仕組みってどういう感じなんですか」と聞かれ撃沈したのを覚えています。

「djangoはHTTPサーバを内包したwebアプリケーション一体型のアプリケーションであるため、webサーバとの連携が必要にならなくて、規模感を抑えて開発できる」

このような理解があった方が開発もスムーズに進むと思います。

そこで今日は、webアプリケーションの低次元知識と、分類化をしてみたいと思います。

1.webアプリケーションの通信方法

image.png

まず、webアプリの通信を「クライアントサイド」と「サーバーサイド」に分類して考えます

1-1.クライアントの構成要素

・HTTPクライアント
→urlを受け取り、httpサーバにリクエストを送信
・レンダリングエンジン
→レスポンスとして帰ってきたhtml,cssを画面に表示させる
・javaScriptエンジン
→ブラウザが唯一読解できる言語javaScriptを読解するためのエンジン、各ブラウザに標準搭載されていて、chromeのV8が有名で、その機能をサーバーサイドに応用しようとしたのがNode.jsである

1-2.サーバーサイドの構成要素

・HTTPサーバ
→HTTPリクエストを捌くサーバ、基本的にWebサーバに内包されている。 
・webサーバ
→HTTPサーバを内包しており、静的コンテンツを捌く、nginx,Apacheなどが有名
・アプリケーションサーバ
→動的コンテンツを捌く(本記事の内容)

(クライアントサイドとサーバーサイドをつなくのがインターネット、通信の方式がTCP/IPプロトコル)

2.Webアプリケーションの実行方式

1-2でアプリケーションサーバを紹介させてもらいましたが。その実行方法は多岐に渡ります。

前提として、アプリケーションサーバは、webサーバでは捌けない動的コンテンツを負担します。

HTTPクライアント → (インターネット)→ WEbサーバときたリクエストごとにプロセスを駆動させるのが、最初のwebアプリケーションでした。(プロセス起動型)

(プロセスというのは、cpuの実行単位です)
コレらは、PHP,Laravel等で対応されました。
CGIができたことにより実現した技術です。
ただ、毎回プロセスを駆動させるのは非常に大変です。


新たなアプリケーションの実行方式がモジュール方式です

webサーバの中に、プログラミング言語を読み込めるモジュールを入れる方式です。

都度appを駆動させる必要がないので前述の方式より高速です。
こちらは、perl,PHP,rubyで搭載されました。

ここまでは、比較的古い技術で、モダンではありません。規模的にも大きな規模に対応できません

ここからは、比較的大きな規模の開発向けの方法です
webサーバと、webアプリを分離させつつ、常にapp側を起動させる分離型独立プロセス方式
アプリケーションサーバの中にwebサーバに内包させることで、開発規模を抑えつつ、大きなアプリを作れる一体型独立プロセスです。

djangoはこの後者にあたり、javaのspringbootや、Node.jsもこちらにあたります。

コレらの技術にくわえ、Apacheなどのwebサーバ、DBサーバ、を加えてアプリケーションはできるというわけです

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?