Parallel Systems · บทที่ 8 จาก 9

Cloud Computing & Virtualization

บทนี้อยู่ในช่วงหัวเลี้ยวหัวต่อพอดี — เอกสารต้นฉบับเขียนขึ้นตอนที่ "cloud computing" เพิ่งเริ่มเป็นคำที่คนพูดถึง (Amazon EC2 เปิดตัวปี 2006) ทำให้เห็นชัดว่าอะไรคือแนวคิดรากฐานที่ยืนหยัด และอะไรคือรายละเอียดที่เปลี่ยนไปเกือบหมด

📚
สังเคราะห์จากเอกสาร "Large Scale Infrastructure" และ "Cloud Computing Overview" (2110414, ราว 2013-2014) — ตัวอย่างบริการที่อ้างถึงหลายตัว (Live Mesh, AppExchange) เลิกให้บริการไปแล้ว แต่โครงสร้างแนวคิด IaaS/PaaS/SaaS ยังใช้จำแนกบริการ cloud ได้แม่นยำจนถึงทุกวันนี้

1Hardware Virtualization: ก่อนจะมี Cloud ต้องมีสิ่งนี้ก่อน

ปัญหาที่ virtualization แก้
เซิร์ฟเวอร์แบบ dedicated (หนึ่งเครื่องต่อหนึ่งงาน) มักใช้ทรัพยากรไม่เต็มประสิทธิภาพ — งานส่วนใหญ่ไม่ได้ใช้ซีพียู/memory เต็ม 100% ตลอดเวลา Virtualization ทำให้เครื่องจริงหนึ่งเครื่องรัน "เครื่องเสมือน" หลายเครื่องพร้อมกัน ใช้ทรัพยากรที่เหลืออยู่ให้คุ้มค่าขึ้น
แนวทางวิธีการ
Full VirtualizationGuest OS ไม่รู้ตัวเลยว่าถูก virtualize อยู่ — ต้องมีซอฟต์แวร์พิเศษเรียกว่า Hypervisor (หรือ Virtual Machine Monitor) คอยจำลองฮาร์ดแวร์ทั้งหมดให้ guest OS เชื่อว่ากำลังคุยกับฮาร์ดแวร์จริง
Para-virtualizationHost OS (hypervisor) เปิด API พิเศษ (hypercall) ให้ guest OS เรียกใช้โดยตรง — แต่ guest OS kernel ต้องถูกดัดแปลงให้รู้จักเรียก API เหล่านี้ แลกกับประสิทธิภาพที่ดีกว่า full virtualization เพราะไม่ต้องจำลองฮาร์ดแวร์ทั้งหมด
Hardware-assisted Virtualizationอาศัยชุดคำสั่งพิเศษที่ซีพียูรองรับโดยตรง (เช่น Intel VT-x, AMD-V) ช่วยเร่งความเร็ว virtualization ในระดับฮาร์ดแวร์
ประโยชน์ของ Virtualizationรายละเอียด
Resource Consolidationรวมหลายเครื่องที่ใช้ทรัพยากรไม่เต็มให้อยู่บนฮาร์ดแวร์จริงจำนวนน้อยลง
Flexible Resource Allocationปรับเปลี่ยนสัดส่วนซีพียู/memory ที่แต่ละ VM ได้รับโดยไม่ต้องแตะฮาร์ดแวร์จริง
Cheaper Fail-Over / Efficient Recoveryย้าย VM ไปรันบนฮาร์ดแวร์เครื่องอื่นได้เร็วเมื่อเครื่องเดิมมีปัญหา โดยไม่ต้องมีฮาร์ดแวร์สำรองเท่าจำนวนเครื่องจริง

RAID: ความน่าเชื่อถือของ Storage ระดับล่าง

