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
450
Heroku Real World
Kanazawa.rb meetup #36 で喋った、リアルに Heroku を使ってあれこれ助かったけど工夫もそれなりに必要でした、なお話
wtnabe
August 29, 2015
Tweet
Share
More Decks by wtnabe
See All by wtnabe
Decoupled System with Turbo Frame
wtnabe
1
36
join-kanazawarb-or-7years-passed-since-it-was-borned
wtnabe
0
630
let-me-edit-with-editor
wtnabe
0
230
google-photos-and-storage-and-rclone
wtnabe
0
300
one case of how to begin vuejs
wtnabe
2
350
Kanazawa.rb meetup #56 Coderetreat Intro
wtnabe
0
330
lightweight authenticity of microservices
wtnabe
0
350
Automate WordPress deployment with WordMove
wtnabe
1
390
CircleCI Hands-on for Beginners
wtnabe
0
360
Other Decks in Programming
See All in Programming
ONE WEDGE_company_guide
1wedge_one
0
390
puregoの活用例
aethiopicuschan
0
220
Git Rebase
bkuhlmann
11
1.6k
OpenAPIを中心に考えるAPI開発入門 / Introduction to API Development with a Focus on OpenAPI
seike460
PRO
2
130
二郎系ラーメンのコールで学ぶ AST 解析
memory1994
PRO
7
1.7k
単体テストを書かない技術 #phpcon_odawara
o0h
PRO
26
7.9k
StreamlitとTerraformでデータカタログを作った話
gussan0223
0
310
TYPO3 v13 – The road to LTS: What's new and new APIs
luisasofie_xoxo
0
180
From Spring Boot 2 to Spring Boot 3 with Java 21 and Jakarta EE
ivargrimstad
0
1.2k
Git Lint
bkuhlmann
4
740
エンターテイメント業界で利用されるAWS
demuyan
0
200
コーンフレークから始める モデリング会話入門
ogurotakayuki
0
280
Featured
See All Featured
It's Worth the Effort
3n
180
27k
What the flash - Photography Introduction
edds
64
11k
Designing on Purpose - Digital PM Summit 2013
jponch
110
6.4k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Building a Modern Day E-commerce SEO Strategy
aleyda
16
6.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
320
23k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
StorybookのUI Testing Handbookを読んだ
zakiyama
11
4.6k
Building an army of robots
kneath
300
41k
Building Flexible Design Systems
yeseniaperezcruz
318
37k
GitHub's CSS Performance
jonrohan
1023
450k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
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 へ!!!