記帳專案說明
新專案說明 最近開新的專案,目前專案的系統架構和後端處理的差不多了,剩下前端的部分正在一邊學 react 一邊完成中,考慮到最近要開始找工作了,所以想說寫個部落格一邊介紹目前專案的架構與紀錄目前的狀態。 專案整體架構 在開始之前我們先發一張架構圖吧,接下來請把架構圖當成地圖開始冒險吧。 這次的專案主要是走雲原生的概念,下述我們分成基礎設施、前端、後端來聊吧 基礎建置 雲端服務廠商選擇: AWS 這個專案從剛開始設計就是預計上雲且使用的是 aws,主要有兩個點 我們家並沒有固定 IP ,如果要走地端的話勢必要使用到 DDNS ,那牽涉的範圍就會更廣了,因此決定直接上雲 根據網路上查到的資料,目前 aws 市佔 33% ,考慮到將來要找工作與方便尋找資料因此決定直接使用 aws 用到的 AWS 服務 接下來先概覽一下用到的服務與相關功能,下面會以使用者接觸到服務的順序來說明: 服務名稱 用途 router53 DNS, 用於將 domain 轉換成 IP, 我的 domain 也是在該服務購買的 彈性 IP 當我們租了 AWS 的伺服器時是沒有對外 IP 的,因此我們需要透過彈性 IP 申請並且綁定到我們的 EC2 安全群組 連到伺服器的防火牆,可以設定每個 port 是否要開啟,並且設定白名單等 EC2 這個就是我租伺服器的本體,所有的服務與反向代理等都是放在這裡 EC2 建置了哪些服務 這邊會講一下我安裝與使用到哪些非我開發的服務 資料庫: 資料庫的部分我使用的是 mariaDB, 會選擇 mariaDB 的原因除了他是 MySQL 的分支之外,他的社群很活躍、穩定性也很高 catch: catch 的部分我使用 redis ,主要適用於處理會需要經常取得資料或者不需要持久化的資料,目前我主要用於記錄使用者登入後的 token,由於採取的是前後端分離的架構,後端會需要頻繁的驗證 token 和透過 token 取得用者資訊,因此這部分得資料就放在 redis,更詳細的使用邏輯將會在後面提到後端的時候說明。 SSL: 這個專案的 SSL 主要用於 https 連線,這部分是使用 Let's Encrypt 家的憑證。 會用 Let's Encrypt 的原因最主要是免費和自動化申請,如果考慮到...