Carpe Diem

備忘録

ConsulのACLでハマった話2

概要

以前

christina04.hatenablog.com

という記事を書きましたが、また別のケースでハマった話を書きます。

今回はACLを有効にしたConsulクラスタのサーバをアップグレードしようとしたら

Error joining address 'xxx.xxx.xxx.xxx': Unexpected response code: 403 (ACL not found)
Failed to join any nodes.

と出てクラスタに登録されなくなった、という問題です。

環境

  • Consul 1.5.0
続きを読む

ECSとFargateでコンテナの起動順が制御できるようになりました

概要

先日AWSの発表で

aws.amazon.com

と、コンテナの依存関係が制御できると発表がありました。

何が嬉しいかというと、サイドカー系コンテナに依存している場合アプリケーション側でそのコンテナの起動を待つ処理が必要だったのが、不要になるという点です。

christina04.hatenablog.com

こちらで以前デメリットとして指摘した点ですが、AWS側でサポートしてくれました!

まだ新しい機能なのでドキュメントも日本語対応していないため、確認する際は英語ドキュメントを参照してください。

Task Definition Parameters - Amazon Elastic Container Service

続きを読む

Clean Architecture で実装するときに知っておきたかったこと

概要

developers.cyberagent.co.jp

こちらで

  • 課金システムをマイクロサービス化した
  • サービス自体の設計をDDDにした

という対応をしました。
当時は試行錯誤の連続でしたが対応から1年程経ち、ある程度設計もfixされてきたので知見をまとめます。

続きを読む

MongoDBでJumboフラグのついたチャンクの分割

概要

シャード構成のMongoDBがチャンクの分割に失敗し、一定サイズを超えるとjumboというフラグが付きます。
普通の環境ではそうそう起きませんが、大量のドキュメントを扱っているとたまに発生します。
今回はそれの解消方法を紹介します。

環境

  • MongoDB 3.2.17

どういう状態か

シャード構成にしてシャードキーを設定することで本来分散するようになりますが、状態を確認した時に

mongos> sh.status()
...
  balancer:
        Currently enabled:  yes
        Currently running:  unknown
        Collections with active migrations:
                balancer started at Thu Apr 18 2019 23:55:15 GMT+0900 (JST)
                test.foo started at Thu Apr 18 2019 23:55:16 GMT+0900 (JST)
        Failed balancer rounds in last 5 attempts:  0
        Migration Results for the last 24 hours:
                1296 : Failed with error 'aborted', from shard_4 to shard_1
                1296 : Failed with error 'aborted', from shard_2 to shard_1
                11669 : Failed with error 'aborted', from shard_0 to shard_1
...

このようにmigrationに失敗している時はjumboチャンクが発生している可能性が高いです。

続きを読む

npm install する時のnpmのバージョンを固定する方法

概要

npmのバージョンを上げた(v6.x.x)ところ、以下のissueと同じケースに当たってCircleCIのキャッシュが効かない問題が起きました。

github.com

具体的には

  • 開発ではMacを使用している
  • 開発用MacとCircleCIのNode.js、npmバージョンは同一である
  • CircleCIでpackage-lock.jsonを元にnpm installすると、package-lock.jsonが修正される
  • package-lock.jsonハッシュ値が変わりキャッシュが使えない

という現象です。同一バージョンなのになんでやねん、という状況。

旧バージョン(v5.6.0)のnpmであれば上記の現象は起きなかったため自分の環境をそれにすればいいわけですが、他のメンバーが加わった時に同じ問題が起きうるのでnpmのバージョンを固定する方法を探してみました。

続きを読む

Angular のバンドルファイルのサイズを可視化

概要

Angular CLIはTree Shakingだったりbuild-optimizerなど、それだけである程度最適化する事が可能ですが、一方で外部ライブラリなどはどれくらいファイルがあるか見落としがちです。
今回はそういったものを可視化する方法を紹介します。

環境

  • Angular 7.2.12
  • Angular CLI 7.3.8
  • webpack-bundle-analyzer 3.3.0

webpack-bundle-analyzerを使う

webpack-bundle-analyzerという解析ツールを使います。
これを使うと以下の画像のようにwebpackのバンドルファイルを可視化することができます。

f:id:quoll00:20190410225244g:plain

ref: https://github.com/webpack-contrib/webpack-bundle-analyzer

続きを読む

context.WithCancel, WithTimeout で知っておいた方が良いこと

概要

christina04.hatenablog.com

でも話したcontext.Contextタイムアウト、キャンセルなどのハンドリングができて便利ですが、使う際に知っておいた方が良いことをいくつかまとめました。

環境

Tips

Q. 親・子の両方でWithTimeoutが設定されたらどうなるか?

例えば

  • 親:4秒
  • 子:1秒

の時、もしくはその逆の時どうなるか、です。

続きを読む