Suche senden
Hochladen
Herokuとrails
•
Als PPTX, PDF herunterladen
•
16 gefällt mir
•
5,463 views
Shinichirou Nakamura
Folgen
#shibuyarails で使ったスライドです
Weniger lesen
Mehr lesen
Melden
Teilen
Melden
Teilen
1 von 35
Jetzt herunterladen
Empfohlen
ネイティブ機能を利用するWebアプリの実例~PhoneGap×Rails~
ネイティブ機能を利用するWebアプリの実例~PhoneGap×Rails~
Daisuke Futatsumori
剣と魔法のログレス(PC版)の自慢と課題
剣と魔法のログレス(PC版)の自慢と課題
AimingStudy
今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --
今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --
虎の穴 開発室
【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選
虎の穴 開発室
ゲームインフラコンテナ実践導入
ゲームインフラコンテナ実践導入
Hiroki Tamiya
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
アシアル株式会社
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
Daisaku Mochizuki
Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)
Yohei Yasukawa
Empfohlen
ネイティブ機能を利用するWebアプリの実例~PhoneGap×Rails~
ネイティブ機能を利用するWebアプリの実例~PhoneGap×Rails~
Daisuke Futatsumori
剣と魔法のログレス(PC版)の自慢と課題
剣と魔法のログレス(PC版)の自慢と課題
AimingStudy
今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --
今まで公開してきた Deno Third Party Modules -- Deno での WebAssembly の利用の話 --
虎の穴 開発室
【とらラボLT】go言語でのweb apiの作り方3選
【とらラボLT】go言語でのweb apiの作り方3選
虎の穴 開発室
ゲームインフラコンテナ実践導入
ゲームインフラコンテナ実践導入
Hiroki Tamiya
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
アシアル株式会社
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
Daisaku Mochizuki
Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)
Yohei Yasukawa
Ruby開発者のためのHeroku入門
Ruby開発者のためのHeroku入門
Salesforce Developers Japan
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」
Junichiro Kazama
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
Go Sueyoshi (a.k.a sue445)
Rubykaigi2010
Rubykaigi2010
masaki yamada
OSC福岡 20111203
OSC福岡 20111203
Hiroshi Bunya
Facebook and heroku
Facebook and heroku
Naoyuki Mitsuboshi
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a Service
Makoto Haruyama
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
Dockerでデプロイ
Dockerでデプロイ
oshiro_seiya
4時間耐久 PHP on Heroku
4時間耐久 PHP on Heroku
Yusuke Ando
最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm
晃 遠山
Enterprise Redmine
Enterprise Redmine
Dai FUJIHARA
Behatで行う、E2Eテスト入門
Behatで行う、E2Eテスト入門
leverages_event
エンジニアという職業について
エンジニアという職業について
Hisatoshi Kikumoto
runC概要と使い方
runC概要と使い方
Yuji Oshima
XPagesDay 2014 - What's new in XPages NOW!
XPagesDay 2014 - What's new in XPages NOW!
Atsushi Sato
DroidKaigi_devicefarm
DroidKaigi_devicefarm
Shunsuke Maeda
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見る
shinjiigarashi
【16-D-4】3分ではじめるスマホアプリのビジュアル開発
【16-D-4】3分ではじめるスマホアプリのビジュアル開発
hmimura_embarcadero
OSC 東京 2012春
OSC 東京 2012春
Hiroshi Bunya
Weitere ähnliche Inhalte
Ähnlich wie Herokuとrails
Ruby開発者のためのHeroku入門
Ruby開発者のためのHeroku入門
Salesforce Developers Japan
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」
Junichiro Kazama
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
Go Sueyoshi (a.k.a sue445)
Rubykaigi2010
Rubykaigi2010
masaki yamada
OSC福岡 20111203
OSC福岡 20111203
Hiroshi Bunya
Facebook and heroku
Facebook and heroku
Naoyuki Mitsuboshi
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a Service
Makoto Haruyama
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
Dockerでデプロイ
Dockerでデプロイ
oshiro_seiya
4時間耐久 PHP on Heroku
4時間耐久 PHP on Heroku
Yusuke Ando
最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm
晃 遠山
Enterprise Redmine
Enterprise Redmine
Dai FUJIHARA
Behatで行う、E2Eテスト入門
Behatで行う、E2Eテスト入門
leverages_event
エンジニアという職業について
エンジニアという職業について
Hisatoshi Kikumoto
runC概要と使い方
runC概要と使い方
Yuji Oshima
XPagesDay 2014 - What's new in XPages NOW!
XPagesDay 2014 - What's new in XPages NOW!
Atsushi Sato
DroidKaigi_devicefarm
DroidKaigi_devicefarm
Shunsuke Maeda
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見る
shinjiigarashi
【16-D-4】3分ではじめるスマホアプリのビジュアル開発
【16-D-4】3分ではじめるスマホアプリのビジュアル開発
hmimura_embarcadero
OSC 東京 2012春
OSC 東京 2012春
Hiroshi Bunya
Ähnlich wie Herokuとrails
(20)
Ruby開発者のためのHeroku入門
Ruby開発者のためのHeroku入門
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
Rubykaigi2010
Rubykaigi2010
OSC福岡 20111203
OSC福岡 20111203
Facebook and heroku
Facebook and heroku
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a Service
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
Dockerでデプロイ
Dockerでデプロイ
4時間耐久 PHP on Heroku
4時間耐久 PHP on Heroku
最強のPHP統合開発環境 PHPStorm
最強のPHP統合開発環境 PHPStorm
Enterprise Redmine
Enterprise Redmine
Behatで行う、E2Eテスト入門
Behatで行う、E2Eテスト入門
エンジニアという職業について
エンジニアという職業について
runC概要と使い方
runC概要と使い方
XPagesDay 2014 - What's new in XPages NOW!
XPagesDay 2014 - What's new in XPages NOW!
DroidKaigi_devicefarm
DroidKaigi_devicefarm
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見る
【16-D-4】3分ではじめるスマホアプリのビジュアル開発
【16-D-4】3分ではじめるスマホアプリのビジュアル開発
OSC 東京 2012春
OSC 東京 2012春
Herokuとrails
1.
iPhoneアプリのバックエンド にRailsとHerokuを使ってみた GMOメディア 中村真一郎
2.
名前 中村真一郎
所属 GMOメディア株式会社 Twitteアカウント s_nakamura 業務内容: ポイント管理、ユーザ管理を行うBtoC向けサービスの開発 と運用。 その前はブログシステムの開発、運用を担当 メイン言語はJava Rubyとの関わり: Javaの次に学ぶ言語として始めた。Rubyの楽しさにハマっ た。 自己紹介
3.
Girlscameraの概要 Girlscameraサーバサイドの構成
Girlscameraサーバサイド構築ナレッジ Herokuを使って困ったこと 最後に アジェンダ
4.
Herokuを実サービスで使っている人? Railsを実サービスで使っている人? 本題に入る前にアンケート
5.
Girlscameraの概要
6.
プリクラが撮影できる無料のiPhoneアプリ。現在はVer1.4 日本だけでなく、アジア各国、アメリカで使われている。
Twitterやfacebookとも連携 ダウンロード数:累計約77万(iphone/iPad) Girlscameraとは
7.
当初はサーバサイドをPHPで作成。途中から私が担当を引き 継ぎPHPからRubyに変更。理由は・・・ Rubyが好きだから。 当初は外部のクラウド環境で運用。途中から引き継ぎ好きに してよいという話だったので、Herokuに変更。理由 は・・・・ この先の運用を考えた時にサーバやデータベースの運用等に 労力を掛けないようにしたかった。Herokuを使えば、より開発 に専念できると考えた GirlscameraとRubyの関わり
8.
Girlscamera構成
9.
使用ソリューション Rails3.2.2/Ruby1.9.2 Heroku cedar
stack(本番とステージング) Postgresql(Roninを使用) Amazon S3(Paperclip) Unicorn Memcached(Dalli) Github New Relic Heroku Scheduler Girlscamera構成
10.
Girlscamera構成 Girlscamera (iPhone) Heroku PostgresqlMemcached girlscameraApp UNICORN
11.
Girlscameraサーバサイド 構築ナレッジ
12.
本番とStagingの二つの環境をHeroku上に構築。Stagingの 方は無料の範囲で構築。本番の方は無料のものだけでなく、 有料のものを使用 Stagingはベーシック認証を入れて認証を通ればアクセスで きるようにした。
Railsアプリ側では、./config/environments/以下にstaging.rb を追加。また./config/database.ymlにstagingに関する記述も 追記 Staging環境構築
13.
>heroku create
hogehoge-staging --remote staging --stack cedar >git init >git add . >git commit -m'first commit' >git remote add staging [heroku git url] >git push staging master >heroku config:add RACK_ENV=staging --app hogehoge-staging >heroku config --app hogehoge-staging >heroku config:add --app hogehoge-staging USER_ID=‘[USERID]' PASSWORD=‘[PASSWORD]' Staging環境構築
14.
画像アップロードでは、 「paperclip(https://github.com/thoughtbot/paperclip) 」を使 用
Paperclipは使いやすい画像アップロード用ライブラリ。今 回は画像ストレージとしてAmazon S3を使用。 画像出力先やアップロードした画像のファイル名変更する など行いたい場合は、モデルクラス内で環境変数の値を見 て処理を分岐させたり、「./config/initializers 」以下に paperclip.rbなどのファイルを作成しパッチを適用したりす る。 Paperclipを使った画像アップロー ド
15.
画像出力先を環境変数で変える場合モデルクラスに以下のよ うな記述をする if Rails.env.production? has_attached_file :stamp, :storage
=> :s3, ・・・・・・・・・・・ else has_attached_file :stamp, :url=>"/:style/:filename" , ・・・・・・・・・・・・ end Paperclipを使った画像アップロー ド
16.
./config/initializers/paperclip.rb module Paperclip class
Thumbnail < Processor def transformation_command #Image Magicのコマンド実行時に処理を追加する end End Paperclipを使った画像アップロー ド
17.
New Relicを使って日々パフォーマンスをチェック。どこ の処理で時間が掛かっているのか、実行されるメソッドが 何が多いのかなど細かい単位でチェックできるので便利
高負荷になった場合の通知設定 New Relicでパフォーマンスを チェック
18.
./config/newrelic.yml production: error_collector: capture_source: true enabled:
true ignore_errors: ActionController::RoutingError apdex_t: 0.9 ssl: false monitor_mode: true license_key: <%= ENV["NEW_RELIC_LICENSE_KEY"] %> developer_mode: false app_name: <%= ENV["NEW_RELIC_APP_NAME"] %> transaction_tracer: record_sql: off enabled: true stack_trace_threshold: 2.0 transaction_threshold: apdex_f capture_params: false log_level: info New Relicでパフォーマンスを チェック
19.
初期は何も設定をしない場合WEBrick。実運用では、WEBRickで はなく別ソリューションがよいと考え、幾つかのサイトでも実 績があるUnicornを使うことにした。 導入手順としては、Gemfileにunicornを追記。
./config/unicorn.rbを作成し、workerの数やTimeout設定などを追 記 ./Procfileを作成しunicornの起動方法を記述 Procfileとはcedarスタックから採用されたHerokuで動くアプリ ケーションの動作を指定。web,worker,clockがある。 最後にHeroku を再起動して設定を反映。起動しているかは、 「heroku ps」を使って確認 Unicornの導入
20.
Gemfileに追加 gem 'unicorn‘
./config/unicorn.rb を作成 worker_processes 4 timeout 15 preload_app true ./Procfileを作成 web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb >heroku ps –app [APPの名前] Process State Command ------- ---------- ------------------------------------ web.1 up for 41m bundle exec unicorn -p $PORT -c ./.. Unicornの導入
21.
デフォルトだとherokuapp.comなので、それを独自のドメ インに変更したい 手順としては、アプリケーションの管理ページから新規 ドメイン(
custom domain)を追加 DNSサーバにIPの情報を追加し、新たに追加したドメイン へ来た場合にHeroku側にいくようにする。 ※追加IP 75.101.163.44 75.101.145.87 174.129.212.2 DNS設定の変更
22.
DBから取得した値などは、Memcachedに保存し、極力DB アクセスを少なくする Memcachedを扱うライブラリとしてDalliを使用。
Gemfileにdalliを追加 ./config/environments/production.rbに設定を追加 アプリケーション側にMemcachedへアクセスし、値を取 得/格納する記述を追記 Memcachedを使う
23.
Gemfileに追記 gem 'dalli‘
./config/environments/production.rbに追記 config.cache_store = :dalli_store config.action_dispatch.rack_cache = { :verbose => true, :metastore => ENV['MEMCACHE_SERVERS'], :entitystore => ENV['MEMCACHE_SERVERS'] } config.static_cache_control = "public, max-age=2592000" Memcachedを使う
24.
iPhoneアプリ内でAPI経由で取得した画像を表示している箇 所で「www.hogehoge.jp/photo/aaaaaa.png」のように記述し ている箇所があった。しかし画像はAmazon S3に切り替えた ため画像のURLが 「hogehoge-bucket.s3.amazonaws.com/photo/aaaaaa.png」 に変わったため表示が出来なかった。
そこでアプリケーション側で「www.hogehoge.jp/photo」で 来たときに「hogehoge-bucket.s3.amazonaws.com/photo」に 遷移するようにリライト処理を追加した。 画像URLのリライト
25.
Gemfileに追加 gem 'rack-rewrite',
'~> 1.0.0' ./config/initializers/rack_rewrite.rbを作成 require 'rack/rewrite' GirlsCamera::Application.config.middleware.insert_before(Rac k::Lock, Rack::Rewrite) do if Rails.env.production? r301 [遷移元URL パターン] ,[遷移先URLパターン] end end 画像URLのリライト
26.
定期的に実行したいバッチ処理はHerokuのプラグインで ある「Heroku scheduler」を使うとよい。
Rakeのタスクとして処理を記述し、Herokuのアプリケー ション管理画面から実行時間の設定を行う 実行時間を10分、1時間、1日という間隔で設定可能 Heroku Schedulerを使う
27.
./lib/taks/cron.rakeのようにファイルを作成し、rakeタスクを定義 する desc "This
task is called by the Heroku scheduler add-on" task :calculate_daily_photo=> :environment do puts 'Daily stamp repcalculate_daily_photoort batch.' ・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・ end End >rake calculate_daily_photo ※schdulerには「bundle exec rake calculate_daily_photo」 Heroku Schedulerを使う
28.
本番環境のテーブルに直接アクセスしデータの確認をしたい とき、「heroku-sql-console」を使うと便利 >heroku plugins:install
git://github.com/ddollar/heroku-sql- console.git >heroku sql --app hogehogeAPP 本番DBへ直接SQLを投げる
29.
>heroku restart
–app [アプリ名] >heroku logs –t –app [アプリ名] >heroku run rake db:migrate –app [アプリ名] >heroku ps –app [アプリ名] >heroku ps:scale web=2 worker=1 –app [アプリ名] >heroku run console –app [アプリ名] Herokuコマンド
30.
Herokuを使って困ったこと
31.
Herokuが6月15日の13時過ぎに落ちた・・・・。 Herokuの障害状況を表したページやTwitterを見て逐次状況 を確認(http://status.heroku.com)
Subscribe notificationでメールを登録しておくと、Herokuで 何か問題があった時に直ぐに検知できる。 Herokuが長時間使えない状況に陥った時の対応策を用意し ておくべき 困ったこと(1)
32.
困るほどではないが、情報は大体英語で記載。難しい英 語ではないので読んで理解できる。 (https://devcenter.heroku.com) どうしても困った場合はサポートページで問い合わせす るとよい。アメリカとの時差はあるが、割と真摯に対応 してくれる。 (https://support.heroku.com/home) 困ったこと(2)
33.
最後に
34.
Herokuにして開発に集中できたと思う。 Add-ONも充実している
Herokuは海外でも導入実績があるので、使う機会があれば 使ってみるとよいと思う やっぱり日本リージョンが欲しい Herokuもダウンすることがあるので、その場合の対策は必 要 最後に
35.
以上です。 ご清聴ありがとうございまし た。
Hinweis der Redaktion
Preload_app Workerのアプリケーションの先読み
Jetzt herunterladen