http://innovation.kktix.cc/events/starup-it-infrastructure-developing-and-working-with-aws
Topic: KKBOX Innovation Chat #5 - 利用AWS開發及實作新創公司的基礎資訊建設 Date: 2015/01/27 14:00~16:00 Location: 高雄 K Square
Startup IT infrastructure:Developing and Workingwith AWSGea-Suan LinKKBOX Technologies
View Slide
Outline● 開場 (~10 mins)● 關於 Startup IT (~10 mins)● 要如何善用 AWS (~30 mins)● 要如何 Scale AWS (~20 mins)● Q&A (~30 mins)
我是誰?
Gea-Suan Lin● 日本是後院● J-POP○ 梶浦由記、Kalafina○ 水樹奈奈● 演唱會○ https://blog.gslin.org/live/
所以,我是誰?● Full Stack Engineer?● DevOps?○ https://github.com/gslin
我擅長什麼?● System Administration○ Traditional, and○ Cloud Services● Database○ Relational, and○ NoSQL● Programming?● https://blog.gslin.org/
我在 KKBOX 裡做什麼?● 帶五個 Team● 思考 Server Team 的工作內容
Hiring!● 我們在找人 (台北 & 高雄都很多):○ http://tinyurl.com/kkbox-104● 你也可以問 Eric Bi 很多細節!
關於 Startup IT - Mindset● 人力是最貴的成本● 人力應該專心在核心業務上● 利用成熟的產業降低人力資源的消耗:○ 傳統業務的 Outsourcing○ AWS 的 Outsourcing (今天的重點)
AWS 服務介紹● IAM● Region (觀念)● AZ (觀念)● VPC● EC2● Route53● SES● ELB● RDS● ElastiCache● S3● CloudFront
AWS IAM● AWS Identity and Access Management● AWS 的權限管理系統:○ 用 Group 管理權限○ 用 MFA (2FA) 保護帳號○ 用 Role 釋出權限
Region● AWS 各個區域都有提供服務,但支援度不一:○ us-east-1:最早成立,功能最完整,也是支援歐美區服務的最愛○ us-west-2:價位與 us-east-1 接近○ ap-northeast-1:東京區,離台灣最近● 依照服務類型以及需求而選擇
AZ● Availability Zone● http://www.enterprisetech.com/2014/11/14/rare-peek-massive-scale-aws/
Amazon VPC● Amazon Virtual Private Cloud● 虛擬 Switch 與 DHCP Service● 一個 Region 可以有很多 VPC (目前不重要)● 一個 VPC 可以有很多 Subnet● 一個 Subnet 可以有一個 Routing● 每個 VPC 可以有一個 Main Routing (i.e.Default Routing)
Amazon VPC● 建議的切割方法:○ Public Subnet (可以直接連外)○ Private Subnet (可以透過 NAT Instance 連外)○ Internal Subnet (無法連外,需要透過內部的 ProxyServer 連外)○ 上面三種 Subnet 都在每個 AZ 建一組
Amazon VPC● Public Subnet:○ Local Routing + Internet Gateway● Internal Subnet:○ Local Routing Only● Private Subnet 建議的 Routing:○ 除了 Local Routing 外,每個 AZ Subnet 都有自己的Routing 從自己 AZ 的 NAT instance 出去
Amazon EC2● Amazon Elastic Compute Cloud● 虛擬主機服務:○ 要不要使用 EBS○ HVM 與 PV 的差異○ 為什麼推薦 t2.{micro,small,medium}
Amazon EC2● IAM Role 與 SDK 的配合● aws-cli:○ 官方工具○ AWS Command Line Interface
Amazon Route 53● DNS 管理服務● Private DNS○ 給 VPC 內的機器使用● Public DNS○ 給 Internet 查詢用
Amazon SES● Amazon Simple Email Service● 發信的服務:○ 因為 EC2 直接發信的問題
ELB● Elastic Load Balancing● L4 Switch 或是 L7 Switch:○ HAProxy● 可以對內也可以對外
ELB● HTTP/HTTPS:○ 可以在 ELB 上 Offload HTTPS 流量○ 在設計上,對外全部用 HTTPS!
Amazon RDS● Amazon Relational Database Service● Open Source:○ MySQL、PostgreSQL● 商用:○ Oracle、SQL Server● Amazon 自家:○ Aurora (MySQL compatible)
Amazon ElastiCache● Cache 服務● Memcached、Redis● Memcached:○ 把 Login Session 的資料放進去● Redis:○ 把各種計算好的資料放進去
Amazon S3● Amazon Simple Storage Service● 檔案系統附帶 Web Server:○ JavaScript、CSS、圖片放上來就對了
Amazon CloudFront● CDN 服務● 把 S3 掛上去,甚至把整個站掛上去○ 另外一個服務是 CloudFlare
綜合起來,舉個例子來說明...● 猜猜巧克力○ KKBOX 的遊戲事業群所發展的手機遊戲:■ Android、iOS■ Server 端用 PHP■ 初期只有用到 S3、EC2、ELB、RDS (MySQL)○ Scale 的故事...
Scale● 你的目標?● 你可以承受的 Downtime?● 最重要的是,你有什麼樣的人?○ 不僅僅是你的員工能力,還包括了人脈
猜猜巧克力的 Scale● 2014 年大年初 N:○ 使用的量衝起來爆量了○ 被叫起來找問題:■ 後台 AWS Web Console 可以看到是 RDS 的CPU 滿了,找出問題馬上修正 DB Schema。■ 順利撐過第一天,但到了第二天...
猜猜巧克力的 Scale...● 第二天繼續發酵,大年初 N+1:○ 繼續爆衝:■ 把 RDS 機器開到最大台■ 直接加 EC2 機器改善 CPU 使用率 (不是 AutoScaling)■ 找 DBA 協助找出問題,並且要求開發的 Engineer要他修改
之後某一天...● 在第一名 iOS 與 Android 第一名的尖峰時:○ ELB 約 2000 reqs/sec API call。○ EC2 用 20 台 c3.8xlarge。○ RDS 一台最大台。● 某天晚上事業群的老大請客吃老乾杯...
總而言之...● 你會多少就先用多少● 然後:○ 自己多玩一點,爆量的時候可以自己找問題○ 要嘛廣結善緣,爆量的時候有人願意幫忙
為什麼不提 Auto Scaling?● 相對複雜:○ 需要有某種 Code Deploy 機制。○ 目前 AWS CodeDeploy 只在 us-east-1 提供,所以如果在其他區要自己建立 Deploy 機制。● 啊你的業務又不一定會大起來 (逃)
為什麼不提 DynamoDB?● 要很有經驗的人才寫得順● 但有經驗的人寫 RDS 會更順● 在 Startup 時不要花那麼多力氣在這● 而且 RDS 可以跟 DynamoDB 共存,有需要用到的部份再改寫轉移過去就好
複習● 很難改的東西儘量一開始就做對:○ IAM○ VPC● 這兩個超級難改!
複習● 善用 AWS 官方提供的 SDK,上 IAM Role● 善用 RDS 的服務● 能上 HTTPS 就全上 HTTPS● 把圖片、CSS、JavaScript 放到 S3 上
AWS 只有這樣?● 當然不只!● 有很多很好用的服務:○ SNS:行動平台的 Push 機制○ SQS:非同步的 Queue Service○ Redshift:SQL-like 的 BI 工具● 這些服務「會用的話會更好,但沒有用到也還okay」的服務
AWS 只有這樣?● 你可以用 RSS Reader 訂起來看!○ Feedly● 前幾天繁體中文版也放出來了:https://aws.amazon.com/tw/
Q&A