Slide 1

Slide 1 text

Startup IT infrastructure: Developing and Working with AWS Gea-Suan Lin KKBOX Technologies

Slide 2

Slide 2 text

Outline ● 開場 (~10 mins) ● 關於 Startup IT (~10 mins) ● 要如何善用 AWS (~30 mins) ● 要如何 Scale AWS (~20 mins) ● Q&A (~30 mins)

Slide 3

Slide 3 text

我是誰?

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Gea-Suan Lin ● 日本是後院 ● J-POP ○ 梶浦由記、Kalafina ○ 水樹奈奈 ● 演唱會 ○ https://blog.gslin.org/live/

Slide 6

Slide 6 text

所以,我是誰? ● Full Stack Engineer? ● DevOps? ○ https://github.com/gslin

Slide 7

Slide 7 text

我擅長什麼? ● System Administration ○ Traditional, and ○ Cloud Services ● Database ○ Relational, and ○ NoSQL ● Programming? ● https://blog.gslin.org/

Slide 8

Slide 8 text

我在 KKBOX 裡做什麼? ● 帶五個 Team ● 思考 Server Team 的工作內容

Slide 9

Slide 9 text

Hiring! ● 我們在找人 (台北 & 高雄都很多): ○ http://tinyurl.com/kkbox-104 ● 你也可以問 Eric Bi 很多細節!

Slide 10

Slide 10 text

關於 Startup IT - Mindset ● 人力是最貴的成本 ● 人力應該專心在核心業務上 ● 利用成熟的產業降低人力資源的消耗: ○ 傳統業務的 Outsourcing ○ AWS 的 Outsourcing (今天的重點)

Slide 11

Slide 11 text

AWS 服務介紹 ● IAM ● Region (觀念) ● AZ (觀念) ● VPC ● EC2 ● Route53 ● SES ● ELB ● RDS ● ElastiCache ● S3 ● CloudFront

Slide 12

Slide 12 text

AWS IAM ● AWS Identity and Access Management ● AWS 的權限管理系統: ○ 用 Group 管理權限 ○ 用 MFA (2FA) 保護帳號 ○ 用 Role 釋出權限

Slide 13

Slide 13 text

Region ● AWS 各個區域都有提供服務,但支援度不一: ○ us-east-1:最早成立,功能最完整,也是支援歐美區服 務的最愛 ○ us-west-2:價位與 us-east-1 接近 ○ ap-northeast-1:東京區,離台灣最近 ● 依照服務類型以及需求而選擇

Slide 14

Slide 14 text

AZ ● Availability Zone ● http://www.enterprisetech.com/2014/11/14/rare-peek- massive-scale-aws/

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Amazon VPC ● Amazon Virtual Private Cloud ● 虛擬 Switch 與 DHCP Service ● 一個 Region 可以有很多 VPC (目前不重要) ● 一個 VPC 可以有很多 Subnet ● 一個 Subnet 可以有一個 Routing ● 每個 VPC 可以有一個 Main Routing (i.e. Default Routing)

Slide 17

Slide 17 text

Amazon VPC ● 建議的切割方法: ○ Public Subnet (可以直接連外) ○ Private Subnet (可以透過 NAT Instance 連外) ○ Internal Subnet (無法連外,需要透過內部的 Proxy Server 連外) ○ 上面三種 Subnet 都在每個 AZ 建一組

Slide 18

Slide 18 text

Amazon VPC ● Public Subnet: ○ Local Routing + Internet Gateway ● Internal Subnet: ○ Local Routing Only ● Private Subnet 建議的 Routing: ○ 除了 Local Routing 外,每個 AZ Subnet 都有自己的 Routing 從自己 AZ 的 NAT instance 出去

Slide 19

Slide 19 text

Amazon EC2 ● Amazon Elastic Compute Cloud ● 虛擬主機服務: ○ 要不要使用 EBS ○ HVM 與 PV 的差異 ○ 為什麼推薦 t2.{micro,small,medium}

Slide 20

Slide 20 text

Amazon EC2 ● IAM Role 與 SDK 的配合 ● aws-cli: ○ 官方工具 ○ AWS Command Line Interface

Slide 21

Slide 21 text

Amazon Route 53 ● DNS 管理服務 ● Private DNS ○ 給 VPC 內的機器使用 ● Public DNS ○ 給 Internet 查詢用

Slide 22

Slide 22 text

Amazon SES ● Amazon Simple Email Service ● 發信的服務: ○ 因為 EC2 直接發信的問題

Slide 23

Slide 23 text

ELB ● Elastic Load Balancing ● L4 Switch 或是 L7 Switch: ○ HAProxy ● 可以對內也可以對外

