Amazon EC2 คืออะไร การแนะนำฟังก์ชันล่าสุดของ AWS

นี่เป็นบทความแปล ที่มีเนื้อหามาจากบทความภาษาญี่ปุ่นของ Classmethod, Inc. ในหัวข้อ「AWS再入門ブログリレー2022 EC2編」 หากผู้อ่านสนใจอ่านเนื้อหาต้นฉบับสามารถอ่านได้ที่ลิ้งค์ "บทความต้นฉบับ" ด้านล่าง เนื้อหาในบทความนี้การอธิบายบางอย่างจะถูกปรับให้เข้าใจง่ายขึ้นทำให้แตกต่างจากต้นฉบับในบางจุด

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

สวัสดีครับทุกคน Lee Sujae ครับ

รายการนี้จะเขียนเกี่ยวกับ AWS ปี 2022 ฉบับเบื้องต้น โดยฝ่าย Consulting ของบริษัทเราเอง นี่เป็นบทความที่จะมาเล่าเกี่ยวกับเนื้อหา AWS Service มาเล่าใหม่อีกครั้งว่ามีอะไรถูกอัพเดทอะไรบ้างแล้ว
แบบละเอียด/เจาะลึกตั้งแต่เบสิกพร้อมคำอธิบาย โดยเหล่าสมาชิกที่เคยเขียนบทความเหล่านี้มาแล้ว

เหมาะสำหรับผู้ที่ต้องการเริ่มเรียนเกี่ยวกับ AWS หรือผู้ที่ใช้งาน AWS อยู่แล้ว
แต่ต้องการหาความรู้ใหม่ว่าปี 2022 มีการอัพเดทอะไรบ้าง หากคุณใช่บุคคลเหล่านี้
ทางผู้เขียนก็หวังว่าบทความนี้จะเป็นประโยชน์สำหรับคุณครับ

งั้นก็ไปเริ่มกันเลยครับ Theme ในวันนี้คือ "Amazon EC2" ครับ

EC2 คืออะไร?

Amazon Elastic Compute Cloud (Amazon EC2) เป็นบริการเว็บที่มีความสามารถในการประมวลผลที่ปรับขนาดได้ในระบบคลาวด์ ซึ่งออกแบบมาเพื่อช่วยให้ Developer ประมวลผลแบบ Web-Scale ได้ง่ายขึ้น - EC2 FAQS

อธิบายง่ายๆก็คือ บริการที่สร้างพื้นที่ประมวลผล (อินสแตนซ์) บนพื้นที่เสมือน (คลาวด์) และจ่ายค่าเช่าสำหรับบริการนั้นๆ ซึ่งเราสามารถดำเนินการสร้างหรือลบอินสแตนซ์ได้อย่างง่ายดายและรวดเร็ว

จุดเด่นของ EC2

ข้อดีของการใช้งาน EC2 มีดังนี้

    • สามารถปรับประสิทธิภาพของการประมวลผลเพื่อให้ตรงกับความต้องการได้อย่างรวดเร็ว (มีความยืดหยุ่น)

    • สามารถขยายการใช้งานอินสแตนซ์ได้อย่างง่ายดายและรวดเร็ว โดยใช้สภาพแวดล้อมที่เตรียมไว้ (AMI) และขยายได้หลากหลายอินสแตนซ์

    • คิดค่าบริการแค่ในส่วนที่ใช้งาน หรือจองใช้งานระยะยาว ช่วยปรับค่าใช้จ่ายให้เหมาะสมกับความต้องการ

    • สามารถเลือกประเภทอินสแตนซ์ให้ตรงกับความต้องการได้ เช่น I/O, เครือข่าย, ประเภทด้านพื้นที่จัดเก็บ, ประสิทธิภาพด้านการประมวลผล หรือ ประสิทธิภาพด้าน graphic เป็นต้น

    นอกจากนี้ก็ยังมีข้อดีอื่นๆอีกมากมาย ไม่ว่าจะเป็นในด้านการจัดการหรือการรักษาความปลอดภัย

ฟังก์ชันการใช้งาน

ต่อไปเราจะมาดูฟังก์ชันการใช้งานของ EC2 กันค่ะ

Instances

คือ หน่วยเซิร์ฟเวอร์จัดการประมวลผลของ AWS EC2 หรือที่เราเรียกกันว่า "อินสแตนซ์" เมื่อสร้างอินสแตนซ์ ต้องกำหนดตัวเลือกต่างๆ เช่น AMI (Amazon Machine Image) ประเภทอินสแตนซ์ ตั้งค่าเครือข่าย กำหนด Volume และ tag เป็นต้น

