Carpe Diem

備忘録

2018-05-01から1ヶ月間の記事一覧

Consulで各サービスのコンテナ群のIPを取得する

概要 以前Consulの基本的な使い方を紹介しました。 christina04.hatenablog.com このConsulに登録する各ノードに対しサービス設定をすることで、各マイクロサービスに所属しているコンテナ群のIPを取得できるようします。 それによってgRPCでの負荷分散とし…

TerraformでECSのawsvpcモードを使って各コンテナにPrivate IPを振る

概要 これまでは1インスタンス上に複数のコンテナを使うときは動的ポートマッピングのような方法で対応する必要がありました。 christina04.hatenablog.com しかしawsvpcモードが使えるようになったことでコンテナ毎にPrivateIPを振れるようになり、ポート…

ホストからdockerのvolumeにファイルをコピー

概要 ホストからコンテナ(が持ってるvolume)へのコピーはdocker cpでできます。 しかしホストから直接volume単体にコピーするのはどうすれば良いのだろう?と思って調べたところ地味にサポートされていなかったのでメモとして残します。 環境 Docker v18.03.…

Kubernetesのheadless serviceを使って各PodのIPを知る

概要 gRPCを用いた負荷分散ではEnvoyを使ったL7のバランシングが最近の主流になっています。 ただEnvoyが各Podに振り分けるためにPodのIPを知る必要があります。 ECSはService Discoveryを持っていないので自前でたてるか、control planeを用意してそれをSer…

GoのRoundTripperとTransport

Go

背景 僕が保守している go-iapというGoで書いたAppStore, GooglePlay AmazonAppStore用の課金ライブラリ があるのですが、そこに以下のissueがあがっていました。 github.com ざっくり説明すると「GAEでは普通のhttp.Client使えないからカスタムClientサポー…

Exponential Backoff (指数関数的に増えるリトライ間隔)

概要 fluentdのretryはExponential Backoffと呼ばれるもので、リトライの間隔が 1秒、2秒、4秒、8秒、16秒 と指数関数的に増えていきます。これによって無駄なリクエストを省きつつ、再試行する前に問題を修正して解決できるようになります。 特に外部APIが…

混ぜるな危険 〜同期関数と非同期関数〜

概要 Node.jsといえば非同期やcallbackで有名ですが、1つの関数の中で非同期な処理と同期的な処理が混ざってしまうと期待しない挙動になることがあるので注意しましょう、という話です。 環境 Node.js 8.9.0 基本的な方針 非同期な関数は全て非同期処理でま…