SQLを使わずに大規模なwebシステムを作ることを得意とする、ユゲタです。
世の中のサーバー障害の多くがデータベース障害であることを考えると、データベースを使わずに済むのであれば、できれば使いたくないというのが本音なのです。
データをデータベースに格納しないとすると、どのように使えば良いのかよく分からないし、データベースに入れることこそがセオリーと思い込んでいるLAMPエンジニアが多く、コンピュータのIOの説明をする必要が出てきて、効率が悪いという経験があったので、ブログに書き留めておこうと考えてみました。
LAMPエンジニアがSQLを使うワケ
多くのwebサービスで当たり前のように使われているSQLデータベースですが、モジュールがオープンソースであることと、ほとんどの参考書にmysql,postgressSQLを使ったサンプルが載っているため、それを使うことが当たり前になっているようですね。
そして、LAMPエンジニアに「何故SQLを使うのか?」という質問をしてみた回答を下記にまとめてみました。
1. LAMPのMは"Mysql"だから
2. レンサバを立ち上げたらインストールされていた
3. 自分の持っている参考書に記載されているから
4. 高額なSQLサービスを使うよりも無料のMySQLの方が便利
5. それしか知らないから
それ以外にどうすればいいのか分からないという状態のエンジニアは、仕事で立ち上げた高付加アクセスサービスなどで、痛い目を見て経験をしなければ学習ができないのかもしれません。
SQLを使うこと事態が悪いのではないのですが、あまりにも信者が多いと感じたので、少しディスった感じのようにも見える書き方になってしまいましたが、事前に警告をしたにも関わらず、トラブルに陥った時にヘルプ信号を送ってくるのはやめてもらいたいですよね。
SQLでのトラブル事例
SQLでのトラブルって、どういうモノがあるんでしょうか?
個人のブログページを立ち上げる程度であれば、これで十分なんですが、企業サービスでB2Cなどで安易にこの構成にしてしまうと、アクセス数が増え始めた頃に、サーバーパフォーマンスが著しく低下して、気がついた頃にはニッチもサッチもいかなくなってしまいます。
もちろん、webフロント機能とサーバー機能を別のサーバーに切り離す程度の負荷分散はできますが、それでもデータベースを物理バランシングできない状態に頭を悩ますでしょう。
そこで、AWSのRDBサービスなどは、こうした負荷を考えなくてもいいように思えますが、所詮データが増えてくるとパフォーマンスは落ちてくるし、インデックスを付与する運用との板挟みになりがちです。
SQLを使うということは、サーバー資源の無駄使いでもあると考えられるんですね。
オゾン層破壊に加担していると言ってしまうのは言いすぎかもしれませんが、データベースのエコシステムと比べると明らかにそれは言えるかもしれませんね。
ではSQLを使わずに、どうすればいいのか?
とある、WEBマーケティング会社で、僕がB2B2Cサービスを立ち上げた時に、サーバーアクセスは月間に億単位になることは初回から想定されていたので、SQLを使うととんでもない運用負荷になることが想定されたので、
データは全てログデータとして、テキストファイルに保持することにしました。
設定するデータも、json形式でサーバーに保存しておくだけで、書き換えも複製もとても簡単にでき、運用負荷は想定よりも低く済み、サーバーの引っ越しなどは、かなり簡易に行える環境を構築することができました。
個人的に笑い話にしていますが、そのサービスを立ち上げて10年以上たつのですが、マーケティングデータを収集するアプリケーションなのに、「データベース障害は、0件」という実績を誇っていて、LAMPエンジニアに話すと、SQLを使わずにどうやっているのか?という質問をよく受けますが、説明をしてあげると、「な〜〜〜んだ!」と手品の種あかしを聞いた時の感覚になります。
ただ、このやり方を覚えておくと、開発環境や、運用時のサーバー管理なども、シンプルな構成にできるので、とても効率がよくおすすめなのですが、
LAMPエンジニアは、SQLを使うセオリーから逃れられないという生き物なんですね。
一皮むけると、バラ色の世界が待っていますよ。
0 件のコメント:
コメントを投稿