技術ブログ
技術ブログ
2018年07月24日
このエントリーをはてなブックマークに追加

12 Factor Appに則ったモニタリングをNew Relicで ~第二回~

イントロダクション

SaaSサービスなどのWebアプリケーションを開発するにあたって、理想的なベストプラクティスをまとめた”12 Factor APP”。
12の項目からなるこのベストプラクティスについて、各項目の概要を説明しながら、当該項目と親和性の高いNew Relicの設定について、前回からご紹介しています。本日は2回目です。

 

 

5. ビルド・リリース・ラン(アプリをステージ分する)

概要

12 Factor Appでは、主にビルド​​、リリース、実行という3つの段階があります。

まずビルド段階では、バージョン管理用のレポジトリからすべてのコードをコンパイルし、当該バージョンのアプリをパッケージ化します。リリース段階では、ビルドとアプリの設定を組み合わせて展開する準備をします。最後に、ラン段階でアプリを実行し、新しいリリースをします。

12 Factor Appでは、すべてのリリースにリリースのタイムスタンプなどのユニークなリリースIDがつきます。ビルドへの新しい変更(バグ修正など)には、新しいリリースが必要です。

New Relicはどのようにサポートするか?

  • アプリケーションのデプロイとバージョンを取得するために、Deploy MarkersまたはRecord Deployments を使用します。
  • 同様に、New Relicエージェント設定のカスタム属性を使用してバージョン番号を挿入すると、Insightsでアプリの特定のバージョンをトラッキングできます。また、カスタム属性を使用すると、Blue / Greenデプロイメントのパフォーマンスを識別して追跡することもできます。

6. ステートレスなプロセス

概要

柔軟でスケーラブルなアプリケーションを作成するためには、ステートレスは不可欠です。アプリケーションを1つ以上のプロセスとして実行環境にデプロイした場合、持続して所持する必要のあるデータはステートレスに保つ必要があります。

12 Factor Appでは、こうしたデータは、通常はデータベースなどに保存する必要があります。MemcachedやRedisのようなデータストアでは、セッション状態データも時間ベースの有効期限を設定し、格納されます。

ステートレスは、スケーリング、可用性および冗長性をアプリケーションで保つために非常に重要です。アプリケーションがステートレスな場合は、「自動的に」負荷に対応することができます。

New Relicはどのようにサポートするか?

  • New Relic Infrastructureを使用し、アプリケーションインスタンス間におけるステートデータ共有を担うバックエンドやキャッシングプラットフォームを監視します。
  • エンドユーザーのパフォーマンスと負荷状況とインスタンス数を比較するダッシュボードを作成し、必要に応じてアプリケーションのスケーラビリティを評価します。
  • アプリケーションが自動スケールされている場合は、それがどれほど頻繁に行われているか、どのくらいのコストがかかっているかを監視してください。 New RelicのAWS Billing Integrationは、スケーラブルなアプリケーションの実際のコストを追跡するのに役立ちます。

7. ポートバインディング

概要

12 factor appのWebアプリケーションにはWebサーバーは含まれておらず、代わりにHTTP経由でサービスを提供します。
アプリケーションは、ポートにバインドすることでリクエストの送受信を行います。これにより、アプリケーションが特定のWebサーバーに依存しないことを保証します。

New Relicはどのようにサポートするか?

  • アプリケーションのホスト:ポートの使用状況を監視することができます。
  • InsightsとNRQLのクエリアラートを使用すると、複数インスタンス(ポート)間の負荷と分散を視覚化できます。

8. プロセスの並行性

概要

12 Factor Appでは、さまざまな種類の作業がさまざまなプロセスによって処理されます。たとえば、HTTP要求はWebプロセスによって処理され、長時間実行されるバックグラウンドタスクはワーカープロセスによって処理されます。この場合、個々のプロセスが独自に内部で多重化処理するのを阻止することができます。このモデルでは、スケールは同時に実行されるプロセスの数を表し、ワークロードは実行中のプロセスタイプの数となります。

基本的には、12 Factor Appでは水平方向に拡大と縮小可能である必要があり、ステートレスプロセスを使用している場合は、拡大と縮小をシームレスに行う必要があります。

New Relicはどのようにサポートするか?

  • 12 Factor Appでは、さまざまな種類の作業がさまざまなプロセスによって処理されます。たとえば、HTTP要求はWebプロセスによって処理され、長時間実行されるバックグラウンドタスクはワーカープロセスによって処理されます。この場合、個々のプロセスが独自に内部で多重化処理するのを阻止することができます。このモデルでは、スケールは同時に実行されるプロセスの数を表し、ワークロードは実行中のプロセスタイプの数となります。

    基本的には、12 Factor Appでは水平方向に拡大と縮小可能である必要があり、ステートレスプロセスを使用している場合は、拡大と縮小をシームレスに行う必要があります。

 

 

このエントリーをはてなブックマークに追加

PROプランのすべての機能を
30日間無料でお試し

新規無料登録いただくとPROプランのすべての機能を
30日間無料でお試しいただけます。
クレジットカードなど決済情報の登録は不要です。

各プランの詳細はこちらからご確認ください。