Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Heroku Real World

088b1b43ff5dd64aa0f000da9e9da777?s=47 wtnabe
August 29, 2015

Heroku Real World

Kanazawa.rb meetup #36 で喋った、リアルに Heroku を使ってあれこれ助かったけど工夫もそれなりに必要でした、なお話

088b1b43ff5dd64aa0f000da9e9da777?s=128

wtnabe

August 29, 2015
Tweet

Transcript

  1. Heroku Real World @wtnabe Kanazawa.rb meetup #36 2015-08-29 ( Sat

    ) at IT Plaza MUSASHI
  2. お品書き Herokuで⼿に⼊る環境 Herokuならではの課題 ぶっちゃけおいくら まとめ

  3. Herokuで⼿に⼊る環境

  4. 基本的なサーバ Web & App サーバ ポチッだけで簡単パワーアップ MONEY で解決 Office Hour

    くらいなら無料枠で ok つまり staging は無料で⽤意できる Deploy の Rollback 対応
  5. データベース、SMTPほか DBMS ( PostgreSQL / MySQL / MongoDB ) KVS

    ( Memcache / Redis ) SMTP / Inbound Mail サーバ Log サーバ パフォーマンス監視
  6. もちろんバックアップも DBMS⾃動バックアップ Log⾃動アーカイブ&バックアップ パフォーマンス監視(New Relic)は残念な がら無料だと7days retention

  7. Herokuの魅⼒は とにかく豊富な 連携サービス

  8. CIでも特別扱い CircleCIやCodeshipなど簡単に⾃動deploy できるように配慮してくれてる

  9. おまけ

  10. Build Pipeline stagingでdeploy、検証したものをそのまま productionへ反映可能(1s deploy)

  11. Herokuならではの課題

  12. Herokuならではの課題 固定IPアドレスがない サーバが遠い ( US or Euro Region ) なんだかんだでインフラの知識要ります

  13. 固定IPアドレスがない

  14. 何が困るのか?

  15. Naked Domain + SSLで困る

  16. Naked Domainとは example.com みたいなやつ ホスト部分がない www.example.com なら www がホスト Apex

    Domain とも呼ぶ
  17. SSLとは Secure Socket Layer 通信経路の保証と暗号化を⾏う

  18. SSLとDNSと固定IP SSL証明書は基本的にホスト名込み 逆引きを要求されることが多い 固定IPがなくてもCNAME使えればOK ワイルドカード、IPアドレス証明書、などなど説明のあやしい部分 が分かる⼈は無視してね

  19. Naked Domainと CNAME, ANAME CNAMEにはホスト名が必要 Naked Domain で CNAME はマズい

    不可能じゃないけど不具合に繋がる 親切なサービスは設定不可にしてる Route53拡張のANAME (ALIAS)ならOK
  20. ⾃前BINDじゃ対応できない

  21. ANAME対応DNSサービス AWS Route53 ただしAWSサービス向けのみ DNSimple / DNSMadeEasy Gehirn DNS /

    Dozens
  22. オススメ サービスが少なくて円建て決済 Gehirn DNS (1ゾーン2円/⽇) サービスが多くてまるっと安く DNSMadeEasy (10ゾーンまで$29.95/y)

  23. ちなみに EngineYardはAWSの固定IPサービス使える 固定IP費⽤はざっくり450円/⽉くらい ドメインが1つならDNSのサービス契 約するより固定IPの⽅が安い 120円/$ で計算

  24. 続きまして

  25. サーバが遠い 2015-08時点で Tokyo Regionがないので通信が重い ユーザーへのレスポンスもあるけどプログラムがこの通信を加味 していないと途端にパフォーマンス低下 ⾔うなれば 通信の N +

    1 問題
  26. 例えばサムネイル⽣成

  27. PaaSのストレージ repos 以外は揮発する 画像などは外部のオブジェクトストレー ジ(ex, AWS S3)への保存が基本

  28. そして S3などはTokyo Region AppサーバはUS Region 判断のしどころ S3をUSにおいてCloudFrontでTokyoに持ってくる⽅法も

  29. 遠い

  30. None
  31. 以下に全部時間が掛かる 1. 元画像の保存 2. 元画像の取得 3. サムネイル画像の保存

  32. Dynoのパワー(≒マニー) だけでは解決できない!!

  33. どうする!?

  34. Workerを追加して ⾮同期で処理する

  35. えっ?結局お⾦?

  36. だけじゃない!

  37. ⾦と腕の両⽅要る

  38. Railsで⾮同期処理 1. Queueを積むストレージを⽤意 2. Queueを処理するサーバを⽤意 3. 同期的処理の記述からQueueを処理する Workerにジョブを投げる記述に変更

  39. 詳しくは別枠で

  40. 再びマニーの話

  41. Workerは節約できる Heroku の Dyno は使っただけ課⾦ Worker Dyno は 24/7 では必要ない

    Queue として使う Redis などは無料枠で も⼗分
  42. Process Scheduler Process Scheduler | Heroku Dev Center 必要な時だけ Dyno

    を起こすことのでき る add-on これ⾃⾝はコントロールする Dyno が複 数になったら有料
  43. ぶっちゃけおいくら

  44.   Item Price ( USD / mon ) Web Dyno

    7 - 25 DBMS 9 Worker Dyno 3.5 - 12.5 SSL 20 Sum 7 - 66.5 DB も SSL も不要なら $7 DB と Worker アリで $19.5+ SSL がちょっと⾼い
  45. Sum 7 - 66.5 USD/mon フルマネージドサーバ deployの⾃動化もrollbackも対応 セキュリティとか考えなくていい DBMS、ログのバックアップも⾃動 パフォーマンス監視付き

  46. 安い stagingは限りなく安くできるし 個⼈の感想です

  47. まとめ

  48. Herokuで解決できるもの CPUとメモリ アプリケーション環境のセットアップ アプリケーションの監視体制 Buildpack, Bundler ( gem ), 様々な連携サービスなどで解決

  49. 近い環境も簡単に作れる BundlerやComposerで必要なものは⼊る ForemanでWorker DynoもRedisサーバも Buildpackの深淵に触れなければ楽勝 少なくとも⾃前サーバ + Vagrantよりは ただしWindowsを除く

  50. Herokuで解決できないもの ストレージ 通信コスト ⾮同期に回していいがにするスキル かゆいところの⽣々しい設定

  51. これまでの⼈へ

  52. アプリとインフラ Herokuならではの課題はある あまり表に出てこないけど、重要 インフラ分かる⼈のニーズは消えない が、作業単価ベースではきつくなる アプリもインフラもイマドキのツールも 分かる場合は捗り具合ハンパなし

  53. これからの⼈へ

  54. スピードと成⻑を求める 典型的なWeb系の スタートアップに向いてる

  55. 君たち向けのサービス

  56. 来れ若⼈!! まずは Kanazawa.rb の meetup へ!!!