AWS 新世代架站概念分享
上週有幸參加講座,本篇文章大致上以當天聽到且記錄下來的筆記分享為主
參考資料 :https://www.slideshare.net/LaravelDojo/effective-cloud-native-design-with-php-on-aws/
https://www.facebook.com/permalink.php?story_fbid=10156328298660469&id=660510468&hc_location=ufi
A. 概念 :
新世代架站盡可能地簡單、抽象、height level,把硬體、作業系統、伺服器等較為低階的概念全部抽象畫,盡可能專注在自己的程式碼邏輯開發上
B. 工具 :
- openResty : 抽象層認證,由nginx開發,通常介於load balance之下,php伺服器之上,且可以直接存取radis當作reverse proxy使用,降低主要伺服器負擔
- Container : 抽象容器,輕量化的VM,可撇除OS層級問題只要開發的Container與正式服務的Container相同就不會有問題,容器化後將會focus在服務之間如何溝通
- PHP + Nginx 以及 PHP + Caddy(go語言寫的) 都可以找到docker image
C. 多個container如何管理
(如何跑一堆的docker? 總不能一個一個docker run ==> Container Orchestration)
- AWS ECS , Google Kubernetes, Amazon EKS, AWS Fragate mode
- Fragate CLI : 提供命令介面直接跑起Nginx或其他container
- Amazon API getway : 是一個空殼網址,其他可以自行定義,可以防止ddos等攻擊,也可做service intergation,也可以直接將運算服務放在公司伺服器由API gateway呼叫
- AWS Lambda : 10毫秒內啟動的計算服務,收費只收有運算的時間,11月更新將加入PHP等其他語言
D. 總結 :
代碼越少越好
抽象主機 作業系統 等等會分心的東西,專注寫好核心代碼
打造Even-driven服務(用Lambda function)
Be a builder, not a coder