記事

golang-migrateを使ってspannerのDBマイグレーションをする

アプリケーション

概要 spannerのDBマイグレーションで、golang-migrateを使ったのでメモ。 使い方 dockerで使う想定。 dockerではなくバイナリで実行していたが、ホストマシンのopensslのバージョンに依存して動作しない可能性あるようなので、コンテナ実行が無難だと思う。 MIGRATE_VERSION='v4.14.1' docker run -v /migra...

Google Cloud Platform Golang Spanner

DigitalOceanでマネージドKubernetesを使ってみる

インフラストラクチャ

DigitalOceanでマネージドKubernetesを使ってみるプライベートの開発で学習も兼ねてk8sを利用したく、色々検討した結果、DigitalOceanが良さそうだったので、利用してみた。 www.digitalocean.com - The best managed Kubernetes service is the one that’s made for you 新規に始める場合は、...

Kubernetes VPS DigitalOcean

goのspannerクライアントのReadOnlyTransactionでハマった

アプリケーション

概要 pkg.go.dev - cloud.google.com/go/spannerでReadOnlyTransactionを使ったときにハマったところについてメモ。 何が起きたか? 数万件のデータを複数回のリクエストに分けて処理するようなバッチ処理のコードを書いていた。 ReadOnlyTransactionを使った処理を以下のように書いていた。  for { // 〜略〜 ...

Google Cloud Platform Spanner Tips

2020年の振り返りと来年の抱負

ポエム

2020年の振り返りと来年の抱負年明けてしまったが書いておく。2020年は毎月振り返りのようなことをTrelloベースでやっていたので、書くつもりはなかったが、文字起こししておきたいことがあったので書く。 今年の振り返り去年のやつ。<a href="https://bmf-tech.com/posts/ 2019%E5%B9%B4%E3%81%AE%E6%8C%AF%E3%82%8A%E8%BF%...

振り返りと抱負

TerraformとAnsibleを使ってVPSを構築する

インフラストラクチャ

概要この記事はMakuake Advent Calendar 2020の20日目の記事です。 TerraformとAnsibleを組み合わせてVPS上でサーバー構築をしてみたのでその手順をまとめておこうと思います。 動機趣味で開発しているアプリケーションのインフラ環境をIaCで整備したかったので、勉強を兼ねてTerraformを使ってみました。 環境 Terraform v0.14.0 Ansib...

Ansible VPS OpenStack Terraform

docker-compose.ymlで指定した環境変数がコンテナビルド中に参照できない

インフラストラクチャ

概要 docker-compose.ymlのserviceの1つにenv_fileを指定し、環境変数を設定したが、サービスがbuildするコンテナ内(Dockerfile側)では参照できなかった。 vueのアプリケーションをコンテナ内でnpmを使ってビルドしており、アプリケーション側でprocess.env.VUE_APP_API_ENDPOINTという形でアプリケーションのビルド時に環境変数を参...

Docker Docker Compose Tips

認証・認可の基本

アプリケーション

概要最近認証サービスの開発に携わっているので今一度基本的なことを再確認しておく意味でまとめる。 Software Design 2020 11月号の認証・認可の特集を参考にしている。 IDと認証・認可の関係性 ID Identity(身元) システム利用のための管理単位 ex. ユーザー、モノ、組織 etc... Identifier(識別子) データとして管理される単位 ex. SasS...

FIDO IAM LDAP OAuth OpenIDConnect SAML SSO 認可 認証

ネットワーク用語まとめ

ネットワーク

概要 ネットワークに関して知識が曖昧なワードをまとめる。 IPv4 Internet Protocol version 4 IP(Internet Protocol)の一種 OSI参照モデルにおいてはネットワーク層に位置づけられるプロトコル 32ビットのアドレス空間を持つ 2の32乗=42億9496万7296個がIPv4のIPアドレス総数 インターネットの普及とともに枯渇してきた cf. ...

IP ロードバランサー

Kubernetesドキュメントのリーディングーコンセプトのまとめ

インフラストラクチャ

概要Kubernetesを本格的にキャッチアップしていくためにドキュメントを読んだので、オレオレメモを残す。全部は長いのでメモ書きはコンセプトの章だけにする。 kubernetes.io Kubernetesとは何か?cf. Kubernetesとは何か? Kubernetesとは何か? 宣言的な構成管理 自動化の促進 コンテナ化されたワークロードやサービスの管理のためのプラットフォーム 過去を...

Docker コンテナ Kubernetes

Golangでインメモリなキャッシュを実装する

アプリケーション

概要Golangのインメモリキャッシュのライブラリは良さそうなものが存在するが、軽量でシンプルなもので十分だったので自前で実装してみた。 実装要件 複数のデータを保持することができる。 期限付きのデータをメモリに保持することができる。期限が来たらメモリから破棄されること。 キャッシュへの同時参照、更新を考慮し、データのロックが意識されていること。 初期設計※github.com - bmf-sa...

Golang キャッシュ