Redundant Array of Inexpensive Disks
ใช้ดิสก์ราคาถูกหลายตัวร่วมกัน เพื่อให้ได้ความน่าเชื่อถือสูงกว่าดิสก์ตัวเดียว — แนวคิดเดียวกับ replication ในวิชา Distributed Systems เพียงแต่ทำในระดับ storage hardware
ระดับ RAIDวิธีการความจุที่ใช้ได้จริง
RAID 0 — Stripingกระจายข้อมูลข้ามดิสก์ทุกตัว เพิ่มความเร็ว แต่ไม่มี fault tolerance เลย ดิสก์ตัวเดียวพังข้อมูลหายทั้งหมดN (เต็มความจุรวม)
RAID 1 — Mirroringเก็บสำเนาข้อมูลเดียวกันซ้ำในดิสก์คู่ ทนต่อดิสก์พังได้ 1 ตัว อ่านเร็วขึ้นเพราะอ่านจากสองตัวพร้อมกันได้1 เท่าของดิสก์ตัวเดียว (เสียครึ่งหนึ่งไปกับสำเนา)
RAID 5 — Distributed Parityกระจายข้อมูลและข้อมูล parity (สำหรับกู้คืน) ไปทั่วทุกดิสก์ ทนต่อดิสก์พังได้ 1 ตัว โดยเสียความจุน้อยกว่า RAID 1N−1

2วิวัฒนาการสู่ Cloud: จาก Grid สู่ Utility Computing

เอกสารต้นฉบับเล่าประวัติศาสตร์สั้น ๆ ไว้
ก่อนคำว่า "cloud" จะแพร่หลาย มีแนวคิด Grid Computing (แชร์ทรัพยากรคำนวณข้ามองค์กรเพื่องานวิทยาศาสตร์) มาก่อน — Cloud Computing สืบทอดแนวคิด "แชร์ทรัพยากรจากที่อื่น" มา แต่เปลี่ยนโมเดลธุรกิจให้เป็น Utility Computing: จ่ายตามที่ใช้จริง (pay-as-you-go) เหมือนค่าไฟค่าน้ำ แทนที่จะขอยืมทรัพยากรจากพันธมิตรทางวิชาการแบบ grid

Build vs. Buy vs. Lease

กรอบตัดสินใจของเอกสารต้นฉบับ
องค์กรที่ต้องการระบบสารสนเทศมีทางเลือก 3 แบบ: Build (สร้างเอง ควบคุมได้เต็มที่ แต่ต้นทุนและความเสี่ยงสูงสุด) Buy (ซื้อซอฟต์แวร์สำเร็จรูปมาติดตั้งเอง) Lease (เช่าใช้จากผู้ให้บริการ — นี่คือแก่นของ cloud computing) — cloud ทำให้ "Lease" กลายเป็นตัวเลือกที่คุ้มค่าที่สุดสำหรับกรณีใช้งานจำนวนมาก เพราะไม่ต้องลงทุนล่วงหน้า (CapEx) เปลี่ยนเป็นค่าใช้จ่ายตามการใช้งานจริง (OpEx)

3สามชั้นบริการ Cloud: IaaS / PaaS / SaaS

ชั้นบริการให้อะไรตัวอย่างจากเอกสารต้นฉบับ
IaaS
Infrastructure as a Service
เครื่องเสมือน, storage, อุปกรณ์เครือข่าย (load balancer, firewall) — "utility computing" ระดับโครงสร้างพื้นฐาน จ่ายตามใช้ ปรับขนาดง่ายAmazon EC2/S3, Rackspace, GoGrid
PaaS
Platform as a Service
ให้ infrastructure พร้อม system software stack และเครื่องมือพัฒนา (web server, database server) — ไม่ต้องดูแลระดับ OS เองGoogle App Engine, Yahoo! Maps
SaaS
Software as a Service
ซอฟต์แวร์สำเร็จรูปพร้อมใช้ผ่านเว็บ ปรับแต่งได้ผ่าน configuration ไม่ต้องเขียนโค้ดเองSalesforce.com, Google Docs, Gmail
ข้อควรจำสำหรับสอบ
ยิ่งขึ้นชั้นจาก IaaS → PaaS → SaaS ผู้ใช้ยิ่งควบคุมได้น้อยลงแต่แลกกับภาระดูแลที่น้อยลงตามไปด้วย — IaaS ต้องดูแล OS/patch/scaling เอง ขณะที่ SaaS ไม่ต้องดูแลอะไรเลยนอกจาก configuration การเลือกชั้นบริการคือการเลือกจุดสมดุลระหว่าง "ควบคุมได้" กับ "ภาระที่ต้องดูแล"

4จาก Virtual Machine ไปสู่ Container และ Serverless

