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
Ruby de Railway Oriented Programming
wtnabe
0
20
Bindanのススメ
wtnabe
0
21
そのオブジェクト、何を保証してくれますか? - GuideRailのススメ -
wtnabe
0
33
Effective Jekyll
wtnabe
0
61
5 min Jekyll/Liquid Plugin cooking
wtnabe
0
29
Ruby de Wasm
wtnabe
0
54
Cloud Native Buildpacksって結局どうなの?
wtnabe
0
46
Decoupled System with Turbo Frame
wtnabe
1
130
join-kanazawarb-or-7years-passed-since-it-was-borned
wtnabe
0
790
Other Decks in Programming
See All in Programming
Vue・React マルチプロダクト開発を支える Vite
andpad
0
110
兎に角、コードレビュー
mitohato14
0
160
Jakarta EE Core Profile and Helidon - Speed, Simplicity, and AI Integration
ivargrimstad
0
290
ライブ配信サービスの インフラのジレンマ -マルチクラウドに至ったワケ-
mirrativ
2
270
DockerからECSへ 〜 AWSの海に出る前に知っておきたいこと 〜
ota1022
5
1.9k
コンテキストエンジニアリング Cursor編
kinopeee
1
740
MLH State of the League: 2026 Season
theycallmeswift
0
210
Laravel Boost 超入門
fire_arlo
2
170
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
290
ECS初心者の仲間 – TUIツール「e1s」の紹介
keidarcy
0
140
機能追加とリーダー業務の類似性
rinchoku
0
170
2025 年のコーディングエージェントの現在地とエンジニアの仕事の変化について
azukiazusa1
2
310
Featured
See All Featured
Building an army of robots
kneath
306
46k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.5k
Become a Pro
speakerdeck
PRO
29
5.5k
Agile that works and the tools we love
rasmusluckow
330
21k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Docker and Python
trallard
45
3.5k
Optimizing for Happiness
mojombo
379
70k
Site-Speed That Sticks
csswizardry
10
800
Optimising Largest Contentful Paint
csswizardry
37
3.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.6k
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 へ!!!