2023年12月28日 星期四

應用程式架構:單體、三層、微服務

應用軟體設計(application design, software architechture)架構的演進從單體式(Monolithic)到多層架構(Multitier)到微服務(Microservice)的架構:

  • Monolithic Architecture:單體式架構,將所有的功能都塞在一起。為了方便開發與維護,漸漸地會將下列應用程式的功能模組化:
    1. UI (User Interface):使用者接觸到的介面
    2. Business logic:商業運行邏輯
    3. Data:應用程式要用到的資料

  • Multitier:通常會是三層架構(3 Tiers Architecture),把monolithic架構拆分地的UI, logic, data等功能對應到下列三層:
    1. Presentation layer:由前端(Frontend)開發,把從使用者接到的需求丟到後面的logic layer來處理,不會直接存取data layer的資料。
    2. Logic layer:由後端(Backend)開發,根據business logic來處理需求,並且與data layer溝通完成使用者的需求後,把結果丟回presentation layer。
    3. Data layer:由資料庫管理員(Database admin)來維護,提供logic layer處理需求所需的資料。不會與presentation layer有所溝通。

  • Microservice:微服務,把軟體提供的每一項功能都拆開後,單一功能由一個微服務來提供。
    1. API Gateway:接收使用者從不同裝置的需求,透過API丟到微服務
    2. Microservices:每個拆分的功能都由一個微服務來提供,每個微服務可以由不同的開發團隊來開發;微服務之間溝通透過所謂的surface area,例如說:gRPC, event streaming, message broker等等來達成。
    3. 將資料庫的資料拆分到微服務中


參考資料

_EOF_

Postprocess upscale by: 2.5, Postprocess upscaler: R-ESRGAN 4x+ Anime6B

Time taken: 21.6 sec. on Nvidia MX550
A: 1.23 GB, R: 1.28 GB, Sys: 1.8/2 GB (89.2%)

Monolithic, Multitier, Microservice, sci-fi

Steps: 32, Sampler: Euler, CFG scale: 7, Seed: 1653555007, Size: 512x256, Model hash: fc2511737a, Model: chilloutmix_NiPrunedFp32Fix, Version: v1.6.1

Time taken: 47.4 sec. on Nvidia MX550
A: 1.70 GB, R: 2.26 GB, Sys: 2.0/2 GB (100.0%)

沒有留言:

張貼留言