ホーム

アーキテクチャアドバイスプロセス(AAP)とは何か?

システムアーキテクチャ

LTで簡単にまとめた資料もあるので、要約を知りたい場合は以下を参照してほしい。 cf. AAPについて調べてみた アーキテクチャアドバイスプロセスとは何か 現代のソフトウェア開発では、チームの自律性と開発速度が重要視される一方で、アーキテクチャの一貫性も求められる。この相反する要求に応えるのが、アーキテクチャアドバイスプロセス(Architecture Advice Process, AAP)であ...

アーキテクチャアドバイスプロセス アーキテクチャレビューボード アーキテクチャ

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

システムアーキテクチャ

データモデリングでドメインを駆動する──分散/疎結合な基幹系システムに向けてを読んだ。 帳簿という概念を軸に、基幹系システムを分散・疎結合化するためのデータモデリング手法を体系的に解説した本。 活動系(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(ブラウザ) [ イベントキュー ] → [ イベントループ ] → [ 実行 ] メリット ...

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