記事

slogを使ったContextual Logging

アプリケーション

概要 Goでlog/slogを使ったcontextual loggingについてまとめる。 log/slogとは Go1.21で追加された構造化ロギングのためのパッケージ。 構造化ロギングとは、ログを構造化されたデータとして出力すること。 今まではGoで構造化ロギングをする場合はサードパーティのパッケージを利用するか、自前でスクラッチするかしか手段がなかったが、今後は標準パッケージも視野に入るよう...

slog contextual logging

More Effective Agile

ソフトウェア工学

More Effective Agileを読んだ。 アジャイルを実践するためのプラクティスがまとめられた本。 アジャイルワークショップの教科書として活用させてもらった。 ...

アジャイル

モジュラモノリスについて調べたことをメモ

システムアーキテクチャ

概要 モジュラモノリスについて調べたことをメモする。 モジュラモノリスとは モジュール分割をしたモノリス モジュール分割はドメインによる分割が一般的に見えるが、機能分割や技術分割など様々なパターンを検討することができる モノリスと同じく単一のデプロイメントパイプラインを持つ メリット モジュールが分割されているのでモジュール単位で開発を独立して行うことができる マイクロサービスへの移行が容易...

モジュラモノリス

CQRSについて調べたことをメモ

システムアーキテクチャ

概要 CQRSについて調べたことをメモ。 CQRSとは Command Query Responsibility Segregation CommandとQueryに責務分離するパターン Command データの更新を行う データではなくタスクにフォーカスしたコマンドを設計 DDDのドメインモデルを内包することが想定されている Query データの参照を行う ユースケースごとに最適化されたオ...

CQRS マイクロサービス

Sagaパターンについて調べたことをメモ

システムアーキテクチャ

概要 Sagaパターンについて調べたことをメモ。 Sagaパターンとは マイクロサービスにおいては、分散トランザクション(2phase commitなど)は推奨されていない 分散トランザクションを避け、整合性を担保するパターンとしてSagaパターンがある 長時間のロックを避け、結果整合性を利用する 補償トランザクション 一連のトランザクションの取り消しを行う操作 Sagaパターンでは単純なロ...

マイクロサービス Sagaパターン TCCパターン 分散トランザクション 2phase commit

Goのresponse.WriteHeaderの副作用について

アプリケーション

概要 Goのresponse.WriteHeaderの副作用についてメモする。 superfluous response.WriteHeader 以下は愚直な例だが、次のようにWriteHeaderを複数回呼ぶと、http: superfluous response.WriteHeader call from main.handlerというエラーが出る。 package main import ...

Golang Tips

GoでServeMuxの機能拡張を提案するProposalがAcceptedになった

アプリケーション

以前からウォッチしていたnet/http: enhanced ServeMux routing #61410がAcceptedになったので、それについてポエムをかく。 最終的な仕様がどうなるかはわからないが、静的なルーティングの機能(/foo/barのような固定値のルーティング)しか持っていないServeMuxに動的なルーティング(/foo/:idのようなパスパラメータを使ったルーティング)の機能...

Golang router HTTP

BFFについて

システムアーキテクチャ

概要 BFFについて調べたことをまとめる。 BFFとは Backends For Frontendsの略。Best Friends Forever(ズッ友だよ)ではない。 ‌ 名前の通り、フロントエンドのためのバックエンドサーバーのことで、フロントエンドのためのAPIやHTMLをレスポンスするなどUI・UXのための役割を担っている。 ‌ クライアント(サーバーの呼び出し側)の多様性に応えるのが難し...

BFF

通知基盤構築についてのメモ書き

システムアーキテクチャ

概要 通知基盤の構築に関してざっくりと考えたことや調べたことなどをまとめておく。 通知基盤とは ユーザーに通知(メール・プッシュ・SMS・音声など)を行うためのシステム基盤。 クライアント(通知を依頼するシステム)からリクエストを受けて、送信先・送信内容など通知に関する処理を担うシステム。 通知基盤の設計・実装における観点 考えることが一杯ありそうだと思ったので、思いついた順で雑に書いた。整理でき...

通知