4月9日の「ふくあず」で、WebApps上にEC-CUBE(SQLite)を使ったECサイト構築を試したことを話したのですが、そのときに「SQLiteを採用した場合、スケールアウトがうまくいかないのではないか?」という質問をいただきました。
スケールアウトについては、以前このような記事を書いています。
https://zuvuyalink.net/nrjlog/archives/1796
私がキチンと理解して無かったため、質問をいただいたときにうまく説明できず…すみませんでした!
なので、改めて記事としてまとめ直してみました。
SQLiteを使ったCMSサイトをスケールアウトしてみると?
今回の質問の意図ですが、「スケールアウトして2インスタンスにした場合、同じものが2つに増えるからDBも2つに増えてしまって正常に動かないのでは?」ということでした。
確かに、スケールアウトで「単純に数が増えるだけ」であればDBの不整合が起きそうです。
スケールアウトについては、以前以下のような図解をしていました。
図中にも記載があるのですが「ディスクは共有されて」います。
Azure WebAppsの場合、この「共有ディスク」の部分にWordPress(CMS)やSQLite(DB)が入る形になります。
ちなみに「共有ディスク」とはwwwrootとのこと。(kuduで見た場合Dドライブそのもの)
つまり、WebAppsはスケールアウトするとインスタンスは増えるけれど「共有ディスク」は1つのまま(CMSやDBが物理的に増えるわけではない)なのですよね。
https://david9142.wordpress.com/2012/06/
というわけで、SQLiteを採用する場合のメリット・デメリットをまとめてみます。
SQLiteを使うメリット
以前もメリットについては書いたことがあるのですが、もう一度まとめるとこのような感じ。
- 小~中規模のサイト運営向き
- データベースに関する専門知識がいらない
- SQLiteはファイルなのでサーバ不要
- 完全バックアップデータの中に含まれる(何もしなくていい)
- 復旧したいときはFTPで該当ファイルをアップロードするだけ
- 仮想マシンを立てたりする必要がないので費用面が抑えられる
このように、小~中規模のサイトだったり、DBについての知識が無かったりするWeb制作者にはおすすめな構成ですね。
SQLiteを使うデメリット
SQLiteを採用した場合のデメリットは以下のような内容になります。
- 大規模サイトには不向き
- スケールアウトしても共有ディスク自体は速度が出ない
- ファイルを使っているので書き込みが重複した場合などロックがかかる
SQLiteを採用すると手軽にCMSサイトを初められたり、Azure WebAppsの各種便利機能を使ったりできますが、規模が大きくなればなるほど共有ディスクの弱点や、ファイル形式のDBのSQLiteの弱点が目立つようになってきます。
共有ディスクはそんなに性能が出ません。そこでStorageから直接画像を配信する事で性能を稼ぐという構成としているわけです。
ですので、使いドコロはキチンと見極めないといけないですね。
最後に
今回の件について、@kazumihirose さんに技術指導いただきました。
毎度のごとく本当にありがとうございました!
Web制作では、単価があまり高くない案件が結構多いです。
Azureで仮想マシンを使ったりMySQLを使うと維持費が高くなってしまうところがあるので、「まずは初めてみよう」なスモールスタートに、WebAppsとSQLiteを使ったサイト構築などはいいのかな?と思います。
案件によってはレンタルサーバーを採用した方がいい場合もありますし、クライアントの要件に添ってベストと思われる方法を提案できることが大切なのかな?と。
ただ、Azure WebAppsは制作者がラクになる便利機能がホントに多いので、費用面で折り合いがつくなら是非使ってみてもらいたいな!とは思っています。
勉強になりました。
興味深い試みなので、サイトを通じて経過など情報発信していただけると嬉しいです。
コメントありがとうございます!
SQLiteを使用したWordPressサイトの構築方法など他にも記事がありますので、ぜひそちらもご覧いただければと。
これからも情報発信していきますので、よろしくお願いします~!