AMI

คือ Template ที่กำหนดค่าต่างๆ อย่างเช่น ระบบปฏิบัติการ (Operating System) แอปพลิเคชันเซิร์ฟเวอร์(Application server) หรือซอฟต์แวร์ที่จำเป็นสำหรับการเปิดใช้งานอินสแตนซ์ไว้แล้วล่วงหน้า

การกำหนดค่า AMI แบบเดียวกัน ทำให้เราสามารถสร้างอินสแตนซ์แบบเดียวกันหลายอินสแตนซ์ได้

ยกตัวอย่างให้เห็นภาพง่ายขึ้น เหมือนกับเวลาที่เราแต่งภาพ อาจจะตั้งค่าให้เพิ่มแสง เพิ่มความสว่างต่างๆ และเซฟเป็น preset เก็บเอาไว้ เมื่อเราจะแต่งภาพครั้งต่อไปก็ใช้ preset ที่เคยตั้งค่าไว้แล้วเพื่อให้ได้ภาพที่มีสีหรือโทนเดียวกัน การทำงานของ AMI ก็จะคล้ายๆลักษณะนี้ค่ะ

โดยเราสามารถใช้ AMI ที่ AWS จัดเตรียมไว้ หรือใช้ของที่ supplier ซอฟต์แวร์เจ้าอื่นๆจัดหาให้ หรือผู้ใช้จะสร้างสภาพแวดล้อมของตนเองบน EC2 และแปลงเป็น AMI (เช่นเดียวกับการทำ Back up หรือการสำรองข้อมูล) ก็ได้เช่นเดียวกัน

สามารถดูวิธีการสร้าง AMI ได่ที่นี่ → การใช้ AMI เพื่อ Copy ข้อมูลของ EC2 Instance

Instance type

ผู้ใช้สามารถสร้างอินสแตนซ์ โดยเลือกประเภทของอินสแตนซ์ให้เหมาะสมกับความต้องการได้ ไม่ว่าจะเป็นในส่วนของ CPU หน่วยความจำ พื้นที่เก็บข้อมูล เครื่องข่าย หรืออื่นๆ

โดยชื่ออินสแตนซ์ก็จะบ่งบอกประเภทและขนาดของอินสแตนซ์นั้นๆ ซึ่งเราสามารถเลือกประเภทอินสแตนซ์ที่เหมาะสมกับความต้องการใช้ เพื่อให้สามารถประหยัดค่าใช้จ่ายได้อย่างคุ้มค่า

สามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับประเภทอินสแตนซ์ที่มีให้บริการทั้งหมดได้ที่ AWS Official Website

อินสแตนซ์แต่ละประเภทมีความสามารถในการขยายประสิทธิภาพการใช้งาน หรือที่เราเรียกว่า Burstable Performance ในช่วงเวลาใดเวลาหนึ่งได้แตกต่างกัน

Burstable Performance Instances คืออินสแตนซ์ที่สามารถขยายประสิทธิภาพการใช้งานได้ โดยสามารถเพิ่มขนาดอินสแตนซ์จากสเปคขั้นพื้นฐานเป็นสเปคที่ต้องการ และเปิดใช้แค่ในช่วงเวลาที่จำเป็นได้

การเริ่มเลือกใช้อินสแตนซ์สเปคพื้นฐานและขยายเพียงในช่วงเวลาหนึ่งที่จำเป็น ช่วยให้เราสามารถปรับค่าใช้จ่ายให้ตรงกับความต้องการใช้งานได้มากที่สุด เรียกได้ว่าจะช่วยให้เราประหยัดได้มากขึ้นนั่นเองค่ะ

EC2 มีอินสแตนซ์หลายประเภท แต่ละประเภทจะมีจุดเด่นแตกต่างกันไป อย่างเช่น เด่นในเรื่องหน่วยการประมวลผล หรือหน่วยความจำ โดยอินสแตนซ์ที่สามารถ "Burst" หรือขยายการใช้งานได้คืออินสแตนซ์ประเภท T ได้แก่ ประเภท T4g, T3a, T3 และ T2 ซึ่งเป็นรุ่นก่อนหน้าด้วย

Storage

ในอินสแตนซ์ประกอบด้วยพื้นที่จัดเก็บภายในอินสแตนซ์ (Instance Storage) และ พื้นที่จัดเก็บภายนอกอินสแตนซ์ซึ่งมีหลายประเภท แต่ในส่วนของบล็อกนี้จะพูดถึงพื้นที่จัดเก็บที่เรียกว่า EBS (Elastic Block Store) เป็นหลักค่ะ

