Startup IT infrastructure: Developing and Working with AWS

8327d09b0bd5ac97409aa10f927b3c30?s=47 Gea-Suan Lin
January 27, 2015

Startup IT infrastructure: Developing and Working with AWS

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

8327d09b0bd5ac97409aa10f927b3c30?s=128

Gea-Suan Lin

January 27, 2015
Tweet

Transcript

  1. Startup IT infrastructure: Developing and Working with AWS Gea-Suan Lin

    KKBOX Technologies
  2. Outline • 開場 (~10 mins) • 關於 Startup IT (~10

    mins) • 要如何善用 AWS (~30 mins) • 要如何 Scale AWS (~20 mins) • Q&A (~30 mins)
  3. 我是誰?

  4. None
  5. Gea-Suan Lin • 日本是後院 • J-POP ◦ 梶浦由記、Kalafina ◦ 水樹奈奈

    • 演唱會 ◦ https://blog.gslin.org/live/
  6. 所以,我是誰? • Full Stack Engineer? • DevOps? ◦ https://github.com/gslin

  7. 我擅長什麼? • System Administration ◦ Traditional, and ◦ Cloud Services

    • Database ◦ Relational, and ◦ NoSQL • Programming? • https://blog.gslin.org/
  8. 我在 KKBOX 裡做什麼? • 帶五個 Team • 思考 Server Team

    的工作內容
  9. Hiring! • 我們在找人 (台北 & 高雄都很多): ◦ http://tinyurl.com/kkbox-104 • 你也可以問

    Eric Bi 很多細節!
  10. 關於 Startup IT - Mindset • 人力是最貴的成本 • 人力應該專心在核心業務上 •

    利用成熟的產業降低人力資源的消耗: ◦ 傳統業務的 Outsourcing ◦ AWS 的 Outsourcing (今天的重點)
  11. AWS 服務介紹 • IAM • Region (觀念) • AZ (觀念)

    • VPC • EC2 • Route53 • SES • ELB • RDS • ElastiCache • S3 • CloudFront
  12. AWS IAM • AWS Identity and Access Management • AWS

    的權限管理系統: ◦ 用 Group 管理權限 ◦ 用 MFA (2FA) 保護帳號 ◦ 用 Role 釋出權限
  13. Region • AWS 各個區域都有提供服務,但支援度不一: ◦ us-east-1:最早成立,功能最完整,也是支援歐美區服 務的最愛 ◦ us-west-2:價位與 us-east-1

    接近 ◦ ap-northeast-1:東京區,離台灣最近 • 依照服務類型以及需求而選擇
  14. AZ • Availability Zone • http://www.enterprisetech.com/2014/11/14/rare-peek- massive-scale-aws/

  15. None
  16. Amazon VPC • Amazon Virtual Private Cloud • 虛擬 Switch

    與 DHCP Service • 一個 Region 可以有很多 VPC (目前不重要) • 一個 VPC 可以有很多 Subnet • 一個 Subnet 可以有一個 Routing • 每個 VPC 可以有一個 Main Routing (i.e. Default Routing)
  17. Amazon VPC • 建議的切割方法: ◦ Public Subnet (可以直接連外) ◦ Private

    Subnet (可以透過 NAT Instance 連外) ◦ Internal Subnet (無法連外,需要透過內部的 Proxy Server 連外) ◦ 上面三種 Subnet 都在每個 AZ 建一組
  18. Amazon VPC • Public Subnet: ◦ Local Routing + Internet

    Gateway • Internal Subnet: ◦ Local Routing Only • Private Subnet 建議的 Routing: ◦ 除了 Local Routing 外,每個 AZ Subnet 都有自己的 Routing 從自己 AZ 的 NAT instance 出去
  19. Amazon EC2 • Amazon Elastic Compute Cloud • 虛擬主機服務: ◦

    要不要使用 EBS ◦ HVM 與 PV 的差異 ◦ 為什麼推薦 t2.{micro,small,medium}
  20. Amazon EC2 • IAM Role 與 SDK 的配合 • aws-cli:

    ◦ 官方工具 ◦ AWS Command Line Interface
  21. Amazon Route 53 • DNS 管理服務 • Private DNS ◦

    給 VPC 內的機器使用 • Public DNS ◦ 給 Internet 查詢用
  22. Amazon SES • Amazon Simple Email Service • 發信的服務: ◦

    因為 EC2 直接發信的問題
  23. ELB • Elastic Load Balancing • L4 Switch 或是 L7

    Switch: ◦ HAProxy • 可以對內也可以對外
  24. ELB • HTTP/HTTPS: ◦ 可以在 ELB 上 Offload HTTPS 流量

    ◦ 在設計上,對外全部用 HTTPS!
  25. Amazon RDS • Amazon Relational Database Service • Open Source:

    ◦ MySQL、PostgreSQL • 商用: ◦ Oracle、SQL Server • Amazon 自家: ◦ Aurora (MySQL compatible)
  26. Amazon ElastiCache • Cache 服務 • Memcached、Redis • Memcached: ◦

    把 Login Session 的資料放進去 • Redis: ◦ 把各種計算好的資料放進去
  27. Amazon S3 • Amazon Simple Storage Service • 檔案系統附帶 Web

    Server: ◦ JavaScript、CSS、圖片放上來就對了
  28. Amazon CloudFront • CDN 服務 • 把 S3 掛上去,甚至把整個站掛上去 ◦

    另外一個服務是 CloudFlare
  29. 綜合起來,舉個例子來說明... • 猜猜巧克力 ◦ KKBOX 的遊戲事業群所發展的手機遊戲: ▪ Android、iOS ▪ Server

    端用 PHP ▪ 初期只有用到 S3、EC2、ELB、RDS (MySQL) ◦ Scale 的故事...
  30. Scale • 你的目標? • 你可以承受的 Downtime? • 最重要的是,你有什麼樣的人? ◦ 不僅僅是你的員工能力,還包括了人脈

  31. 猜猜巧克力的 Scale • 2014 年大年初 N: ◦ 使用的量衝起來爆量了 ◦ 被叫起來找問題:

    ▪ 後台 AWS Web Console 可以看到是 RDS 的 CPU 滿了,找出問題馬上修正 DB Schema。 ▪ 順利撐過第一天,但到了第二天...
  32. 猜猜巧克力的 Scale... • 第二天繼續發酵,大年初 N+1: ◦ 繼續爆衝: ▪ 把 RDS

    機器開到最大台 ▪ 直接加 EC2 機器改善 CPU 使用率 (不是 Auto Scaling) ▪ 找 DBA 協助找出問題,並且要求開發的 Engineer 要他修改
  33. 之後某一天... • 在第一名 iOS 與 Android 第一名的尖峰時: ◦ ELB 約

    2000 reqs/sec API call。 ◦ EC2 用 20 台 c3.8xlarge。 ◦ RDS 一台最大台。 • 某天晚上事業群的老大請客吃老乾杯...
  34. 總而言之... • 你會多少就先用多少 • 然後: ◦ 自己多玩一點,爆量的時候可以自己找問題 ◦ 要嘛廣結善緣,爆量的時候有人願意幫忙

  35. 為什麼不提 Auto Scaling? • 相對複雜: ◦ 需要有某種 Code Deploy 機制。

    ◦ 目前 AWS CodeDeploy 只在 us-east-1 提供,所以如 果在其他區要自己建立 Deploy 機制。 • 啊你的業務又不一定會大起來 (逃)
  36. 為什麼不提 DynamoDB? • 要很有經驗的人才寫得順 • 但有經驗的人寫 RDS 會更順 • 在

    Startup 時不要花那麼多力氣在這 • 而且 RDS 可以跟 DynamoDB 共存,有需要 用到的部份再改寫轉移過去就好
  37. 複習 • 很難改的東西儘量一開始就做對: ◦ IAM ◦ VPC • 這兩個超級難改!

  38. 複習 • 善用 AWS 官方提供的 SDK,上 IAM Role • 善用

    RDS 的服務 • 能上 HTTPS 就全上 HTTPS • 把圖片、CSS、JavaScript 放到 S3 上
  39. AWS 只有這樣? • 當然不只! • 有很多很好用的服務: ◦ SNS:行動平台的 Push 機制

    ◦ SQS:非同步的 Queue Service ◦ Redshift:SQL-like 的 BI 工具 • 這些服務「會用的話會更好,但沒有用到也還 okay」的服務
  40. AWS 只有這樣? • 你可以用 RSS Reader 訂起來看! ◦ Feedly •

    前幾天繁體中文版也放出來了:https://aws.amazon. com/tw/
  41. Q&A