แล้ว · ~2010–2014
ตอนนี้ · 2026
Virtualization หมายถึง Virtual Machine (VM) เกือบทั้งหมด — แต่ละ VM จำลองฮาร์ดแวร์เต็มรูปแบบ พร้อม OS kernel เต็มตัวของตัวเอง ใช้เวลา boot เป็นนาทีและกิน memory มาก
Container (Docker เป็นมาตรฐานหลัก) ไม่จำลองฮาร์ดแวร์หรือ OS kernel เลย — ใช้ kernel ของ host ร่วมกัน แค่แยก process/filesystem/network namespace ออกจากกัน เบากว่า VM มาก (boot เป็นวินาที ไม่ใช่นาที) เพราะไม่ต้องแบก OS เต็มตัวมาด้วย — เป็นวิวัฒนาการที่สำคัญที่สุดของ virtualization ในรอบ 15 ปีที่ผ่านมา
Resource Consolidation ทำระดับ VM — จัดการจำนวน VM ต่อเครื่องจริงด้วยมือหรือสคริปต์
Container Orchestration (Kubernetes เป็นมาตรฐานอุตสาหกรรม) จัดการวงจรชีวิตของ container นับพันตัวอัตโนมัติ — scale ขึ้น/ลงตามโหลด, ย้าย container หนีเครื่องที่มีปัญหา (self-healing), และจัดสรรทรัพยากรให้เหมาะสมโดยไม่ต้องมีคนคอยสั่งเอง
IaaS/PaaS/SaaS คือ 3 ชั้นบริการหลักที่ครอบคลุมตลาด cloud ทั้งหมด
Serverless / Function-as-a-Service (FaaS) เช่น AWS Lambda เพิ่มชั้นบริการใหม่ที่แคบกว่า PaaS อีกขั้น — ผู้ใช้เขียนแค่ฟังก์ชัน ไม่ต้องดูแลแม้แต่ระดับ "แอปพลิเคชันที่รันตลอดเวลา" ระบบจะสร้าง/ทำลาย instance อัตโนมัติตาม request ที่เข้ามาจริง จ่ายเงินตามเวลาที่ฟังก์ชันรันจริงเท่านั้น (เป็นวิวัฒนาการขั้นสุดของแนวคิด utility computing/pay-as-you-go)
ข้อสังเกตสำคัญ
Container ไม่ได้ "แทนที่" VM ทั้งหมด — ระบบยุคปัจจุบันจำนวนมากใช้ทั้งสองชั้นซ้อนกัน: cloud provider รัน VM (เพื่อแยก customer แต่ละรายออกจากกันอย่างปลอดภัยในระดับฮาร์ดแวร์เสมือน) แล้ว customer รัน container อยู่ภายใน VM นั้นอีกที (เพื่อความเบาและ deploy เร็วในระดับแอปพลิเคชันของตัวเอง) — เป็นตัวอย่างของการผสมสองเทคโนโลยีที่แก้ปัญหาคนละระดับเข้าด้วยกัน ไม่ใช่แข่งกันแทนที่
คำถามซ้อมสอบ
  1. อธิบายความแตกต่างระหว่าง full virtualization และ para-virtualization
  2. อธิบาย RAID 0, RAID 1, และ RAID 5 ในแง่ความจุที่ใช้ได้จริงและระดับ fault tolerance
  3. อธิบายกรอบคิด Build vs. Buy vs. Lease และเชื่อมโยงว่า cloud computing ทำให้ตัวเลือกไหนน่าสนใจขึ้นและเพราะเหตุใด
  4. เปรียบเทียบ IaaS, PaaS, และ SaaS ในแง่การควบคุมที่ผู้ใช้มีและภาระที่ต้องดูแล
  5. อธิบายว่า container ต่างจาก virtual machine อย่างไรในระดับสถาปัตยกรรม และทำไมองค์กรจำนวนมากจึงใช้ทั้งสองอย่างซ้อนกัน ไม่ใช่เลือกอย่างใดอย่างหนึ่ง

5Virtualization แยกภาพที่ผู้ใช้เห็นออกจากเครื่องจริง

Virtualization สร้าง abstraction ของ CPU, memory, storage และ network ให้ guest เห็นเหมือนมีเครื่องของตน ทั้งที่ทรัพยากรจริงถูกแชร์และจัดสรรใหม่ได้ ประโยชน์คือ isolation, consolidation, portability และการจัดการ lifecycle

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

6Type 1 และ Type 2 Hypervisor

ชนิดตำแหน่งเหมาะกับ
Type 1ทำงานบน hardware โดยตรงหรือเป็นส่วนของ platformServer/data center ที่ต้องการ isolation และ performance
Type 2ทำงานบน host operating systemDesktop, development และทดลองหลาย OS

