記錄一次AWS架構面試內容

来源:https://www.cnblogs.com/csy2019/archive/2019/05/17/10880593.html
-Advertisement-
Play Games

最近參加了一次AWS 架構師的面試,吐槽一下整個面試時間相當的長,幾乎經歷了半年左右,但是我也是抱著學習偉大的AWS雲產品的態度所以在整個過程中學到不少的雲產品的功能、設計等知識,所以說還是相當有益處的。前面的幾關解答客戶需求筆試還是相當順利,雖然最後在視頻面試會議中對可用區的概念上是被認為是不瞭解 ...


最近參加了一次AWS 架構師的面試,吐槽一下整個面試時間相當的長,幾乎經歷了半年左右,但是我也是抱著學習偉大的AWS雲產品的態度所以在整個過程中學到不少的雲產品的功能、設計等知識,所以說還是相當有益處的。
前面的幾關解答客戶需求筆試還是相當順利,雖然最後在視頻面試會議中對可用區的概念上是被認為是不瞭解,終止面試,但是最起碼對整個AWS雲產品,包括在實際應用中如何為客戶選擇有了一定的認識。
言歸正傳記錄一下麵試的內容和思路

面試內容引用原文:

BRIEF
Imagine that you meet with a small startup company in the early stages of their
operations. Currently their architecture uses a LAMP stack with MySQL, Apache and PHP all running on one desktop PC within their small office. Like many small start-ups they are confident that they will be the next big thing and expect significant, rapid, yet un-quantified growth in the next few months. With this in mind, they are concerned about:
scaling to meet the demand, but with uncertainty around when and how much this
demand will be they are very concerned about buying too much infrastructure too
soon or not enough too late!
their lack of provision for Disaster Recovery
their ability to configure their database and data access layer for high performance and throughput
making the user experience in the browser very low latency even though a large
portion of their user base will be from far away
effective distribution of load
a self-healing infrastructure that recovers from failed service instances
security of data at rest and in transit
securing access to the environment as the delivery team expands
an archival strategy for inactive objects greater than 6 months
ability to easily manage and replicate multiple environments based on their blueprint architecture
OBJECTIVE
Recommend a manageable, secure, scalable, high performance, efficient, elastic, highly available, fault tolerant and recoverable architecture that allows the startup to organically grow. The architecture should specifically address the requirements/concerns as described above.
DELIVERABLES
(1) A well written document in PDF format with no more than 6 pages.
(Note: The proposal should be a document, not slides.)
(2) Clearly and succinctly present an analysis of the startups requirements of how and why use every AWS services specifically based on your understanding.
(3) Proposed architecture diagram give a detailed description for your architecture diagram and explained why you choose this solution. (4) Clearly state all assumptions and references made during the design and explicitly state the referenced Amazon Web Services.

Executive Summary

Requirements Analysis

客戶採用的是典型的LAMP stack,系統通常會劃分為web層,app層,數據層,根據客戶的想法和關心可以通過如下幾方面闡述:

擴大規模以滿足需求,但由於不確定這個需求的時間和程度,他們非常擔心過早購買過多的基礎設施或者太晚了!

說明用戶對未來規模不確定,如果過早投入必然造成資源和成本的浪費,太遲則可能會阻礙企業的發展。這樣就要求雲計算具有彈性伸縮的能力,可以根據流量自動擴大或縮小服務的規模。
解決:可以使用 Amazon EC2 Auto Scaling 確保 EC2 隊列的可用性並根據其需求自動擴展和縮減該隊列,以最大限度提高性能和降低成本,同時實例類型可以採用按需實例,實際消耗的計算容量支付費用,而不是預留實例。

針對缺乏災難恢復機制

