使用 Amazon Web Services 提高您的工作效率

已發表: 2022-03-11

在過去的幾年裡,每個人最熱的詞是“生產力”。 在快速發展的互聯網世界中,快速完成某事總是會得到支持。 儘管需要快速準確地實現真實的業務邏輯,但作為一名經驗豐富的 PHP 開發人員,我仍然在其他任務上花費了數百小時,例如設置數據庫或緩存、部署項目、監控在線統計信息等。 許多開發人員多年來一直在為這些所謂的雜項任務苦苦掙扎,他們浪費時間而不是專注於項目邏輯。

四年前,當一位朋友提到亞馬遜網絡服務 (AWS) 時,我的生活發生了變化。 它打開了一扇新的大門,極大地提高了生產力和項目質量。 對於沒有使用過 AWS 的任何人,請閱讀這篇文章,我相信您會覺得值得您花時間閱讀。

提高您的生產力

Amazon Web Services (AWS) 可以在幾分鐘內提高您的工作效率。
鳴叫

AWS 背景

Amazon Web Services 於 2006 年正式推出。很多人都聽說過它,但可能不知道它可以提供什麼。 那麼,第一個問題是:什麼是 AWS?

Amazon Web Services (AWS) 是雲計算服務的集合,也稱為 Web 服務,它們構成了 Amazon.com 提供的雲計算平台。

維基百科

從這個定義中,我們知道了兩件事:AWS 是基於雲的,AWS 是服務的集合,而不是單一的服務。 由於這並不能告訴您太多信息,因此在我看來,初學者最好將 AWS 理解為:

  • 正如定義所說,AWS 是雲中的服務集合。
  • AWS 在線提供快速計算資源(例如,您需要 10 分鐘來設置 Linux 服務器)。
  • AWS 提供負擔得起的費用。
  • AWS 提供開箱即用的易於使用的服務,這可以節省大量手動設置數據庫、緩存、存儲、網絡和其他基礎設施服務的時間。
  • AWS 始終可用並且具有高度可擴展性。

當然,使用 AWS 還有更多優勢,因此,讓我們快速了解一下它如何提高您的工作效率。

免費創建 AWS 賬戶

要開始使用任何服務,您需要有一個帳戶。 為 AWS 創建一個賬戶應該不會超過五分鐘。 確保您手頭有以下信息:

  • 一個電子郵件地址,用於接收確認電子郵件。
  • 一張信用卡,由於設置過程始終免費,因此無需付費。
  • 一個電話號碼,它將接收自動系統調用以識別用戶

而已。 準備好上面列出的信息後,請訪問 AWS 網頁,然後按照易於遵循的說明創建一個帳戶。

請注意以下事項:

  • 大多數 AWS 服務按月提供大量免費套餐資源。 也就是說,測試 AWS 通常會花費很少或不花費任何費用。
  • 根據我的經驗,電話號碼和其他個人信息沒有被濫用

獲取您的第一個 EC2 服務器設置

雲服務的好處之一是能夠按需獲取共享資源。 亞馬遜為用戶訪問其服務提供了四層服務,按容易程度排列:

  • 管理控制台,
  • 命令行工具,
  • 開發工具包,
  • RESTful API。

在本文中,我們將使用管理控制台。 因此,登錄到控制台後,您將看到如下屏幕:

在 AWS 中設置您的第一台 EC2 服務器

有兩個地方需要注意:

  • 在右上角,您會找到區域選擇器。 AWS 在全球 11 個不同的地區提供服務,並且還在不斷增長。 選擇一個區域作為您的選擇,或將其保留為美國東部(弗吉尼亞北部)作為默認值。 不同地區的定價可能會有所不同,隨著使用量的增長,您應該牢記這一點。
  • 大部分屏幕都充滿了服務列表。 我們將在本節中介紹 EC2。 快速瀏覽一下 AWS 提供的功能。 如果它們沒有意義,請不要擔心,所有服務都將自行運行。 但是,通過使用它們的組合,您將獲得更高的生產力。

雲資源最基本的需求是虛擬服務器。 EC2 或 Elastic Compute Cloud 是亞馬遜為其虛擬服務器服務選擇的名稱。 讓我們看看讓 Linux 服務器聯機是多麼容易。

  • 在 EC2 管理控制台中,啟動啟動過程,如下所示:

