AWS Availability Zones(AZ)和Regions簡化了冗余能力的設計,類似的服務還有Azure Locally Redundant Storage(LRS)、Zone-redundant Storage(ZRS)、Geo-redundant Storage(GRS)和Read-access geo-redundant storage(RA-GRS)。與傳統(tǒng)手段相比,構建彈性云的基礎設施更為簡單,代價更低。在數(shù)據(jù)庫存儲設計時,應保證至少一個區(qū)域或可用區(qū)(Availability Zone)可容錯。應用可通過使用災難恢復模式的最佳實踐變得更為高可用。這些最佳實踐包括指示燈(Pilot Light)、暖待機(Warm Site)和熱待機(Hot Site)部署模型等。可在AWS白皮書《使用AWS進行災難恢復》(“Using Amazon Web Services for Disaster Recovery”)中看到更多的詳細信息。
重啟和重加載的彈性。在應用設計中,應對重啟和重加載具有彈性。在組件重啟或重加載時,系統(tǒng)必須保持正??捎?。不要假定任何組件會是健康的、可用的或是固定位置的。使用動態(tài)配置引導實例。在啟動實例時,應該質疑一下“我是誰,我的角色/目的是什么?”此外,對啟動配置內容進行精簡,以使新的基礎設施可以快速地適用于工作。
在每一層上應用安全。在構建安全性時,應根據(jù)云中無任何天生安全的事情這一假設,為每一層加入安全性。云中的環(huán)境安全是工作于一種供應商和消費者間的共同職責模式下。云提供商確保底層基礎設施的安全,而消費者負責自身工作負載的安全。消費者應該在數(shù)據(jù)傳輸和駐留時應用適當層級的加密。應始終強制執(zhí)行最小權限原則,不要賦予用戶(或其它系統(tǒng)?。┢渌恍枰臋嘞?。利用云提供商所提供的安全特性。
受控密鑰服務AWS Key Management Service(KMS)和Azure Key Vault簡化了對數(shù)據(jù)加密所用密鑰的創(chuàng)建和控制。此外,還可使用Hardware Security Modules(HSM)保護密鑰的安全性。KMS和Key Vault可與各種云服務集成,隨時可用。讓用戶自己去設置這樣的HSM基礎設施,這無疑是復雜的,并需要特殊的技能。盡可能地利用可用的原生服務,這樣也易于實現(xiàn)與其它應用的集成。安全是云采納與集成中所面臨的最大挑戰(zhàn)之一。為了克服這一挑戰(zhàn),采用安全密鑰服務對實現(xiàn)的每一層做加密,使用云提供的身份驗證和授權服務(AWS IAM和Azure Directory Services)來控制和保護云資源。不要將其用于應用程序內的身份驗證或授權,這是一個反模式(anti-pattern)。因為一個應用可能會有成百上千的用戶,為所有的用戶管理云資源將會是一個繁瑣的任務,我們并不需要這樣做。如果應用是一個內網(wǎng)應用,推薦使用Active Directory認證。對于關鍵云資源的保護,強烈建議使用多重身份驗證(Multi-Factor Authentication)。一個應用的主要安全風險,就是在源代碼中對密碼或其它安全憑證(例如AWS中的Access Key Id和Secret Access Key)做硬編碼。這不僅會使密碼和安全密鑰輪轉(Rotation)復雜化,而且一旦代碼提交到源代碼倉儲后,會將秘密暴露給無關人員。 從應用訪問云資源時,始終使用由AWS Security Token Service(STS)等服務所生成的臨時憑據(jù)。
確定基礎設施的規(guī)模。在云中,由于云提供了內置的擴展功能,確定基礎設施的最初規(guī)模不再是最重要的,但依然很重要。如果一個企業(yè)能確定自身的需要,例如需要100或1000臺的服務器,這將有助于企業(yè)選擇備用容量來降低成本,因為企業(yè)無需為最低工作負載支付更高的價格。最低工作負載即對于三層架構的應用,至少需要四臺服務器(即兩臺數(shù)據(jù)庫服務器,一臺應用服務器和一臺Web服務器)。在這種情況下,你可以長期租用四臺服務器。小規(guī)模負載可以節(jié)省支出。也就是說,云費用將會繼續(xù)下滑,因此我們要限制具有未來擴容需要的長期合約。一年時間的長期租賃通常足以獲得定價上的優(yōu)勢。云允許我們超越基礎設施的限制。按需付費適于通過橫向和縱向擴展云基礎設施支持可變的需求。
邊緣站點(Edge Location)的緩存。緩存是一種傳統(tǒng)的技術,針對重復請求改進應用性能。 AWS邊緣站點(Edge Location)或Azure PoP(Point of Presence)將緩存提升到了一個新的級別,并降低了延遲。盡可能地使用支持經(jīng)由邊緣站點進行內容傳送的云原生服務(例如,AWS Cloudfront或Azure CDN)。采用AWS API Gateway或Azure API應用,將自身的REST API服務公開給外部的和內部的消費者。這免除了所有的操作負擔,通過點擊幾下鼠標,就可提供安全、緩存、管理等特性。