Architecture
softwareのarchitectureのこと
ソフトウェア設計(Design)との違い
Architecture:Designの方針。Designの背後にある考え方
Design patternに近い?
Design:具体的な成果物
POSAで紹介されるアーキテクチャパターンまとめ - Qiita
Catalog of Patterns of Enterprise Application Architecture
アーキテクチャ スタイル - Azure Application Architecture Guide | Microsoft Docs
クラウドアプリで一般的なスタイルの外観
n層アーキテクチャ
論理レイヤーと物理レイヤーに分ける
依存性は上位から下位のみが許される
クローズド:直下のみ許す
オープン:下位ならどこでも読んでいいようにする
https://docs.microsoft.com/ja-jp/azure/architecture/guide/architecture-styles/n-tier
利点
単純でよくあるやつなのでみんな知ってる
課題
モノリシックで、機能単位のデプロイが難しくなる
ピンと来ていないkadoyau.icon
セキュリティ管理がむず香椎
Webキューワーカー
クライアント要求をWebフロントエンドが処理
リソースを処理するのはワーカーが行う
フロントエンドとworkerはqueueで通信する
メリット
hrontとworerが非同期メッセージングで切り離される
課題
設計に失敗するとfrontとworkerが結合する
data schemaやコードを共有する、とか
n層とqueue workerって独立じゃないので並列に並べるのやや気持ち悪しkadoyau.icon
microservices
各サービスが専門チームによって開発される
サービス同士は疎結合
個々のサービスでのデプロイは独立している
ミドルウェアの選択も自由
サービス同士はAPIを通じて呼び出し合う
サービス通しのチーム間の調整は少なくなる
クライアントはAPIを通じて通信する
API gatewayを使ってgatewayが適切なサービスに転送する形態が一般的
サービスとクライアントを切り離したい
Webフレンドリではないmessaging protocolが使いたい
AMQP
負荷分散、認証、ログ、SSL terminate、キャッシング、バリデーションなどをAPI gatewayで行いたい
課題
n層やqueue workerに比べて管理が複雑
event-driven
https://docs.microsoft.com/ja-jp/azure/architecture/guide/architecture-styles/event-driven
pubsubモデル
ドメイン
短い待機時間で大容量データを処理したい場合
IoT
1つのイベントに対していろんなサブシステムが処理したい場合
big computhing
大きなデータを扱うワークロードに特化したスタイル
データをチャンクに分割して並列処理をする
ドメイン
simulation
modeling
3D rendering