A アーキテクチャ - user000422/0 GitHub Wiki

システムや構造の設計や構築に関する概念のことである。 アーキテクチャは手段であることを忘れるな。 保守、テストが行いやすいアーキテクチャであることが大前提。

Clean Architecture 達人に学ぶソフトウェアの構造と設計

書籍。 アーキテクチャのルールはどのシステムでも同じである。 アーキテクチャのルールは、プログラムの構成要素をどのように組み立てるかのルール。

SOLID原則

・S(Single Responsibility Principle) 単一責任の原則。 モジュールはたったひとつのアクター()に対して責務を負うべきだ。

・O(open/closed principle) 開放閉鎖の原則。 新しいモジュール、コードを追加しやすいこと。 上位のモジュールは下位のモジュールの影響を受けないこと。(下位のモジュールの修正による影響)

・L(Liskov substitution principle) リスコフの置換原則。 あるクラスを継承するとき、継承元と継承先のクラスの振る舞いを同じにすること。

・I(Interface segregation principle) インターフェース分離の原則。 汎用なインターフェースが一つあるよりも、各クライアントに特化したインターフェースがたくさんあった方がよい。

・D(dependency inversion principle) 依存性逆転の原則。

イベント駆動アーキテクチャ

分散型。 高度にスケーラブル(弾力性が高い)で高パフォーマンスなアプリケーションを実現できる。

マイクロサービスアーキテクチャ

大ブーム(2022年)。 アプリケーションを小さな独立したサービスに分割。 各サービスがそれぞれ単一目的の性質を実現。 エンドポイントで連携。 各サービスが独立しているためオーバーヘッドが発生しやすい。パフォーマンス注意。 各サービスにわたるトランザクション処理を実装するのは難度が高い。

MVC(Model View Controller)アーキテクチャ

アプリケーションの内部処理と、ユーザーに対する入出力処理を分離することが目的。

クリーンアーキテクチャ

ソフトウェアをレイヤーに分けることによって、関心の分離を達成するためのアーキテクチャパターン。 ビジネスロジック(ドメイン)を中心に置き、インターフェースの層や技術を外側に配置する設計アプローチ。 プログラムをユースケースや役割毎に分離。 同心円図が有名。 例えば月額制のWebサービスがあってデザインを変えてもビジネスモデルが変わることないですが、ビジネスモデルが変わったらデザインって絶対変わりますよね?

サーバーレスアーキテクチャ

クラウドサービスを用いて実現させる。Lambda + API Gateway 基本的にサーバ運用と比較してコストが安くなる。 サーバーダウンの心配がない。 コスト見積の難易度は高い。(Lambdaの料金体系等)