Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

すごいHaskellたのしくHeroku!

743 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

すごいHaskellたのしくHeroku!

  1. 1. すごいHaskellたのしくHeroku! @haru2036
  2. 2. だれおまえ • @haru2036 • http://www.haru2036.info • わりと知ってる人しかいない
  3. 3. 概要 • YesodでWebアプリ作った • デプロイ先がない • Heroku使えるらしい • Ubuntuでビルドしろとかそんなはなしも • Heroku-buildpack-ghcがいいらしい • 15分ルール • Anvil使った • 結局のところ
  4. 4. HerokuでHaskell • 通常使えません • でも無理やりバイナリ突っ込めばいけるらしい • やってみよう • 結果:茨の道でした +
  5. 5. 今回の条件 • Herokuは無料プランで(つーか無料のために頑張った) • HaskellでWebアプリの開発にはYesodを使用
  6. 6. 方法? • 優しいHaskellerがBuildpackを公開しているのでそれを使って Heroku上でビルドします • やってみた • Buildpack:Heroku上でソースをコンパイルしてバイナリを 組み込むための仕組み?
  7. 7. • ! Timed out compiling Haskell app (15 minutes) • ! See https://devcenter.heroku.com/articles/slug- compiler#time-limit
  8. 8. 魔の15分ルール • デプロイ中に15分以上経つと有無をいわさず中止される • 15分フレンズ(見てない) • 困った
  9. 9. Anvilをつかう • ビルドサーバ • herokuにプラグインインストールして(運が良ければ)コマンド 一発で行けるらしい • 30~45分位かかってエラーはいてダメだった • 二度目も同じくらいかかったけどうまいこと行けたっぽい • ビルドからデプロイまで全部いけちゃうのですばらしい (らしい) • ちなみに(これだけでは)動きませんでした
  10. 10. そして成功へ • それでもApplication Error • Heroku logs したらlibgmpがなくて困ってるとのこと • Ubuntu10.04の仮想マシン作ってそこから持ってくることに • ディレクトリを作ってそこにlibgmp.so.10を入れる • Procfileをこのシェルスクリプトを実行する形に #!/bin/sh LD_LIBRARY_PATH=$PWD/libs ./dist/build/app/app Production -port $PORT
  11. 11. うごきました
  12. 12. 現在の構成 おうち github heroku デプロイ用ビルド環境 (と言うよりライブラリファイル 取り) 開発マシン 開発マシン
  13. 13. まとめ • 今のところ • BuildpackとAnvilを使ってビルド • 足りないファイルがあったらUbuntu 10.04LTS (x64)から • で動く(はず)
  14. 14. 問題点 • Slug sizeがでかすぎる • 231MB of 300MB (どんどん増える) • そのうち制限引っかかりそう • そもそもデプロイ完了までが茨の道 • それを乗り越えれば快適なHaskellで開発できるけど • 普通にVPS借りろってことか • いつ使えなくなるかわからん • そうならないといいな • 普通にVPS借り(ry
  15. 15. 他の方法 • Dockerのコンテナ上でビルドしてそれをデプロイ • 超イケてる • 今度試してみます
  16. 16. 参考資料 • Yesodで作ったWebアプリをHeroku上でビルドしようとしても15 分以内に終わらないときは • http://qiita.com/jabaraster/items/6dc8030bd55c0d2fc642 • Docker を使って Haskell を Heroku の cedar stack用にコン パイルする • http://blog.chairoi.me/entry/2014/02/25/130259

×