AWS Certified ตอนที่ 1.0

เราไม่เคยชอบการสอบ certified เลย เพราะเรามองว่าการสอบมันไม่ได้ประโยชน์อะไรอย่างแท้จริง สิ่งสำคัญมันคือก่อนสอบเท่านั้นเอง แล้วสุดท้ายคนที่ต้องการใบ cert ก็คือบริษัท แค่เพราะต้องการเพิ่ม business tire ของตัวเองเพื่อให้ได้ผลประโยชน์กับ vendor คู่ค้ามากขึ้น

เพราะฉะนั้นแล้วบ่อยครั้งการได้มาของ certified มันจึงไม่ได้สะท้อน learning curve อย่างที่ควรจะเป็น


แต่ก็นั่นแหละ ในที่สุดเราก็หนีไม่พ้น อีกทางหนึ่งของมันก็บอกได้ว่า อย่างน้อยเราก็ทำงานได้นะ เรามองอดีตที่ผ่านมา 6 เดือนแล้วพบว่า เราคงอยู่อย่างนี้ต่อไปไม่ได้ เพราะฉะนั้นหนทางของเราคือคว้า cert เพื่อหาหนทางไปต่อ ด้วยเหตุนี้ช่วงนี้ blog ที่นี่จะอุดมไปด้วยเรื่องราวของ AWS


EC2 และ EBS

EC2

EC2 คือ Elastic Compute Cloud (1E + 2C = EC2) เป็น web service ที่ทำให้เราสามารถเข้าถึงบริการ virtual computer ที่ AWS(Amazon Web Service) เรียกมันว่า instance ซึ่งสามารถสร้างเครื่องที่เราต้องการได้ในไม่กี่นาที ปรับเพิ่มหรือลด resource ได้

การใช้งานระบบ Virtual Computer (หรือเรียกว่า Instance) ผ่าน Public Internet ด้วยรูปแบบการเช่าใช้บริการนั้น เราไม่รู้ว่าเครื่องที่เราใช้ หรือ Instance นั้นอยู่ที่ไหน เราจึงเรียก environment ที่ใช้บริการนั้นว่า Public Cloud คือใช้ระบบ Computing บน Cloud

รูปแบบการใช้งานแบบนี้ เราไม่ได้เป็นเจ้าของอะไรเลย การใช้งานคือการเช่า และจ่ายเงินเท่าที่ใช้งาน ใช้เท่าไหร่ก็จ่ายเท่านั้น เพราะฉะนั้นค่าใช้จ่ายจึงขึ้นอยู่กับ workload ที่เราต้องการใช้งาน ไม่ใช่การซื้อเครื่องที่กำหนด spec ตามที่ใช้งานเพราะ เราสามารถปรับเปลี่ยน spec ได้ตลอดเวลาตามที่เราต้องการใช้งาน (มีทั้งการปรับแบบไม่มี downtime และ มี downtime)

เพราะฉะนั้นสิ่งสำคัญคือ ความเชื่อใจ (trusted) ที่ผู้ให้บริการต้องทำให้คนใช้งานมั่นใจ และคนใช้งานก็มีสองแบบ คือแบบใช้งานทั่วๆไป ไม่ได้ใส่ใจอะไรนัก กับองค์กรหรือบริษัทที่เจาะจงในรายละเอียดหลายอย่าง เช่น มาตรฐานการเขียน/ลบข้อมูล service level agreement (SLA) หรือมาตรฐานเฉพาะทาง อย่างเรื่องการเงินที่ต้องการ PCI-DSS เป็นต้น

ตัวอย่าง SLA ของ EC2 https://aws.amazon.com/ec2/sla/

EC2 Types: ชนิดของ Instance

รายละเอียดตามนี้ https://aws.amazon.com/ec2/instance-types/

เราจำง่ายๆตามนี้

T = Cheap ex. T2.Micro

D = Density

I = IOPS

R = RAM

M = Main choice for general purpose

C = Compute

G = Graphic