Hardware-assisted virtualization ช่วย trap privileged operations และจัด memory translation ผ่าน nested page tables ลดต้นทุนเมื่อเทียบกับ software emulation แต่ VM exit, virtual I/O และ TLB behavior ยังมีผลต่อ workload

7CPU Virtualization และ Scheduling

vCPU คือหน่วยประมวลผลที่ guest เห็น ไม่จำเป็นต้องผูก physical core ถาวร Hypervisor schedule vCPUs ลง cores หาก provision vCPU มากกว่าที่มีจริงเกิด oversubscription ซึ่งคุ้มเมื่อ workloads ไม่ peak พร้อมกัน แต่สร้าง steal time เมื่อแย่งกัน

8Memory Virtualization

Guest virtual address แปลเป็น guest physical แล้วต่อเป็น host physical การแปลสองชั้นเพิ่ม TLB pressure Huge pages ช่วยลดจำนวน entries แต่ใช้ memory หยาบขึ้นและ compaction ยาก

Ballooning และ memory overcommit ให้ host reclaim memory จาก VM แต่ถ้า working sets รวมเกิน RAM ระบบ swap และ performance อาจทรุดแบบหน้าผา การขาย memory มากกว่าที่มีจริงจึงพึ่งสมมติฐานว่าผู้เช่าไม่ใช้พร้อมกัน

9I/O Virtualization

Device emulation เข้าใจง่ายแต่ overhead สูง Paravirtual drivers เช่น virtio ให้ guest คุยกับ hypervisor ผ่าน interface ที่ออกแบบเพื่อ virtualization ส่วน device passthrough/SR-IOV ให้ VM เข้าถึง hardware ใกล้ตรงมากขึ้น

แนวทางPerformanceFlexibility
Emulationต่ำกว่าCompatibility สูง
Paravirtual I/Oดีต้องมี driver ที่รองรับ
Passthrough/SR-IOVใกล้ nativeMigration และ sharing จำกัดขึ้น

10Container ไม่ใช่ VM ขนาดเล็ก

Container แชร์ kernel ของ host แต่แยกมุมมองผ่าน namespaces และจำกัดทรัพยากรด้วย cgroups จึงเริ่มเร็วและใช้พื้นที่น้อยกว่า VM แต่ isolation boundary ต่างกันและไม่สามารถใช้ kernel คนละตระกูลโดยตรง

กลไกทำหน้าที่
PID namespaceแยกมุมมอง process IDs
Network namespaceแยก interfaces, routes และ ports
Mount namespaceแยก filesystem view
User namespaceMap identity ลดสิทธิ์ต่อ host
cgroupsจำกัด/วัด CPU, memory, I/O และ process count
แชร์ Kernel คือทั้งข้อดีและขอบเขตความเสี่ยง
Container breakout หรือ kernel vulnerability อาจกระทบ host และ containers อื่น Security ต้องใช้ least privilege, seccomp, capabilities, read-only filesystem และ patch host ไม่ใช่พึ่ง image isolation อย่างเดียว

11Container Image และ Layer

Image ประกอบด้วย immutable filesystem layers หลาย images แชร์ layers ได้ ทำให้แจกจ่ายเร็วขึ้น แต่ layer เก่าที่มีไฟล์ใหญ่ยังอยู่แม้ลบใน layer ถัดไป จึงควรใช้ multi-stage build และจัดลำดับคำสั่งให้ cache มีประโยชน์

12Orchestration: Container หนึ่งตัวง่าย Cluster ของ Container ไม่ง่าย

Orchestrator รับ desired state เช่นต้องการ replicas 5 ตัว แล้ว schedule, restart และ rollout ให้ state จริงเข้าใกล้เป้าหมาย มันจัด lifecycle แต่ application ยังต้องพร้อมรับ termination, retry และ state migration

13Resource Request, Limit และ QoS

Request ใช้ในการ schedule ว่า node มี capacity พอหรือไม่ Limit กำหนดเพดาน หากตั้ง request ต่ำกว่าการใช้จริงมาก cluster จะ pack แน่นและเกิด contention หาก limit CPU ต่ำอาจถูก throttle ส่วน memory เกิน limit มักถูก kill แทนชะลอ

