如何規劃您放在 Azure 上的網站服務

原文發表自 How to plan your migration to Azure Websites

把應用程式移轉到雲端平台上(順利地運作)有時候也是件不容易的事情,若您採用 Azure 網站服務來託管您的 web 應用程式,那我們有幾件事情想讓您知道,作為移轉時的參考。

1. 遍佈全球

目前 Azure 網站服務已經正式營運,所以 Microsoft Azure 全球的資料中心都可以提供 Azure 網站服務,這點對於想要做全球生意的您來說是相當方便且重要的,您可以參考這份清單來看 Microsoft Azure 在哪些地區提供了什麼樣的服務。

2. Azure 網站服務已經內建負載平衡器

若您使用其它的雲端或是 IaaS 服務,當您架設網站時可能還要自行搭建負載平衡器(load balancer),而在 Azure 網站服務上,您不必擔心負載平衡的問題,您只需要設定要使用多少資源來運作網站,Azure 網站服務會幫您做好負載平衡,即使是跨不同區域的流量,您也可以直接使用 Microsoft Azure 所提供的流量管理員(traffic manager)來平衡跨地區的流量。但要注意的是,若您使用免費的網站服務價格方案,則並不支援負載平衡器。

結論就是:使用 Azure 網站服務來託管 Web 應用程式,不需要再另外架設負載平衡器。

3. Azure 網站服務底層是使用 IIS 伺服器

Azure 網站服務的底層是由 Windows Server 以及 IIS (作為 Web 伺服器)的技術所建置而成,在這個架構上目前支援了 .NETPHPNode.JSPython 以及 Java 程式語言所開發的 web 應用程式,所以關於安全性、錯誤診斷以及效能都可以完全利用 IIS 伺服器的功能來完成,詳細資訊可以參考這裡

4. 瞭解 Azure 網站服務的服務水準(SLA)

在 Azure 網站服務上的 web 應用程式都不該假設服務能在 100% 的時間都上線運作,請詳情閱讀 Azure 網站服務的服務水準,您會知道目前 Azure 網站服務保證了每個月 99.9% 的服務水準。

然而,若您除了 Azure 網站服務之外,還使用了其它的 Azure 或非 Azure 的服務,像是資料庫、儲存體、CDN 服務等等,那您必須也要瞭解這些服務本身的服務水準。

若您希望自己的 web 應用程式服務水準能夠超過 99.9%,那您必須要為可能發生的錯誤做好設計,以便讓網站應用程式在發生問題時,能夠自動重試或是自行復原。

5. 瞭解各個價格方案

Azure 網站服務目前提供了四種價格方案:免費共享(預覽)基本標準

  • 共享方案(預覽) :使用共享價格方案,在預覽期間,一個 web 實體的一個小時運算費用為新台幣 0.39 元,一個月差不多約新台幣 300 元左右(視匯率而定)。
  • 基本及標準方案:基本及標準方案提供不同的主機大小,讓您可以根據需要隨時自行更改運算資源,每個月的價格從新台幣 1680 元(基本方案,一台機器,小型主機)或新台幣 2250 元(標準方案,一台機器,小型主機)起。

關於價格以及詳細的功能資訊,請參考這一頁的說明。

6. 在 Azure 網站服務上無法直接操作服務的虛擬主機

Azure 網站服務提供平台來運作您的 web 應用程式,但您無準連線到該服務的虛擬主機進行操作或安裝特定的軟體,這是平台即服務(platform-as-a-service)的特性,由服務商直接來管理虛擬機器的部份,而您只需要專注在程式的開發即可。

當然我們建議您,開發無狀態(stateless)的 web 應用程式可以得到更好的延展性。

7. 自動延展

目前只有選擇標準價格方案才能使用自動延展(Auto-scale)的功能,這可以幫助您省下自行監控及手動操作的力氣,費用上也較有效率,因為自動延展機制會根據狀態自行幫您挑選合適的運算資源,以免造成浪費或平足,詳細的資訊可以參考這篇文章的說明。

8. Azure 網站服務的磁碟伺服器是共享的

Azure 網站服務中,每一個 Web 實體都有本地端的磁碟空間,不過這個磁碟伺服器是在同一個 Web 服務下各實體間共享的,所以同一個 web 下的各實體都可以共享像是 session、cache 之類的資料。

9. 快取

Azure 網站服務針對 PHP 應用程式提供了 Wincache ,而 IIS 伺服器也設定了 Output Cache 讓所有放在 Azure 網站服務上的應用程式享用到這個快取。

在大部份的狀況下,這樣的快取機制已經足夠,但如果您需要更高等級的快取,您可以選擇:

10. 提供部署的預備環境

Azure 網站服務在標準的價格方案下,提供了部署預備環境(staging)的機制,您可以在網站開發完成後,先部署到預備環境,待測試沒有問題之後,直接在不停機的狀況下立刻切換上線,詳細的操作可以參考這篇文章

11. SSL

為了讓瀏覽器與網站之間的通訊更安全,我們會使用 HTTPS 通訊協定來進行資料傳輸,這時就必須使用 SSL 加密技術,Azure 網站服務可以讓您直接設定好 SSL 連線,詳情請參考這篇文章

12. 自訂網域名稱

當您建立網站服務時,Microsoft Azure 會提供給您一個網域名稱像是:https://<mysite>.azurewebsites.net 來使用,而當然您也可以設定自訂的網域名稱,詳細的內容請參考這篇文章

13. 使用 WebJobs 執行背景程式

Azure 網站服務不只是能執行網站應用程式,也能透過 WebJobs 來背景執行一些批次的工作,詳細的使用請參考這篇文章

14. 自我修復

在 Azure 網站服務中開啟了自我修復的功能後,您的網站就會自動偵測是否有狀況發生,以及嘗試進行復原,詳細的設定及功能請參考這篇文章

15. 備份及還原

Azure 網站服務提供您可以很方便地自動或手動進行網站內容的備份及還原,您不僅可以回溯到之前的網站,也可以用備份的內容建立新的網站。

關於網站備份的部份,可以參考這篇文章;而這篇文章則說明了如何從備份中進行還原。

16. 使用 SendGrid 服務來寄送郵件

Azure 網站服務本身並沒有提供 SMTP 的服務來寄送信件,您可以使用像是 SendGrid 這樣的服務來寄信,價格方案可以參考這裡,而這篇文章也說明了要如何設定 SendGrid。

Azure 網站服務上線前的確認

  • 確認您使用正確的資料中心。
  • 瞭解 Azure 網站服務的價格方案,來規劃網站的方案,以及考慮是否要使用預備部署環境。
  • 選擇部署方案:Visual Studio Online、Git、Web Deploy、Dropbox 還是 Bitbucket 等等。
  • 設定快取、資料庫等等。
  • 設定開發與測試的環境。
  • 建議使用基本或標準的方案來運作上線的網站服務。
  • 考慮使用 Azure 儲存體或媒體服務來處理多媒體檔案。
  • 設定自我修復的機制。
  • 設定自動備份。
  • 設定自動延展。

結論

在 Azure 網站服務上有很多種架構設計的方式,這篇文章只是特別提示幾個重點,希望可以協助您部署成功的網站服務。