EC2 Instance Features

  • Burstable Performance Instances and CPU Credits

ถ้ามองด้าน Performance ของ Instance เราสามารถแยก Instance เป็น 2 แบบ คือ Fixed performance และ Burstable performance

Burstable Performance ก็คือ Instance ใน T seriese เป็นการ Burst เฉพาะ CPU performance ด้วย CPU Credit เหมาะสำหรับผู้ที่ไม่ใช้ CPU เต็มที่ตลอดเวลา เพราะราคาจะถูกกว่า instance ประเภท Fixed performance

Instance T series จะมี baseline level CPU performance ในการทำงาน และสามารถเพิ่มขึ้นได้(burst) ด้วยระบบการคิด CPU Credit ยกตัวอย่างเช่น Instance แบบ t2.small จะได้รับ 12 CPU Credit ต่อชั่วโมง (ถ้าเหลือเก็บสะสมได้ 24 ชม.) จะมี baseline performance การใช้อยู่ที่ 20% ของ CPU Core ( (12*100)/60 = 20%) ก็คือ ถ้าใช้งานปกติจะใช้ CPU performance ได้ 20% ตลอด 60 นาที แต่ถ้าใช้ 100% ก็จะใช้ได้ 12 นาที จากนั้นจะถูกลด performance กลับลงมาใช้งานได้เท่าที่ baseline performance

กรณีที่ต้องการใช้ CPU performance สูงนานๆ ก็ควรต้องเพิ่มขนาดเครื่อง t2 ให้ใหญ่ขึ้นเพื่อให้ได้เครดิตมากขึ้น หรือเปลี่ยนไปใช้ Fixed performance instance

  • Multiple Storage Options

มี 2 รูปแบบคือ EBS (Elastic Block Storage) คือการต่อ block storage เข้ากับส่วน compute EC2 มีหลายแบบทั้ง ssd หรือ hdd จานหมุน เลือกใช้ได้ตามความเหมาะสม

และ Instance store คือการใช้งาน internal storage ที่อยู่ใน physical server เลย โดยมันจะถูกสร้างเป็น block storage ชั่วคราวมาให้ใช้งาน (temporary block storage) ถ้าเรา reboot ตัว storage นี้ยังอยู่ แต่ถ้าปิดเครื่องข้อมูลจะหายหมด ถ้ามีข้อมูลสำคัญที่ต้องเก็บ AWS แนะนำให้โยนใส่ S3 เอาไว้

รูปแบบการใช้งาน EBS
  • EBS-optimized Instances

การใช้งาน block storage ที่เป็น external storage แยกออกมาจากส่วน compute จะต้องคำนึงถึงความเร็วในการเชื่อมต่อด้วย ในกรณีใช้งานที่ต้องการประสิทธิภาพ AWS จะมี instance รุ่นที่ใช้ EBS-optimization ให้เลือกใช้โดยไม่ต้องจ่ายเพิ่ม คือ C4, M3, P2 และ D2

EBS-optimized Instances จะแยกการเชื่อมต่อ storage ให้เฉพาะเลย (เราเข้าใจเองว่า อาจจะไม่แชร์กับเครื่องอื่น หรือมีแชร์กับเฉพาะ instance ประเภทของตัวเองด้วย ratio ต่ำ ) โดยความเร็วในการเชื่อมต่อ block storage จะอยู่ที่ 500–4,000 Mbps ขึ้นอยู่กับประเภทของ instance

  • Cluster Networking

X1, M4, C4, C3, I2, CR1, G2, HS1, P2, and D2 instances support cluster networking

When launched in a placement group, select EC2 instances can utilize up to 10 Gbps for single-flow and 20 Gbps for multi-flow traffic in each direction (full duplex). Network traffic outside a cluster placement group (e.g. to the Internet) is limited to 5 Gbps (full duplex)

  • Dedicated Instances

คือการใช้งาน EC2 บน single-tenant hardware dedicated to a single customer เหมาะสำหรับกรณีที่ไม่อยากใช้ร่วมกับคนอื่น