Slide 24

Slide 24 text

ELB ● HTTP/HTTPS: ○ 可以在 ELB 上 Offload HTTPS 流量 ○ 在設計上,對外全部用 HTTPS!

Slide 25

Slide 25 text

Amazon RDS ● Amazon Relational Database Service ● Open Source: ○ MySQL、PostgreSQL ● 商用: ○ Oracle、SQL Server ● Amazon 自家: ○ Aurora (MySQL compatible)

Slide 26

Slide 26 text

Amazon ElastiCache ● Cache 服務 ● Memcached、Redis ● Memcached: ○ 把 Login Session 的資料放進去 ● Redis: ○ 把各種計算好的資料放進去

Slide 27

Slide 27 text

Amazon S3 ● Amazon Simple Storage Service ● 檔案系統附帶 Web Server: ○ JavaScript、CSS、圖片放上來就對了

Slide 28

Slide 28 text

Amazon CloudFront ● CDN 服務 ● 把 S3 掛上去,甚至把整個站掛上去 ○ 另外一個服務是 CloudFlare

Slide 29

Slide 29 text

綜合起來,舉個例子來說明... ● 猜猜巧克力 ○ KKBOX 的遊戲事業群所發展的手機遊戲: ■ Android、iOS ■ Server 端用 PHP ■ 初期只有用到 S3、EC2、ELB、RDS (MySQL) ○ Scale 的故事...

Slide 30

Slide 30 text

Scale ● 你的目標? ● 你可以承受的 Downtime? ● 最重要的是,你有什麼樣的人? ○ 不僅僅是你的員工能力,還包括了人脈

Slide 31

Slide 31 text

猜猜巧克力的 Scale ● 2014 年大年初 N: ○ 使用的量衝起來爆量了 ○ 被叫起來找問題: ■ 後台 AWS Web Console 可以看到是 RDS 的 CPU 滿了,找出問題馬上修正 DB Schema。 ■ 順利撐過第一天,但到了第二天...

Slide 32

Slide 32 text

猜猜巧克力的 Scale... ● 第二天繼續發酵,大年初 N+1: ○ 繼續爆衝: ■ 把 RDS 機器開到最大台 ■ 直接加 EC2 機器改善 CPU 使用率 (不是 Auto Scaling) ■ 找 DBA 協助找出問題,並且要求開發的 Engineer 要他修改

Slide 33

Slide 33 text

之後某一天... ● 在第一名 iOS 與 Android 第一名的尖峰時: ○ ELB 約 2000 reqs/sec API call。 ○ EC2 用 20 台 c3.8xlarge。 ○ RDS 一台最大台。 ● 某天晚上事業群的老大請客吃老乾杯...

Slide 34

Slide 34 text

總而言之... ● 你會多少就先用多少 ● 然後: ○ 自己多玩一點,爆量的時候可以自己找問題 ○ 要嘛廣結善緣,爆量的時候有人願意幫忙

Slide 35

Slide 35 text

為什麼不提 Auto Scaling? ● 相對複雜: ○ 需要有某種 Code Deploy 機制。 ○ 目前 AWS CodeDeploy 只在 us-east-1 提供,所以如 果在其他區要自己建立 Deploy 機制。 ● 啊你的業務又不一定會大起來 (逃)

Slide 36

Slide 36 text

為什麼不提 DynamoDB? ● 要很有經驗的人才寫得順 ● 但有經驗的人寫 RDS 會更順 ● 在 Startup 時不要花那麼多力氣在這 ● 而且 RDS 可以跟 DynamoDB 共存,有需要 用到的部份再改寫轉移過去就好

Slide 37

Slide 37 text

複習 ● 很難改的東西儘量一開始就做對: ○ IAM ○ VPC ● 這兩個超級難改!

Slide 38

Slide 38 text

複習 ● 善用 AWS 官方提供的 SDK,上 IAM Role ● 善用 RDS 的服務 ● 能上 HTTPS 就全上 HTTPS ● 把圖片、CSS、JavaScript 放到 S3 上

Slide 39

Slide 39 text

AWS 只有這樣? ● 當然不只! ● 有很多很好用的服務: ○ SNS:行動平台的 Push 機制 ○ SQS:非同步的 Queue Service ○ Redshift:SQL-like 的 BI 工具 ● 這些服務「會用的話會更好,但沒有用到也還 okay」的服務

Slide 40

Slide 40 text

AWS 只有這樣? ● 你可以用 RSS Reader 訂起來看! ○ Feedly ● 前幾天繁體中文版也放出來了:https://aws.amazon. com/tw/

Slide 41

Slide 41 text

Q&A