自建機房部署方式如果出現故障會造成災難性的後果,即使恢復也可能丟失掉部分數據。做為雲計算需要有快速恢復故障的能力同時確保數據的不丟失,
解決:採用Amazon EC2實例恢復的機制,如果實例出現問題,替代實例可以在其中以可預見的方式快速啟動。Amazon RDS使用了由主資料庫和備資料庫構成的高可用資料庫,通常備用實例也是存放在其他可用區中,Amazon RDS 會將數據同步複製到其他可用區 (AZ) 的備用實例中,同時設置資料庫的快照。另外在發生硬體故障的情況下,Amazon RDS 將自動更換用於支持部署的計算實例。

他們能夠配置資料庫和數據訪問層以實現高性能和吞吐量

解決:可以通過Performance Insights分析和調整RDS 資料庫性能,幫助客戶快速評估關係資料庫工作負載的性能。
另外提高性能需要註意的有以下措施:
1、在配置方面可以採用高性能的存儲類型(IOPS(SSD))保證資料庫提供高性能的讀寫操作;
2、通過多個只讀副本讀寫分離,從而負載資料庫的訪問;
3、高性能資料庫必要的時候通過緩存減少資料庫訪問次數。

儘管他們的大部分用戶群來自遠方,但使用戶在瀏覽器中的體驗延遲非常低

要求我們的應用可以被遠端用戶以最小的網路延遲被訪問,通常是採用CDN方式.
解決:通過CloudFront能夠使的邊緣站點緩存靜態數據,加速分配給最終用戶的 Web 服務。

effective distribution of load

解決方案:EC2 可以通過Elastic Load Balancing 分發流量到後端多個應用實例,根據流量的負載情況自動擴展。
通過使用Elasticache 緩存應用數據來減少資料庫讀取的壓力。
數據查詢通過資料庫的只讀副本的方式,針對進行大量讀取操作的資料庫負載靈活地進行擴展。

有效分配負載一個自我修複的基礎架構,可以從失敗的服務實例中恢復

要求服務實例具有在失敗中恢復的能力。
解決:通過 Cloudwatch中定義的報警指標檢測auto-scaling
您可以創建 Amazon CloudWatch 警報來監控 Amazon EC2 實例。如果實例因需要 AWS 參與才能修複的基礎硬體故障或問題而受損,可自動恢復實例。

靜態和傳輸中的數據安全性

解決:作為web層提供服務給用戶採用https的方式,用戶可以通過AWS Certificate Manager 來申請 SSL 證書。
數據安全通常做法在數據傳輸過程和存儲能夠加密的形式。
數據存儲的安全性通常的做法是使用加密演算法存儲數據,
對數據在傳輸過程中的安全,由於VPC起到了隔離資源的作用。那麼在網路層可以僅由客戶使用IAM給定的特權來建立連接。數據在運輸過程中可以通過SSL / TLS傳輸協議。

在交付團隊擴展時保護對環境的訪問,

解決:使用IAM定義,用戶,角色,和組的不同許可權,針對不同資源向不同人員授予不同許可權, 例如,您可以允許某些用戶完全訪問 Amazon Elastic Compute Cloud (Amazon EC2)、Amazon Simple Storage Service (Amazon S3)、Amazon DynamoDB、Amazon Redshift 和其他 AWS 服務。對於另一些用戶,您可以允許僅針對某些 S3 存儲桶的只讀訪問許可權,或是僅管理某些 EC2 實例的許可權,或是訪問您的賬單信息但無法訪問任何其他內容的許可權。不必共用您的密碼或訪問密鑰。

因為交付團隊擴展了超過6個月的非活動對象的歸檔策略:

需要有一個存儲檔案的容器可以定期存在相關的日誌和非活動的對象。
解決:S3 可用來持久化靜態對象,例如,部署歸檔文件,腳本,資料庫備份文件和日誌,媒體文件等。

可以根據其藍圖架構輕鬆管理和複製多個環境。