Dedicated Instances let you take full advantage of the benefits of the AWS cloud — on-demand elastic provisioning, pay only for what you use, all while ensuring that your Amazon EC2 compute instances are isolated at the hardware level.

ในกรณีที่ต้องการใช้งานแบบไม่แบ่ง share resource กับใคร มี option ให้เลือก 2 อย่างคือ dedicated instance และ dedicated host
https://aws.amazon.com/ec2/dedicated-hosts/

EC2 Options

  1. On Demand: Fixed rate/ hour
  2. Reserved: Capacity reserved, Discount on the hourly charged by 1 or 3 year terms, เครื่องในซีรี่ย์เดียวกัน สามารถรวมเครื่องย่อยให้เป็นเครื่องใหญ่ หรือ แตกเครื่องใหญ่ให้เป็นเครื่องเล็กหลายเครื่องได้
  3. Spot: Bid price for instance (If spot instance terminated by AWS, Not be charged for a partial hour, เราเข้าใจว่า AWS ทำมาเพื่อใช้งาน resouces ที่เป็นส่วนเหลือ ที่ว่างๆอยู่ เพื่อให้คุ้มที่สุด ) ดูวีดีโอเข้าใจมากกว่าอธิบาย
https://aws.amazon.com/ec2/spot/

EC2 Limitations

http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_ec2

EBS

คือ Elastic Block Storage ที่สามารถสร้าง storage volume และ attach เข้าไปที่ EC2 Instance ได้ จากนั้นก็สามารถสร้าง file system แล้วลง OS หรือ app ต่อไป

EBS จะถูกเก็บไว้ที่ available zone ใดโซนหนึ่งตามที่เราเลือกตอนสร้าง โดย AWS จะ replicate ไว้ให้อัตโนมัติ และออกแบบให้มี available ที่ 99.999%

EBS 1 ตัวจะต่อได้กับ EC2 1 ตัวเท่านั้น ถ้าอยากใช้ EC2 มากกว่า 1 ด้วยการใช้ storage ร่วมกันก็ไปใช้ EFS-Elastic File System แทน (โห่ว นี่มัน Ceph หรือปล่าว)

Snapshot ของ EBS จะอยู่บน S3 นะ สามารถโยกข้าม regions ได้

EBS Types

GP2: General Purpose SSD (1GB-16TB)

  • 3 IOPS/GiB, Baseline performance are 100 IOPS(33.33GB and below) to 10,000 IOPS (3,334 GiB and above)
  • I/O credits = 5.4M /sec, Can burst to 3,000 IOPS in 30 minute (30 x 60 x 3,000 = 5.4M)
  • Throughput: volumes <= 170 GiB is 128 MiB/s, volumes >= 214 GiB is 160 MiB/s, On 170–214 increase rate is 768KiB/s
  • หน่วยมันอาจจะมึน MB คือ 1,000,000 (10⁶) และ MiB คือ 1,048,576 (2²⁰) ส่วน KiB หรือ GiB ก็ทำนองเดียวกัน

IO1 : Provision IOPS SSD (4GB-16TB)

  • Max ratio 50:1 = 50 IOPS/GiB, (Ex. Max 5,000 IOPS on Volume 100 GiB)
  • Max IOPS per Volume: 20,000 IOPS
  • Throughput:256 KiB/s (Max 320 MiB/s @1,280 IOPS)
  • เหมาะกับงานที่ต้องการ performance สูงๆ เอาไปทำ raid เพิ่มอีกก็ได้

ST1: Throughput Optimized HDD (500GB-16TB)

  • Not bootable
  • เหมาะกับการเก็บไฟล์ขนาดใหญ่ที่เรียงลำดับ (ไม่ต้องการความเร็ว random I/O มากนัก)
  • Burst bucket performance Credit 1 TiB, Baseline 40 MiB/TiB, Burst to 250 MiB/TiB and Max 500 MiB/s @Volumes 2 TiB

