最近建立了一個Blazor WebAssembly Hybrid 的應用程式,想佈署上雲資料庫使用MongoDB Atlas,檔案的儲存則使用AWS S3,網站內容為單純的商品圖瀏覽。
想請問一般雲端佈署的選擇關於AWS EC2 與 AWS Elastic Beanstalk 考量點大概有那些。
目前考量的點是技術上,若使用EC2全部環境都要自己弄會比困難點,但因資料庫已使用 MongoDB Atlas 排除DB的部分或許會比較容易!?
如果使用EC2架設網站與使用Elastic Beanstalk,這兩個在價格上大概會差多少呢?
目前的想法是覺得Elastic Beanstalk比較方便,但如果比較貴,會傾向試著學習使用EC2架設看看。
第二個問題是因為程式使用C#寫的,之前有稍微使用過Azure App Service一鍵佈署,不清楚若是改為使用 AWS Elastic Beanstalk 是否也能像這樣方便。
目前不太想考慮Azure的原因是個人覺得Azure的服務好像都比較貴一點,然後文件少就算了也不是那麼好懂,還是只是我誤會了,用微軟全家餐就好了呢?
你使用的技術是 Blazor WebAssembly Hybrid,簡化來說就是前後端分離的專案,你會有兩個專案分別是 API 與 Client.
其實跟語言也沒什麼關係,只要有相對應的 Runtime 就都可以了,你比較煩惱的應該是價錢、維護難度、部署門檻。
我們可以部署在靜態頁面託管如 Github Pages、Netlify、Vercel...
這一段平台有現有的 CI/CD 可以使用,不需要擔心需要自己處理,這可以參考我的專案
https://github.com/sponge1220/InfuraBrowser
該專案使用 Github Pages + Github Action 部署 Blazor WebAssembly.
這樣的部署方案不用錢、有現成的 CI/CD (請查看 .github 內的部署檔)、沒有維護成本
這可以包裝成 Docker,可以參考這份 DockerFile 修改
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["example.csproj", "./"]
RUN dotnet restore "example.csproj"
COPY . .
WORKDIR "/src/"
RUN dotnet build "example.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "example.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "example.dll"]
我只會建議你包裝成 Docker,因為大多數支援 .NET 的部署平台都是基於 Docker 容器,先處理好這塊部署到哪裡就都一樣了。
可以參考我的這篇,使用 Docker 將 VPS 搭建成 PaaS 平台,省錢、好維護、簡單
https://vocus.cc/article/63f1cba4fd89780001a3cb00
如果你的專案剛開始運作,我會推薦你去租一台 Linode 的 VPS 在上面安裝 Docker 與 Caprover 部署 API 然後前端放置在 Github Pages 這種靜態頁面託管直接串接 Github 就可以上線了。
Blazor WebAssembly Hybrid 查到的訊息是 .net,請往Azure
AWS 估價機算機,你可以按按看,
https://calculator.aws/#/addService?nc2=pr
AWS Elastic Beanstalk 定價寫到..
https://aws.amazon.com/tw/elasticbeanstalk/pricing/
使用 AWS Elastic Beanstalk 並不收取其他費用。您要支付為存放和執行應用程式所建立的 AWS 資源 (例如,EC2 執行個體或 S3 儲存貯體)。您只需按實際用量付費;既沒有最低費用,也沒有前期承諾。
Beanstalk 背後就是 EC2,所以成本我認為是差不多的,只是 AWS 給開發者看起來比較簡單的畫面
結論:
你如果是開發者且程式用 .net 請用 Azure,
如果你比成本,AWS 跟 AZURE 一樣搶錢,通常寫 .net/C 系列的會轉 AWS 大部分的考慮就是文件比較多而且不想被 AZURE 邪惡的微軟綁住。
Beanstalk 可以想像成給開發者的 EC2 介面,可是 AWS 幫你簡化後,之後會有不少除錯問題還是要跑去 EC2處理...,排錯沒有比較簡單。
MongoDB Atlas 排除DB的部分或許會比較容易!? 好像沒有吧 ? 自管的話還是考慮管 DB管理人的功力比較實在一些。
如果是純練功的話,可以考慮把 DB 跟 Web 都部署到 EC2 自己管,也可以順便包成 Container 練練功。