# landing 課程——Kris best practice為出發點去建立一個架構,沒有「最好的」,看客戶考量以及面向 1. 成本 ## Core Knowledge ### 什麼是雲 * On-premise vs Cloud(不需要採買設備、容易擴展、) * CLoud deployment(全在雲端、混合雲) * 新創的多選擇All-in Cloud,可以自己培養有關使用服務的技能 * 中大型的企業,已有機房的 ### 為什麼AWS * Cloud Compute Platform * 開發、程式為出發導向(S3是第一個服務) * Dynamic abilities,即時動態,易於做調整 * Pay as you go * Aws幫我們顧了: * DataCenter * Power * Cooling * Networking * Servers * Storages * Labor 我們不需要去和安裝、不需要setup、不需要機房 不需要去猜測用戶的capacity 可以很快部署到全球、使用者體驗會更好(香港距離台灣最近) ### 六個優勢of cloud computing * Performance 效能 * High Availability 高可用性 * Security 安全 * Reliability 可靠 * Scalability 容易擴展 * Low Cost 低成本 ### AWS Global Infrastructure * Data Center裡面有很多機櫃 * 只有一個的話DC的話,壞了就完了,所以需要第二個DC * 5-8萬台server * 沒有冷機房(Cold Service)的概念,全部都在服務客戶 * AZ * 把很多DC框起來組成AZ * 不會只有單個AZ,如果發生單點失效(Single point failure)也就完蛋 * AZ之間要溝通,latency控制在2ms以下 * AZ之間來做redunnancy容錯機制 * 可以在aws選擇到的最小範圍-》ec2 VPC··· * * Region * 由multiple AZ組合起來 * 技術上來說至少兩個以上AZ,但是官方有的只有一個AZ(local-region·Osaka) * Region之間完全獨立 * 怎麼選擇:Low latency、Cost Optimezed(不同region有cost差別)、Compliance and matching policy(當地相關資訊是否能流出台灣)、Service limit * Edge location * 透過合作去擴展,沒辦法在當地佈建 * 第一次request跑第一條線,之後就會在中節點儲存資料方便之後存取(CDN概念) * Route 53也是要低延遲 * 快速反饋運算資源(Lamda直接幫你處理·影像轉檔) * Manged service * 非託管服務 vs 託管服務 * 非託管,我們需要manage:EC2、環境、Data、Applications、備份、拓展(變大或是變多) * 託管,AWS幫我們:備份、optimize、cloud migrations、存儲、server安全性、server support * 託管的成本比較高(好聽一點:減少人力成本、維運資源) ### Shared Responsibility Model * AWS提供給你平台,事情的安全性是有user負責 ### 考點 * Shared responsibility Model * Region * AZ * Edge Location --- ## Identify and Access Management(IAM)(Resource base) ### What is IAM * Securely control to AWS resources * authenticated (signed in) * authorized (has permissions) * 不要用Root user去執行任何東西,除了建立第一個IAM User ### Accessing IAM * AWS Management Console * AWS Command Line Tools * AWS SDKs * IAM HTTPS API ### Better Way to Administrator * 我怎麼相信那個人可以透過CLI取得資源 * multi-factor authentication (MFA) * 有一個credential(AK·access key/SK·Secret Access Key) * 不建議有root account概念,要把credential key刪掉lock away * 可以把權限開給Admin User ### IAM User * not a seperate account;是你帳號內的User * 每個user都有自己的password或是access key去是用aws的resource * * 可以有kris(Admin)、Amy(Admin)、Bob(Read only)··· * 一個一個改很麻煩,所有出現「Group」做管理面,把admin的弄成一個組,read弄成一個組, * 最小權限原則 * 沒有default的權限,代表去哪一個頁面都還是permission denied * Increase security with MFA * 「Role」裡包含了User和Service * 一個user可以參加很多group * AWS上的resource預設上是不能溝通的 * 通常會用credentialkey,但是不好,所以拉出來變成IAM Role,透過STS去做key rotate(15分鐘最小),像是一頂帽子,代表一種身分 * role設定可以用ec2,ec2只可以去用S3 * STS產生暫時的AKSK,15-90min(假設15分鐘,但是程式跑了16-20,所以STS可以延長key15分鐘的時間,變成30min,接著就會產生key2) * switch role是以user的角度進來看,A團隊與要稽核B,所以B可以用AccID去允許A團隊裡面的user查看東西,也可以再switch role * User沒有credential,而是透過STS代替 * Identify Providers and Federation 信任他人的驗證機制(信任別人過來的東西) * 設定好驗證關係,不會再透過AWS的驗證,進來後直接派STS給你 * Google、Facebook * SSO(串到公司的AD)-透過SAML2.0驗證 ### Identity-Based Policy(對人、群組) * How to set permission * IAM Policy:Grant permission to AWS services(全新的)、JSON format(客製化)、? * inline policy是不能被重複使用的 ### Resource-Based Policy 從服務來說 * 他是inline,獨立於每個服務上面 * Check Permission * 先問你有沒有預設denied,如果denied就Deny你,如果No的話就問你有沒有Allowed,如果有就Allow,沒有就Deny * Deny 》 Allow https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html * ### Manage multi-accounts * Scenario * 每個人獨立acc,管理上來說不方便$$$ * AWS Organization * 我們用來管理客戶 * 集中管理 * 帳單的整合方便,可以享有規模經濟 * policybased的SCP·service control policy:跟IAM(user、group、role)的不同,他管理的是account level,直接限定你這個帳號可以用哪些service,在底下的也只能接受。 * 交集的概念 ### Amazon Cognito * Amazon Cognito Introduction * 提供authentication、authorization * User Pool * build-in * Identity Pool * create unique identity * Assign permission * temporary credential * Amazon API Gateway ### Conclusion * 不要rootaccount * 最小權限優先 --- ## Amazon Simple Storage Service(S3) ### 什麼是S3 * 雲端儲存空間:secure、durable * Durability and Availability * 資料從不同的AZ寫入 * 99.99999999999%(11個9) * 10000個檔案放10000年,只會壞掉一個 * 必須放在三個AZ才會造就11個9(如果沒有三個AZ,那就有一個AZ要放兩份) * 資料一致性 * 備份的三份,會接近同時放在不同AZ * V1更新成V2的過程中,我們有機率拿到V1的,但是我們要V2,所以會有設置一個塔點,只丟給你V2,這個是所謂的「強一致」 * 「最終一致」:拿錯了再丟回去,拿對的,這個速度比較快,我們也喜歡這個 ### S3 Concept * Bucket * Unique globally名字獨一無二,因為是url * Region level * Object & Keys * file、video、image * data & metadata * code 200 = 成功 * Key-value Store * Object based(絕對路徑) * Key * Value * Version ID(如果有起版本控制,不會蓋掉舊的,但是只給你看新的) * Metadata * Prefic * object keys in S3 are partitioned by prefix * 利用雜湊去加強那個效能,避免資料都在同一個區域做提取(資料熱區) * Regions * * Consistency Model(最終一致) * Read after write for put 新物件 * Hierarchy and limits * Bucket 上限100 * Object 5TB一個Object * PUT Operation 5GB per PUT * 怎麼丟到S3(就那三個方式Console、CLI、SDKAPI) * Multipart Upload * Transfer Acceleration 加速器 * S3透過url去request,所以速度取決於網路的速度 * 所以資料先傳到台北的edge location 之後再用AWS CloudFront傳到S3,相對穩定,但是latency取決的距離,不列入討論 * 其他 * The Snow family(減少資料傳送到AWS的時間,用LAN) * Snowball:PB-scale data migration * Snowball Edge:Compute & Storage for Hybrid/Edge workloads * Snowmobile:ED-scale data migration * Access Control of S3 * Access Control * Private是「預設」的,只有我自己知道bucket的位置,但是不知道內容 * Public,可以看到內容,也可以下載 * Access Policy:Acccess ControlList(acc底下的IAM或是User) / Bucket control * S3 Block Public Access: * Static Web Site(靜態網站託管) * CORS(Cross-Origin Resource Sharing)(跨域存取) * 防止破圖出現 ### Amazon S3 Storage Classes * S3 Standard * 基本配備 * S3 Intelligent-Tiering * 自動判斷你的檔案有沒有被access,aws幫你的,這個功能不收錢 * S3 Standard IA * 上傳的時候,被存取和使用的情況很小(30天以內不動為基準) * S3 One Zone IA * 只存在一個AZ,不在意11個9 * S3 Glacier * 封存檔案,像是Log檔案(磁帶機概念),解凍時間給你選(5-12min、5-12小時、12小時以上) * Deep Glacier * 差別在解凍時間 ### Using Versioning * 預設disable,變成enable之後就回不去了,因為開了之後就會有version ID,給你取消的話,無法判斷誰新誰舊,你只能暫停 ### MFA Delete ### Protecting Data Using Encryption * 傳輸過程中:加密 * S3Managed Keys * 用KMS,User自己有鑰匙,丟給KMS管理 ### Lifecycle Management ### S3FS/Goofy * 不建議,因為S3不適合做file system * S3用來做storage --- ## EC2 ### EC2 * AMI(你的系統) * Instance type(t測試,c·compute,m·memory)(數字是第幾代)(最後的是幾核心和多少容量) * Ec2 Metadata * 知道這台機器的DNS net * Lauch EC2 with User Data(在Advanced Details點開) * 預先跑一些腳本 * 只有第一次create會用到 * 可以將Metadata和Userdata結合 * pricing Options * On-demand(牌價) * Reserved Instance(合約(一年開滿7成的時間就可以買) * Spot Instances(短期需求,競標)(2分鐘前通知你)(撈資料1~6小時,每個小時價位不一樣) * Schedule Reserved Instance(排班制度)(只開某個時段) * Dedicated Instance(專屬的,Host上面只跑你一台主機) * Dedicate Host(直接買整座Host) ### EBS * Block storage(S3是Object導向的) * EBS type:SSD(gp2)、HDD * Snapshot 備份(備份了只是備份硬碟,不會是EC2) * Instance Storage(但是不會想筆電那樣,硬碟就在自己身上,所以實體主機開起來要找到硬碟就要靠掛載EBS)(有些就會有自己本身的硬碟) * network performance * EBS-optimized,yes的話就是讓你有多一張網卡來管理EBS ### EFS * share files between EC2 * EFS vs FSx(他們的protocol不一樣) * EFS是linux workloads(NFS) * FSx是windows workloads(SMB) --- # 20190704 ## 昨日複習 * 【MI】Region | AZ | Data Center | Edge location * 2個AZ以上 * 計價 * 運算 * 存儲 * 流量 network * Data transfer in 傳上去不收錢,因為用的是自己的資源 * Data transfer out 用AWS的資源(骨幹網路)拉下來,所以給錢 * 【M2】IAM——User、Group、Role * 控制是在AWS or ~~地端~~? ANS:控制AWS的resource或是service * create 一個user,Default的permission是denied的 * Group只是組隊的概念 * 如果想要透過console和CLI控制的話,須透過credential key來代表permission * Role * 一個帽子,帽子本身賦予權限,被暫時賦予身分 * STS,給他暫時的credential keys * 【M3】S3 * 一致性 * 最終一致 * read after write(必須完全寫入後才能讀取,還在寫入過程中無法讀取) * 特性 * 耐久度(11個9,因為至少分在3AZ) * 如果不夠三個AZ,就在某一個AZ儲存多一份 * 每個人的1a、1b、1c,各個所在地都不一樣 * 有自己的URL,必須先public才能被看到,default是private的 * ACL * 帳號 * 使用者 * Bucket policy * 靜態網站的掛載 * CORS * 儲存的策略 * S3 standard * S3 standard IA(30天以上便來這裡,可以投過intelligent tier幫你轉換) * Glacier(Log·防止竄改·利用vault lock·24小時考慮時間要不要上鎖·之後就不能再換鑰匙或是取消) * life cycle(不朔及既往) * 安全性 * S3-Key * KMS * 【M4】EC2——一個軀殼,看你塞什麼給他 * AMI * 4種取得方式 * aws的 * 自己的 * marketplace的 * 社群提供 * EBS(snapshot) * 透過網卡網路掛載到EC2 * 一台EC2可以有多個EBS * 一台EBS只能對到一個EC2 * 他是Instance storage,速度比較快,但是會有遺失的危險) * high parallel computing * Pricing(6) * On-demand 牌價 * RI * spot * Schedule * ? * ? --- ## Module 5:Database on AWS 設計面向:把主要的工作專注在核心業務上,所以維運部分交給AWS處理 ### Introduction * two type * Relational DB(重要觀念,不能竄改) * 每一個項目都很標準,對應到的是誰 * 速度慢 * schema固定 * 標準語法 * Scalability:Vertical(單一個體的變大變小,壞了就88) * No-SQL Database * 速度快 * Scalability:horizontal(好幾個個體的分散式存取) * Key-value Database * 新增schema比較單純且容易 * In-memory Database * 吃你的記憶體 * File DB * AWS提供的服務 * 開源服務 * Graph DB * 如果你選擇RDB * strict schema * 不需要很多的讀取寫入 * 選擇No-SQL * 需要很多的讀取寫入 ### Relational Database(AWS RDS) * 全託管服務,開起來後維運部分AWS幫你 * 開很快 * scaling vertical只需要點幾下 * 不能操控OS level的設定 * 不能設定讀寫速度,因為基地是EC2,放在EBS裡面,已經定義好了 * Security * AWS Direct Connect * IG * VPN Connection * Peering * Routing rules * Use Case ### No-SQL Database(DynamoDB) * 全託管服務,開起來後維運部分AWS幫你 * 通常會搭配serverless computing(Lamda···) * scaling horizontol * On-demand Read / Write capacity(動態調整,也可以設定讀寫速度) * Primary Key * 主要查照看PK * Sort-Key看個人選項,與Partition Key兩個結合成PK * Global Table(分散式存儲) * 在不同region設表 * latency是很大的因素考量,你不會想要跑很遠去拿資料 * Security * 分散式存儲 * 最終一致 * 速度快(5x),但是可能拿錯 * 強一致 * 速度只有一倍 ### Database Migration * 從A到B,最快是接上網路 * 可以接受停機時間的話:把他dump出來變成一個file,在弄去B * 不停機的話:再考慮「Migration」 * 支援EC2、RDS、地端on-promises * 地端往雲端搬遷 * 地端DB持續在線上做服務 * 所以啟用DMS,扮演EC2的角色,讓地端把資料送上來後,再放去雲端 * 接近即使的幫你做data的轉移 * 如果要完全上去,就要定義一個維護時間 * Snowball Edge * DMS --- ## Module 6:Virtual Private Cloud(VPC) 最底層跟發想的設計環節,延伸地端的使用環境 地端host要跟AWS公有雲結合,透過VPC框起來 ### What is VPC * 預設會有一個VPC,防止你不知道怎麼部屬 * AWS上的虛擬環境網路(你的土地) * 有預設的IPv4 or IPv6 * CIDR ranges * /16;最大16, * /28;最小28 * VPC之間不能互相溝通 * 可以跨AZ,避免single point of failure(單點失效) ### IP * 8bit·8bit·8bit·8bit * CIDR: ### Subnet(路段的劃分) * network裡的區段,用CIDR range區分 * 建議large subnet over small ones * 5個ip位置會被佔去(每切一次都會喪失以下五個) * 10.0.0.0: * 10.0.0.1:AWS保留給VPC router * 10.0.0.2:保留給DNS * 10.0.0.3:AWS保留給未來使用 * 10.0.0.255:broadcast address,沒效率 * Route Tables * 分成對外和對內的表哥 * Public Subnet:IGW * 只需要打名稱,不需要做其他設定 * EC2透過IGW連到外面 * Private Subnet:NATGateWway(轉址·內轉外) * NAT Instance: * 根據你的EC2大小決定效能 * 你可以自己「轉port」 * 放在public的subnet裡,APP或DB發東西給NAT·I變成8·8·8·8,再透過IGW出去 * NAT Gateway:不支援~~轉port~~ * 你要自己開,然後自己弄EIP * Best Practice會建置這個 ### Networking * Elastic Network Interfaces * 他是一個網卡,你可以獨立申請,客製化或是AWS給你固定IP位置,獨立IP * 可以設定public,也可以private * Elastic IPs * 預設會從pool裡面選一個給你;也可以自己設定 * 收錢的(關機一個月3.6,開機不收錢因為收了機器錢) * Security Group(要跟NACL比較) * 軟式的防火牆 * **stateful** 狀態的,預設是**denied** * 別人透過IGW進來還是會被擋下來,只有符合我們設定的port才能進入EC2 * 預設進得來就是出得去 * Secure Chain * 一層信任一層,但是如果設定不好就會被繞道攻擊 * Network Access Control Lists(NACLs) * 在subnet的防火牆,人家到subnet就檢查 * 預設都可以隨意進出 * **Stateless**,預設就是隨意進出 * VPC-Flow Logs * default是關起來的 * 管理log檔案的details * 有需求在開起來排除 --- ## Module 7:VPC Connections,ELB and Route53 VPC和地端做連結、溝通、轉址 ### VPN * 保護資安所使用 * 原則是封包,沒有加密就是明碼的,就會被攻擊擷取;所以會有一個key,兩端都有同樣的key才會形成一個VPN Tunnel來做到加密溝通 * Virtual Private Gateway * 跟IGW,沒有多餘的設定 * site-to-site的VPN * VPC回家的一扇門 * 設定好後,要告訴他Customer Gateway * Customer Gateway * Site to site VPN Connections * 取得一個txt檔案,回去地端設定 * 他會多兩條Tunnel以達到HA,但是要設定啦 ### Direct Connect(專線) * What is AWS DX * 提供給你**穩定**的品質(不是快) * from you permissions to AWS * DX Location * 在世界各地都有location * 好處 * cost * 平穩 * 可是透過這個使用所有AWS的資源 ### VPC Peering * 兩個不同的VPC之間,default不能互相溝通 * 要溝通就用**VPC peering** * 對方可以接受或是拒絕 * 沒有網路頻寬限制,因為是AWS內部的 * 不需要IGW和VGW * Architecture ### Transit Gateway * 如果VPC從2變成200個,要怎麼處理讓他們溝通 * 就用Transit Gateway,上限5000個,但是會有多一張Routetable ### VPC Endpoints * Privately connrct VPC 去其他AWS服務 * 不需要IGW、NAT devices、VPN connection、AWS Direct Connect * 兩個type: * Interface Endpoint * 可以自己去新增服務 * Gateway Endpoint * S3 * DynamoDB ### Elastic Load Balance(ELB) * Distributes incoming traffic across multi target * 最小暴露原則(3變成1) * 好處 * Secure(可以把原本EC2負責的加減密的動作給ELB減密) * Elastic(背後是EC2在做事情)(在某個時間先預熱EC2) * Flexible * Monitoring * Hybrid * Health Check * Type of ELB * Application Load Balance(ALB) * 根據不同的標籤屬性(Header),導入到不同群組(不同處理) * 在第7層的網路協定 * microservice的設計架構,但是透過不同的網路技術來輔助我達到我的技術 * 支援Lamda * Network Load Balance(NLB) * **支援你幫一個固定IP**--為了設置白名單(Target Group) * 長時間要跟某一個連線 * 第四層網路協定 * Classic Load Balance(CLB) * 機制是run robin(輪流) * 如果可以的話,全部王VPC搬會比較好(安全機制) ### Route 53 層級拉到region,做名稱的解析 * 一次買一年 * Route internet traffic * 根據routing policy去把客戶導向不同的VPC * Check the health of your edmpoint * Route 53監控ELB健不健康,ELB去看EC2健不健康,可以繞道 * Multi routing policy --- ## Moduel 8:Monitoring ### Cost Optimizing * 講白了就是Auto Scaling ### Pricing ### Security ### Log analytics ### Monitor On-Premise vs Monitor on Cloud --- ## Moduel 8-1:Monitoring on AWS ### CloudWatch * 紀錄Log * 可以往外拋到S3 * CloudWatch可以幫你Filter,進去做event * 紀錄Metrics * 各項服務的Dashboard的metrics * 圖形化metric(ELB) * Alarm通知(預期以外) * EC2(CPU Storage增加或減少) * CloudWatch(知道了就觸發Auto & SNS) * Auto Scaling Group(增加或減少EC2) * SNS * mail * 簡訊 * 觸法Event * 被動 * 設好條件,看有沒有「特徵吻合」 * 觸法Rule(預期內) * 主動設定條件,當條件吻合才會通知 * Cloud Watch Agent * 裝在EC2 * OS layer * on-premises 也可以用(磁碟往外丟) * CloudWatch event-Target * CloudWatch event-Configuration ## CloudTrail * 標的物是人和API * 知道User activity和API使用(90天) * 他可以幫你導向到config看resource * 不同region會記錄自己的東西到S3,所以要換region才可以看 ## Config * 標的物是resource * 目標是讓你「持續合規」(continue compliance) * 設定 ## Athena * 快速透過fuction去查看S3資源 * query你要的資訊 ## SNS * Reliably deliver messages with durability * Keep messages private and secure * 面向 * email * mobile * lamda * SQS(microservice 做serverless的一個角色) --- ## Module 9:Elasticly 重點兩個 ### 彈性的架構 * 採買設備 * Three tier architecture * multi layer(根據需求)(彈性) * HA * 避免單點失誤 * ### AutoScaling * EC2 * Scale up and down * Horizontal scale * Automaticly * EC2 * Cloud watch * SNS * Setup Auto Scaling * Select AMI(開機器的劇本) * Create Launvh Configuration or Launch Template * On-Demand or Spot(牌價問題) * Desire Instance * Scale Policy(CloudWatch monitor的數值)(>50%要開台)(大於70%,維持5分鐘,開三台) * Notification(SNS) * Launch Tempelate * 可以launch兩台不同大小的 *如果40%以下,要砍機器的default順序,當然你可以動態調整 | Auto Scale-in | policy | Column 3 | | -------- | -------- | -------- | | 1.平衡AZ裡instance的數量 | Text | Text | | 2.砍舊版 | Text | Text | | 3.離下一個計費週期最近的 | Text | Text | | 4.隨便 | Text | Text | * Auto Scaling ### RDS和DynamoDB的Scale * RDS * 長大還有變小 * 停機時間 * RDS replica database * 只給你「讀取」副本(不同的AZ) * 「寫入」直接找master * 1 master對 5個readReplica * Dynamo DB * Scaling on DynamoDB * Read/Write Capacity Mode * On-demand * 不知道workload * Provisioned --- ## Module 10:Caching(快去/暫(緩)存) * 減少提取的時間 * 交付時間越長,損失的交易機會越大 * 好處 * Types of Content * 靜態:圖片、字、影片(可以放在S3) * 動態:必須做動態的查詢,所以不能cache * user - web - app - DB * Type of Caching * Client Side(cookies,影像層面在你的電腦) * Server Side(把loading放在快去) * ### Caching Overview ### Edge Caching 提供一個地方,紀錄常常使用的東西 * Co-location * CDN * Amazon CloudFront * 不一定只能建立在AWS上,地端環境可以只單獨使用CDN,速度取決於企業的頻寬 * 支援WebSocket的protocol(不用三向交握,握一次就好) * 主要用在IOT、邊緣運算 * Setup * TTL(放在edgelocation的時間,預設一天,單位是秒) * Session Management - Stateful * ### Database Caching ### --- ## Module 11:Automation ### 為要自動化 * 避免人為犯錯 * 降低人為失誤 ### CloudFormation(for Infrastructure自動化的工具) * 簡化基礎設施(IAC·Infrastructure as code) * 提供template給CloudFormation,堆疊起來建立你的基礎設施 * 之後會介紹-Change Set、Stack back * 好處 * 測試成功後,可以直接套用 * 只是JSON、YAML * Design Concept * 希望分散成不同的template,除錯比較方便 ### Elastic Beansatlk(懶人包、新手包) * 他是一個懶人部署,可以幫你建立基礎的環境() ### SystemManager ### OpsWork --- ## Module 12:Container ### Application Enviroment Compenents * 不同開發面向,不同環境 * VM以OS為基地,要選作業系統,的獨立性高 ### Container vs VM * 實體的電腦還是要有自己的OS,當你要裝一個VM,Hypervisor要去跟OS溝通,OS要跟Host hardware要求空間資源,效率相對不好 * VM又要有自己OS,所以弄起來相對慢 * Docker不在乎你的底層OS是什麼,他用起來的APP不是一個VM,是一個process ### Concepts of Docker * Image (開機器的映像檔,但是每次開起來只能讀) * Container * Registries(放映像檔的地方) * Docker HUB * Amazon ECR ### Amazon ElaticContainerService * 幫你做cluster的管理(EC2上cluster的管理),當你在效能不夠的時候,他可以幫你開機器(準從你的規定) * ECS看EC2,只認得他是可以跑container的環境;至於能跑多少,就要看EC2怎麼告訴ECS * ECS Workflow * auto scaling有兩個層面 * container自己的 * ec2的 ### AWS Fargate 你不需要去管理ec2的動態在資源調撥,但是比較貴 ### Kubernetes 跟ECS很像 ### EKS * 針對ec2的auto scaling ### CNI(Container Network Interface) * 如何在一台機器跑不同的container * 每個container都要有自己的網路卡,讓ec2知道進來後要去哪裡 * 對外都是連到CNI出去ec2的網卡 ### ECS vs EKS --- ## Module 13:Serverless Architecture * Architecture Efficient ### Going serverless ### AWS Lamda(按次數算錢) * 全託管服務 * 事件觸法的概念,你沒安排就沒事做 * 好處 * automatic scaling * No Infastructure to manage * 省錢 * 程式最長只能執行15分鐘(時間不夠就去call下一隻Lamda) * 大部分的AWS的service都可以觸發Lamda * Lamda 預設不在VPC裡面,不過你可以設定讓他在VPC裡面,透過NATgateway或是NATinstance連到外面去 * 底層是ec2里的container,跑在AWS的firecracker,所以很快被觸發執行 * Best Practice * 跟Role借credential key,用完就走了 * SQS * 把暫時不用存取的data放進去,之後再一次性的丟到後面處理 * 平行觸發、順序觸發、ifelse觸發 ### Amazon API Gateway * 可以接ec2、lamda和一些http base的application * 可以管理REST的endpoint * Serverless Application Model(SAM) * 把一個東西拆成很多部分執行,解耦合 ### AWS Step Functiona ### AWS X-Ray * 自我檢查、分析 * Default是關起來的 * 主要注重在時間 --- ## Module 14:Data Stack(考試不會考) ### Machine learning * Classfication * Feature Selection * Sagemaker * ### AWS Machine Learning Stack * Vision * Rekognition Image * Rekognition Video * Chatbots * Amazon Lex * Speech * Amazon Polly * Amazon Transcribe * Language * Amazon Comprehend * Amazon Translate * Vertical * Amazon Personalize * Amazon Farecast * 推薦機型 * P3 ### Amazon EMR(Elastic Map Reduce) * Map Reduce * 一份工作(小)只給一個人 * ~~一份工作(大)只給一個人~~ vs 一份工作(大)分給幾個人 * 減輕每個人的負擔,最後merge起來,就是Map Reduce RI(1-3年) https://aws.amazon.com/certification/certification-prep/?nc1=h_ls https://acloud.guru DynamoDB ElaticCache是stateless