詳説 Amazon S3 ストレージ料金

Amazon S3 は AWS のサービスの中でも代表的なサービスの 1 つで、AWS を使っている人のほとんどが触れたことのあるサービスじゃないかと思いますが、料金体系の詳細を知っている人は意外に少ないんじゃないんでしょうか。
年末年始に個人アカウントにあるデータの整理をする際に料金体系の説明を隅から隅まで読んで完璧に理解したつもりの上でストレージクラスを S3 Standard - Infrequent Access から S3 Glacier Deep Archive に変更したにも関わらず想定外のコストがかかったので、自分が理解したことをメモとして残します。リージョンは Asia Pasific (Tokyo) を前提としますが、他のリージョンでも同様の考え方を適用できるはずです。

カランメソッドの全ステージを修了した

先日、カランメソッドの全ステージを修了しました。約 2 年という長い道のりになりましたが、最後までやり切ることができて一安心です。良い機会なのでカランメソッドについて振り返ってみます。

タスクの年度初め大掃除をしたい

普段こういう話はブログに書かないんですが、もしかしたら参考になるような意見ももらえるかもしれないと思って公開してみます。今自分が所属しているチームを想定して書いていますが、当てはまる組織も多いのではないかと思います。

rdkafka-ruby で Local: Broker transport failure (transport) が起きる場合の対処方法

rdkafka-ruby を使っていると “Local: Broker transport failure (transport)” というエラーに遭遇することがあります。様々な条件で発生するかもしれませんが、自分が遭遇したのは次の条件を全て満たす時です。

fluentd forwarder を daemon service として登録することで fluentd logging driver 起因の fluentd の負荷を分散させる

Docker の logging driver として fluentd logging driver を使うと、DNS や NLB で複数の fluentd プロセスに負荷を分散させようとしても特定のプロセスに負荷が集中することがあります。それを回避するのに FireLens が使えるという話を次の記事に書きました。

ECS の煩わしいオペレーションをよしなにやってくれるツールを作った

ECS のオペレーションは色々と面倒なものが多いです。例えば、ECS クラスタを EC2 インスタンスで管理している場合、インスタンスの AMI を更新しようと思うと、新しいインスタンスを起動して、古いインスタンスをドレイニングして、古いインスタンスを落とすというオペレーションが発生します。また、ECS サービスの設定のうち、新規作成時にしか設定できない項目を変更しようと思うと、別名のサービスを新しく作成する必要があります。ちょっと設定を変えたいだけなのに名前を変えないといけないのは辛いですよね。

FireLens を使って fluentd logging driver 起因の fluentd の負荷を分散させる

Fluentd aggregator を構成する際に、Route 53 や NLB を使うことで、forwarder では 1 つのエンドポイントを指定しつつ簡単に fluend の台数を増減させることができます。ところが、Docker で fluentd logging driver を使う際にそのエンドポイントを指定すると、一度コネクションが確立されるとずっとそのコネクションが使い回されるため、大量のログを吐くコンテナと接続された fluentd ホストだけが高負荷な状態が続くことになります。
この問題を解消するために FireLens を使ってみたという話です。

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

広告