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
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
20
Ruby de Railway Oriented Programming
wtnabe
0
47
Bindanのススメ
wtnabe
0
34
そのオブジェクト、何を保証してくれますか? - GuideRailのススメ -
wtnabe
0
47
Effective Jekyll
wtnabe
0
76
5 min Jekyll/Liquid Plugin cooking
wtnabe
0
41
Ruby de Wasm
wtnabe
0
70
Cloud Native Buildpacksって結局どうなの?
wtnabe
0
57
Decoupled System with Turbo Frame
wtnabe
1
140
Other Decks in Programming
See All in Programming
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
2
710
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.1k
2年のAppleウォレットパス開発の振り返り
muno92
PRO
0
130
Java 25, Nuevas características
czelabueno
0
120
AIエンジニアリングのご紹介 / Introduction to AI Engineering
rkaga
8
3.4k
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
4.5k
はじめてのカスタムエージェント【GitHub Copilot Agent Mode編】
satoshi256kbyte
0
120
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
120
TestingOsaka6_Ozono
o3
0
180
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
10
1.5k
チームをチームにするEM
hitode909
0
410
ZJIT: The Ruby 4 JIT Compiler / Ruby Release 30th Anniversary Party
k0kubun
1
300
Featured
See All Featured
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
0
320
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
60
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
520
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
51k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
GraphQLとの向き合い方2022年版
quramy
50
14k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
29
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
410
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Building Adaptive Systems
keathley
44
2.9k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
240
How Software Deployment tools have changed in the past 20 years
geshan
0
30k
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 へ!!!