iT邦幫忙

1

雲端佈署網站選擇建議

  • 分享至 

  • xImage

最近建立了一個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的服務好像都比較貴一點,然後文件少就算了也不是那麼好懂,還是只是我誤會了,用微軟全家餐就好了呢?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
2
sponge1220
iT邦新手 4 級 ‧ 2023-11-19 01:15:47
最佳解答

你使用的技術是 Blazor WebAssembly Hybrid,簡化來說就是前後端分離的專案,你會有兩個專案分別是 API 與 Client.

其實跟語言也沒什麼關係,只要有相對應的 Runtime 就都可以了,你比較煩惱的應該是價錢、維護難度、部署門檻。

Client 頁面

我們可以部署在靜態頁面託管如 Github Pages、Netlify、Vercel...
這一段平台有現有的 CI/CD 可以使用,不需要擔心需要自己處理,這可以參考我的專案
https://github.com/sponge1220/InfuraBrowser

該專案使用 Github Pages + Github Action 部署 Blazor WebAssembly.

這樣的部署方案不用錢、有現成的 CI/CD (請查看 .github 內的部署檔)、沒有維護成本

Api

這可以包裝成 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 容器,先處理好這塊部署到哪裡就都一樣了。

Caprover

可以參考我的這篇,使用 Docker 將 VPS 搭建成 PaaS 平台,省錢、好維護、簡單
https://vocus.cc/article/63f1cba4fd89780001a3cb00

總結

如果你的專案剛開始運作,我會推薦你去租一台 Linode 的 VPS 在上面安裝 Docker 與 Caprover 部署 API 然後前端放置在 Github Pages 這種靜態頁面託管直接串接 Github 就可以上線了。

感謝,這應該是目前最省預算的方法了。

0
yuhsi1013
iT邦見習生 ‧ 2023-11-14 21:55:04

Azure其實蠻好用的,而且隨用隨付,用多少算多少,初始會送200美金

1
狗狗兔兔
iT邦新手 3 級 ‧ 2023-11-15 09:53:30
  1. Blazor WebAssembly Hybrid 查到的訊息是 .net,請往Azure

  2. 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管理人的功力比較實在一些。

0
EN
iT邦好手 1 級 ‧ 2023-11-15 10:28:25

如果是純練功的話,可以考慮把 DB 跟 Web 都部署到 EC2 自己管,也可以順便包成 Container 練練功。

我要發表回答

立即登入回答