バックアップはとろうなって話

本日昼 Mac 暗転

本日 Mac がスリープからうんともすんとも言わなくなりました.
頭はまっしろ
あのデータは...
あそこの実装は git push したっけ?
こんな事が頭の中でよぎってました.
何故か外部ディスプレイを繋いだ瞬間再起動して復活してくれました.

今からの時期やばすぎPCで乗り越えるわけにいかないので Mac Book Pro をポチりました.

みんなもデータを守るためにも定期的なバックアップをとりましょうね!

RailsアプリをHeroku(US)とGoogle App Engine(tokyo)のエンドユーザレスポンスタイムを計測してみた

この記事はアドベントカレンダー用に少し真面目に書いた記事だよ

adventar.org

はじめに結論

当たり前ですがGoogle App Engine(以下GAE)の方が早かったです.

Heroku

f:id:kiitan128:20171219164127p:plain

Google App Engine

f:id:kiitan128:20171219164113p:plain

方法と結果

環境

動かすアプリ

Rails + Elasticsearch を使った検索サービス

Heroku

Heroku Hobby Dyno なのでAWS USリージョンのどこかにサーバが立っています.

Google App Engine

Google App Engine をデフォルト 1インスタンスで tokyoリージョンに立てています.

計測方法

↓珍しく日本のサーバでのクライアントサイドからデータ計測が行える神サイトのでこちらを利用します. www.webpagetest.org

結果

Heroku

f:id:kiitan128:20171219164127p:plain

Google App Engine

f:id:kiitan128:20171219164113p:plain

はやい圧倒的なスピードである.
日本鯖なので First Byte が0.6ms位差が出ている. てか heroku おそすぎでは.

しかしGAEは料金がたか~い(サービス移行4日目くらい)

プロダクト リソース 使用量 料金(円)
App Engine Flex Instance Core Hours Japan 6,440.42 Minute ¥796.38
App Engine Flex Instance RAM Japan 107.34 Gibibyte-hour ¥106.42

なので次はVPSとかで検証しようかな?

おまけ GAE Railsアプリの起動方法

GAE に触ったきっかけは?

GAE (Google App Engine) が無料枠で 28時間分あるみたいなので移行しようと色々試してみた.
しかしRails無料枠の対象外であることにあとから気がついた. (無料枠対象はStandard EnvironmentだけRubyはFlexible Environmentだったw)

rubyで Standard Environment はなんで使われへんのや!!

とりあえずGAEでのRailsアプリケーションをたてる

ここでは以下の構成で環境を構築します. ・GCE でPosgreSQLを起動してます.(CloudSQLは月$10くらいかかるので使わない)
・GAE (Google App Engine) で Rails を起動します.
こちらの記事ではGAEのことだけ説明します.
PosgreSQLに関しては以下のテンプレートを使っただけ

console.cloud.google.com

railsのルートディレクトリで下のコマンドでデプロイをしようとできます.
app.ymlつくるー?って聞かれるので Yesと答えましょう.
次になんかか聞かれますがとりあえずコマンドを中断します.

gcloud app deploy

下のDocumentを参考にスケーリング設定等を./app.ymlに書いていきます. Configuring your App with app.yaml  |  App Engine flexible environment for Node.js docs  |  Google Cloud Platform

Google App EnginのFlexible Environment の app.yml に関する日本語記事が見当たらなかったので書き記しておきます.

entrypoint: bundle exec rackup -p $PORT
env: flex
runtime: ruby

includes:
- secret.yaml #環境変数を設定するymlを分けておけるので便利

threadsafe: true #デフォルトだとシングルスレッド処理なのでマルチスレッド処理を許可

automatic_scaling:
  min_num_instances: 1 #最小インスタンス数
  max_num_instances: 2 #最大インスタンス数
  cool_down_period_sec: 60 #60刻みで設定、インスタンスがアイドル状態になってから寝るまでの時間
  cpu_utilization:
    target_utilization: 0.8 #CPU使用率が何%になったら次のインスタンスを立てるかの設定、これだと80%になったら次のインスタンスが立つ

./secret.yamlの中身もついでに

env_variables:
  SECRET_KEY_BASE: 'hogehoge'

database.ymlもついでに

production:
  adapter: postgresql
  encoding: unicode
  database: your_databasename
  username: your_user
  password: your_password
  host: your_ip
  port: your_port

ここまでできたら一旦デプロイしてみましょう.
ここでものすごくデプロイに時間がかかるのでこーひーぶれいくーでもしましょう.

gcloud app deploy

とりあえずgcloud app browseでサイトが見えればおk

ついでに独自ドメインも設定〜

GCPコンソールでGAEの設定項目ないのカスタムドメインを追加します. 追加したら以下のような画面になるのでDNSに設定しましょう. f:id:kiitan128:20171215144233p:plain

お名前ならここからへんこうできる https://www.onamae.com/domain/navi/dns_controll/result

ボードゲームができるお店

Linuxセットアップしてたら研究すすめよと言われたので書くこと無い(言い訳)

ボードゲーム屋に行ってきたよ

カタン拡張すげー楽しかった(全敗)
次は勝つ f:id:kiitan128:20171219015452j:plain

明日はアドベントカレンダーやから真面目な記事になる予定

書くことねぇ | Herokuで使っきたAddon

毎日更新2日目にして書くこと無い

つらいね

Heroku Addons

そもそも Addon って?

アプリを開発、拡張、操作するためのサービスです.
DB・Logなどの拡張ツールが大体無料で揃っています.

↓ここで探せるよ!

elements.heroku.com

今まで使ってきたAddonを紹介〜

Railsアプリを4本ほどリリースして動かしてきたのでその時使った物をば紹介(今可動してるのは2本だけ)

Heroku Postgres

まずはDBやね
正直1000レコードまでは無料なのでDevで使うのはいいかも
Productionで使うには明らかに高すぎるので自分は Google Compute EngineでDBを立ててやってます.

https://elements.heroku.com/addons/heroku-postgresql

Logentries

次はLogツール
ユーザは意味の分からない行動をするので監視したりエラーの箇所を検索する際に利用しています.
無料で使えるのでとりあえず入れるのは良いかも

Logentries - Add-ons - Heroku Elements

New Relic APM

モニタリングツール
正直神です.
コントローラーのアクション毎に平均レスポンスタイムが見れる.
同時アクセスによる負荷ですごいレスポンスタイムになるときとか見つけにくいやーつの炙り出しに使ってる
エラーアラートも出せるので便利
あと眺めてるだけでちょっと楽しい

New Relic APM - Add-ons - Heroku Elements

Heroku Scheduler

cron
Herokuのねぼすけが寝ないように叩き起こしたりデータ更新を定期的に行ったりできます
書くこと無いけど神です.

たぶんこんなもんかな?

抱負

はじめに

なぜかブログを毎日更新することが研究室で流行っていて自分もやることに
f:id:kiitan128:20171216164942p:plain

自分で宣言する前に逃げられない状況を作られてしまった
誰だよこいつ教育したやつ

ってことで今年中は毎日更新がんばるよ
たぶん
毎日更新をしている先輩達からは真面目に書くと枯骨するよってアドバイスを頂いたのでテキトーなことしか書きません

やぶったら?

やらなかったら研究室で恒例の×ゲーム

  • 〇〇をカップ麺に入れて食べる
    • 5gストックするよ
    • 10gたまった時点で執行するよ
    • 翌日朝10時以降に誰かにslackにて「@kiitan 更新してへんやん」って指摘された時点で更新やぶったこととする(指摘文は完全一致とする)

こんなもんかな?