Under the Cloud – EC2

วันก่อนน้องในทีมถามว่า AWS EC2 เป็น VM หรือเปล่า?

คำตอบคือ ใช่ และไม่ใช่

ก็เลยคิดว่าควรจะเขียนบล็อคเล่าสักหน่อยว่าเท่าที่เรารู้ ข้างใต้ Cloud นั้นคืออะไร?

EC2

AWS สมัยแรกๆ ระบบ hypervisor (ที่ใช้ควบคุม VM) ค่อนข้างโจ่งแจ้ง นั่นคือเค้าใช้ Xen ซึ่งเครื่อง type โบราณต่างๆ จะมีให้เลือก virtualization mode ได้สองแบบ คือ

  • PV (Paravirtualization) ซึ่งจะมี overhead น้อยกว่า VM ปกติ แต่ข้อจำกัดคือจะต้องใช้ kernel image พิเศษที่ออกแบบมาสำหรับ Xen โดยเฉพาะ
  • HVM ซึ่งจะจำลอง Hardware ขึ้นมาทั้งหมด ทำให้สามารถรัน OS อะไรก็ได้โดยไม่ต้องดัดแปลง

ต่อมาด้วยความก้าวหน้าของเทคโนโลยี AWS ก็เริ่มแนะนำให้ใช้ HVM มากขึ้น เนื่องจากว่าสะดวกในการใช้งานมากกว่า และ EC2 เองก็เริ่มใช้ hardware มากขึ้น เช่น การ์ด network และ GPU ซึ่งเครื่อง HVM เท่านั้นที่สามารถใช้งาน hardware เหล่านี้ได้โดยตรง (passthrough)

EC2, 2013

ในปี 2013 AWS เปิดตัวเครื่อง C3 ซึ่งมาพร้อมกับระบบ Enhanced Networking ซึ่งเบื้องหลังคือ AWS ซื้อการ์ดเร่งความเร็ว network มาเพิ่ม ซึ่งการ์ดตัวนี้จะเสียบเข้ากับ network card ของจริงอีกทีหนึ่ง แล้ว VM ลูกค้าจะสามารถคุยกับการ์ด network ที่แยกเป็นหลายๆ ใบในระดับ hardware ได้โดยตรงโดยไม่ต้องผ่าน hypervisor ทำให้ประสิทธิภาพสูงเท่ากับ hardware จริง

C3 Enhanced Networking

หลังจาก C3 ออกมาแล้ว AWS ก็เริ่มเปลี่ยนชิ้นถัดไป นั่นคือ EBS หรือระบบ network storage ซึ่งในเครื่อง C4 ก็ได้ใช้ Hardware จากบริษัท Annapurna Labs มาทำให้เครื่องมองเห็น network storage เป็น NVMe (ที่เรานิยมใช้ใน SSD)

แต่ในขณะนั้น NVMe ยังค่อนข้างใหม่ AWS จึงไม่ได้ทำให้เครื่องมองเห็น NVMe โดยตรงแต่ hypervisor จะครอบ NVMe แล้วแปลงเป็น PV แบบเดิมให้อยู่

เนื่องจาก IO ทุกอย่างกลายเป็น hardware หมดแล้ว ทำให้เครื่องไม่ต้องเสีย CPU ไปเพื่อ virtualize IO อีก เครื่อง C4 จึงเปิด EBS Optimized ให้เป็นค่าเริ่มต้น และยังทำให้สามารถขาย CPU core ที่เหลือให้ลูกค้าได้อีกด้วย

C4 – EBS Optimized by Default

หลังจาก C4 แล้ว AWS ก็ออกเครื่อง X1 ที่ใส่ RAM ได้สูงสุด 12TB และ 128 CPU core ซึ่งนอกจากขนาดที่ใหญ่มากแล้ว เครื่อง X1 ยังเป็นรุ่นแรกที่เปลี่ยน driver network จาก Intel 82599 Virtual Function เป็น Elastic Network Adapter (ENA)

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

การ์ดใบนี้สร้างโดย Annapurna เช่นกัน แต่ต่างจากเดิมคือ Annapurna กลายเป็นบริษัทในเครือ Amazon ไปแล้ว

X1 – Elastic Network Adapter

เครื่องบน Amazon บางประเภทจะมี storage ภายในเครื่อง (Instance storage) ซึ่งในช่วงเวลานี้ NVMe SSD ก็เป็นที่นิยมแล้ว AWS ก็ได้ออกเครื่อง i3 ที่เชื่อม SSD ทั้งลูกกับเครื่องเรา โดยใช้ hardware เข้ามา encrypt และ monitor การใช้งานอีกที

ก้าวใหญ่มากๆ ของ AWS อยู่ในปี 2017 ที่ออกเครื่อง C5 ขึ้นมา ซึ่ง AWS บอกว่า หลังจากทุกอย่างกลายเป็น hardware หมดแล้ว เค้าจึงเอาระบบ monitoring และ management ต่างๆ ออกไปเป็น hardware ทั้งหมด และตั้งชื่อ hardware ทุกตัวที่เค้าสร้างขึ้นมาในเครื่อง C5 ว่า Nitro

นั่นแปลว่าถ้าเราซื้อเครื่อง c5.18xlarge เราจะได้ทุก CPU Core ของ server ด้านล่างไว้ใช้คนเดียว แต่ก็ยังรันอยู่บน KVM เพื่อ emulate บาง CPU instruction อยู่

C5 – Nitro

อ่านถึงตรงนี้ทุกคนคงจะถามว่าแล้วจะเหลือ Hypervisor ไปทำไม?

ในเวลาเดียวกับที่เปิดตัวเครื่อง C5 AWS ก็เลยเปิดตัวเครื่อง i3.metal มาพร้อมกันด้วย โดยเพิ่มชิพ Nitro Security เข้ามาเพื่อป้องกันการเข้าถึง hardware ด้านล่างบางอย่าง

i3.metal – Bare metal hardware

ดังนั้นผมถึงบอกน้องเค้าว่า EC2 เป็นทั้ง VM และไม่ใช่ VM เพราะถ้าซื้อ C5 ก็ยังเป็น VM บางๆ อยู่ แต่ถ้าซื้อ i3.metal แล้วจะได้ทั้งเครื่องไปใช้คนเดียวเลย

ถึงตรงนี้ก็อยากแนะนำ Talk นี้ที่ผมไปขโมยสไลด์เค้ามาให้ดู ก็ไปฟังเค้าเล่ารายละเอียดกันได้ครับ สนุกมาก

หรือถ้าอยากฟัง Boot process ของเครื่อง i3 ว่าไม่มี VM เลยแล้วจะเปิดเครื่องผ่าน API ได้ยังไง ไปฟัง talk นี้ได้ครับ


ตอนหน้าว่าจะมาเขียนถึง Google Cloud บ้างว่าบริษัทที่ทำมือถือกล้องเดียวแล้วใช้ software ทำในสิ่งที่มือถือเจ้าอื่นต้องใช้ 2 กล้องทำเค้าทำ Cloud ยังไง?