พื้นที่จัดเก็บภายในอินสแตนซ์จะมี Disk type (HDD, SSD, NvMe SSD) และขนาดที่แตกต่างกันออกไปตามประเภทอินสแตนซ์ ดังนั้น เราจำเป็นต้องตรวจสอบก่อนเลือกใช้ว่าประเภท Disk นั้นๆเหมาะกับงานที่เราต้องการหรือไม่

สามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับ Volume ของแต่ละประเภทอินสแตนซ์ได้ที่ AWS document

สาเหตุที่เราควรจะเก็บข้อมูลไว้ภายใน EBS เพราะมีความทนทานต่อการสูญหายหรือถูกทำลายไปมากกว่าการเก็บไว้ใน Instance Storage ที่ข้อมูลจะถูกทำลายไปตาม Lifecycle ของแต่ละอินสแตนซ์ ดังนั้นถ้าเราจัดเก็บข้อมูลไว้ใน EBS ข้อมูลจะไม่สูญหายตราบใดที่ EBS ยังอยู่นั่นเองค่ะ

ถ้าเราจัดเก็บหรือสำรองข้อมูลไว้ที่ EBS ก่อนลบอินสแตนซ์ ก็จะสามารถเก็บข้อมูลไว้และนำข้อมูลนั้นมาสร้างอินสแตนซ์ต่อไปได้

นอกจากนี้ EBS ยังสามารถทำการเข้ารหัส และสามารถทำ snapshot สำรองข้อมูล (back up) ได้เช่นเดียวกับ AMI

Network

AWS VPC (Amazon Virtual Private Cloud) คือ virtual network ของ AWS

ภาพแสดงตัวอย่าง เมื่อเราสร้าง EC2 และ RDS ไว้ในหลาย Availability Zone บน VPC

เราสามารถแบ่งพื้นที่สำหรับสร้างอินสแตนซ์โดยการแยก “subnet” ได้ดังรูปด้านบน จะเห็นได้ว่าแบ่งออกเป็น 4 subnet และสามารถตั้งค่าแต่ละ Subnet ให้แยก Availability zone กันได้ อย่างเช่นแยกแต่ละ subnet ให้อยู่ใน Availability zone A (ด้านซ้ายในรูป) และ Availability zone B (ด้านขวาในรูป) หรือสามารถสร้างอินสแตนซ์ EC2 หลายๆอินสแตนซ์ในหลายๆ Availability zone ก็ได้เช่นกัน จึงมั่นใจได้ในเรื่องของความพร้อมใช้งานสูง

โดยปกติแล้ว IP address ของอินสแตนซ์ จะถูกกำหนดให้สามารถรับส่งข้อมูลผ่าน Private IP ภายใน VPC เท่านั้น แต่ในกรณีที่ต้องการให้อินสแตนซ์สามารถรับส่งข้อมูลกับอินเตอร์เน็ตได้ จำเป็นจะต้องเชื่อมต่อ Internet gateway (IGW) เข้ากับ subnet ก่อน

หรือหากต้องการแค่ส่งข้อมูลออกไปยังอินเตอร์เน็ต ก็สามารถทำได้โดยการเชื่อมต่อกับ NAT gateway Public IP address ที่จำเป็นสำหรับการรับส่งข้อมูลทางอินเตอร์เน็ต สามารถสร้างได้โดยอัตโนมัติในตอนที่สร้างอินสแตนซ์ หรือสามารถกำหนดได้ด้วยการเชื่อมต่อกับ Elastic IP address ที่เป็น Fix IP address

สำหรับ Bandwidth จะแตกต่างกันไปขึ้นอยู่กับ vCPU ของอินสแตนซ์นั้นๆ

“Bandwidth ของอินสแตนซ์ที่สามารถใช้ได้จะแตกต่างกันไปตามจำนวน vCPU ยกตัวอย่างเช่น อินสแตนซ์ m5.8xlarge มีจำนวน 32 vCPU และ 10 Gbps Bandwidth ส่วน อินสแตนซ์ m5.16xlarge มีจำนวน 64 vCPU และ 20 Gbps Bandwidth อย่างไรก็ตาม มีบางกรณีที่อินสแตนซ์อาจไม่สามารถได้รับ Bandwidth ในปริมาณเท่านั้นได้ เช่น ในกรณีความทนทานของเครือข่ายเกินระดับอินสแตนซ์ (เช่น จำนวน packet ต่อวินาที หรือจำนวนการเชื่อมต่อ) จำนวน Bandwidth ที่ traffic สามารถใช้ได้นั้นขึ้นอยู่กับจำนวนและปลายทางของ vCPU เช่น อินสแตนซ์ m5.16xlarge มีจำนวน 64 vCPU ดังนั้น การรับส่งข้อมูลไปยังอินสแตนซ์อื่นใน region สามารถใช้ Bandwidth ทั้งหมด (20 Gbps) ที่มีอยู่ได้ อย่างไรก็ตาม การรับส่งข้อมูลไปยังอินสแตนซ์อื่นๆใน region สามารถใช้ Bandwidth ได้เพียง 50% (10 Gbps) เท่านั้น - แปลจาก AWS document ภาษาอังกฤษ

