Carpe Diem

備忘録

ECSのオートスケール戦略

概要

ECSはコンテナのスケールアウトとインスタンスのスケールアウトのタイミングが重要です。
よく起きる問題としては

  • インスタンスのスケールアウトが遅くてコンテナのスケールアウトも遅くなってしまう
  • しきい値が不適切でインスタンスがスケールアウトせず、コンテナがスケールアウトしたくてもできない

で、こういった事が起きないようにしないといけません。

スケールアウトの方針

対象 方針
インスタンス インスタンスの空きリソースがコンテナ1台分だけの状態がn分間続いたら
コンテナ コンテナの使用率がn%を超えたら

インスタンスもう1台もコンテナを追加するリソースがない状況になったら早めにスケールアウトします。
コンテナは一般的なやり方で使用率が高くなったらスケールアウトすればOKです。

続きを読む

負荷ツールのスレッド数・Ramp-Up期間・ループ回数の関係

概要

負荷ツールで負荷をかける時の説明でよく見るのは

項目 計算式
総テスト回数 スレッド数×ループ回数
1秒あたりのリクエスト数 総テスト回数÷Ramp-Up

ですが、例えば分間600アクセスを想定した時に

設定項目
スレッド数 600
Ramp-Up期間 60
ループ回数 1

とした場合と

設定項目
スレッド数 100
Ramp-Up期間 60
ループ回数 6

では先ほどの説明だとどちらも総テスト回数1秒あたりのリクエスト数は同じです。
それぞれのケースの時にかかる負荷の違いが分からなかったので調べてみました。

続きを読む

Fluentdを0.14にバージョンアップした時の対応

概要

Fluentdを0.12から0.14へアップデートしました。
その時にtd-agent.confやらpluginで色々と変更点があったのでその時の対応をまとめます。

環境

  • fluentd 0.14.21
  • fluent-plugin-s3 1.0.0.rc6

td-agent.confの変更点

root_dirができた

以前はbuffer毎に

<match pattern>
  buffer_type file
  buffer_path /var/fluentd/buffer/
  ...
</match>

といった感じに1つ1つpathを設定する必要がありましたが、

<system>
  root_dir /path/fluentd/root
</system>

と設定すれば、システム内の/path/fluentd/root/worker0/plugin_idに保存されるようになります。

続きを読む

GoのSliceを関数の引数に渡した時の挙動

概要

Sliceの構造を始め、関数で呼び出した場合の挙動やappendなどsliceを操作した場合どうなるかをまとめました。

環境

Sliceの構造

Sliceは以下のような3つの要素でなりたっています。

  • 配列へのポインタ
  • length
  • capacity

図示すると以下です。

f:id:quoll00:20170926151254p:plain

ref: Go Slices: usage and internals - go.dev

続きを読む

Terraformで過去に作ったリソースを別ディレクトリに分けたい

概要

Terraformを使う上で、DBなどのデータ系のリソースはそうそう変更することはないので、オペミスなどを防ぐために別ディレクトリに分けておくと安心です。
しかし既に作ってしまっていた場合、*.tfとともにその部分のterraform.tfstateを移動しなくてはいけないですが、手動でterraform.tfstateをいじるのは非常に大変です。
そこで使えるのがstate mvというコマンドです。

環境

  • Terraform 0.10.2
続きを読む

AngularのInjectorとProviderとDependencyの関係

概要

過去の記事で

christina04.hatenablog.com

を書いた時に、AngularのInjectorProviderDependencyの関係を理解していないとよく分からないと思ったので追記的にまとめます。

環境

  • Angular 4.3.5

覚え方

結論から言うと、以下のように考えるとすっきりします。

項目 役割
Injector 料理人
Provider レシピ
Dependency 料理
続きを読む

Scratch imageでtime: missing Location

概要

以前以下の記事でscratch imageの作成方法を紹介しました。

christina04.hatenablog.com

しかしGoのコードによっては以下のpanicが起きることがあります。

panic: time: missing Location in call to Time.In

今回はその対応方法です。

環境

  • golang 1.8.3
  • docker 17.06.0-ce
続きを読む