Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Heroku Real World
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
wtnabe
August 29, 2015
Programming
1
550
Heroku Real World
Kanazawa.rb meetup #36 で喋った、リアルに Heroku を使ってあれこれ助かったけど工夫もそれなりに必要でした、なお話
wtnabe
August 29, 2015
Tweet
Share
More Decks by wtnabe
See All by wtnabe
Rubyでもモノリポしたい - 調査、おわわり編 -
wtnabe
0
28
Ruby de Railway Oriented Programming
wtnabe
0
61
Bindanのススメ
wtnabe
0
41
そのオブジェクト、何を保証してくれますか? - GuideRailのススメ -
wtnabe
0
55
Effective Jekyll
wtnabe
0
84
5 min Jekyll/Liquid Plugin cooking
wtnabe
0
45
Ruby de Wasm
wtnabe
0
75
Cloud Native Buildpacksって結局どうなの?
wtnabe
0
61
Decoupled System with Turbo Frame
wtnabe
1
150
Other Decks in Programming
See All in Programming
Best-Practices-for-Cortex-Analyst-and-AI-Agent
ryotaroikeda
1
110
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.4k
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
200
なるべく楽してバックエンドに型をつけたい!(楽とは言ってない)
hibiki_cube
0
140
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
220
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
180
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
CSC307 Lecture 06
javiergs
PRO
0
690
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
690
Oxlintはいいぞ
yug1224
5
1.3k
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
180
Package Management Learnings from Homebrew
mikemcquaid
0
220
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
93
What's in a price? How to price your products and services
michaelherold
247
13k
GitHub's CSS Performance
jonrohan
1032
470k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3k
Balancing Empowerment & Direction
lara
5
890
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Navigating Team Friction
lara
192
16k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
A Tale of Four Properties
chriscoyier
162
24k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
82
Transcript
Heroku Real World @wtnabe Kanazawa.rb meetup #36 2015-08-29 ( Sat
) at IT Plaza MUSASHI
お品書き Herokuで⼿に⼊る環境 Herokuならではの課題 ぶっちゃけおいくら まとめ
Herokuで⼿に⼊る環境
基本的なサーバ Web & App サーバ ポチッだけで簡単パワーアップ MONEY で解決 Office Hour
くらいなら無料枠で ok つまり staging は無料で⽤意できる Deploy の Rollback 対応
データベース、SMTPほか DBMS ( PostgreSQL / MySQL / MongoDB ) KVS
( Memcache / Redis ) SMTP / Inbound Mail サーバ Log サーバ パフォーマンス監視
もちろんバックアップも DBMS⾃動バックアップ Log⾃動アーカイブ&バックアップ パフォーマンス監視(New Relic)は残念な がら無料だと7days retention
Herokuの魅⼒は とにかく豊富な 連携サービス
CIでも特別扱い CircleCIやCodeshipなど簡単に⾃動deploy できるように配慮してくれてる
おまけ
Build Pipeline stagingでdeploy、検証したものをそのまま productionへ反映可能(1s deploy)
Herokuならではの課題
Herokuならではの課題 固定IPアドレスがない サーバが遠い ( US or Euro Region ) なんだかんだでインフラの知識要ります
固定IPアドレスがない
何が困るのか?
Naked Domain + SSLで困る
Naked Domainとは example.com みたいなやつ ホスト部分がない www.example.com なら www がホスト Apex
Domain とも呼ぶ
SSLとは Secure Socket Layer 通信経路の保証と暗号化を⾏う
SSLとDNSと固定IP SSL証明書は基本的にホスト名込み 逆引きを要求されることが多い 固定IPがなくてもCNAME使えればOK ワイルドカード、IPアドレス証明書、などなど説明のあやしい部分 が分かる⼈は無視してね
Naked Domainと CNAME, ANAME CNAMEにはホスト名が必要 Naked Domain で CNAME はマズい
不可能じゃないけど不具合に繋がる 親切なサービスは設定不可にしてる Route53拡張のANAME (ALIAS)ならOK
⾃前BINDじゃ対応できない
ANAME対応DNSサービス AWS Route53 ただしAWSサービス向けのみ DNSimple / DNSMadeEasy Gehirn DNS /
Dozens
オススメ サービスが少なくて円建て決済 Gehirn DNS (1ゾーン2円/⽇) サービスが多くてまるっと安く DNSMadeEasy (10ゾーンまで$29.95/y)
ちなみに EngineYardはAWSの固定IPサービス使える 固定IP費⽤はざっくり450円/⽉くらい ドメインが1つならDNSのサービス契 約するより固定IPの⽅が安い 120円/$ で計算
続きまして
サーバが遠い 2015-08時点で Tokyo Regionがないので通信が重い ユーザーへのレスポンスもあるけどプログラムがこの通信を加味 していないと途端にパフォーマンス低下 ⾔うなれば 通信の N +
1 問題
例えばサムネイル⽣成
PaaSのストレージ repos 以外は揮発する 画像などは外部のオブジェクトストレー ジ(ex, AWS S3)への保存が基本
そして S3などはTokyo Region AppサーバはUS Region 判断のしどころ S3をUSにおいてCloudFrontでTokyoに持ってくる⽅法も
遠い
None
以下に全部時間が掛かる 1. 元画像の保存 2. 元画像の取得 3. サムネイル画像の保存
Dynoのパワー(≒マニー) だけでは解決できない!!
どうする!?
Workerを追加して ⾮同期で処理する
えっ?結局お⾦?
だけじゃない!
⾦と腕の両⽅要る
Railsで⾮同期処理 1. Queueを積むストレージを⽤意 2. Queueを処理するサーバを⽤意 3. 同期的処理の記述からQueueを処理する Workerにジョブを投げる記述に変更
詳しくは別枠で
再びマニーの話
Workerは節約できる Heroku の Dyno は使っただけ課⾦ Worker Dyno は 24/7 では必要ない
Queue として使う Redis などは無料枠で も⼗分
Process Scheduler Process Scheduler | Heroku Dev Center 必要な時だけ Dyno
を起こすことのでき る add-on これ⾃⾝はコントロールする Dyno が複 数になったら有料
ぶっちゃけおいくら
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 がちょっと⾼い
Sum 7 - 66.5 USD/mon フルマネージドサーバ deployの⾃動化もrollbackも対応 セキュリティとか考えなくていい DBMS、ログのバックアップも⾃動 パフォーマンス監視付き
安い stagingは限りなく安くできるし 個⼈の感想です
まとめ
Herokuで解決できるもの CPUとメモリ アプリケーション環境のセットアップ アプリケーションの監視体制 Buildpack, Bundler ( gem ), 様々な連携サービスなどで解決
近い環境も簡単に作れる BundlerやComposerで必要なものは⼊る ForemanでWorker DynoもRedisサーバも Buildpackの深淵に触れなければ楽勝 少なくとも⾃前サーバ + Vagrantよりは ただしWindowsを除く
Herokuで解決できないもの ストレージ 通信コスト ⾮同期に回していいがにするスキル かゆいところの⽣々しい設定
これまでの⼈へ
アプリとインフラ Herokuならではの課題はある あまり表に出てこないけど、重要 インフラ分かる⼈のニーズは消えない が、作業単価ベースではきつくなる アプリもインフラもイマドキのツールも 分かる場合は捗り具合ハンパなし
これからの⼈へ
スピードと成⻑を求める 典型的なWeb系の スタートアップに向いてる
君たち向けのサービス
来れ若⼈!! まずは Kanazawa.rb の meetup へ!!!