DevOps 是一組整合軟體開發 (Dev) 和 IT 營運 (Ops) 的實踐,旨在縮短開發生命週期,並根據業務目標頻繁交付功能、修復和更新。
AWS 提供彈性運算雲 (EC2)、彈性容器服務 (ECS) 和 Elastic Beanstalk 等靈活的服務,有助於自動化和擴展開發和部署管道。功能包括可擴展性、自動化、CI/CD、基礎設施即程式碼 (IaC) 和監控工具。
IaC 是指透過程式碼而不是手動流程來管理和配置基礎架構。在 AWS 中,您可以使用 AWS CloudFormation 和 AWS CDK(雲端開發工具包)實作 IaC。
敏捷是一種專注於迭代開發的方法,而 DevOps 是一種彌合開發和營運之間差距的實踐,以確保更快、更可靠的軟體交付。
AWS CodePipeline (CI/CD)
AWS CodeBuild(建置自動化)
AWS CodeDeploy(部署自動化)
AWS CloudFormation (IaC)
Amazon ECS/EKS(容器編排)
CI/CD 管道自動化了軟體開發的步驟,從整合、測試、部署到交付,確保應用程式的持續改進和交付。
您可以使用 AWS CodePipeline 建立 CI/CD 管道。將 CodeCommit(原始碼控制)、CodeBuild(建置)和 CodeDeploy(部署)組合起來形成完整的管道。
AWS CodePipeline 是一項持續整合和持續交付服務,可在每次程式碼變更時協助自動執行發布流程的建置、測試和部署階段。
AWS CodeBuild 是完全託管的建置服務,可編譯原始程式碼、執行測試並產生可供部署的工件。
AWS CodeDeploy 可自動將程式碼部署至任何實例,包括 Amazon EC2 執行個體和本機伺服器。
容器是輕量級的獨立可執行套件,其中包含執行應用程式所需的一切,包括程式碼、執行時間、程式庫和系統相依性。
Docker 容器在作業系統層級進行虛擬化,而 VM 在硬體層級進行虛擬化。容器更加輕量級,共享主機作業系統內核,而每個虛擬機器都執行完整的來賓作業系統。
使用 Amazon ECS(彈性容器服務)或 Amazon EKS(彈性 Kubernetes 服務)來管理和編排容器化應用程式。
Amazon ECS 是一項完全託管的容器編排服務,可讓您執行、停止和管理叢集中的容器。
Amazon EKS 是一項託管服務,可讓您輕鬆在 AWS 上執行 Kubernetes,而無需安裝和操作您自己的 Kubernetes 控制平面。
AWS Elastic Beanstalk 是一種平台即服務 (PaaS),可讓您使用 Java、Python、Ruby 等各種語言部署和管理應用程式,而無需擔心基礎架構。
您可以透過管理控制台、CLI 或 CI/CD 管道使用 Elastic Beanstalk 部署應用程式。上傳您的應用程式並指定環境配置。
AWS Lambda 是一種無伺服器運算服務,它會執行您的程式碼以回應事件並自動為您管理運算資源。
您可以使用 AWS CodePipeline、CodeBuild 和 CodeDeploy 將 AWS Lambda 函數部署為 CI/CD 管道的一部分。 Lambda 函數也可以由 CodeCommit 或 GitHub 等儲存庫中的變更觸發。
AWS Lambda 存在限制,例如最多 15 分鐘執行時間、10 GB 記憶體以及對某些程式庫和依賴項的有限支援。
Amazon Elastic Compute Cloud (EC2) 是一種 Web 服務,可在雲端中提供可調整大小的運算容量。
EC2 執行個體是 AWS 中的虛擬伺服器,可用於在 AWS 雲端上執行應用程式。
使用 Auto Scaling 群組和 AWS CloudWatch 監控您的執行個體並根據預先定義條件(例如 CPU 使用率)自動擴充執行個體數量。
ELB 是一項自動在多個 EC2 執行個體、容器或 IP 位址之間指派傳入流量以確保高可用性的服務。
應用程式負載平衡器 (ALB)
網路負載平衡器 (NLB)
網關負載平衡器 (GLB)
AWS CloudFormation 是一項服務,可讓您使用範本以程式碼形式建模、預設和管理 AWS 基礎架構。
它支援基礎設施的自動化配置和管理,減少手動工作和錯誤,同時確保開發、登台和生產環境的一致性。
CloudFormation 堆疊是 AWS 資源的集合,您可以使用 CloudFormation 作為單一單元進行管理。
透過修改模板並套用變更來更新 CloudFormation 堆疊。 AWS 將自動確定所需的變更並套用它們。
是的,CloudFormation 支援失敗回滾,如果任何資源建立或更新失敗,它會自動將所有變更回滾到最後一次已知的良好狀態。
AWS CloudWatch 是一項監控和管理服務,可為 AWS 資源、應用程式和服務提供資料和可操作的見解。
CloudWatch Alarms 隨著時間的推移監視指標並根據預先定義的閾值執行操作,例如發送通知或擴展 EC2 執行個體。
AWS CloudTrail 記錄您帳戶中進行的 API 呼叫,提供使用者活動和資源變更的可見性,這有助於稽核和合規性。
AWS X-Ray 透過追蹤請求並監控其效能,幫助開發人員分析和除錯分散式應用程式,例如使用微服務架建置立的應用程式。
使用 CloudWatch 指標和警報來觸發 CI/CD 管道中的自動部署或回滾等操作。
AWS Identity and Access Management (IAM) 是一項可讓您安全管理對 AWS 服務和資源的存取的服務。
IAM 角色用於將存取權委託給使用者或服務,使他們無需長期憑證即可與 AWS 服務互動。
IAM 策略是一個 JSON 文件,用於定義權限並控制允許或拒絕對 AWS 資源執行哪些操作。
使用 IAM 角色和政策確保只有授權使用者和服務才能存取您的 CI/CD 管道。對敏感資料實施加密並使用日誌記錄來監控存取。
AWS Key Management Service (KMS) 是一項託管服務,可讓您建立和管理加密金鑰並控制跨 AWS 服務的加密使用。
AWS Shield 是一項託管的分散式阻斷服務 (DDoS) 保護服務,可保護在 AWS 上執行的應用程式。 AWS Shield 有兩層:標準層和高階層。
AWS Web Application Firewall (WAF) 可讓您定義允許或封鎖特定要求的規則,以協助保護您的 Web 應用程式免受 SQL 注入和跨網站腳本 (XSS) 等常見 Web 攻擊。
對於傳輸中的資料,請使用 SSL/TLS 加密。對於靜態資料,AWS 提供 S3 伺服器端加密 (SSE)、AWS KMS 和 EBS 加密等服務。
AWS 提供多重身份驗證 (MFA),透過要求兩種形式的身份驗證來存取 AWS 服務,從而增加額外的安全層。可以透過 IAM 為使用者帳戶啟用它。
AWS Secrets Manager 可協助您安全地儲存和管理對存取 AWS 服務或第三方應用程式所需的憑證、API 金鑰和其他金鑰的存取。
AWS CodeCommit 是一項完全託管的原始碼控制服務,可讓您在雲端中私下儲存和管理 Git 儲存庫。
AWS CodeCommit 與 AWS CodePipeline 無縫集成,在將變更提交到儲存庫時觸發建置和部署。
兩者都是基於 Git 的版本控制系統。 CodeCommit 完全由 AWS 管理,與 AWS 服務更緊密地集成,而 GitHub 是具有更廣泛社群功能的外部 Git 託管服務。
您可以使用 CodePipeline、CodeDeploy 和 CodeCommit 自動執行程式碼部署,其中 CodePipeline 在推送提交時觸發部署,CodeDeploy 將程式碼部署到 EC2 執行個體。
是的,CodeCommit 可以使用 AWS 開發工具包和 API 與 Jenkins 整合。 Jenkins 可以輪詢儲存庫並根據變更觸發建置。
AWS Auto Scaling 會自動調整您的資源容量,以盡可能低的成本維持效能和可用性。
您建立 Auto Scaling 群組,定義擴充策略(例如根據 CPU 使用情況進行擴充),AWS 將根據需要自動增加或減少 EC2 執行個體的數量。
垂直擴展是指增加實例的大小(例如CPU、記憶體)。
水平擴展是指增加更多實例來處理增加的流量。
啟動配置是 Auto Scaling 群組用於啟動 EC2 執行個體的模板,指定執行個體類型、AMI、金鑰對和安全群組。
建立跨多個可用區 (AZ) 的 Auto Scaling 群組,將其與彈性負載平衡器 (ELB) 關聯,並配置運作狀況檢查以確保流量僅路由到運作狀況良好的執行個體。
Amazon Simple Storage Service (S3) 是一種物件儲存服務,可提供可擴充性、安全性和效能,以便從任何地方儲存任意數量的資料。
S3標準
S3智能分層
S3 標準-IA(不頻繁存取)
S3 一區-IA
S3冰川
S3 冰川深度檔案
S3 版本控制可讓您將物件的多個版本保留在同一個儲存桶中,防止意外刪除或覆寫。
S3 支援使用 S3 託管金鑰 (SSE-S3)、AWS KMS 託管金鑰 (SSE-KMS) 和客戶提供的金鑰 (SSE-C) 進行伺服器端加密 (SSE)。它還支援客戶端加密,其中加密是在 S3 外部處理的。
可以使用儲存桶策略、ACL(存取控制清單)和 IAM 策略來管理 S3 儲存桶的權限。
Amazon Virtual Private Cloud (VPC) 可讓您建立 AWS 雲端的私有隔離部分,您可以在其中啟動您定義的虛擬網路中的 AWS 資源。
子網路是 VPC 中的一系列 IP 位址。您可以將 AWS 資源啟動到子網路中。子網路可以是公共的(存取網際網路)或私有的(無法存取網際網路)。
IGW 是一個水平擴展、冗餘且高度可用的 VPC 元件,可讓 VPC 中的執行個體與網際網路之間進行通訊。
NAT 閘道允許私有子網路中的執行個體存取 Internet,同時阻止來自 Internet 的入站流量。
安全群組充當執行個體層級的虛擬防火牆,控制入站和出站流量。
網路存取控制清單 (NACL) 在子網路層級提供無狀態流量過濾。
VPC 對等互連是兩個 VPC 之間的網路連接,可讓您使用 IPv4 或 IPv6 位址在它們之間私下路由流量。
AWS Direct Connect 是從您的本地到 AWS 的專用網路連接,可實現更快、更安全的資料傳輸。
在一個區域內使用多個可用區 (AZ)、設定負載平衡器並為關鍵資源設計故障轉移機制。
Amazon Route 53 是一項可擴展的 DNS 和網域註冊服務,可將最終使用者請求路由至 AWS 服務或其他網際網路資源。
使用 Route 53 等 AWS 服務進行 DNS 故障轉移,使用 S3 跨區域複製等服務跨區域複製資料,並利用 Amazon DynamoDB 全域表等多區域資料庫。
Amazon Elastic Container Service (ECS) 是一項完全託管的容器編排服務,可協助您在 AWS 上執行和擴展容器化應用程式。
ECS 是用於容器編排的原生 AWS 服務,而 EKS 是完全託管的 Kubernetes 服務,可在 AWS 中提供 Kubernetes 控制平面。
ECS 任務是任務定義的執行實例,其中包括 Docker 容器配置、網路和容器的其他設定。
AWS Fargate 是一種適用於容器的無伺服器運算引擎,可讓您執行容器而無需管理底層基礎架構。
ECS 可讓您將 IAM 角色指派給任務,使您的容器能夠安全地存取 AWS 資源。
Amazon Elastic Kubernetes Service (EKS) 是一項完全託管的服務,可讓您在 AWS 上執行 Kubernetes,而無需管理 Kubernetes 控制平面。
EKS 是一項託管服務,可為您處理 Kubernetes 控制平面,而 Kubernetes 需要您手動設定和管理控制平面。 EKS 還提供與 IAM 和 VPC 等 AWS 服務的整合。
您可以使用 kubectl 將 Kubernetes 應用程式部署到 EKS。首先,設定 EKS 集群,配置 kubectl 以使用它,然後套用 Kubernetes 清單或 Helm 圖表。
EKS 與 IAM 整合以控制對 Kubernetes 控制平面的存取。 IAM 角色也可以對應到 Kubernetes 服務帳戶來管理工作負載的權限。
eksctl 是一個命令列工具,可簡化 Amazon EKS 叢集的建立、管理和刪除。它透過提供簡單的介面來消除設定 EKS 叢集的複雜性。
執行事件驅動的工作負載
處理資料流(例如,AWS Kinesis、DynamoDB 流)
使用 AWS API Gateway 建置 API
自動化基礎設施管理任務
AWS Lambda 會根據傳入請求或事件的數量自動擴展,並根據需要建立盡可能多的函數執行個體來處理負載。
當由於負載增加而初始化新的 Lambda 實例或一段時間未呼叫函數時,會發生冷啟動。這可能會導致執行稍有延遲。
您可以透過最佳化函數的記憶體分配、保持較小的函數大小、使用預先配置的並發性或透過定期呼叫函數來保持函數「熱」來減少冷啟動。
預置並發可確保一定數量的 Lambda 執行個體始終處於熱狀態並準備好處理請求,從而減少冷啟動問題。
使用 AWS CloudWatch 監控 Lambda 函數。 CloudWatch 提供呼叫計數、持續時間、錯誤計數和限制等指標。
AWS CloudTrail 記錄您的 AWS 帳戶中進行的所有 API 呼叫,以協助進行稽核、合規性和安全性監控。
您可以透過檢查 AWS CodeDeploy 中的部署日誌、查看 CloudWatch 中的應用程式日誌以及驗證部署配置來排查失敗的部署。
AWS Trusted Advisor 是一種線上資源,可提供即時指導,幫助您遵循 AWS 成本優化、效能、安全性和容錯能力的最佳實踐。
CloudWatch Logs 從 AWS 服務和應用程式擷取日誌資料。它們可協助即時監控、排除故障並分析應用程式和系統日誌。
ALB 在應用層(第 7 層)執行,用於路由 HTTP/HTTPS 流量。
NLB 在傳輸層(第 4 層)執行,用於超低延遲和高吞吐量連接,處理 TCP/UDP 流量。
ALB 依據 URL 路徑、主機名稱和 HTTP 標頭等規則路由傳入流量。它提供高級功能,例如黏性會話和 SSL 終止。
SSL 終止是指在負載平衡器層級(而非後端實例)解密 SSL 流量的過程。 ELB 可以為您管理 SSL 憑證並終止 SSL 連線。
您可以透過設定目標群組將使用者會話綁定到特定後端實例來為 ALB 啟用黏性會話(會話親和性)。
跨區域負載平衡可確保傳入流量均勻分佈在註冊到負載平衡器的所有執行個體上,無論它們位於哪個可用區域。
Amazon Elastic Block Store (EBS) 提供持久性區塊儲存磁碟區以與 EC2 執行個體一起使用。 EBS 磁碟區可用作需要頻繁更新的資料(例如資料庫或日誌檔案)的主儲存。
通用SSD (gp3/gp2)
預先設定 IOPS SSD (io2/io1)
吞吐量最佳化 HDD (st1)
冷硬碟 (sc1)
Amazon Relational Database Service (RDS) 是一項託管服務,可讓您輕鬆在雲端設定、操作和擴展關聯式資料庫。它支援 MySQL、PostgreSQL、MariaDB 和 Oracle 等多種引擎。
Amazon Aurora 是完全託管的 MySQL 和 PostgreSQL 相容關聯式資料庫,可提供效能改善和高可用性。
Amazon DynamoDB 是一項完全託管的 NoSQL 資料庫服務,可提供快速且可預測的效能以及無縫可擴充性,專為高可用性應用程式而設計。
這 100 個問題涵蓋了廣泛的 AWS 開發營運主題,從基本概念到進階實踐。如果您需要有關任何特定主題的更詳細解釋或有其他問題,請告訴我!
加入我們的Telegram 社群||在 GitHub 上關注我以獲取更多 DevOps 內容!
原文出處:https://dev.to/prodevopsguytech/100-aws-devops-interview-questions-and-answers-3g1i