Blog

Remote.Itでデバッグ生産

2024年2月3日

はじめに

本番環境でのデバッグは、確かにミッションクリティカルなプロセスです。準備、ベスト・デプロイメント・プラクティス、100%のコード・カバレッジ、マニュアル・テストを行っても、常に起こりうることなのです。

多くの場合、本番環境でバグが発生した場合、まずローカルでバグを再現し、別のデプロイメントを行うことで修正することを考えるでしょう。しかし、問題がコードソースに関するものでない場合はどうでしょうか?例えば、そのマシンで使用されているサービスである可能性もあります。

開発時には、開発者が環境をコントロールでき、シナリオもよく分かっていて、コードのどこかにブレークポイントを置いて、アプリケーションの状態を停止して調べることで簡単にデバッグできるため、本番でのデバッグは難しいのです。

特定のバグを取り除くために、開発データベースをダンプすることも可能です。

このように、本番で安全かつ簡単にデバッグできるプロセスを持つことは、何らかの問題のシナリオが現れたときに大きな意味を持ちます。

なぜ本番でデバッグするのか?

しかし、それなのになぜ本番でデバッグをするのでしょうか?それは、いくつかの利点があるからです。

  • 開発速度:ローカルでエラーを再現することなく、根本的な問題を発見し、修正するための適切なツールを持つことは、速度という点で間違いなく大きな利点となります。これは、開発者が直接サーバーにアクセスし、リモートデバッグ(詳しくは後述)を通じて行うことができます。
  • 迅速な問題解決。多くの人々が技術サービスを利用する世界では、10分のダウンタイムで多くの消費者と資金を失うことになります。効率的なデバッグ戦略を持つことで、問題をできるだけ早く解決し、ビジネスの価値を大きく向上させることができます。

5つの安全対策

もし、本番でデバッグをする必要がある場合は、以下のようなヒントがあります。

  • ノンブロッキングのデバッガーを使用する。本番環境でデバッグを行う場合、マシン上で動作しているサービスをブロックしないことが重要です。これは、ユーザーまたはクライアントがサービスを使用するのをブロックするだけでなく、ユーザーエクスペリエンスにも影響します。
  • ログを取ること実稼働中のデバッグを迅速に行うための最良の方法のひとつが、ログを取ることです。そして、効果的にログを取ることです。あなたのビジネスによっては、ログを取ることで、あなたのサービスで発生したイベントを素早くナビゲートし、問題を特定することができます。
  • デバッグの範囲を定義する。例えば、docker 内でアプリケーションを実行しているサーバーがある場合、バグの発生元であるサービスを実行しているコンテナのみをデバッグしたい場合があります。

これにより、他の重要なサービスに支障をきたすリスクを軽減することができます。

  • パフォーマンス監視と例外監視SentryBugsnagDatadogなどのツールを使用すると、バグについてより詳細な情報を得ることができるようになります。

例えばSentryやBugsnagは、問題を素早く特定するために分析できるトレースバックを提供します。状態やリクエストなど、より多くの情報を得ることができます。

remote.itでデバッグするには?

ロギング

remote.itでは、イベントログと呼ばれるマシン上で発生したイベントや接続ログデバイスのリストとそのステータスなど、多くの情報にアクセスすることができます。

これらの情報は、実際にマシンがどのように動作しているかをより深く理解する上で、貴重な情報となります。また、例えば、問題がありそうなマシンを特定することで、デバッグの範囲を限定し、より速く、より簡単にデバッグすることができます。

バグを見つけるために多くのシステムやマシンの間を飛び回らなければならないのは、問題への対処にさらなるストレスを与えるだけです。

エスエスエイチ

本番でのデバッグを考えている場合、おそらくマシンにアクセスする必要があることは確実です。remote.comは、1つのリンクと期限切れのリンクを介してマシンに接続する方法を簡素化するだけでなく、SSHキーを管理せずに済むようにすることができます。

これは、電子メールアドレスを使用するだけで、自分のマシンに素早くアクセスしたり、チームの他のメンバーにこれらのリソースへの権限を付与するのに便利です。

そして、大きなメリットはセキュリティです。このアクセスを許可するためにポートフォワーディングは必要ありません。これは、ハッカーの攻撃対象がないことを意味します。

サービスヘルス

remote.itでは、デバイスの状態などの情報にアクセスすることができます。

これは、デバイスの1つがダウンしたときに通知を受けることができるので、本当に便利です。Webhooksを設定して、ニーズに応じて使用できる詳細なイベントを受け取ることも可能です。

まとめ

バグのないアプリケーションを消費者に提供することは、決して完璧なプロセスではありません。開発段階やテスト段階でニュアンスの違いを見逃してしまったために、前例のないシナリオが発生することもあるのです。

結局のところ、生産現場でのデバッグは、ある一つのもの、つまりデータにかかっています。貴重なデータがあればあるほど、問題を素早く解決することができます。

あなたのチームでは、プロダクションデバッグの戦略を持つことが必須です。そして、デバッグツールの一部としてremote.itを持つことは、間違いなく物事を加速させます。

関連ブログ