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