Skip to content
shunter1112 edited this page Aug 31, 2013 · 2 revisions

プロダクションチェックはあなたのアプリケーションの設定が、オプションではあるけども高いレベルで推奨される、ある基準の集合に適しているかを確かめます。あなたのアプリケーションの設定が最大限アップタイムであるための助けに成っているか、それを確かにするのを簡単にします。更にこれで、アップタイムでいることに貢献する要素を確認し理解することが出来るツールを持てるようになります。

あなたのアプリケーションの確認方法

プロダクションチェックを実行するために、Herokuのダッシュボードのあるアプリケーションのヘッダ部分にある「Run Production Check」のリンクをクリックします。

Heroku Production Check

プロダクションチェックは利用可能性を確認したり、維持したりするために推奨される一連のテストをあなたのアプリケーション上で実行します。それぞれの確認項目はリソースと関係する便利なリンクを含みます。

Cedar

CedarはHerokuの最もパフォーマンスがあり堅牢なスタックで、すべてのアプリケーションにとって推奨されます。Cedarにはプラットフォームのエンジニアリングと利用可能性に関する努力のほとんどが集中しています。

今あなたのアプリケーションがデプロイされているスタックを指定するためには、heroku stackコマンドを使用します。

:::term
$ heroku stack -a ha-app
=== ha-app Available Stacks
  bamboo-mri-1.9.2
  bamboo-ree-1.8.7
* cedar

まだCedarを使っていない場合は、アプリケーションの移行を検討してください。

Dynoの冗長性

ミッションクリティカルなアプリケーションでいるために、最低でも2つのWeb Dynoを稼働させることは、悲惨な出来事の間でも利用可能性を維持できる確率をあげます。複数のDynoはまた別の物理的な基盤(例えば、隔離されたAWSの利用可能地域)で実行される可能性が高く、更なる冗長性を与えます。

現在あなたのアプリケーションでどのタイプのDynoがどれだけ稼働しているかを確認するためにはheroku psコマンドを、そしてDynoの冗長性を増やすためにはheroku ps:scaleを使います。

:::term
$ heroku ps -a ha-app
=== web:
web.1: up for 17m

$ heroku ps:scale web+2
Scaling web processes... done, now running 3

これはwebDynoだけでなく、 backgroundやworkerのDynoにも同様に適応されます。

DNS と SSL

Cedarスタック上のアプリケーションは、app-name.herokuapp.comを指すCNAMEレコードを持っているべきです。SSLが必要な場合、SSLエンドポイントを設置し、endpoint-name.herokussl.comへ、あなたのCNAMEレコードを指してください。別の設定では結果的に利便性を損なう事になるでしょう。

Apexドメイン(他には、裸の、根っこの、そして裸のドメインとして知られているドメイン)はAレコードを使って設定されるべきではありません。サブドメインのリダイレクトやCNAMEのような機能を使って[適切にルートドメインのDNSを設定してください](apex-domains)。

hostコマンドライン機能を使って、あなたのDNSレコードが適切に設定されているかどうかを素早く確認することができます。

:::term
$ host www.example.com
www.example.com is an alias for nara-1234.herokussl.com.
nara-1234.herokussl.com is an alias for elb002776-242519199.us-east-1.elb.amazonaws.com.
elb002776-242519199.us-east-1.elb.amazonaws.com has address 107.21.240.226
…

エイリアスが、www.example.comからapp-name.herokuapp.comendpoint-name.herokussl.comにマッピングされていることを確認できるはずです。

プロダクション環境のデータベース

もし仕事でHerokuを使っている場合、プロダクション-グレードのHeroku Postgres databaseを使用するべきです。

プロダクション仕様のHeroku PostgresはCraneから始まり、Mechaプランまで拡張して行きます。*開発者、初心者プランはプロダクション仕様のデータベースではありません。*

サービスのプロダクション版は最も高いアップタイムが期待でき、自動のヘルスチェック、データスナップショットとフォークやフォローを含んだ一歩先の機能を含みます。

:::term
$ heroku pg:info -a ha-app
=== HEROKU_POSTGRESQL_RED
Plan:        Ronin
Status:      available
Data Size:   5.9 MB
Tables:      0
PG Version:  9.1.4
Fork/Follow: Available
Created:     2012-07-13 16:59 UTC
Maintenance: not required

もしアプリケーションがノンリレーショナルデータストアを必要賭する場合、Amazon DynamoDBは高い利用可能性を持つデータストアとしての、別の素晴らしい候補です。

可視性とモニタリング

あなたのアプリケーションの利用可能性を向上させる前に、あなたはアプリケーションの状態に対する優れた検知能力と反応能力を備えているべきです。これはいろいろなツールを使って達成する事が出来ます。

アプリのモニタリング

New Relicであなたのアプリケーションの全ての時間のパフォーマンスを確認し、細部まで見る事ができます。サービス内の悪化によって、利用可能性の損失が事前に起こるたくさんのケースがあります。

New Relic

観察している適切な期間の中で、あなたのアプリケーションの適切な動作上の境界線を作ったり、あなたのシステムが適切に動かなくなり始めたときに通知するアラートを設定しましょう。

あなたのアプリケーションが確かな状況で動いているかどうかと、どこか一番もろいかをより理解するために、New Relicの豊かなグラフィックとパフォーマンスの分析能力を使いましょう。これらの観察は、変わりやすい期間の悪化のまわりで動かし、診断するのに役立ちます。

Log Monitoring

Herokuのアドオンマーケットプレイスは、あなたのアプリケーションのログストリームに対して、消費したり、保存したり、道具を提供する多くのサービスを含んでいます。クレジットカードによるサインアップの成功のような、関心があるイベントのログを取る事で、異常なアクティビティを知らせるためのこれらのサービスを使う事が出来ます。問題があがった時は、これはまたログイベントのヒストリを検索できることで、デバッグを簡素化してくれます。

Papertrailは、あなたのログデータのパターンを基準としたアラートを提供してくれるようなサービスの例です。あなたのアプリの中のイベントとエラーの検索アラートを設定し、Librato, PegerDuty, Campfireを統合させましょう。検索アラートはHerokuのエラーコードやあなたのアプリケーションの関心のあるイベントの為になります。

Papertrail

Clone this wiki locally