🍣
Matsuri-tech Backend Weekly 2023-10-12

myuon

myuon

2023年10月12日
MBW

社内向けに、バックエンド関連のニュースや業務で発生したQ&A、利用しているライブラリなどの情報を定期的に書いています。

# 事例集: Datadog APM を ECS on Fargate 環境に導入しました

弊社では主に Datadog を監視ツールとして利用しています。その中でもトレースを取ることができる APM という仕組みがあり、これを利用した ASM という監視ツールを主な目的として今回導入することにしました。

導入対象は Fargate で動いている ECS Cluster です。 APM の導入には構成として、トレーシングライブラリとトレース情報を受け付けるための Datadog Agent の 2 つが必要になります。

主な作業は Datadog Agent の導入と、トレーシングライブラリの導入になります。

Datadog Agent の導入は以下のドキュメントに沿って行います。

ハマりどころとしては、ECS on EC2 のドキュメントもあるのでそちらと混同しないようにすることです。 やることは単純で、Datadog Agent コンテナがクラスタ内で起動するようにします。localhost でアクセスする場合は(そしてこれが普通だと思いますが)タスクも同一にする必要があるので 1 タスクで複数のコンテナを起動する構成になります(いわゆるサイドカーパターンになると思います)。

トレーシングライブラリは単にライブラリを入れるだけです。

やっていることは単純ですが、いくつかハマりどころがあったのでそれを書いておきます。

  • Datadog と疎通できない: これはなんと API KEY が間違っていました。そりゃ動きませんよという話ですが、ローカルで動いている状態で、開発環境の SSM に設定した API KEY が間違っているのはエラーも出ないのでなかなか気がつけなかったです。
  • AssignPublicIp しないとインターネット側と疎通できない: ECS の基礎知識ですが、うっかりしていると忘れがちです。Public IP を付与していない状態ではコンテナがインターネットと疎通できないため、コンテナがうまくひけないなどのエラーになります。
  • 同じタスク内のコンテナ同士は localhost で疎通できる: ハマったというよりは知見に近いですが、ECS のタスク内のコンテナ同士は localhost で疎通ができます。なんとなくの知識としてはありましたが、今まで 1 タスクで複数コンテナを上げることがなかったので初めて実感しました。Datadog 側のドキュメントもそのようにすることを想定しており、Agent の IP アドレスなどは明示的に与える必要がありません。

現状は無事に ASM の設定まで動かすことができました。 ASM では攻撃者からの怪しいリクエストなどを検知することができるようになります。

# JetBrains が Rust 用の IDE RustRover をアナウンス

Rust の開発環境は VSCode + rust-analyzer が一般的だと思いますが、JetBrains 製の IDE がくるのはなかなかアツいなと思っています。 弊社では Go を書くときに全面的に GoLand にお世話になっていることもあり、試してみたいと思います。

# GitHub Copilot Chat が個人ユーザーにも提供されるように

GitHub Copilot Chat は元々ビジネスユーザー向けの機能でしたが、個人ユーザーにも提供されるようになりました。 弊社ではビジネスユーザーを開発者に対して配布済みですが、GPT-4 よりもかなり応答が早い印象で、VSCode から気軽に使えるので便利だと思います。

# 国産 RDB の劔が公開

https://www.tsurugidb.com/

メニーコア・大容量メモリ向けの RDB となっています。開発したのは NEDO(国立研究開発法人 新エネルギー・産業技術総合開発機構)という組織のようです。

OSS で GitHub でもリポジトリが公開されています。

# Rust 1.73 のリリース

panic のメッセージが改善されたようです。みやすくなって嬉しい 🦀