在 AWS 中設置您的第一台 EC2 服務器

  • 選擇一個機器映像(簡稱 AMI)開始。 這是將運行您的機器的操作系統。 選擇您喜歡的任何系統。 我建議您從使用yum管理包的 Amazon Linux 開始:

在 AWS 中設置您的第一台 EC2 服務器

  • 接下來,選擇實例類型。 您可以將其理解為虛擬服務器的硬件規格。 您可以從t2.micro開始,因為您將在第一年使用此實例每月免費使用 750 小時。 請注意,這僅在您註冊之日起的第一年有效,並且適用於t2.micro實例。 如果您只想體驗一下 AWS,這很划算。

在 AWS 中設置您的第一台 EC2 服務器

  • 通過更詳細地配置服務器的能力,您可以啟動服務器。 第一次使用 EC2 時,您將看到類似於下圖的屏幕。 關於安全的警告告訴我們亞馬遜對安全方面的重視程度。 但是,在訪問有關託管服務的部分之前,我們可以忽略此警告。

在 AWS 中設置您的第一台 EC2 服務器

  • 最後,要訪問遠程服務器,我們需要一個身份。 AWS 將提示我們選擇一個 SSH 密鑰對,如下圖所示。 下載隱私密鑰文件並單擊啟動按鈕。 是的,我們完成了; 正在配置新的虛擬服務器,並將在幾分鐘內準備就緒。

在 AWS 中設置您的第一台 EC2 服務器

  • 實例準備就緒後,您可以使用您的隱私密鑰作為默認用戶ec2-user登錄系統。 ec2-user是 AWS 默認值,也具有 sudo 功能。 雖然無法更改默認用戶名,但您可以創建任何用戶並根據您的偏好分配適當的權限。 您的服務器地址可以在這裡找到:

在 AWS 中設置您的第一台 EC2 服務器

上面的過程應該不到五分鐘,這就是我們啟動和運行虛擬服務器的容易程度。 在下一節中,我們將了解 AWS 如何幫助我們管理剛剛創建的實例。

按需計費

大多數 AWS 資源都按小時計費,這提供了很好的靈活性。 例如,以我們剛剛創建的 EC2 實例為例,有兩種方法可以讓它停止服務:停止和終止。 這兩項操作都將停止計費。 不同之處在於,通過停止一個實例,我們可以稍後重新啟動它並保存我們所有的工作。 相反,通過終止實例,我們將實例返回給 AWS 進行回收,並且無法恢復信息。 默認情況下,AWS 設置每個區域每個賬戶 20 個實例的限制會導致終止實例的需要,並且停止的實例在終止之前仍會計數。

我們可以通過以下方式快速停止實例:

在 AWS 中設置您的第一台 EC2 服務器

當您停止 EC2 實例時,您的賬單也會停止增長。 它在以下場景中特別有用:

  • 當您想嘗試新事物時,如果您只需要支付幾個小時的費用,那麼成本會更高,而且您可能不會超過某些服務的免費套餐。
  • 當您的計算需求在生產環境中擴展時。 例如,在過去,我需要預留通常比峰值使用量多 30-50% 的計算資源。 使用 AWS,我可以以更靈活的方式預置資源:

在 AWS 中設置您的第一台 EC2 服務器

AWS 的定價信息可在線獲取。 經過一番計算,你可能會提出一個問題:AWS真的更便宜嗎? 通過將一個月的小時費率相乘,看起來它根本沒有競爭力。 答案是肯定的和否定的。

如果您僅計算一個月內按需資源的小時費率,AWS 並不便宜。 但是,我們仍然有預留實例計費選項,如下圖所示:

在 AWS 中設置您的第一台 EC2 服務器

對於最低資源要求,我們可以使用預留實例以及按按需實例計費的其他不同資源實現 30% 到 70% 的折扣。 在實踐中,一年承諾會便宜 30% 到 40%,而使用預留實例的三年承諾會更便宜。 這就是為什麼我會在上述問題上投“是”的原因。 如果您將安全和監控優勢包括在內,AWS 會更便宜。

管理服務

AWS 的目標之一是盡可能多地消除運營成本。 傳統上,我們需要一個龐大的系統工程師團隊來維護我們基礎設施的安全和健康,無論是在現場在線。 經驗豐富的團隊將編寫和部署他們的自動化工具來簡化流程。 然而,管理服務在實踐中也成為一個複雜的項目。 AWS 在幫助我們管理資源方面起到了救星的作用。 下面,我列出了 AWS 提供的一些最常用的服務:

  • AWS 安全組,
  • IAM,身份訪問管理,
  • 雲觀察,
  • 以及 OpsWorks 等自動部署服務的列表(本文不會涉及)。

