摘要:最近參加了一次架構師的面試,吐槽一下整個面試時間相當的長,幾乎經歷了半年左右,但是我也是抱著學習偉大的云產品的態度所以在整個過程中學到不少的云產品的功能設計等知識,所以說還是相當有益處的。
最近參加了一次AWS 架構師的面試,吐槽一下整個面試時間相當的長,幾乎經歷了半年左右,但是我也是抱著學習偉大的AWS云產品的態度所以在整個過程中學到不少的云產品的功能、設計等知識,所以說還是相當有益處的。
前面的幾關解答客戶需求筆試還是相當順利,雖然最后在視頻面試會議中對可用區的概念上是被認為是不了解,終止面試,但是最起碼對整個AWS云產品,包括在實際應用中如何為客戶選擇有了一定的認識。
言歸正傳記錄一下面試的內容和思路
面試內容引用原文:
BRIEFExecutive Summary Requirements Analysis
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.
客戶采用的是典型的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 服務。
解決方案: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應用程序
使用了一個網上在線制圖網站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也會自動更新,來實現快速故障轉移。
每一層都設計了安全組和子網,能夠更加有效提供安全保障機制。
在應用層autoScaling的安全控制中定義允許如何位置的訪問應用的80和443端口,允許互聯網的用戶訪問入口, 定義ssh 22端口 指定特定位置的訪問。
數據層設置安全組的入站策略中定義允許應用訪問MYSQL/Aurora的3306端口 Elasticache安全組的入站策略中定義允許應用訪問自定義TCP訪問redis的端口監控
系統可以通過使用CloudWatch來監控整個系統的內存使用率、處理器利用率、緩存命中率等一系列指標來監控服務器運行狀況。
Summary創業公司提出的需求正是云平臺提供商所要解決的問題,如何提供可管理的,高性能,高可用,安全的基礎服務平臺,同時方便用戶日常的維護,發布和應對突發事件的能力。
高性能:也是客戶非常關注的,AWS幾乎覆蓋全世界11個主要區域,42個可用區,52個邊緣站點,在提供高可用的服務同時,也能夠提供高性能服務。AWS在各個層提供了各種類型的主機類型,內存優化,存儲優化等等,適應不同的需求。
高可用性:無論是APP層的AutoScaling、數據庫、S3都會提供若干應用的副本,而且是在不同的可用區,這個可以保證一個可用區不可用時,應用可以快速切換到另外的可用區,做到高可用。
安全性:AWS通過自動監控系統可以做到保護網絡和增強互聯網接入的安全性,通過VPC和安全組的控制,做到網絡的安全性和隔離。
在線制圖工具: https://www.freedgo.com
Router53 使用:https://www.cnblogs.com/huang...
Cloudfront: https://console.aws.amazon.co...
Route 53 console:
RDS console: https://us-east-2.console.aws...:id=csydb;is-cluster=false
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74517.html
前言 在若干次前的一場面試,面試官看我做過python爬蟲/后端 的工作,順帶問了我些后端相關的問題:你覺得什么是后端? 送命題。當時腦瓦特了,答曰:邏輯處理和數據增刪改查。。。 showImg(https://user-gold-cdn.xitu.io/2019/4/24/16a4ed4fc8c18078); 當場被懟得體無完膚,羞愧難當。事后再反思這問題,結合資料總結了一下。發現自己學過的Re...
摘要:原文作者無服務器架構是指一個應用大量依賴第三方服務后端即服務,,簡稱,或者把代碼交由托管的短生命周期的容器中執行函數即服務,,簡稱。這些服務最早被稱為,下文將對此簡稱為。是目前的熱門實現之一,下文將對此簡稱為。它同樣經由網關暴露給外部使用。 譯注: 為了便于對照參考,Serverless、BaaS 等術語文中不做翻譯。 原文很長,這里分成上下兩篇。翻譯過程在 GitHub 上進行。...
摘要:初版在年月發布,隨后在月正式發布。架構屬于平臺即服務,針對事件驅動,短暫性的工作負載。架構平臺選擇目前最有效構建架構方法是在眾多架構平臺中選擇其一,并充分利用它所有的功能,以下將列舉幾個架構平臺亞馬遜推出了第一個的云服務平臺。 showImg(https://segmentfault.com/img/remote/1460000009775604?w=640&h=356); 數人云近來...
摘要:重新修改圖片大小然后上傳到亞馬遜,是最常見用于解釋事件驅動的示例,計算即服務平臺的仍然保留了這個例子,如下圖一個圖片被上傳到一個桶中,觸發一個執行函數的事件。無服務器架構代表了一種非常不同的心態。 為什么一名開發者應該使用AWS Lambda?簡單一句話的說,AWS Lambda-是另外一種事件驅動方式,fu...
閱讀 3561·2023-04-26 02:10
閱讀 1299·2021-11-22 15:25
閱讀 1668·2021-09-22 10:02
閱讀 907·2021-09-06 15:02
閱讀 3469·2019-08-30 15:55
閱讀 600·2019-08-30 13:58
閱讀 2775·2019-08-30 12:53
閱讀 3042·2019-08-29 12:38