前方互換性・後方互換性とは何なのか? 〜Schema Registry における例〜

Schema evolution において前方互換性・後方互換性を意識することは重要ですが、どっちがどっちか混乱することがあるのでメモとして残しておきます。

DataGrip などの JetBrains 製 IDE から IAM データベース認証を使って RDS インスタンスに接続する

今までデータベースにアクセスする際には GUI ツールとして Sequel Ace を使っていたんですが、諸事情から IAM データベース認証に対応したツールを利用する必要が出てきました。残念ながら Sequel Ace は IAM データベース認証に対応していません。
cf. Cannot connect to AWS RDS using IAM Authentication · Issue #202 · Sequel-Ace/Sequel-Ace

Ruby で SOCKS Proxy を利用する

ローカル環境から直接アクセスできない Web ページにアクセスするために、そのページにアクセスできるサーバに SSH dynamic port forwarding をして、ブラウザに SOSCKS proxy の設定することでアクセスするのはよくある話だと思います。
例えば Amazon EMR で各種 Web UI にアクセスするための方法として、SSH dynamic port forwarding を使った方法が次のドキュメントで紹介されています。

ECS の Daemon サービスで動かしている Fluentd を Logging Driver の接続先にすると Draining 時にコンテナが終了しないことがある問題とその対策

標題のとおり、ECS の daemon サービスで動かしている Fluentd を logging driver の接続先にすると、draining 時に Docker container with fluentd logging driver never stops if it can’t connect to fluentd · Issue #44511 · moby/moby で言及している問題が起きて、Fluentd が復活しない限り、logging driver で Fluentd を利用しているコンテナが無限に生き続けることになります。
本エントリーでは問題の再現方法と対策について解説します。

Datadog メトリクスモニター作成入門

Datadog はモニタリング関連の SaaS ではおそらく最も利用されているサービスでしょうが、公式ドキュメントが豊富にある割には何から読み始めれば良いかわかりにくく、慣れるまでの道が険しい印象です。
本エントリーでは、Datadog が既に導入されている組織で、Datadog モニターを使って監視をしたいけど、モニターの設定方法がよくわからないといった方を対象に、メトリクスモニターの作成に焦点を絞って解説していきます。なお、あくまで Datadog の使い方についての解説であり、どのようなモニターを設定すべきかについては触れません。

Fluentd 終了時に起きる "[!] There was an error parsing `Gemfile`: SIGTERM. Bundler cannot continue." を握り潰す

Fluentd が終了する時に次のようなエラーに遭遇することがあります。

MySQL で複合インデックスを作成する際には必ず Explain の key_len を確認すべきという話

「Rails Developers Meetup 2018 で「MySQL/InnoDB の裏側」を発表しました」でちゃんと触れられてないので今更ながら key_len について補足します。発表で触れた内容については言及しないので、storage engine や B+ tree といった用語がよくわからない方は発表内容を参照してください。
なお、MySQL のバージョンは 5.7.38 です。

Stateful Kafka Streams アプリケーションで consumer が増減すると意図しない偏りが発生する理由 〜 StreamsPartitionAssignor はいかにタスクを割り当てるのか 〜

Stateful Kafka Streams アプリケーション、つまり state store を使った Kafka Streams アプリケーションでは consumer が増減するとタスクの割当が極端に偏ることがあります。その理由について、WordCount の例を使って解説し、運用上の注意点についてまとめます。
なお、Kafka Streams のバージョンは 2.7.2 です。

Cassandra C/C++ Driver を使うと Cassandra で Connection reset by peer という INFO ログが出る

Cassandra C/C++ driver を使うと次のようなログが出るので調査したという話です。

ECS の dependsOn で HEALTHY に依存させて HEALTHY にならなければ無限に待ち続けることがある

ECS の dependsOn では condition に HEALTHY を指定することができ、依存するコンテナのヘルスチェックが通るまで待つことができます。ところが、本来 essential なコンテナのヘルスチェックが通らないとタスク全体が終了するはずが、これを指定することで HEALTHY にならない限り、無限に PENDING な状態で待ち続けることがあるようです。後述の再現コードでは無限に待ち続けましたが、別のケース(ECS agent のバージョン等色々異なる)ではちょうど 10 分程度で stopped reason が launch timeout になったので、何らかの条件ではある程度の時間が経過すると timeout になるかもしれません。

広告