SC1: Cold HDD (500GB-16TB)

  • Not bootable
  • ช้ากว่า ST1 ประมาณครึ่งนึง
  • ถูกมาก
  • Burst bucket performance Credit 1 TiB, Baseline 12 MiB/TiB, Burst to 80 MiB/TiB and Max 250 MiB/s @Volumes 3.125 TiB

Magnetic (Previous Generation Volume, 1 GiB-1TiB)

  • Bootable เลือกได้ตอนสร้าง EC2
  • Max IOPS/Vol 40–200 IOPS, Max Throughput/Vol 40–90 MiB/s

Volumes and Snapshot

  • Volumes exist on EBS, Snapshot on S3
  • Snapshot บน S3 เป็นแบบ Incremental คือ ครั้งแรกเก็บข้อมูลเต็ม ถัดมาเก็บเพิ่มในส่วนที่ต่าง
  • ถ้า Volumes Encrypted ไว้ Snapshot ก็จะ encrypt ให้อัตโนมัติ
  • เราสามารถแชร์ Snapshot ให้คนอื่นที่มี account AWS ได้ (ถ้า encrypt ไว้ ก็เอา key ให้เขาไปด้วย)
  • Point in time snapshot เราสามารถทำ snapshot ตอนที่เครื่องยังใช้งานอยู่ได้ แต่ข้อมูลที่ได้มาอาจจะผิดพลาด และทำให้ performance ของเครื่องลดลง เพราะฉะนั้นควรหยุดเครื่องก่อน แล้ว flush cache ลง disk ให้หมด แล้วค่อย snapshot
  • Snap ได้พร้อมกัน 5 pending task / volume
  • Snapshots can be used to instantiate multiple new volumes, expand the size of a volume, or move volumes across Availability Zones. When a new volume is created, you may choose to create it based on an existing Amazon EBS snapshot. In that scenario, the new volume begins as an exact replica of the snapshot.

ในความเป็นจริงการตัดสินใจใช้ EBS แบบต่างๆ ถ้าไม่อยากจ่ายเงินมากเกินไป ควรจะทดสอบการใช้งานของระบบกับ EBS ทั้ง GP2 และ IO1 ก่อน เนื่องจากการใช้งานถ้าไม่ได้ต้องการ maximum IOPS จริงๆ บางครั้ง GP2 ก็สามารถใช้งานได้ดีพอแล้ว เพราะว่ามันสามารถ burst IOPS ได้เป็นช่วงๆจาก I/O credits ที่ให้มา (แต่อย่าคาดหวังกับการ burst ของมันมาก)

EBS นี่ยิ่งเราใช้ Storage volumes ใหญ่ เราก็ยิ่งได้ Performance ที่ดีตามไปด้วย

ข้อจำกัดที่สำคัญของความเร็วในการเข้าถึงข้อมูล น่าจะเป็นเรื่อง connection ระหว่าง EC2 และ EBS (และชนิดของ SSD, SATA bus capacity) ซึ่งตรงนี้เรามีทางแก้ปัญหา เช่นใช้ Instance Store หรือใช้ EBS-Otimized ที่มี Dedicated EBS Bandwidth ตามความเหมาะสม

อ้างอิง:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Storage.html

https://www.percona.com/blog/2016/06/01/use-provisioned-iops-volumes-for-aws/

http://dizzythinks.net/ebs-or-why-you-may-be-wasting-money-on-provisioned-iops.html#.V-cpfpN96qA

http://blog.textit.in/why-buying-provisioned-iops-on-rds-may-be-a-mistake

http://tableaulove.com/aws-ec2-general-purpose-g2-disks-tableau-server-mostly-awesome/

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSSnapshots.html

http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html

https://www.opswat.com/blog/aws-2015-why-you-need-switch-pv-hvm

https://acloud.guru/

หมายเหตุ: เราไม่ได้ต้องการเรียนรู้ AWS เพื่อทำระบบ Public cloud เท่านั้น เป้าหมายของเราคือ Hybrid Cloud (Public-Connections-Private and Security)