🍣
Matsuri-tech Backend Weekly 2023-10-12

myuon

myuon

2023年10月12日
MBW

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

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

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

APMパフォーマンス向上のためにコードを操作するAPM

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

Datadog へのトレースの送信Datadog APM の開始Datadog へのトレースの送信

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

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

Datadogを始めてみましょうDatadogが大規模なクラウドのモニタリングサービスをリードします。Datadogを始めてみましょう

ハマりどころとしては、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 では攻撃者からの怪しいリクエストなどを検知することができるようになります。

アプリケーションセキュリティモニタリング | DatadogWebアプリケーションやAPIに対する攻撃を素早く検知し、対処可能にします。アプリケーションセキュリティモニタリング | Datadog

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

RustRover: Rust IDE by JetBrainsTry the new Rust IDE from JetBrains with a debugger, on-the-fly analysis, and quick-fixes.RustRover: Rust IDE by JetBrains

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

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

GitHub Copilot Chat beta now available for all individualsAll GitHub Copilot for Individuals users now have access to GitHub Copilot Chat beta, bringing natural language-powered coding to every developer in all languages.GitHub Copilot Chat beta now available for all individuals

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

# 国産 RDB の劔が公開

劔"Tsurugi"新しいハードウェアアーキテクチャ(メニーコア・大容量メモリー)に合わせた設計思想で、性能を最大限に発揮する国産リレーショナルデータベース劔"Tsurugi"のコミュニティページです。劔"Tsurugi"

NECとノーチラス・テクノロジーズ、純国産RDB「劔(Tsurugi)」をオープンソースで公開株式会社ノーチラス・テクノロジーズのプレスリリース(2023年10月5日 15時00分)NECとノーチラス・テクノロジーズ、純国産RDB「劔(Tsurugi)」をオープンソースで公開NECとノーチラス・テクノロジーズ、純国産RDB「劔(Tsurugi)」をオープンソースで公開

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

GitHub - project-tsurugi/tsurugidb: Tsurugi - next generation RDB for the new eraTsurugi - next generation RDB for the new era. Contribute to project-tsurugi/tsurugidb development by creating an account on GitHub.GitHub - project-tsurugi/tsurugidb: Tsurugi - next generation RDB for the new era

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

# Rust 1.73 のリリース

Announcing Rust 1.73.0 | Rust BlogEmpowering everyone to build reliable and efficient software.Announcing Rust 1.73.0 | Rust Blog

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