目次
なぜインフラの知識が必要なのか
みなさん普段Webアプリケーションを開発するために勉強されていると思いますが、Webアプリケーションをインターネット上で動かすためにはインフラの知識が必要不可欠です。
特に独学で勉強してサービスを作ろうとされている方にはぜひインフラ基礎知識シリーズを読んでいただきたいです。
アプリケーションを作成したはいいが、どうやって公開したらいいのかわからない状態になってしまうので最低限の教養は身につけておきましょう!
システム基板を構成する物たち
システムの基盤となる要素は4種類あります。
一つ一つ見ていきましょう。
ハードウエア
簡潔にいうとスペックの高いパソコンですね!
厳密に言えば設備(部屋とか空調とか)も入るのですが、このご時世自分でハードウエアを管理することはないと思いますのであまり気にしなくてもいいかと思います。
OS
LinuxやWindowsなどハードウエアやネットワークを制御するためのソフトウエアです。
基本的にはLinuxを使うことが多くなるかと思います。
サーバー用のOSとしてはLinux以外にWindows Server や Unixなどがあります。
ネットワーク
ユーザーが遠い場所からでもアクセスできるようにするためのものです。
この記事が画面に表示されているのもネットワークのおかげですね!
WiFiや4Gなどみなさんにも馴染み深いかと思います。
ミドルウエア
LinuxなどのサーバーOSにデータを保存したりWebページを出力したりなど、機能を追加するためのソフトウエアのことです。
データを保存するためのもので言えばORACLE(商用)Mysql(オープンソース)、PostgreSQL(オープンソース)などがあります。
オープンソースのものであれば誰でも自由に開発することができます。
LaravelやRuby ob Railsで開発をしている方はsqliteやmariaDBなどは使用したことがあるのではないでしょうか?
あげ出したらキリがないですが、ApacheやNginxもミドルウエアになります。
Web3層システムアーキテクチャ
Web3層システムアーキテクチャとはWebアプリケーションの基本的な構成の一つです。
Webシステムのサーバーを役割ごとに3つに分けます。
インフラ基礎知識編が終わったらDocker解説を書こうと思っているのですがDockerを使った環境構築ではこのアーキテクチャをよく使います。
フロントサーバー
サイト訪問者のブラウザから送られてきたHTTPリクエストに対してHTTPレスポンスを返します。
この機能を有しているサーバーのことをWebサーバーと言います。
この機能は先ほどお話ししたミドルウェア(ApachやNginxですね!)で実装するのが一般的です。
アプリケーションサーバー
RubyやPython、PHPなどで開発したWebアプリケーションのプログラムを実行します。
このアプリケーションサーバーがフロントサーバーやDBサーバーとやりとりをします。
フロントサーバー ←→ アプリケーションサーバー ←→ DBサーバー
イメージとしてはこのような感じになります。
DBサーバー
永続的に保存したいデータはDBサーバーに保存します。
先ほどご紹介させていただいたMysqlやmariadbを使用します。
これらはRDBMS (Relational DataBase Management System)という機能を有しています。
最近ではNoSQLといった新しい方式のデータベースも普及しています。
代表的なものではMongoDBなどがあり僕もよく利用します。
あとがき
このような構造が一般的なWebアプリケーションを公開するための構成となります。
3台のサーバーを用意する必要はなく、1つのサーバー上に上記のミドルウェアをインストールすることでも動かすことが可能です。
みなさんが現在開発しておられるWebアプリケーションが完成するまでにはDockerでの環境構築を解説した記事を完成させるので今しばらくお待ちください(笑)
コメントを残す