การจองโต๊ะ
Request คือจำนวนที่นั่งที่แจ้งร้าน Limit คือจำนวนสูงสุดที่ยอมให้เพิ่ม ถ้าทุกกลุ่มจองหนึ่งแต่พามาสิบคน ร้านดูเหมือนว่างในระบบจองแต่แน่นจริง การตั้ง request จากการวัดจึงสำคัญต่อทั้ง utilization และ reliability

14Cloud Region, Availability Zone และ Fault Domain

Region เป็นพื้นที่ภูมิศาสตร์กว้าง Availability zones แยกโครงสร้างไฟและเครือข่ายระดับหนึ่ง แต่ไม่ได้แปลว่า failure อิสระทุกชนิด การวาง replicas หลาย zones ช่วยทน zone failure แต่เพิ่ม network latency และ cost

ต้องถามว่าระบบต้องทนอะไร: process crash, node loss, rack failure, zone outage หรือ region outage แต่ละระดับต้องใช้ topology และ data replication ต่างกัน การกระจายทุกอย่างข้าม region เพื่อ “ปลอดภัยที่สุด” อาจทำ latency และ consistency cost สูงเกินความต้องการ

15Elasticity ต่างจาก Scalability

Scalability คือระบบใช้ทรัพยากรเพิ่มแล้วรองรับงานเพิ่มได้ดีเพียงใด Elasticity คือความสามารถเพิ่มและลดทรัพยากรตามโหลดในเวลาที่เหมาะ ระบบอาจ scale ได้เมื่อเตรียมล่วงหน้า แต่ไม่ elastic หากเปิด node ใช้ 30 นาที

คำถามScalabilityElasticity
เน้นอะไรความสัมพันธ์ระหว่าง workload กับ resourceการปรับ resource ตามเวลา
metricEfficiency, throughput, cost per taskReaction time, over/under-provisioning
failureเพิ่มแล้วคอขวดไม่ย้ายหรือโตเร็วเกินเพิ่มช้า ลดเร็ว และ oscillation

16Autoscaling หลายระดับ

การ autoscale ซ้อนหลายชั้นอาจตอบสนองช้า: application ขอ pods เพิ่ม แต่ cluster ต้องเปิด VM ก่อน จากนั้น image pull และ warm cache จึงพร้อม ต้องวัดเวลาทั้งสายและมี buffer capacity

17Serverless และ Function as a Service

Serverless ไม่ได้ไม่มี server แต่ผู้ใช้ไม่จัดการ server lifecycle โดยตรง Platform scale functions ตาม event และคิดราคาตามการใช้ เหมาะกับ burst, event processing และงานสั้น stateless แต่มีข้อจำกัดเรื่อง cold start, execution duration, concurrency, network และ state ภายนอก

Scale to zero แลกกับการตื่น
การไม่มี instance ตอนว่างประหยัดเงิน แต่ request แรกต้องรอเตรียม runtime, load code และเชื่อม dependencies Provisioned concurrency ลด cold start แต่ทำให้กลับมามีค่า idle บางส่วน

18Cloud Storage: Block, File และ Object

ชนิดInterfaceเหมาะกับ
BlockVolume/block deviceDatabase, filesystem และ random I/O
FileShared hierarchical namespaceLegacy apps และ shared files
ObjectKey/API, immutable-friendlyData lake, media, backup และ static assets

การแยก compute จาก object storage ช่วย elasticity แต่ latency สูงกว่า local disk และ small-file requests แพง การเลือก storage ต้องดู access pattern, consistency, durability และ data transfer cost

19Cloud Network และ Egress Cost

Virtual network, subnet, routing, security group และ load balancer สร้าง topology เชิงตรรกะ แต่ packet ยังวิ่งผ่าน physical infrastructure Traffic ข้าม zone/region อาจมีทั้ง latency และค่าใช้จ่าย

Architecture ที่ compute ถูกแต่ส่งข้อมูลออกมากอาจแพงกว่าเดิม ต้องรวม egress, NAT gateway, load balancer processing และ inter-zone transfer ใน cost model Data gravity ทำให้ย้าย compute ไปใกล้ข้อมูลมักคุ้มกว่าย้ายข้อมูลจำนวนมาก

20Shared Responsibility และ Cloud Security

ผู้ให้บริการดูแลความปลอดภัย “ของ cloud” เช่น physical facilities และบางชั้น infrastructure ผู้ใช้ยังดูแล configuration, identity, data, network policy และ application การใช้ managed service ลดงานบางส่วนแต่ไม่ย้ายความรับผิดชอบทั้งหมด

21Infrastructure as Code

