ActiveRecord::LockWaitTimeout, ActiveRecord::Deadlocked, ActiveRecord::ConnectionTimeoutError が起きた時に原因調査に役立つ情報を表示する gem を作った

それなりの規模のサービスを運用していると、不可解なエラーに遭遇することはよくあるものです。その中でもデータベース関連のエラーは一見難解な問題に見えるかもしれませんが、原因調査に役立つ情報をさえ出力すればたいていの場合は容易に原因を特定できるものです。というわけで、Rails でよく遭遇するエラーの調査に役立つ情報を出力する gem を作成しました。

Amazon SQS を使ったアプリケーションを本番で運用する際に考慮すべき基本的な 5 つのこと

Amazon SQS は可用性やスケーラビリティの高いメッセジキューサービスであり、AWS の代表的なサービスの 1 つと言えるでしょう。ところが、本番の運用に耐えられるアプリケーションにしようと思うと考えることが意外に多いものです。本エントリーでは簡単なサンプルアプリケーションをベースに、本番で運用するために考慮すべき点・注意点について見ていきます。題材として扱うのが SQS なだけで、SQS 以外を使ったアプリケーションにも応用できる内容もあるでしょう。
なお、SQS には Standard queueFIFO queue がありますが、Standard queue を使う前提とします。

Docker のログを columnify で Athena (Presto) に特化した Parquet にする

先日 columnify という、入力データを Parquet フォーマットに変換するツールがリリースされました。
cf. 軽量な Go 製カラムナフォーマット変換ツール columnify を作った話 - Repro Tech Blog

ruby-kafka の consumer group で instance type や availability zone によって特定の partition の lag が大きくなる問題を解消する gem を作った

ruby-kafka を使った consumer のアプリケーションにおいて、次のような前提があるとします。

Amazon SQS の ApproximateAgeOfOldestMessage とは何なのか?

SQS には ApproximateAgeOfOldestMessage という、queue に存在する最も古いメッセージの、queue に入ってからの経過時間に関するメトリクスがあります。例えば queue の処理が遅延していることを検知したい場合、ApproximateNumberOfMessagesVisible よりも良い指標となる場合があります。ただ、このメトリクスの定義の詳細についてはドキュメントに載っておらず、ドキュメントに書かれている内容も正確さを欠くので実験を通して現在の挙動についてまとめてみました。

Aurora MySQL 5.6 と ElastiCache Redis 5.0.6 における並列カウントアップのパフォーマンス比較

MySQL では次のような SQL を書くことで対象レコードの値をインクリメントすることができます。 

Avro でスキーマ管理されたデータを BigQuery で取り込めるデータに変換する

Kafka に入っている Avro フォーマット(スキーマは Schema Registry で管理されている)のデータを BigQuery に取り込みたいとします。その場合、おそらく Google BigQuery Sink Connector を使うのが良いでしょう。
ところが、諸事情により Ruby で Kafka からデータを逐次取得し、BigQuery にデータを取り込みたいとします。その場合、fluentd のある環境であれば、取り出したデータを fluentd に送り、fluent-plugin-bigquery で取り込むのが手軽でしょう。

Presto における Service Discovery の動作原理

Presto を運用していると “No worker nodes available” というエラーに遭遇することがあります。これは coordinator が planning をする際に active な worker nodes が存在しないと起きるエラーなんですが、worker nodes に問題ではなく service discovery が上手く機能していなくて起きることがあります。

SRE Lounge #11 で「安定・安価なECS auto scalingを目指して」を発表しました

SRE Lounge #11 で Repro で行っている ECS の auto scaling について発表しました。ECS autoscaler で工夫している点についてがメインですが、一般的な auto scaling にも使える知見もあるかと思います。

Rails アプリケーションの不安定なテストを撲滅したい 〜system spec のデバッグ方法とテストを不安定にさせる要因〜

Rails アプリケーションの開発において、自分の変更に関係のないテストのせいで CI がコケるとストレスですよね?真っ先に直したくなりますよね?不安定なテストを直すのは大変な労力が要ると思ってませんか?実は、たいていのケースは簡単に再現確認ができるし、不安定になる要因もだいたい決まっているし、ログやスクリーンショットを見れば原因も簡単に特定できるんです!

広告