LAMPとは
いわゆるLAMPと呼ばれていた環境は、Webサービスを公開するにあたりセットで呼ばれる総称でした。
Linux Apache MySQL PHP(or Python or Perl)を頭文字を取ってLAMPと呼んだりしていました。
とりあえずこれさえあればWebシステム構築できるよといったようなセットとして「LAMP環境構築!」などと言われる記事をよく目にしていました。
現在これらの状況がどうなっているか考えてみます。
サーバの構築
昔はオンプレミスでそれこそLAMP環境を構築してデプロイするようなことも多かったと思います。
現在ではAmazon Web ServicesやGoogle Cloud、Azure等のクラウドサービスが出てきた影響やコンテナ化技術(DockerやKubernatesなど)が出てきたこともあり、いわゆるサーバレスでデプロイすることも増えてきました。
LAMP時代はフロントエンド、バックエンドという境界も曖昧な印象があり、API経由でリクエストを投げるようなアプリもほとんどなかったかと思います。
Linux
現在でもLinuxは多くのWebサーバで使われていると思います。
ただディストリビューションに関しては昔であれば迷ったらCentOS入れとけば間違いないよみたいな感じだったのが諸々の問題等がありCentOS StreamになったりRHELクローンであるRocky LinuxやAlmaLinux等が台頭してきたり、AWSユーザーはAmazon Linuxを使ってみたり、ゲームサーバ用途だったらUbuntuでサーバ立ててみたりディストリビューション等の面倒やクセのある仕様を嫌ってFreeBSDなどのBSD系に変えてみたり良く言えば選択肢が広まったとは思いますが、これから構築を行う人を悩ませる要素でもあるかとは思います。
選択肢が増えましたが、Linuxに関しては現在も相変わらず主要なOSであるのは間違い無いかと思います。
LAMP時代 | Linux(CentOS,Ubuntu等) |
現在 | Linux(色々),FreeBSD,AWS Lambda,Cloudflare,Netlify,Vercelなどいろいろなホスティングサービス |
Apache
WebサーバのApacheですが、Nginxが出てきてからというものApacheのシェアは徐々に落ちてきた印象を受けます。
現在はApacheと互換性のあるLiteSpeedも出てきており、プロセス駆動のApacheはパフォーマンス的に選ばれるケースが減ってきたような気がします。
LAMP時代 | Apache |
現在 | Nginx,Apache,LiteSpeed |
MySQL
MySQLがOracleになったりフォークプロジェクトであるMariaDBがでたあたりから徐々にMySQL以外の選択肢も選ばれるようになってきた気がします。
とはいえ今でも根強い人気はあり、WordPressなどで採用され続けていたり選択肢が増えた今となってもそれなりに利用数は多いかと思います。
現在はリレーショナルデータベースでなければNoSQLでMongoDB,Redis,CouchDB,Memcachedなど様々な選択肢が豊富にあります。
要件によって使用されるデータベースはそれぞれですが、MySQLのみを使うケースばかりではなくなってきています。
LAMP時代 | MySQL |
現在 | MySQL,MariaDB,PostgreSQL,各種NoSQL環境 |
PHP(Perl or Python)
PHPはLAMP環境さえ構築してしまえばApacheのモジュールで「とりあえず動く」というのがあったので環境構築から動作まで非常に楽でした。
そういう障壁の低さもLAMP環境というのが広まった要因にもなるかと思います。
前述したように現在はフロントエンドとバックエンドは分けて考えられるようになってきたり、各言語でもWebサーバを立てれるようになったりフレームワークの充実などで「とりあえず動く」というのがLAMP環境でなくても容易に可能です。
サーバレス環境の普及により主要なフレームワークで動くアプリケーションであれば簡単にデプロイできるようなサービスも今は充実しています。
LAMP時代 | PHP(Perl or Python) |
現在 | PHP,Python,JavaScript,TypeScript,Java,Ruby,C#,Go,Rust等さまざま |
まとめ
LAMPと言われてた時代は他に選択肢というか、Webサービスを構築に当たってのプラクティスが少なかったので流れを説明しやすく構築も比較的楽なLAMP環境構築というものが広まっていったのかと思います。
現在は学んだ言語の派生としてWebサービスの展開を行うことが可能になっており、コンテナ技術やクラウドプラットフォームの発展も相まって一定の手順はあるもののベストプラクティスといったようなものがなくなってきた感じです。