AWS 安全組

AWS 如何處理服務的訪問控制是在兩個單獨的層中完成的。 在網絡層面,它是通過使用一種稱為“安全組”的概念來實現的。 所有 AWS 服務都在安全組中。 安全組決定誰可以通過。 以我們的 EC2 實例為例,AWS 自動為我們創建了一個安全組:

在 AWS 中設置您的第一台 EC2 服務器

我們可以通過配置入站/出站規則來決定什麼可以進來,什麼可以出去。 EC2 服務支持 TCP、UDP 和 ICMP 規則。 安全組就像一個外部硬件級別的防火牆,我們永遠不需要考慮修補它。

使用安全組的另一個優點是它是可重用的。 一個安全組可以在多個資源之間共享。 在實踐中,它消除了為每個資源一一設置安全策略的麻煩,大大提高了維護效率。 此外,安全組的可共享性使我們能夠在一個地方對其進行配置,並將該安全策略應用於任何其他資源,而無需為每個資源一個一個地手動設置它。

身份和訪問管理

AWS 提供了另一種使用 IAM 處理訪問控制的方法。 當您需要訪問 RESTful 接口時,這是一個應用程序級別的安全控制。 每個 REST 請求都必須簽名,以便 AWS 知道誰在訪問該服務。 此外,通過檢查預配置的策略列表,AWS 將確定是否應拒絕或允許該操作通過。

我們不會在本文中詳細介紹 IAM。 但是,請注意 AWS 對安全性進行了很多考慮,因此您可以確保沒有未經授權的訪問者可以訪問您的機密數據。

雲觀察

CloudWatch 是 AWS 提供的一項服務,用於從您的 AWS 資源中收集和跟踪各種指標。 它更強大,因為它能夠對某些事件(或警報)做出反應。 在 CloudWatch 的幫助下,我們可以監控新創建的 EC2 實例的運行狀況。

  • 我們可以快速向我們的 EC2 實例添加警報:

在 AWS 中設置您的第一台 EC2 服務器

  • 可以通過為許多不同目的指定標準來創建警報:

在 AWS 中設置您的第一台 EC2 服務器

注意:SNS 是 AWS 提供的基於主題的服務,用於發送通知。 通知可以通過電子郵件、短信、iOS/Android 推送通知和許多其他格式發送。

從監控到通知,CloudWatch 嘗試通過幾次點擊來自動化監控需求。 為各種 AWS 服務預定義了大量指標。 對於高級用戶,您甚至可以為您的應用程序創建自定義指標。

在成本方面,CloudWatch 提供的免費套餐服務通常對於初創項目來說已經足夠了。 但是,即使您的業務增長,增加的成本通常也不到服務成本的 1%。 查看詳細定價以獲取更多信息。 考慮到使用 CloudWatch 設置監控系統是多麼容易,它已成為最常用的監控工具。

無憂申請服務

作為開發人員,我們可能經歷過以下場景:

  • 我們的應用程序需要一個數據庫組件,這意味著我們必須:
    • 為數據庫獲取服務器。
    • 安裝數據庫軟件。
    • 為服務器和數據庫配置監視器。
    • 計劃備份方案。
    • 根據需要修補軟件。
    • 還有許多其他未在此處列出。
  • 我們的應用程序需要分佈式文件存儲,這意味著我們必須:
    • 查找用於分佈式文件存儲的現有開源(或商業)解決方案。
    • 準備所需的服務器。
    • 安裝和配置所選的解決方案,這通常並不簡單。
    • 為服務器和數據庫配置監視器
    • 還有許多其他未在此處列出
  • 我們的應用程序需要一個緩存。
  • 我們的應用程序需要一個消息隊列。
  • 還有很多其他需要解決的問題,另外,我們還需要做前置配置和後置監控工作。

而且,您可能已經猜到了,這是 AWS 提供幫助的另一個重要領域。 有很多應用程序級服務可用,因此您無需考慮其他任何事情。

讓我們介紹其中的一些,以便您快速了解一下。

RDS,為您管理但不是由您管理的數據庫

關係數據庫(RDBMS)已被許多應用程序廣泛採用。 在生產環境中,使用 RDBMS 部署應用程序時始終需要特別注意,首先是如何設置和配置數據庫,然後是何時以及如何進行備份和恢復。