IaC ทำให้ infrastructure เป็น versioned desired state ตรวจ review, ทำซ้ำ และ rollback ได้ แต่ code ที่ผิดสามารถสร้างความเสียหายขนาดใหญ่ได้เร็ว จึงต้อง validate, plan และแบ่ง rollout

State ของ IaC ต้องปกป้องเพราะอาจมี identifiers และข้อมูลสำคัญ Environment ที่แก้ด้วยมือเกิด drift ทำให้ deployment ถัดไปคาดเดายาก หลัก GitOps ขยายแนวคิดโดยให้ repository เป็นแหล่ง desired state และ controller reconcile ระบบ

22Cloud Cost ไม่ได้เป็นเพียงราคาต่อชั่วโมง

ต้นทุนตัวอย่างวิธีควบคุม
ComputeVM, container, function, GPURightsizing, autoscaling, commitment/spot
StorageCapacity, IOPS, request และ retrievalLifecycle policy และ tiering
NetworkCross-zone, egress, NAT และ LBTopology/data locality
Idleลืม resources, overprovisioningTagging, budget, shutdown policy
People/complexityดูแลหลาย services และ incidentsStandard platform และลดบริการที่ไม่จำเป็น

23Spot/Preemptible Instance และ Fault-Tolerant Work

Instance ราคาต่ำอาจถูกเรียกคืน เหมาะกับงานแบ่งได้, checkpoint ได้ และ retry ได้ เช่น batch rendering หรือ distributed training ที่บันทึก state เป็นระยะ ไม่เหมาะกับ stateful singleton ที่ย้ายยาก

ต้นทุนจริงรวมงานที่สูญเมื่อ interruption หาก checkpoint ถี่เกิน overhead สูง หากห่างเกินเสีย work มาก ต้องเลือกระยะตาม checkpoint cost และ failure rate

24Accelerator ใน Cloud

GPU/TPU instances ให้ compute สูงแต่ราคาและ availability ต่างตาม region การใช้ multi-GPU ต้องดู interconnect ภายในเครื่องและ network ระหว่างเครื่อง Instance สองแบบที่มี GPU รุ่นเดียวกันอาจ performance ต่างเพราะ CPU, memory, PCIe และ NIC

Scheduler ต้องรวม resource shape เช่น GPU memory และ topology งาน inference อาจใช้ batching หรือ fractional sharing ส่วน training ต้องการ gang scheduling ให้ workers พร้อมกัน ไม่เช่นนั้นจ่ายค่าเครื่องบางส่วนที่รอ quorum ของงาน

25Resilience และ Disaster Recovery

คำความหมาย
RTOยอมให้บริการหยุดนานเท่าใด
RPOยอมสูญข้อมูลย้อนหลังได้เท่าใด
Backupสำเนาย้อนเวลาเพื่อกู้จากลบ/เสียหาย
Replicationสำเนาสำหรับ availability/scale ซึ่งอาจ replicate ความผิดด้วย

Multi-zone ไม่แทน backup และ backup ที่ไม่เคย restore เป็นเพียงความหวัง การออกแบบ DR ต้องมี runbook, ownership, credential และการซ้อมภายใต้เวลาจริง

26กรณีศึกษา: ย้ายบริการ Batch ไป Cloud

  1. Containerize application และแยก input/output ไป object storage
  2. กำหนด resource request จาก profiling ไม่ใช่เดา
  3. แบ่งงานเป็น idempotent chunks และ queue
  4. ใช้ autoscaled workers และ spot instances สำหรับงาน retry ได้
  5. บันทึก checkpoint/manifest เพื่อ resume
  6. วัด cost per job, queue age และ failure recovery

การย้ายสำเร็จไม่ได้วัดจากโปรแกรมรันได้บน VM แต่ดูว่าระบบใช้ elasticity, failure model และ pricing ของ cloud อย่างเข้าใจหรือยัง

27แล็บและแบบฝึกที่แนะนำ

แล็บ Resource Limit
รัน container เดียวกันภายใต้ CPU/memory requests และ limits หลายค่า วัด throttling, OOM และ latency เพื่อแยก allocation จาก actual performance
แล็บ Autoscaling
สร้าง load เป็น step และ burst วัดเวลาตั้งแต่ metric สูงจน instance พร้อมรับงาน เปรียบเทียบ CPU กับ queue-based scaling
Cost Review
ให้ออกแบบงานหนึ่งบน VM, container service และ serverless รวม compute, storage, request และ egress พร้อมระบุ assumption จุดคุ้มทุน

