Mercek: Amazon ECS 用のデスクトップ IDE

Mercek は、Amazon Elastic Container Service (ECS) の管理を効率化するために設計されたデスクトップ IDE です。複数の AWS アカウントやリージョンにわたる ECS リソースの監視、デプロイ、および検査のための統合インターフェースを提供し、一般的な運用タスクのために AWS Management Console を操作する必要性を排除します。

統合されたリソース検出

Mercek は、ECS クラスター、サービス、およびタスクを単一のリソースツリーに集約します。SSO、assume-role、および MFA 用に設定されたものを含む既存の ~/.aws プロファイルを読むことで、アプリケーションはユーザーが特定のカウントやリージョンを同時に監視するために選択できるようにします。大規模な環境でも応答性を維持するために、検出は並列で行われます。

デプロイの追跡とロールバック

Mercek は、サービスのロールアウトの状態とデプロイメント・サーキットブレーカーの状態について、リアルタイムの可視化を提供します。ユーザーは、デプロイ中にどれだけのタスクが失敗したかを特定し、インターフェースから直接、以前のタスク定義へのロールバックを実行できます。また、このツールは、一貫性を確保するために、異なる環境やリージョン間でサービスの構成を比較することもサポートしています。

統合されたメトリクスとコスト分析

Mercek は、パフォーマンスとコストのデータをサービスビューに直接統合します。

  • パフォーマンス・メトリクス: アプリは Container Insights から CPU とメモリのデータを取得し、Insights が無効な場合は標準の AWS/ECS メトリクスにフォールバックします。ロードバランシングされたサービスの場合、リクエスト数、レイテンシ、および 5xx エラー率を表示します。メトリクスは 1 時間から 7 日間の範囲で表示可能であり、チャートにはデプロイメント・マーカーがオーバーレイされ、パフォーマンスの変化と特定のロールアウトを相関させることができます。
  • コストとサイジング: このツールは、要求された CPU、メモリ、およびタスク数に基づいて、月間の Fargate コストを推定します。Spot と On-Demand の価格差を考慮しながら、ピーク使用量を分析して「ライトサイジング(適切なサイズへの調整)」の判定を提供し、サービスが過剰にプロビジョニングされているか、不足しているかを示します。

検査とデバッグツール

Mercek は、実行中のコンテナを深く調査するためのいくつかのツールを含んでいます。

  • ログ・テーリング: ユーザーは、サービス内のすべてのタスク、または特定のタスクの CloudWatch ログをテイルできます。テキストフィルタリングとログレベルのハイライト機能が備わっています。
  • インタラクティブ・シェル: アプリケーションは ECS Exec をサポートしており、実行中のコンテナ上でインタラクティブ・シェルを開くことができます。
  • 環境とネットワーク: ユーザーは、タスクの完全な環境(シークレットは ARN でマスクされます)と、Elastic Network Interface (ENI)、IP アドレス、セキュリティグループ、サブネット、および VPC を含むネットワークの詳細を検査できます。

トポロジー・マッピングとバックグラウンド監視

Mercek は、既存の AWS データに基づいて依存関係グラフを自動生成します。このマップは、インターネットからロードバランサーを経由してサービスへと至るパスを追跡し、タスク定義内の環境変数を使用してサービス間のリンクを推論します。

健康状態を積極的に監視するために、「Sentinel」機能がバックグラウンドで実行され、次のような問題を検出します:

  • 実行中のタスク数が希望の数値を下回る。
  • 停滞または失敗したロールアウト。
  • フラッピング・タスク(繰り返しの再起動)。
  • Out-of-Memory (OOM) キル(終了コード 137)。

AI 統合 via Agent Client Protocol

Mercek は、Agent Client Protocol を介して、Claude Code のような独自のコーディング・エージェントを接続することを可能にします。エージェントは AWS の状態に関しては読み取り専用です。現在の状態を説明し、エラーを説明し、ユーザーを特定の画面へナビゲートさせることができます。エージェントが変更を提案する場合、Mercek はその提案を diff として提示し、ユーザーが手動で承認して適用するための対応する AWS CLI コマンドを表示します。

セキュリティとアーキテクチャ

Mercek は、バックエンド・サーバーを持たず、テレメトリも行わない、ローカルファーストのアプリケーションです。ユーザーのローカル認証情報を使用して AWS と直接通信します。

  • 認証情報の扱い: 標準の ~/.aws プロファイル・チェーンを使用し、認証情報や解決されたシークレットをディスクに書き込みません。
  • 書き込みアクセス: すべての書き込み操作(スケーリング、デプロイ、タスクの停止)は、diff ダイアログを介した明示的なユーザーの確認を必要とします。

コミュニティ・フィードバックとロードマップ

Mercek は、現在 macOS (Intel および Apple Silicon) で利用可能であり、Linux と Windows 用のビルドが計画されています。プロジェクトはオープンソースであり、GitHub 上で公開されています。

コミュニティの議論では、アプリケーションのビルドに Electron を使用することについて、意見が分かれています。メモリ使用量や Electron アプリの乱立に対する懸念を一部のユーザーが示している一方で、他のユーザーは、Mercek のような特化型ツールであれば、メモリ・フットプリントはより大きな IDE やバックグラウンド・プロセスと比較して無視できるものであると指摘しています。

"M2 MacBook pro 64GB を使用している環境では、メモリ使用量は 30.5 Mb です... このアプリは壁紙一枚分程度のメモリしか使っておらず、大したことはありません。"

他のユーザーは、もしこのツールがプラグイン・システムを備えた包括的な AWS Console の代替品へと進化する場合、ネイティブ・フレームワークを使用するのがより適切であると提案しています。

Sources