2021年07月29日(木曜日)
サーバーサイドのミドルウェアについての勉強会をオンラインで開催しました。
■概要
ミドルウェアの種類とLinuxサーバーへの導入方法を解説
■ミドルウェアの種類
(1)WEBサーバー
・Apacheとは
世界的に最も普及しているWEBサーバー
モジュールとしてPHPを使える
・nginxとは
最近よく使われているWEBサーバー
速度が速く、大規模なアクセスにも対応できる
(2)DB
・Oracle
商用DBではスタンダード
官公庁や銀行、情報システムなどで使用されている
・MySQL
一番WEBで使われている
昔は機能があまり充実していなかったが、
今では改良されてOracleなどと比べても遜色がない
・PostgreSQL
phpと親和性がある
・MariaDB
MySQLの5.5系から派生したDB
8系までに増えた機能等はないが、
通常の使い方をするならあまり変わらない
・SQL Server
マイクロソフトのスタンダードなDB
・AWS RDS
Aurora、PostgreSQL、MySQL、MariaDB、Oracle、SQLServerなどが使える
WEBの開発だとこのサービスでMySQLやOracleを使うことが多い
・AWS Aurora
MySQL(5系)とPostgreSQLに互換性のあるDBとしてのサービス
性能や安全性など、よりクラウドに特化した作りになっている
・AuroraとRDSどちらを選ぶべきか
RDBはAWS上にDBをインストールしたのと同じ動きをするが、
Auroraはクラウドされていて実態が1つになっている
(インスタンスは複数で動くが、ストレージが1つ)
(3)NoSQL DB
・NoSQL DBとは(KVS)
SQLを使わずにデータをキーだけで引っ張ってこれるDB
セッションデータの保存に使うと、キーでひけるようになるのでよく使う
リレーションしない分MySQLとかより速い
・memcached
NoSQL DBのスタンダードで、オンメモリで動作するKVS
データはメモリ上に展開しているので高速でデータを取得できる
サーバーが落ちるとメモリ上のデータが飛んでしまう
・MongoDB
最近よく聞くKVS
データはJSON形式で取得できる
・Redis
主流のKVSの1つ
クラスタ構成が取れるため、同一クラスタの1台が落ちてもデータが保持される
・AWS Elastic cache
memcachedとRedisが使える
・Amazon DynamoDB
規模が大きいものにも対応できる
ぐるなびの店舗のデータをKVで引っ張ったりするにはこちらが向いている
(4)DNS
・DNSとは
ドメイン名を管理・運用するために開発されたシステム
・BIND
最も広く普及しているDNSサーバーソフトウェア
データはメモリ上に展開しているので高速でデータを取得できる
サーバーが落ちるとメモリ上のデータが飛んでしまう
・AWS Route53
(5)検索エンジン
・Apache Solr
Lucene系の検索エンジン
Javaでできている
・Apache_Lucene
今の検索エンジンの大元になっている
SolrやElasticsearchなどのプラットフォームで利用される検索ライブラリ
・Groonga
ぐるなびはこれを使ってる
・Elasticsearch
中核にLuceneを採用している。
・AWS Amazon Elasticsearch Service
AWS上でElasticsearchが使えるサービス
色んなことがやりたい場合はこれを使うのがいい
・Amazon CloudSearch
シンプルに使うなら向いてるが、
検索機能を充実させるのは少し難しい
(6)NFS
・NFSとは
UNIX系OSで利用される分散ファイルシステム、およびそのための通信規約
サーバーに別のサーバーのディレクトリをマウントする機能を提供
WEBではCookieのデータを保存する形やデータ連携で使われることが多い
・AWS EFS
AWS上でNFSの機能を使えるサービス
データはメモリ上に展開しているので高速でデータを取得できる
サーバーが落ちるとメモリ上のデータが飛んでしまう
■Linuxサーバーへの導入
(1)パッケージ管理
・edHad系のパッケージ管理システム
ソフトウェアの管理にあたって、各ソフトウェアの依存関係を考慮してくれる
※RedHad系:RedHad Linux、CentOS Linuxなど
・RPM
RedHad系のパッケージ管理システム
ソフトウェアの管理にあたって、各ソフトウェアの依存関係を考慮してくれない
・APT
Debian系のパッケージ管理システム
※Debian系:Debian Linux、Ubuntuなど
(2)導入
ミドルウェアの導入方法として、パッケージ管理を利用する方法と、
コンパイルしてインストールする方法の2パターン
・使い分け
指定したバージョンを使わなければならない場合など、
柔軟な運用をするには、コンパイルしてインストールするという手段をとる
・インストール手順
configure: インストールオプションを作成
make:makeファイルを作成
make install:makeファイルに基づいてインストールを実行
・インストールでエラーが発生した場合
エラーメッセージを確認、検索してみる
依存性を解決できないパッケージの削除や、
足りないパッケージの追加等をすれば上手くいくケースが多い
(3)起動
・CentOS7以前
/etc/init.d配下に起動プロクラムがあり、
それを実行することでサービスの起動・停止をする
・CentOS7以降
systemdを使用してサービスの起動・停止をする
/etc/init.d/httpd startなどは使えなくなった
■概要
ミドルウェアの種類とLinuxサーバーへの導入方法を解説
■ミドルウェアの種類
(1)WEBサーバー
・Apacheとは
世界的に最も普及しているWEBサーバー
モジュールとしてPHPを使える
・nginxとは
最近よく使われているWEBサーバー
速度が速く、大規模なアクセスにも対応できる
(2)DB
・Oracle
商用DBではスタンダード
官公庁や銀行、情報システムなどで使用されている
・MySQL
一番WEBで使われている
昔は機能があまり充実していなかったが、
今では改良されてOracleなどと比べても遜色がない
・PostgreSQL
phpと親和性がある
・MariaDB
MySQLの5.5系から派生したDB
8系までに増えた機能等はないが、
通常の使い方をするならあまり変わらない
・SQL Server
マイクロソフトのスタンダードなDB
・AWS RDS
Aurora、PostgreSQL、MySQL、MariaDB、Oracle、SQLServerなどが使える
WEBの開発だとこのサービスでMySQLやOracleを使うことが多い
・AWS Aurora
MySQL(5系)とPostgreSQLに互換性のあるDBとしてのサービス
性能や安全性など、よりクラウドに特化した作りになっている
・AuroraとRDSどちらを選ぶべきか
RDBはAWS上にDBをインストールしたのと同じ動きをするが、
Auroraはクラウドされていて実態が1つになっている
(インスタンスは複数で動くが、ストレージが1つ)
(3)NoSQL DB
・NoSQL DBとは(KVS)
SQLを使わずにデータをキーだけで引っ張ってこれるDB
セッションデータの保存に使うと、キーでひけるようになるのでよく使う
リレーションしない分MySQLとかより速い
・memcached
NoSQL DBのスタンダードで、オンメモリで動作するKVS
データはメモリ上に展開しているので高速でデータを取得できる
サーバーが落ちるとメモリ上のデータが飛んでしまう
・MongoDB
最近よく聞くKVS
データはJSON形式で取得できる
・Redis
主流のKVSの1つ
クラスタ構成が取れるため、同一クラスタの1台が落ちてもデータが保持される
・AWS Elastic cache
memcachedとRedisが使える
・Amazon DynamoDB
規模が大きいものにも対応できる
ぐるなびの店舗のデータをKVで引っ張ったりするにはこちらが向いている
(4)DNS
・DNSとは
ドメイン名を管理・運用するために開発されたシステム
・BIND
最も広く普及しているDNSサーバーソフトウェア
データはメモリ上に展開しているので高速でデータを取得できる
サーバーが落ちるとメモリ上のデータが飛んでしまう
・AWS Route53
(5)検索エンジン
・Apache Solr
Lucene系の検索エンジン
Javaでできている
・Apache_Lucene
今の検索エンジンの大元になっている
SolrやElasticsearchなどのプラットフォームで利用される検索ライブラリ
・Groonga
ぐるなびはこれを使ってる
・Elasticsearch
中核にLuceneを採用している。
・AWS Amazon Elasticsearch Service
AWS上でElasticsearchが使えるサービス
色んなことがやりたい場合はこれを使うのがいい
・Amazon CloudSearch
シンプルに使うなら向いてるが、
検索機能を充実させるのは少し難しい
(6)NFS
・NFSとは
UNIX系OSで利用される分散ファイルシステム、およびそのための通信規約
サーバーに別のサーバーのディレクトリをマウントする機能を提供
WEBではCookieのデータを保存する形やデータ連携で使われることが多い
・AWS EFS
AWS上でNFSの機能を使えるサービス
データはメモリ上に展開しているので高速でデータを取得できる
サーバーが落ちるとメモリ上のデータが飛んでしまう
■Linuxサーバーへの導入
(1)パッケージ管理
・edHad系のパッケージ管理システム
ソフトウェアの管理にあたって、各ソフトウェアの依存関係を考慮してくれる
※RedHad系:RedHad Linux、CentOS Linuxなど
・RPM
RedHad系のパッケージ管理システム
ソフトウェアの管理にあたって、各ソフトウェアの依存関係を考慮してくれない
・APT
Debian系のパッケージ管理システム
※Debian系:Debian Linux、Ubuntuなど
(2)導入
ミドルウェアの導入方法として、パッケージ管理を利用する方法と、
コンパイルしてインストールする方法の2パターン
・使い分け
指定したバージョンを使わなければならない場合など、
柔軟な運用をするには、コンパイルしてインストールするという手段をとる
・インストール手順
configure: インストールオプションを作成
make:makeファイルを作成
make install:makeファイルに基づいてインストールを実行
・インストールでエラーが発生した場合
エラーメッセージを確認、検索してみる
依存性を解決できないパッケージの削除や、
足りないパッケージの追加等をすれば上手くいくケースが多い
(3)起動
・CentOS7以前
/etc/init.d配下に起動プロクラムがあり、
それを実行することでサービスの起動・停止をする
・CentOS7以降
systemdを使用してサービスの起動・停止をする
/etc/init.d/httpd startなどは使えなくなった