28VM, Container หรือ Serverless

เงื่อนไขควรพิจารณาเหตุผล
ต้องใช้ kernel/OS ต่างหรือ isolation สูงVMBoundary ชัดและควบคุม guest OS
บริการยาวและ deployment มาตรฐานContainerเริ่มเร็วและ orchestration ดี
Event burst งานสั้น scale-to-zero มีค่าServerlessจ่ายตามใช้และลด lifecycle management
Legacy monolith statefulVM ก่อนแล้วค่อยแยกลดการเปลี่ยนหลายมิติพร้อมกัน
Batch ขนาดใหญ่Container/VM jobsควบคุม resource และเวลารันยาว

คำตอบอาจผสมกัน Database อยู่ managed service, API อยู่ containers และ event บางชนิดใช้ functions สิ่งสำคัญคือให้แต่ละ model แก้ปัญหาที่มี ไม่ใช่ใช้ให้ครบทุกชนิด

29Lift-and-Shift กับ Re-Architecture

Lift-and-shift ย้าย VM เดิมขึ้น cloud เร็วและเปลี่ยน application น้อย แต่ยังคง topology เดิม Re-platform ปรับบางชิ้นเป็น managed service ส่วน re-architecture เปลี่ยน boundary และ data flow เพื่อใช้ elasticity กับ failure model ใหม่

อย่าเปลี่ยนทุกมิติพร้อมกันโดยไม่มี checkpoint
ถ้าเปลี่ยน OS, database, network, deployment และ application ในรอบเดียว เมื่อช้าหรือผิดจะไม่รู้สาเหตุ การย้ายเป็นช่วงพร้อม observability ช่วยแยกปัญหา แม้ปลายทางจะ modernize มาก

30Noisy Neighbor และ Performance Interference

Tenant แย่ง cache, memory bandwidth, I/O queue และ network แม้ CPU quota ดูไม่ชนกัน Benchmark บน shared instance จึงมี variance การใช้ dedicated host, placement group หรือ isolation สูงขึ้นช่วย predictability แต่ราคาเพิ่ม

ควรวัด steal time, throttling, I/O latency และ network variance หาก workload ต้อง p99 ต่ำ การซื้อ headroom อาจคุ้มกว่าการ optimize codeบนทรัพยากรที่ไม่แน่นอน

31Energy และ Carbon Awareness

งาน batch ที่ deadline ยืดหยุ่นอาจย้ายไปเวลาหรือ region ที่พลังงานสะอาดกว่า การเพิ่ม utilization ลด idle cost ต่อผล แต่การย้ายข้อมูลข้าม region ก็ใช้พลังงานและเงิน ต้องวัด energy/carbon ต่อ job คู่กับเวลา คุณภาพ และ data residency

32Checklist ก่อนขึ้น Production

คำถามก่อนเพิ่มบริการ Cloud อีกหนึ่งชนิด

บริการใหม่นี้ลดงานส่วนใด ใครเป็นเจ้าของเมื่อเกิด incident มีข้อจำกัดด้าน region, quota และ data portability อย่างไร และถ้าต้องย้ายออกจะนำข้อมูลกับ configuration กลับได้หรือไม่ Managed service ลดภาระการดูแลบางชั้น แต่เพิ่ม dependency ต่อ API, pricing และ lifecycle ของผู้ให้บริการ จึงควรเลือกจากต้นทุนรวม ไม่ใช่เพียงความเร็วในการเริ่มต้นครับ

33สรุปและขั้นตอนถัดไป

Virtualization และ cloud แยกทรัพยากรตรรกะออกจาก hardware ทำให้ provision, isolate และย้าย workload ง่ายขึ้น VM ให้ kernel isolation ที่แข็งกว่า Container แชร์ kernel และเริ่มเร็ว Orchestration จัด desired state ส่วน serverless ซ่อน lifecycle มากขึ้น แต่ไม่มีแบบใดลบ CPU, memory, network และ data movement ออกจากระบบ

บทถัดไปจะโฟกัสบริการข้อมูล ซึ่งมักเป็นส่วนที่ scale ยากที่สุด เพราะ state ไม่สามารถสร้างและทิ้งได้เหมือน stateless container เราต้องจัด partition, replication, consistency, cache และ storage semantics ให้รองรับทั้งความเร็วและความถูกต้องครับ