こんにちは!そろそろ冒頭のあいさつの引き出しがなくってきたS.K.です。
みなさんはHerokuって知っていますか?
今回はこのHerokuとMySQLでWebアプリケーションを公開しようとしたときにハマった出来事を紹介したいと思います。
Herokuって何?
Herokuとはgitのリモートレポジトリに追加してgit pushするだけで簡単にデプロイできるPaaSのひとつです。
Heroku:https://jp.heroku.com/home
制限はありますが無料でも使えるので、ちょっとしたものを公開したいときには便利です。
(クレジットカードを登録すると1,000時間/月が無料で利用可能)
アドオンも豊富でメールも配信できたり、DBも使えたりとパッと見良い感じです。
今回はこのHerokuでNode.jsとCSV、MySQLを使ったWebアプリケーションを公開しようとしました。(製作者は別のなので、このWebアプリケーションの詳細は別に記事を書いたときにでも)
Herokuが公式にサポートしているDBはPostgresなのですが、他で使ったことがあったMySQLを使い楽をしたかったんですよね(笑)
Herokuを始めて使うので、DBも新しいものにするのは気が引けたという理由もあります。
HerokuでMySQLを使うため、ClearDB MySQLというアドオンを追加しました。これも制限はありますが無料で使うことができます。
ここまでは、紆余曲折あったものの解決することができたんすが…
HerokuでCSVの操作ができない??
なんでCSVなんて使うの?と思われた方もいるかと思います。実はこのClearDB MySQL、無料で使えるプランがデータ容量5MBまでなんです…
なので、DBに入れる内容は最小にして、その他もろもろはCSVでカバーしようとしたんですよね。
で、ローカル環境で試して、Herokuにデプロイ、テストをしているときに気が付いたんです。
CSVの操作できてなくね??
正確にはCSVを読み出すことはできるのですが、保存や削除、編集といったことができませんした。
悩みました。だってローカルでできているんですよ?そりゃすんなり動くって思うじゃないですか!!
結論として、Heroku上では、ファイルをサーバ上に保存することができないらしい…
なんでも、Herokuとは別のサービスと組み合わせれば使うこともできるそうなのですが、いまさら…
まあ、調べなかった私も悪いので…と意気消沈しながら、仕方なくDBにCSVに入れようとしていたデータを入れることにしました。(本末転倒ではありますが、できなくはなさそうだったので)
まず、これが1つ目にハマったことです。
無料は伊達じゃない!!ClearDBへのアクセス回数制限
そんなこんながあり、ClearDBにデータを移し、プログラムもCSV操作を行うものからDB操作を行うものに変更しました。
これで行ける!!そう思っていた時期が私にもありました…
なにはともあれデプロイして、さっそくテスト。
すると、途中でDBへの接続ができなくなりエラーになる…
なんでやねん!!と叫びながらも原因を探ります。
原因が判明、理由は規定時間内のDBへのアクセス回数に制限(10回)があることでした…
実際の動作もDBにアクセスしている回数が10になるとエラーになっていたので、これで原因はほぼ確定です。
こうして、まんまと2つ目にハマりました…
まとめ
CSVもダメ、DBもダメ、で結局どうしたかというと、
一旦保留!!
どうしてもWebに上げたいというわけでもなかったので、とりあえずはローカルで完成したもので、保留となりました。(可能な限りWebに上げたかったのですが、これ以上は大幅に時間がかかりそうだったので…)
まあ、振り回されました。(勝手に踊っただけかもしれませんが…)
というわけでHerokuを使うときは
- ファイルがサーバー上に保存できない=操作できない
- ClearDBへのアクセス回数には制限がある
ということを頭に置いて製作を進めるようにしたほうがいいです。
でないと、最後の最後で痛い目にあいますよ…(使うものを確認しておくのは当たり前なのですが…)
今回は以上です!