# 系統技術架構 ## 採用框架 本系統採用 Web 技術作為主要程式載體,前端使用者透過瀏覽器進行系統互動作業。前端框架採用開放原始碼之 React 作為畫面渲染引擎,透過 Apollo GraphQL 的資料結構與後端程式溝通。後端採用 Node.js 作為運作之 Runtime,資料庫部分則採用 Postgres Database 作為資料儲存工具。 ## 部署方式 本系統佈署使用 docker container 為服務載體,伺服器為任意可使用 docker 服務之作業系統環境都可以使用。前端由 Vercel 托管,後端則托管在 AWS 平台上。 hosting: Vercel(fronend)/AWS(backend) ## 原始碼編譯 本系統採用 Node.js 作為開發平台,欲編譯本系統原始碼需準備可運行 Node.js 之環境,下載本系統原始碼後,於根資料夾執行 npm install 安裝所有第三方套件後,前端執行 `npm run dev`,後端執行 `npm run start:dev `即可運行程式 ## 測試環境 dev/staging/production dev: 工程開發環境 staging: demo 版本(https://staging.annealenergy.com) production: 正式環境 ## 工程 team 負責人: 周杰 ## QA ### 前端及後端使用的語言? 前端使用 TypeScript 語言,搭配 React/Nextjs 框架進行開發。後端同樣使用 TypeScript 語言,並採用 Node.js 作為運行環境。 ### 資料庫及程式是否建立在同一個雲端空間,還是兩者之間有加密? 資料庫和程式沒有建立在同一個雲端空間。在本系統中,資料庫使用 AWS RDS,而後端程式則部署在 AWS 的其他服務上。在資料傳輸過程中,為確保資料的安全性,我們使用以下技術 - 使用 HTTPS:在本系統中,我們使用 HTTPS 協定來保護客戶的數據在傳輸過程中的安全性。這意味著所有從前端發送到後端的數據,以及從後端返回前端的數據都經過了加密處理,可以有效防止第三方攔截和竊取數據。 - api 權限控管:系統對 api token 進行了安全處理。首先,系統會根據使用者的資訊生成一個專屬的 Payload,並對生成的 Context ID 進行雜湊處理。接著,系統將使用 Access JWT 對 Payload 進行簽名,生成一個 Token。最後,將 Token 和 Context ID 存儲在經過加密保護的 Cookie 中,以確保數據在客戶端和伺服器之間的安全傳輸。 通過這兩點加密措施,本系統確保了客戶數據的安全性,並保護了客戶的隱私和數據不被第三方竊取。 ### 是否有雲端架構可以提供? 本系統的雲端架構涵蓋了兩個值得信賴的雲端服務供應商,分別是 Vercel 和 AWS。它們的組合為系統提供了一個高度可擴展和可靠的基礎架構。 Vercel 是一個專為前端應用程式而設計的平台,尤其適用於部署使用 React 等現代前端框架開發的應用程式。Vercel 提供了高性能的 CDN、自動擴展以及持續集成和持續部署(CI/CD)等功能。 AWS 是全球領先的雲端服務提供商,提供了眾多強大且靈活的後端服務。在本系統的架構中,後端應用程式部署在 AWS Elastic Container Registry(ECR)和 App Runner 上,這兩個服務共同為系統的後端提供了自動擴展和管理功能。靜態資源則存儲在 AWS Simple Storage Service(S3)中,它是一個高度可靠且高度擴展的雲端儲存服務。資料庫方面,系統使用 AWS Relational Database Service(RDS)進行管理,它是一個兼具安全性、高性能和易用性的雲端資料庫服務,並且提供自動備份和災難恢復。