解決:如果複製到不同region,可以採用AWS CloudFormation ,它提供了一種通用語言來描述和預配置您的雲環境中的所有基礎設施資源。CloudFormation 使您可以跨所有地區和賬戶使用簡單的文本文件以自動化的安全方式為您的應用程式需要的所有資源建模並對其進行預配置。
另外可以使用BeanStalk,通過使用BeanStalk快速部署PHP應用程式

Solution Design

系統架構圖:

使用了一個網上線上製圖網站Freedgo Design 其訪問地址為: https://www.freedgo.com.
freedgo Design 是一個多種類型圖表的線上繪製軟體,讓您創建 阿裡雲架構圖 騰訊雲架構圖 Oracle雲架構圖 AWS系統部署圖 軟體架構圖, UML,BPMN,ERD,流程圖,UX設計圖,ANT DESIGN,思維導圖,圖表。 可以做到註冊用戶免費使用。
具體繪製步驟如下:

  • 打開 Freedgo Design註冊頁面 , 先點擊註冊成為註冊用戶,Freedgo Design提供郵箱、微信、QQ、微博等多種註冊方式。
  • 註冊成功後,點擊 開始製作 按鈕,然後就進入製圖工具頁面進行繪製。
  • 選擇菜單文件-> 從類型中新建 -> 雲架構 -> AWS

架構預覽

Design Detail

網路層

Route53:實現的DNS功能變數名稱解析服務,通過CNAME連接到CloudFront endpoint 。
cloudFront: 實現全球內容發佈網路,用戶請求將被引導到最低延遲的節點,提供傳送的內容最佳性能,需要設置cloudFront 設置訪問源為應用的ELB節點。
AWS Regoin 是應用部署的區域,一個Region可以有A-Z可用區。

Route53: Implemented the DNS domain name resolution service, connecting to the CloudFront endpoint via CNAME.
cloudFront: Implementing a global content delivery network, user requests will be directed to the lowest latency node, providing the best performance for the delivered content. You need to set the cloudFront to set the access source to the application’s ELB node.
AWS Regoin is the area where the application is deployed. A Region can have an A-Z Availability Zone.

應用層

autoScaling:
Auto Scaling與 ELB 集成來實現應用服務的可用性和擴展性,將ELB附加到現有 Auto Scaling組實現負載均衡,它能夠自動註冊組內的實例,並將傳入請求分配給這些實例。 在可用性方面,如果有服務失敗宕機,那麼auto-scaling 能夠迅速發現問題機器並啟動一臺新的機器,持續服務。在擴展性方面使用 Auto Scaling,可以設置Min/MaX/參數實現自動擴縮 EC2 的服務實例數量。 AutoScaling組中的每個實例都在不同的可用區,防止在可用區發生故障

數據層

elasticache:
使用ElastiCache Redis 提高生產部署的可靠性,緩解前端請求對資料庫訪問的壓力,降低延遲,還可以起到防災、減災的作用。
Redis 複製組包含一個應用程式可讀寫入的主節點和 2個只讀副本節點。在向主節點寫入數據時,也會在只讀副本節點上非同步更新數據。 這樣可以有效的防止節點故障,而在兩個可用區各分別部署一個集群服務,主要是為了避免可用區故障。
DataBase:
資料庫負責資料庫的高可用和高性能的數據存儲,一個高可用的資料庫通常包含兩個資料庫實例:一個主資料庫和備用資料庫。當所有請求發送到主資料庫時,由 RDS實例來負責響應伺服器請求,完成對數據的讀寫操作。主和備用資料庫之間的數據同步複製。如果主資料庫由於硬體或網路故障而不可用時,RDS會自動偵測到故障,啟動故障轉移過程,備用資料庫將成為了主資料庫,同時DNS也會自動更新,來實現快速故障轉移。

VPC&安全組設置