ในกรณีที่ต้องการประสิทธิภาพเครือข่ายที่สูงกว่า TCP พื้นฐาน เช่นเดียวกับ Machine Learning สามารถใช้งาน EFA (Elastic Fabric Adapter) ที่รับส่งข้อมูลได้เสถียรและใช้เวลาแฝงต่ำกว่า ทั้งยังรองรับ throughput ที่สูงกว่า TCP อีกด้วย

อย่างไรก็ตาม เนื่องจากมีบางอินสแตนซ์ของ EC2 ที่ไม่รองรับ EFA อยู่ จึงจำเป็นต้องตรวจสอบก่อนว่าอินสแตนซ์ใดที่สามารถใช้งานร่วมกับ EFA ได้

Security

โดยทั่วไปแล้ว การให้บริการของ AWS จะเป็นไปตาม Shared Responsibility Model หรือ แผนความรับผิดชอบร่วมกันระหว่าง AWS และผู้ใช้งาน กล่าวคือ AWS จะเป็นผู้รับผิดชอบจัดการในส่วนของ Infrastructure และผู้ใช้จำเป็นต้องรับผิดชอบในส่วนของการรักษาความปลอดภัยภายในระบบคลาวด์เอง

ผู้ใช้งานสามารถเพิ่มความปลอดภัยของ EC2 ได้ โดยใช้เครือข่าย ACL (Network Access Control List) สำหรับการกำหนดสิทธิห้ามเข้าถึง และ Security group สำหรับกำหนดสิทธิในการเข้าถึงได้

สามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับ ACL ได้ที่ AWS document และสามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับ Security group ได้ที่นี่

หรือหากต้องการเชื่อมกับ Service อื่นๆ ของ AWS แต่ไม่ต้องการใช้การเชื่อมต่อผ่าน Internet gateway สามารถใช้ VPC Endpoint (เปรียบเสมือน IP ของ VPC) เพื่อให้เชื่อมต่อเข้าหากันได้

เมื่อเราทำการเชื่อมต่อกับ AWS Service ด้วยการใช้ VPC Endpoint ดังเช่นรูปด้านล่างนี้ จะทำให้เราสามารถกำหนด Traffic ต่างๆ เกิดขึ้น เกิดแค่ใน AWS network ได้

เมื่อใช้ VPC Endpoint เพื่อรับส่งข้อมูลกับบริการของ AWS

ในส่วนของการกำหนดสิทธิการเข้าถึง เราสามารถใช้ฟังก์ชัน IAM ในการจำกัดสิทธิ์ของผู้ใช้ที่สามารถเข้าถึงอินสแตนซ์หรือบริการต่างๆได้ และในขณะเดียวกันก็สามารถใช้เพื่อจำกัดสิทธิ์ของอินสแตนซ์ในการเข้าถึงอินสแตนซ์และบริการอื่นๆได้ด้วยเช่นกัน

อีกทั้งยังสามารถใช้ IAM Role กำหนดบทบาทของ Instance ต่างๆ ใน AWS management console ได้ เช่น การกำหนดการใช้งาน AWS SSM (SystemsManager) เพื่อรีโมตควบคุม instance หรือ การใช้งาน AWS Cloudwatch ในการ Logging

สามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับ EC2 และ IAM ได้ที่ AWS document

เพื่อเพิ่มความปลอดภัยให้กับระบบคลาวด์ของเรา ควรหมั่นอัปเดทซอฟต์แวร์ภายในอินสแตนซ์ และจัดการข้อมูลบัญชีและ key pair ที่จำเป็นสำหรับการเข้าถึงอินสแตนซ์ หรือจะเปิดใช้งาน VPC flow logs เพื่อทำมอนิเตอร์ริง ร่วมกันกับ CloudWatch ก็ได้เช่นกัน

ค่าบริการ

