摘要:最近參加了一次架構(gòu)師的面試,吐槽一下整個面試時間相當?shù)拈L,幾乎經(jīng)歷了半年左右,但是我也是抱著學習偉大的云產(chǎn)品的態(tài)度所以在整個過程中學到不少的云產(chǎn)品的功能設(shè)計等知識,所以說還是相當有益處的。
最近參加了一次AWS 架構(gòu)師的面試,吐槽一下整個面試時間相當?shù)拈L,幾乎經(jīng)歷了半年左右,但是我也是抱著學習偉大的AWS云產(chǎn)品的態(tài)度所以在整個過程中學到不少的云產(chǎn)品的功能、設(shè)計等知識,所以說還是相當有益處的。
前面的幾關(guān)解答客戶需求筆試還是相當順利,雖然最后在視頻面試會議中對可用區(qū)的概念上是被認為是不了解,終止面試,但是最起碼對整個AWS云產(chǎn)品,包括在實際應(yīng)用中如何為客戶選擇有了一定的認識。
言歸正傳記錄一下面試的內(nèi)容和思路
面試內(nèi)容引用原文:
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,系統(tǒng)通常會劃分為web層,app層,數(shù)據(jù)層,根據(jù)客戶的想法和關(guān)心可以通過如下幾方面闡述:
擴大規(guī)模以滿足需求,但由于不確定這個需求的時間和程度,他們非常擔心過早購買過多的基礎(chǔ)設(shè)施或者太晚了!說明用戶對未來規(guī)模不確定,如果過早投入必然造成資源和成本的浪費,太遲則可能會阻礙企業(yè)的發(fā)展。這樣就要求云計算具有彈性伸縮的能力,可以根據(jù)流量自動擴大或縮小服務(wù)的規(guī)模。
解決:可以使用 Amazon EC2 Auto Scaling 確保 EC2 隊列的可用性并根據(jù)其需求自動擴展和縮減該隊列,以最大限度提高性能和降低成本,同時實例類型可以采用按需實例,實際消耗的計算容量支付費用,而不是預留實例。
自建機房部署方式如果出現(xiàn)故障會造成災(zāi)難性的后果,即使恢復也可能丟失掉部分數(shù)據(jù)。做為云計算需要有快速恢復故障的能力同時確保數(shù)據(jù)的不丟失,
解決:采用Amazon EC2實例恢復的機制,如果實例出現(xiàn)問題,替代實例可以在其中以可預見的方式快速啟動。Amazon RDS使用了由主數(shù)據(jù)庫和備數(shù)據(jù)庫構(gòu)成的高可用數(shù)據(jù)庫,通常備用實例也是存放在其他可用區(qū)中,Amazon RDS 會將數(shù)據(jù)同步復制到其他可用區(qū) (AZ) 的備用實例中,同時設(shè)置數(shù)據(jù)庫的快照。另外在發(fā)生硬件故障的情況下,Amazon RDS 將自動更換用于支持部署的計算實例。
解決:可以通過Performance Insights分析和調(diào)整RDS 數(shù)據(jù)庫性能,幫助客戶快速評估關(guān)系數(shù)據(jù)庫工作負載的性能。
另外提高性能需要注意的有以下措施:
1、在配置方面可以采用高性能的存儲類型(IOPS(SSD))保證數(shù)據(jù)庫提供高性能的讀寫操作;
2、通過多個只讀副本讀寫分離,從而負載數(shù)據(jù)庫的訪問;
3、高性能數(shù)據(jù)庫必要的時候通過緩存減少數(shù)據(jù)庫訪問次數(shù)。
要求我們的應(yīng)用可以被遠端用戶以最小的網(wǎng)絡(luò)延遲被訪問,通常是采用CDN方式.
解決:通過CloudFront能夠使的邊緣站點緩存靜態(tài)數(shù)據(jù),加速分配給最終用戶的 Web 服務(wù)。
解決方案:EC2 可以通過Elastic Load Balancing 分發(fā)流量到后端多個應(yīng)用實例,根據(jù)流量的負載情況自動擴展。
通過使用Elasticache 緩存應(yīng)用數(shù)據(jù)來減少數(shù)據(jù)庫讀取的壓力。
數(shù)據(jù)查詢通過數(shù)據(jù)庫的只讀副本的方式,針對進行大量讀取操作的數(shù)據(jù)庫負載靈活地進行擴展。
要求服務(wù)實例具有在失敗中恢復的能力。
解決:通過 Cloudwatch中定義的報警指標檢測auto-scaling
您可以創(chuàng)建 Amazon CloudWatch 警報來監(jiān)控 Amazon EC2 實例。如果實例因需要 AWS 參與才能修復的基礎(chǔ)硬件故障或問題而受損,可自動恢復實例。
解決:作為web層提供服務(wù)給用戶采用https的方式,用戶可以通過AWS Certificate Manager 來申請 SSL 證書。
數(shù)據(jù)安全通常做法在數(shù)據(jù)傳輸過程和存儲能夠加密的形式。
數(shù)據(jù)存儲的安全性通常的做法是使用加密算法存儲數(shù)據(jù),
對數(shù)據(jù)在傳輸過程中的安全,由于VPC起到了隔離資源的作用。那么在網(wǎng)絡(luò)層可以僅由客戶使用IAM給定的特權(quán)來建立連接。數(shù)據(jù)在運輸過程中可以通過SSL / TLS傳輸協(xié)議。
解決:使用IAM定義,用戶,角色,和組的不同權(quán)限,針對不同資源向不同人員授予不同權(quán)限, 例如,您可以允許某些用戶完全訪問 Amazon Elastic Compute Cloud (Amazon EC2)、Amazon Simple Storage Service (Amazon S3)、Amazon DynamoDB、Amazon Redshift 和其他 AWS 服務(wù)。對于另一些用戶,您可以允許僅針對某些 S3 存儲桶的只讀訪問權(quán)限,或是僅管理某些 EC2 實例的權(quán)限,或是訪問您的賬單信息但無法訪問任何其他內(nèi)容的權(quán)限。不必共享您的密碼或訪問密鑰。
因為交付團隊擴展了超過6個月的非活動對象的歸檔策略:需要有一個存儲檔案的容器可以定期存在相關(guān)的日志和非活動的對象。
解決:S3 可用來持久化靜態(tài)對象,例如,部署歸檔文件,腳本,數(shù)據(jù)庫備份文件和日志,媒體文件等。
解決:如果復制到不同region,可以采用AWS CloudFormation ,它提供了一種通用語言來描述和預配置您的云環(huán)境中的所有基礎(chǔ)設(shè)施資源。CloudFormation 使您可以跨所有地區(qū)和賬戶使用簡單的文本文件以自動化的安全方式為您的應(yīng)用程序需要的所有資源建模并對其進行預配置。
另外可以使用BeanStalk,通過使用BeanStalk快速部署PHP應(yīng)用程序
使用了一個網(wǎng)上在線制圖網(wǎng)站Freedgo Design 其訪問地址為: https://www.freedgo.com.
freedgo Design 是一個多種類型圖表的在線繪制軟件,讓您創(chuàng)建 阿里云架構(gòu)圖 騰訊云架構(gòu)圖 Oracle云架構(gòu)圖 AWS系統(tǒng)部署圖 軟件架構(gòu)圖, UML,BPMN,ERD,流程圖,UX設(shè)計圖,ANT DESIGN,思維導圖,圖表。 可以做到注冊用戶免費使用。
具體繪制步驟如下:
打開 Freedgo Design注冊頁面 , 先點擊注冊成為注冊用戶,F(xiàn)reedgo Design提供郵箱、微信、QQ、微博等多種注冊方式。
注冊成功后,點擊 開始制作 按鈕,然后就進入制圖工具頁面進行繪制。
選擇菜單文件-> 從類型中新建 -> 云架構(gòu) -> AWS
架構(gòu)預覽 Design Detail 網(wǎng)絡(luò)層Route53:實現(xiàn)的DNS域名解析服務(wù),通過CNAME連接到CloudFront endpoint 。
cloudFront: 實現(xiàn)全球內(nèi)容發(fā)布網(wǎng)絡(luò),用戶請求將被引導到最低延遲的節(jié)點,提供傳送的內(nèi)容最佳性能,需要設(shè)置cloudFront 設(shè)置訪問源為應(yīng)用的ELB節(jié)點。
AWS Regoin 是應(yīng)用部署的區(qū)域,一個Region可以有A-Z可用區(qū)。
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 集成來實現(xiàn)應(yīng)用服務(wù)的可用性和擴展性,將ELB附加到現(xiàn)有 Auto Scaling組實現(xiàn)負載均衡,它能夠自動注冊組內(nèi)的實例,并將傳入請求分配給這些實例。 在可用性方面,如果有服務(wù)失敗宕機,那么auto-scaling 能夠迅速發(fā)現(xiàn)問題機器并啟動一臺新的機器,持續(xù)服務(wù)。在擴展性方面使用 Auto Scaling,可以設(shè)置Min/MaX/參數(shù)實現(xiàn)自動擴縮 EC2 的服務(wù)實例數(shù)量。 AutoScaling組中的每個實例都在不同的可用區(qū),防止在可用區(qū)發(fā)生故障
elasticache:
使用ElastiCache Redis 提高生產(chǎn)部署的可靠性,緩解前端請求對數(shù)據(jù)庫訪問的壓力,降低延遲,還可以起到防災(zāi)、減災(zāi)的作用。
Redis 復制組包含一個應(yīng)用程序可讀寫入的主節(jié)點和 2個只讀副本節(jié)點。在向主節(jié)點寫入數(shù)據(jù)時,也會在只讀副本節(jié)點上異步更新數(shù)據(jù)。 這樣可以有效的防止節(jié)點故障,而在兩個可用區(qū)各分別部署一個集群服務(wù),主要是為了避免可用區(qū)故障。
DataBase:
數(shù)據(jù)庫負責數(shù)據(jù)庫的高可用和高性能的數(shù)據(jù)存儲,一個高可用的數(shù)據(jù)庫通常包含兩個數(shù)據(jù)庫實例:一個主數(shù)據(jù)庫和備用數(shù)據(jù)庫。當所有請求發(fā)送到主數(shù)據(jù)庫時,由 RDS實例來負責響應(yīng)服務(wù)器請求,完成對數(shù)據(jù)的讀寫操作。主和備用數(shù)據(jù)庫之間的數(shù)據(jù)同步復制。如果主數(shù)據(jù)庫由于硬件或網(wǎng)絡(luò)故障而不可用時,RDS會自動偵測到故障,啟動故障轉(zhuǎn)移過程,備用數(shù)據(jù)庫將成為了主數(shù)據(jù)庫,同時DNS也會自動更新,來實現(xiàn)快速故障轉(zhuǎn)移。
每一層都設(shè)計了安全組和子網(wǎng),能夠更加有效提供安全保障機制。
在應(yīng)用層autoScaling的安全控制中定義允許如何位置的訪問應(yīng)用的80和443端口,允許互聯(lián)網(wǎng)的用戶訪問入口, 定義ssh 22端口 指定特定位置的訪問。
數(shù)據(jù)層設(shè)置安全組的入站策略中定義允許應(yīng)用訪問MYSQL/Aurora的3306端口 Elasticache安全組的入站策略中定義允許應(yīng)用訪問自定義TCP訪問redis的端口監(jiān)控
系統(tǒng)可以通過使用CloudWatch來監(jiān)控整個系統(tǒng)的內(nèi)存使用率、處理器利用率、緩存命中率等一系列指標來監(jiān)控服務(wù)器運行狀況。
Summary創(chuàng)業(yè)公司提出的需求正是云平臺提供商所要解決的問題,如何提供可管理的,高性能,高可用,安全的基礎(chǔ)服務(wù)平臺,同時方便用戶日常的維護,發(fā)布和應(yīng)對突發(fā)事件的能力。
高性能:也是客戶非常關(guān)注的,AWS幾乎覆蓋全世界11個主要區(qū)域,42個可用區(qū),52個邊緣站點,在提供高可用的服務(wù)同時,也能夠提供高性能服務(wù)。AWS在各個層提供了各種類型的主機類型,內(nèi)存優(yōu)化,存儲優(yōu)化等等,適應(yīng)不同的需求。
高可用性:無論是APP層的AutoScaling、數(shù)據(jù)庫、S3都會提供若干應(yīng)用的副本,而且是在不同的可用區(qū),這個可以保證一個可用區(qū)不可用時,應(yīng)用可以快速切換到另外的可用區(qū),做到高可用。
安全性:AWS通過自動監(jiān)控系統(tǒng)可以做到保護網(wǎng)絡(luò)和增強互聯(lián)網(wǎng)接入的安全性,通過VPC和安全組的控制,做到網(wǎng)絡(luò)的安全性和隔離。
在線制圖工具: 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
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/74517.html
前言 在若干次前的一場面試,面試官看我做過python爬蟲/后端 的工作,順帶問了我些后端相關(guān)的問題:你覺得什么是后端? 送命題。當時腦瓦特了,答曰:邏輯處理和數(shù)據(jù)增刪改查。。。 showImg(https://user-gold-cdn.xitu.io/2019/4/24/16a4ed4fc8c18078); 當場被懟得體無完膚,羞愧難當。事后再反思這問題,結(jié)合資料總結(jié)了一下。發(fā)現(xiàn)自己學過的Re...
摘要:原文作者無服務(wù)器架構(gòu)是指一個應(yīng)用大量依賴第三方服務(wù)后端即服務(wù),,簡稱,或者把代碼交由托管的短生命周期的容器中執(zhí)行函數(shù)即服務(wù),,簡稱。這些服務(wù)最早被稱為,下文將對此簡稱為。是目前的熱門實現(xiàn)之一,下文將對此簡稱為。它同樣經(jīng)由網(wǎng)關(guān)暴露給外部使用。 譯注: 為了便于對照參考,Serverless、BaaS 等術(shù)語文中不做翻譯。 原文很長,這里分成上下兩篇。翻譯過程在 GitHub 上進行。...
摘要:初版在年月發(fā)布,隨后在月正式發(fā)布。架構(gòu)屬于平臺即服務(wù),針對事件驅(qū)動,短暫性的工作負載。架構(gòu)平臺選擇目前最有效構(gòu)建架構(gòu)方法是在眾多架構(gòu)平臺中選擇其一,并充分利用它所有的功能,以下將列舉幾個架構(gòu)平臺亞馬遜推出了第一個的云服務(wù)平臺。 showImg(https://segmentfault.com/img/remote/1460000009775604?w=640&h=356); 數(shù)人云近來...
摘要:重新修改圖片大小然后上傳到亞馬遜,是最常見用于解釋事件驅(qū)動的示例,計算即服務(wù)平臺的仍然保留了這個例子,如下圖一個圖片被上傳到一個桶中,觸發(fā)一個執(zhí)行函數(shù)的事件。無服務(wù)器架構(gòu)代表了一種非常不同的心態(tài)。 為什么一名開發(fā)者應(yīng)該使用AWS Lambda?簡單一句話的說,AWS Lambda-是另外一種事件驅(qū)動方式,fu...
閱讀 3611·2023-04-26 02:10
閱讀 1397·2021-11-22 15:25
閱讀 1702·2021-09-22 10:02
閱讀 945·2021-09-06 15:02
閱讀 3505·2019-08-30 15:55
閱讀 635·2019-08-30 13:58
閱讀 2807·2019-08-30 12:53
閱讀 3092·2019-08-29 12:38