在我們的團隊中,我們的數據庫管理員 (DBA) 曾經花費至少 30% 的時間來編寫設置和維護腳本。 隨著 AWS RDS 的引入,我們的 DBA 有更多時間進行 SQL 性能調優,這是您的 DBA 投資的首選領域。

那麼,RDS 為您提供什麼? 簡而言之:

  • RDS 支持大多數流行的數據庫引擎,包括 MySQL、SQLServer、PostgreSQL。
  • 只需單擊幾下即可創建一個數據庫,無論是節點還是集群。
  • RDS 在名為“Parameter Group”的服務下提供對共享數據庫參數的內置支持。
  • RDS 在 Security Group 的幫助下提供了對訪問管理的內置支持,這與我們在 EC2 中介紹的非常相似。
  • RDS 通過單擊啟用多可用區來提供附加服務。 所有監控、待機和故障切換都是自動完成的。
  • RDS 的維護和備份是自動化的。

總而言之,RDS 在設置和維護數據庫服務方面節省了大量時間。 作為交換,您將比相應的 EC2 服務器多支付約 40% 的費用。 因此,選擇 RDS 還是自行部署相應的服務器是一個業務決策。 但是,它確實允許您將更多時間投入到與實際業務相關的工作上,而不是基礎設施的穩定性和可擴展性上。 此外,您很快就會注意到這是 AWS 倡導的業務方式。

Dynamo DB,一種可擴展到數十億條記錄的鍵值存儲