每一層都設計了安全組和子網,能夠更加有效提供安全保障機制。
在應用層autoScaling的安全控制中定義允許如何位置的訪問應用的80和443埠,允許互聯網的用戶訪問入口, 定義ssh 22埠 指定特定位置的訪問。
數據層設置安全組的入站策略中定義允許應用訪問MYSQL/Aurora的3306埠
Elasticache安全組的入站策略中定義允許應用訪問自定義TCP訪問redis的埠

監控

系統可以通過使用CloudWatch來監控整個系統的記憶體使用率、處理器利用率、緩存命中率等一系列指標來監控伺服器運行狀況。

Summary

創業公司提出的需求正是雲平臺提供商所要解決的問題,如何提供可管理的,高性能,高可用,安全的基礎服務平臺,同時方便用戶日常的維護,發佈和應對突發事件的能力。
高性能:也是客戶非常關註的,AWS幾乎覆蓋全世界11個主要區域,42個可用區,52個邊緣站點,在提供高可用的服務同時,也能夠提供高性能服務。AWS在各個層提供了各種類型的主機類型,記憶體優化,存儲優化等等,適應不同的需求。
高可用性:無論是APP層的AutoScaling、資料庫、S3都會提供若幹應用的副本,而且是在不同的可用區,這個可以保證一個可用區不可用時,應用可以快速切換到另外的可用區,做到高可用。
安全性:AWS通過自動監控系統可以做到保護網路和增強互聯網接入的安全性,通過VPC和安全組的控制,做到網路的安全性和隔離。

References

線上製圖工具: https://www.freedgo.com
Router53 使用:https://www.cnblogs.com/huang0925/p/3684348.html
Cloudfront: https://console.aws.amazon.com/cloudfront/home?region=us-east-2
Route 53 console:
RDS console: https://us-east-2.console.aws.amazon.com/rds/home?region=us-east-2#database:id=csydb;is-cluster=false

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 給父元素添加同每行展示列數一樣(展示列表最多的)的子元素。 子元素設置樣式: width:同子元素一樣的width ; height:0; ...
  • 在使用Ajax跨域請求時,如果設置Header的ContentType為application/json,會分兩次發送請求。第 一次先發送Method為OPTIONS的請求到伺服器,這個請求會詢問伺服器支持哪些請求方法(GET,POST等), 支持哪些請求頭等等伺服器的支持情況。等到這個請求返回後, ...
  • 使用vue-video-player在移動端微信內置瀏覽器打開,點擊視頻自動全屏問題。 參考官方 API 是 H5 同層瀏覽器的原因,可通過設置video屬性來處理。 ...
  • Uploading Resources to the Web Resource Repository Prerequisites You have been assigned the Content Administrator role. Context You can upload Web res ...
  • 優點:利於搜索引擎,解決白屏問題,因為正常情況下在index.html文件中只有一個簡單的標簽,沒有內容,不利於爬蟲搜索 場景:交互少,數據多,例如新聞,博客,論壇類等 原理:相當於服務端前面加了一層url分配,可以假想為服務端的中間層, 當地址欄url改變或者直接刷新,其實直接從伺服器返回內容,是 ...
  • 作者: 阮一峰 日期: 2015年7月10日 網頁佈局(layout)是 CSS 的一個重點應用。 佈局的傳統解決方案,基於盒狀模型,依賴 display 屬性 + position屬性 + float屬性。它對於那些特殊佈局非常不方便,比如,垂直居中就不容易實現。 2009年,W3C 提出了一種新 ...
  • saltstack數據系統 數據系統Grains 1、Grains是SaltStack收集的有關底層管理系統的靜態信息。包括操作系統版本、功能變數名稱、IP地址、記憶體、內核、CPU、操作系統類型以及許多其他系統屬性。Minion 收集的信息,可以作為Master端匹配目標。2、如果需要自定義grains,需 ...
  • 模板方法模式就是在父(基)類定義模板(流程),而具體的處理環節交給子類來實現 附錄 github.com/maikec/patt… 個人GitHub設計模式案例 聲明 引用該文檔請註明出處 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...