概要
新しい技術というのは既存の技術にある課題を解決するために生まれてきます。
はStatsD&Graphiteを中心に説明されており、同時期に読んだ
と比較して、メトリクス系ツールの古株であるStatsDより後発のPrometheusは、StatsD&Graphiteのどんな課題を解決しているかをまとめます。
続きを読む新しい技術というのは既存の技術にある課題を解決するために生まれてきます。
はStatsD&Graphiteを中心に説明されており、同時期に読んだ
と比較して、メトリクス系ツールの古株であるStatsDより後発のPrometheusは、StatsD&Graphiteのどんな課題を解決しているかをまとめます。
続きを読むGo 1.13から、goコマンドはデフォルトでGo Module MirrorとChecksum Databaseを使用してモジュールをダウンロード&認証するようになりました。
Module Mirrorは公開モジュールをキャッシュし、go modでのダウンロードを高速化するためのProxyです。
ProxyのURLはGOPROXY
にセットされています。
$ go env GOPROXY https://proxy.golang.org,direct続きを読む
前回の続きで今度はRedis Clusterを構築してスケール性などを検証してみます。
Redis Clusterは以下の特徴を持ちます。
Clean Architecture に則ってレイヤ間をプラガブルにするためにインタフェースを使っていくと、テストのために各インタフェースのモックが欲しくなります。
そのモックを生成する際にgolang/mockを使用するわけですが、毎回
$ mockgen -source user.go -destination mock_user.go
とするのは手間です。また
など運用が辛くなりがちです。
かと言って「じゃあレイヤまるごと対象にしよう」とシェルスクリプトで
for file in $(ls ${SOME_LAYER_DIR} | grep -v "_test.go"); do mockgen -source ${SOME_LAYER_DIR}/${file} -destination mock/${SOME_LAYER_DIR}/${file} done
とかすると、
grep -v
の除外が増えていくといったこれまた運用が辛くなりがちです。
今回はgo generate
を活用してこの問題を解決します。
Cassandraはワイドカラム型のKVSでデータモデル図もネット上には色々上がっていますが、実際にはTable Schemaもあって普通のRDBのような表に見えます。
またkeyも
とたくさん出てきてややこしいです。
しかしCassandraを有効に活用するにはこの辺をきちんと理解しておかないといけないので、整理して分かりやすくしようと思います。
Cassandraのデータモデル図は以下のようになっています。
1つの行(Row)に複数の列(Column)が入っており、このColumnは最大で20億個まで増やせます。
ref: 4. The Cassandra Query Language - Cassandra: The Definitive Guide, 2nd Edition [Book]
続きを読むといったケースでVIP(仮想IP)を用いることで解決するのがVRRPです。
今回はそのVRRPを実現できるkeepalivedを紹介します。
VRRP(Virtual Router Redundancy Protocol)とはその名の通りルータを冗長化させるために考えられたプロトコルです。
複数のルータを外部からは仮想的な1つのルータとして扱うことでルータの冗長構成を実現します。
VIPを振られていた機器が故障してもVRRPによって別の機器にVIPが振られ直すので、クライアントは引き続きアクセスでき高可用性を担保できます。
続きを読む