NoSQL 已成為近年來最受歡迎的話題。 由於許多現實生活中的項目不需要各種關係 DBMS 的支持,因此向市場推出了一系列 NoSQL 數據庫。 亞馬遜在這方面並沒有落後。 DynamoDB (https://aws.amazon.com/dynamodb) 是亞馬遜在 2012 年宣布推出的鍵值存儲,該服務的核心貢獻者是全球超一流專家之一的亞馬遜 CTO Werner Vogels可擴展的系統。

亞馬遜處理大量流量已不是什麼秘密。 DynamoDB 源自 Dynamo,Dynamo 一直是亞馬遜許多業務的內部存儲引擎,包括每年聖誕節為數十億次請求提供服務的購物車服務。 DynamoDB 在擴展方面沒有限制。

此外,與 Cassandra 或 MongoDB 等其他 NoSQL 解決方案相比,DynamoDB 具有巨大的經濟優勢; 以預留吞吐量(每秒允許寫入/讀取多少次)為單位計費,可實時增減。 以下是 DynamoDB 與其他獨立 NoSQL 解決方案之間的成本對比表:

業務需求DynamoDB 服務DynamoDB 成本使用其他服務使用其他服務時的費用
小本生意
(少於 1000 DAU,16GB 數據)
10個寫單元
10個讀單元
9.07 美元/月 • t1.micro ••
16GB EBS •••
14.64 美元/月
中型企業
(少於 100k DAU,160GB 數據)
100個寫入單元
100 個讀取單元
101.62 美元/月m4.xlarge
160GB EBS
190.95 美元/月
大型企業
(高達 1m DAU,1TB 數據)
1000 寫入單位
1000 個讀取單元
852.58 美元/月集群 c4.4xlarge • 512GB EBS • 1329.24 美元/月

• 公平地說,價格是根據美國-東部地區的按需定價計算的
•• 選擇AWS EC2 實例來託管其他NoSQL 服務
••• EBS 是 AWS 提供的持久存儲服務

從表中我們可以看出,DynamoDB 提供開箱即用的服務,而且與構建自己的鍵值存儲相比,通常價格更低。 這是因為除非您達到 MongoDB/Cassandra 集群的最大容量,否則您會為從未使用過的東西支付更多費用。

亞馬遜以完全託管的方式提供其服務。 這意味著您不必擔心如何設置、擴展或監控您的 DynamoDB; 它們都是由 AWS 完成的。 事實上,讀寫 DynamoDB 項目總是以恆定的時間複雜度來衡量,而不管被操縱的數據的大小。 因此,一些應用程序在切換到 DynamoDB 後選擇丟棄緩存層。 確實很神奇。

SQS,分佈式隊列服務

在處理大量數據時,我們經常將計算分發到許多計算節點。 在全球開展業務時,我們經常需要管道來處理從分佈在地理範圍內的節點收集的數據。 為了幫助滿足此類事件的要求,AWS 引入了 SQS,即簡單隊列服務。 與許多公認的隊列服務一樣,SQS 提供了一種在不同邏輯組件之間以持久方式傳遞消息/作業的方法。

顧名思義,SQS 是 AWS 初期提供的一項基礎服務。 然而,亞馬遜一直在穩步開發 SQS,根據需要,SQS 可能與您需要的一樣簡單或強大,並帶有許多可自定義的參數。 SQS 的一些高級功能包括:

  • 將消息保留長達 14 天。
  • 用於避免故障事件中消息丟失的可見性機制。
  • 每條消息的傳遞延遲。
  • 重新驅動策略以處理失敗的消息(所謂的死信)。

隊列服務不應該太複雜。 您可能想知道為什麼值得用一整節來介紹 SQS。 或許你已經猜到原因了; 與其他 AWS 服務一樣,SQS 是一項完全託管的服務,這意味著:

  • 隊列具有高度可擴展性; 它可以是您正在傳遞的數十條消息或每秒數百萬條消息,因此 SQS 可以即時擴展。
  • 隊列是持久的和分佈式的,這意味著關鍵數據不會丟失,除非它們過期。
  • 您無需設置服務器即可部署隊列軟件。 當然,您也不需要為服務設置複雜的監控

S3,一個文件存儲,但不僅僅是一個文件存儲

S3 代表簡單存儲服務,就像 Dropbox 一樣為最終用戶提供服務,但這是針對應用程序的。 根據定義,S3 是具有簡單 Web 界面的基於對象的存儲。

S3 對用戶來說很簡單,但也帶有許多高級功能。 I S3 已成為行業標準,尤其是對於使用其他 AWS 服務的應用程序。 這主要是因為 S3 非常易於集成,以至於它已成為大多數 AWS 服務的流行外部存儲目標。 此外,許多服務,如 DynamoDB、SQS 等,在內部大量使用 S3。

了解 S3 應該會擴大使用其他 AWS 託管服務的好處。 這是因為大多數服務將其備份存儲在 S3 上。 此外,S3 是服務的常見導出/導入目的地,包括但不限於 DynamoDB、RDS 和 Redshift。

最後,S3 就像其他 AWS 服務一樣; 它是完全託管的,因此我們可以簡單地開始使用該服務,而無需設置任何服務器或故障轉移機制。 經濟方面,S3 也是按使用付費的服務,因此,您隨時可以免費試用。

更高級的服務和 SDK

還有許多其他 AWS 服務也值得注意。 由於篇幅有限,這裡只列出一些有趣的:

  • Redshift:基於列的數據庫,可用於以非常快速的方式處理數万億數據。 如果您負責大量數據的ETL,您必須嘗試一下。
  • 數據管道:I允許您在 AWS 服務之間快速傳輸數據,並進一步支持在更小的分片中定期處理數據。
  • ElastiCache:託管 Memcache 服務器,簡單但完美地完成工作。
  • Lambda:下一代云計算。 Lambda 以事件驅動的方式運行一段上傳的代碼,為設計分佈式應用程序打開了一扇新的大門。
  • Route53:強大的 DNS 解決方案,在其他工業標準 DNS 解決方案之上支持加權響應、基於地理位置的響應。
  • SNS:易於使用的通知服務,以訂閱者/發布者模式設計。
  • 還有很多。

我認為每當您向應用程序引入一些新組件時檢查 AWS 是一個好習慣。 大多數情況下,AWS 會給您一個驚喜,因為它會提供現成的 SaaS 替代方案。

此外,為了更容易訪問 RESTful 接口,亞馬遜提供了幾乎所有流行編程語言的 SDK。 找到自己喜歡的 SDK 應該沒有問題。

概括

我們在本文中介紹了 AWS 的一些最廣泛使用的服務。 可以肯定的是,AWS 將在某些領域為您的業務提供幫助。 例如,您可以選擇將現有服務組件遷移到其 AWS 等效組件,例如將 MySQL 數據庫遷移到 RDS。 您可能會問自己是否有任何適用於我的軟件組件的 AWS 服務? 因此,立即獲得一個 AWS 賬戶,並在幾分鐘內提高您的工作效率。


進一步閱讀 Toptal 工程博客:

  • 在雲中為雲開發:在 AWS 中使用 Docker 進行大數據開發
  • 做好功課:7 個 AWS 認證解決方案架構師考試技巧
  • 使用 AWS SSM 的 SSH 日誌記錄和會話管理
  • 使用 TypeScript 和 Jest 支持:AWS SAM 教程