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
wtnabe
August 29, 2015
Programming
1
530
Heroku Real World
Kanazawa.rb meetup #36 で喋った、リアルに Heroku を使ってあれこれ助かったけど工夫もそれなりに必要でした、なお話
wtnabe
August 29, 2015
Tweet
Share
More Decks by wtnabe
See All by wtnabe
Effective Jekyll
wtnabe
0
49
5 min Jekyll/Liquid Plugin cooking
wtnabe
0
23
Ruby de Wasm
wtnabe
0
48
Cloud Native Buildpacksって結局どうなの?
wtnabe
0
39
Decoupled System with Turbo Frame
wtnabe
1
120
join-kanazawarb-or-7years-passed-since-it-was-borned
wtnabe
0
780
let-me-edit-with-editor
wtnabe
0
330
google-photos-and-storage-and-rclone
wtnabe
0
450
one case of how to begin vuejs
wtnabe
2
460
Other Decks in Programming
See All in Programming
今ならAmazon ECSのサービス間通信をどう選ぶか / Selection of ECS Interservice Communication 2025
tkikuc
21
4k
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
360
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
1
270
dbt民主化とLLMによる開発ブースト ~ AI Readyな分析サイクルを目指して ~
yoshyum
3
1k
技術同人誌をMCP Serverにしてみた
74th
1
640
AIと”コードの評価関数”を共有する / Share the "code evaluation function" with AI
euglena1215
1
160
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
3
760
AI駆動のマルチエージェントによる業務フロー自動化の設計と実践
h_okkah
0
150
A2A プロトコルを試してみる
azukiazusa1
2
1.4k
XP, Testing and ninja testing
m_seki
3
240
システム成長を止めない!本番無停止テーブル移行の全貌
sakawe_ee
1
200
新メンバーも今日から大活躍!SREが支えるスケールし続ける組織のオンボーディング
honmarkhunt
5
7.2k
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Fireside Chat
paigeccino
37
3.5k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
510
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
54k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
Scaling GitHub
holman
460
140k
Balancing Empowerment & Direction
lara
1
430
It's Worth the Effort
3n
185
28k
Rails Girls Zürich Keynote
gr2m
95
14k
Optimizing for Happiness
mojombo
379
70k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
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 へ!!!