アーキテクチャ

ADRを書くときに抑えておくべきポイント

アーキテクチャ

ADR(Architecture Decision Record)は、ソフトウェアアーキテクチャに関する重要な意思決定を記録するためのドキュメントである。 ADRを書く内容が決まっていても実際書いてみると人によって内容がバラついたり、そもそも何を書けば良いのか分からなかったりして、形骸化してしまうことがある。 私の経験上大事だと思うことを4つにまとめた。 1:意思決定を一つに絞る(Atomicit...

Architecture Decision Record 設計 アーキテクチャ

要件と制約の違い

アーキテクチャ

ソフトウェア開発の現場で、「要件(Requirements)」と「制約(Constraints)」の違いに悩んだことはないだろうか。 私は設計を考える際に、この2つの概念を混同してしまうことがあった。 適切な設計を行うために、これらの違いを明確に理解することが大事であると感じたので、これらの違いについてシステム工学の国際標準である ISO/IEC/IEEE 29148 の定義をベースに整理してみた...

制約 要件 要求 設計 アーキテクチャ

Web配信の技術―HTTPキャッシュ・リバースプロキシ・CDNを活用する

アーキテクチャ

Web配信の技術―HTTPキャッシュ・リバースプロキシ・CDNを活用するを読んだ。 Webのコンテンツ配信におけるキャッシュについて網羅的に書かれている。キャッシュ最適化を考える際に手元に置いておきたい。 ...

キャッシュ リバースプロキシ CDN

ソフトウェア設計の結合バランス 持続可能な成長を支えるモジュール化の原則

アーキテクチャ

ソフトウェア設計の結合バランス 持続可能な成長を支えるモジュール化の原則を読んだ。 この本は結合をテーマにした珍しい本で、アーキテクチャ設計の複雑性をどう管理するかを理論的に学べる本。 複雑性をどう管理するかはアーキテクチャの寿命を決めるようなものだと思っているが、そのための分析観点として結合について深く学ぶことができる。 一回読んだだけでは頭に入り切らなかったので、設計するときなど辞書的に参照で...

設計

プラットフォーム・エンジニアリングとは何か

アーキテクチャ

概要 本記事では、プラットフォーム・エンジニアリングの定義、必要性、実現方法、導入判断について解説する。 プラットフォーム・エンジニアリングは、開発者がアプリケーション開発に専念できるよう、複雑なインフラや運用プロセスを共通基盤として抽象化・提供する専門分野である。組織の規模拡大に伴い顕在化する開発者の認知負荷、開発スピードのボトルネック、標準化の欠如といった課題を根本的に解決する。 本記事では、...

プラットフォーム・エンジニアリング

クリーンコードクックブック ―コードの設計と品質を改善するためのレシピ集

アーキテクチャ

クリーンコードクックブック ―コードの設計と品質を改善するためのレシピ集を読んだ。 本全体を通して、全単射と偶発的複雑さの概念について教えてくれる本であり、コードの設計と品質を改善するテクニックを学ぶことができる。 よく見知った法則なども網羅的に書かれているので、手元に置いておきたい一冊。 ...

設計

システム設計面接の傾向と対策

アーキテクチャ

システム設計面接の傾向と対策を読んだ。 面接対策というテーマではあるが、システム設計のパターンを学ぶにもちょうど良い。 作問する側にとっても参考になると思う。 システム設計の勘所を抑えた質問のパターンについても参考になる部分があるので、システム設計面接ではない技術面接の面接官にとっても役立ちそう。 この手の本は少ないが、アーキテクチャの設計事例やパターンについて実例に近い形で学ぶことができる本はも...

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

セッションベースとトークンベースの認証方式について

アーキテクチャ

セッションベースとトークンベースの認証方式について 概要 Webアプリケーション開発において、認証方式の選択は システムのスケーラビリティ、セキュリティ、保守性に大きな影響を与える設計判断である。この記事では、セッションベース認証とトークンベース認証について、技術的な詳細から実装上の考慮事項まで包括的に比較・解説する。 認証の基礎知識 認証とは? 認証(Authentication)とは、システム...

認証 認可

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

アーキテクチャ

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

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

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

アーキテクチャ

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

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