記事

データモデリングでドメインを駆動する──分散/疎結合な基幹系システムに向けて

アーキテクチャ

データモデリングでドメインを駆動する──分散/疎結合な基幹系システムに向けてを読んだ。 帳簿という概念を軸に、基幹系システムを分散・疎結合化するためのデータモデリング手法を体系的に解説した本。 活動系(SoA)と経営管理系(SoM)という二分類やユースケース非依存の帳簿設計や「残」という新しい概念を提唱している。 単なるDB設計書では触れられない領域を掘り下げ、DDDやマイクロサービス化を進める上...

モデリング 設計 システム設計

specリポジトリを作った

開発プロセス

自分で考えたオリジナルの仕様やフレームワークを整理・保存するためのリポジトリを作成した。 リポジトリ: spec-by-bmf-san 背景 開発や業務改善の中で、既存のフレームワークや手法に対して「もう少しこうだったらいいのに」と感じることがよくある。そんな時に思いついたアイデアや改良案を、きちんと文書化して残しておく場所が欲しいと思い、専用のリポジトリを立ち上げることにした。 現在公開している...

GitHub

Goでプロセス・goroutine・メモリを覗いてみた

アプリケーション

概要 Goを使って、プロセスのアドレス空間・goroutineの動作・スタックとヒープを軽く覗いてみる。 子プロセスとアドレス空間の違いを確認する Goでは標準的にos/execパッケージを使って新しいプロセスを起動する。 os/execは内部的にUnix系OSではfork()+exec()相当の処理を行い、新しいプログラム(この例では自分自身)を実行する。 親子プロセスで同じ変数のアドレスを表...

Golang メモリ ヒープ スタック プロセス スレッド

Prologへの入門

アプリケーション

Prologへの入門を読んだ。 Regoを学ぶ際にその背景情報を得ようと思って読んでみた。 Prologの深い思想まで理解できなかったが、宣言型言語というエッセンスは汲み取れた。 ...

Prolog

カモメになったペンギン

マネジメント

カモメになったペンギンを読んだ。 ペンギンがカモメになった話・・・ではなく、変化が求められる環境でどのように課題を解決するか、チームを組成するかということを学ぶことができる寓話。 変革を成功させる八段階のプロセスはリーダーやマネージャーなど組織に変化をもたらすような立場のポジションであれば、頭の中に入れておきたい考えではないだろうか。 ...

組織論

技術的な意思決定において制約やトレードオフを明示することの重要性

アーキテクチャ

技術選定や設計判断を行う際には、制約やトレードオフを明示することが極めて重要である。 意思決定とは、常に限られた条件のもとで、複数の選択肢から最適なものを選ぶ行為である。したがって、その判断がどのような前提や制限の中で行われたのかを明文化しない限り、後から見て「なぜこの選択がされたのか」を理解することは困難となる。 意思決定の前提を明示できる 技術的な意思決定は、「その時点での状況」「与えられた制...

アーキテクチャ システム設計

キャッシュ戦略の基本的なパターンについて

アーキテクチャ

Webアプリケーションや分散システムでパフォーマンスを高めるために不可欠なのが「キャッシュ」の基本的な活用パターンについて書く。 キャッシュアサイド(Cache Aside) リードスルー(Read Through) ライトスルー(Write Through) ライトバック(Write Back) ライトアラウンド(Write Around) キャッシュアサイド(Cache Aside) 概要...

キャッシュ システムパフォーマンス

ACIDとBASEについて

アーキテクチャ

トランザクションモデルであるACIDとBASEについて述べる。 ##ACIDとは ACIDは、主にリレーショナルデータベース(RDB)で用いられるトランザクションの4つの性質を表す。 特性 意味 概要 Atomicity(原子性) トランザクションはすべて成功するか、すべて失敗する All or Nothing - 中途半端な状態は残らない Consistency(一貫性) データ...

ACID BASE

Webアプリケーションの処理モデルについて

アーキテクチャ

この記事では、Webアプリケーションの代表的な処理モデルについて書く。 イベントループ スレッド プロセス 各処理モデルの概要 イベントループモデル(非同期・シングルスレッド) 特徴:1つのスレッドで、イベント(非同期IOなど)を順に処理 代表例:Node.js、Deno、JavaScript(ブラウザ) [ イベントキュー ] → [ イベントループ ] → [ 実行 ] メリット ...

イベントループ スレッド プロセス

CAP定理とPACELC定理について

アーキテクチャ

分散システムにおける重要な理論であるCAP定理とPACELC定理について書く。 CAP定理とは CAP定理とは、分散システムにおいて以下の3つの特性のうち、同時に2つまでしか実現できないという理論である: Consistency(一貫性):全ノードが同じデータを返す Availability(可用性):常に応答が返る Partition Tolerance(分断耐性):ネットワークが分断しても動...

CAP PACELC 分散システム