ทดลองใช้ Amazon EC2 ได้ฟรี วิธีการชำระค่าบริการอินสแตนซ์ Amazon EC2 มี 5 วิธี ได้แก่ On-demand , Savings Plans, อินสแตนซ์แบบเหมาจ่าย และอินสแตนซ์ Spot คุณยังสามารถชำระค่าบริการโฮสต์แบบเฉพาะเจาะจง ซึ่งให้พื้นที่อินสแตนซ์ EC2 บนเซิร์ฟเวอร์จริงสำหรับการใช้งานของคุณได้ด้วย - ราคา Amazon EC2

การเลือกวิธีการชำระค่าบริการที่เหมาะสมกับการใช้งาน จะช่วยให้เราสามารถปรับค่าใช้จ่ายให้เหมาะสมได้ อย่างเช่น เราไม่จำเป็นต้องเลือกใช้แบบ on-demand หากต้องการเปิดใช้งานเซิร์ฟเวอร์เพียงแค่ในช่วงเวลาหนึ่ง ต่อจากนี้จะมาอธิบายถึงวิธีการชำระค่าบริการกันค่ะ

• On-demand ตามความต้องการ

    On-demand Instance คือการคิดค่าบริการพื้นที่ประมวลผลเป็นรายชั่วโมงหรือรายวินาที ตามอินสแตนซ์ที่ใช้งาน โดยไม่จำเป็นต้องผูกมัดทำสัญญาเป็นระยะเวลานาน สามารถเพิ่มลดพื้นที่ประมวลผลได้ตามความต้องการของแอปพลิเคชัน และชำระค่าบริการรายชั่วโมง(ที่ระบุไว้) ในส่วนของอินสแตนซ์ที่ใช้งานเท่านั้น

• Spot Instance

    รูปแบบการชำระค่าบริการที่เราสามารถขอพื้นที่ประมวลผลสำรองของ Amazon EC2 ได้พร้อมรับส่วนลดการใช้งาน 90% เมื่อเทียบกับแบบ on-demand แต่อินสแตนซ์ที่สามารถขอใช้งานได้จะแตกต่างกันไปขึ้นอยู่กับเวลาในช่วงนั้นๆ จึงต้องตระหนักไว้ว่าเราอาจจะไม่สามารถใช้งานอินสแตนซ์ที่ต้องการได้เสมอไป

• Saving plans

    โมเดลการคิดเงินโดยการแจ้งจองใช้งานในปริมาณที่สม่ำเสมอเป็นระยะเวลา 1 หรือ 3 ปี เพื่อให้ได้รับส่วนลดค่าบริการ EC2 และ Fargate ในราคาถูก

สามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับ Saving plans ได้ที่ Saving Plan vs. Reserved Instance ต่างกันยังไง บล็อกนี้มีคำตอบ!

• Reserved Instances (RI)

    มอบส่วนลดให้ปริมาณมากเมื่อเทียบกับการใช้งานแบบ on-demand (สูงสุด 72%) สามารถจองอินสแตนซ์ใน Availability zone ที่เจาะจงได้ อย่างไรก็ดี อัตราส่วนลดจะแตกต่างกันไปตามระยะเวลาที่จอง 1 หรือ 3 ปี

• Dedicated Hosts

    Physical Server ของ EC2 แบบเฉพาะเจาะจงของผู้ใช้

ทดลองสร้าง EC2

เนื่องจากบทความต้นฉบับเขียนไว้ตั้งแต่เดือนกุมภาพันธ์ ปัจจุบันอาจมีการอัปเดตและเปลี่ยนแปลงแล้ว แนะนำให้อ่านบล็อก 【Update】วิธีติดตั้ง Amazon Linux 2 บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTY ที่เป็นฉบับอัปเดต จะได้ทำตามได้ง่ายขึ้นนะคะ(✿◡‿◡)

สรุป

จบกันไปแล้วนะคะ สำหรับบทความแนะนำ Amazon EC2 หวังว่าบทความนี้จะเป็นประโยชน์สำหรับผู้ที่กำลังสนใจใช้งานคลาวด์นะคะ(ノ◕ヮ◕)ノ*:・゚✧

บทความต้นฉบับ

AWS再入門ブログリレー2022 EC2編

บทความอื่นๆที่เกี่ยวข้อง

【Update】วิธีติดตั้ง Amazon Linux 2 บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วยโปรแกรม PuTTY

【Update】การสร้าง Microsoft Windows Server ใน Amazon EC2

การติดตั้ง Ubuntu 20.04 บน EC2 และเชื่อมต่อเซิร์ฟเวอร์ด้วย PuTTy