สารบัญ
Series: CyberSecurity Foundation — รากฐาน Security สำหรับยุค AI (ภาษาคน)
Part 0 — WHY: เมืองนี้ทำไมต้องมียาม
- EP.01 — Cybersecurity คือเรื่องของคุณ
- EP.02 — 4 เคสที่เปลี่ยนวงการ
- EP.03 — CIA Triad
- EP.04 — Defense in Depth + Diversity
- EP.05 — Assume Breach + Risk
Part 1 — HOW: ระบบนิเวศของเมือง
- EP.06 — ระบบนิเวศของโจร
- EP.07 — ระบบนิเวศของผู้ป้องกัน
- EP.08 — Framework: ISO/NIST/COBIT/CIS
- EP.09 — Compliance Theater
Part 2 — Identity: บัตรประชาชน + กุญแจห้อง
- EP.10 — IAM Lifecycle
- EP.11 — Authentication 3 Factors + AAA
- EP.12 — Password 101
- EP.13 — MFA + Biometric
- EP.14 — Kerberos
- EP.15 — Federation + SSO
- EP.16 — Authorization: RBAC/ABAC
- EP.17 — PAM + Zero Trust
Part 3 — Data: ของในเซฟ
- EP.18 — Data Classification + Lifecycle
- EP.19 — Cryptography 101
- EP.20 — Symmetric Crypto: AES
- EP.21 — Asymmetric Crypto: RSA + Diffie-Hellman
- EP.22 — Hashing
- EP.23 — PKI + Certificates
- EP.24 — TLS / HTTPS
- EP.25 — Email Security: SPF/DKIM/DMARC
- EP.26 — Privacy Engineering
Part 4 — Infrastructure: ถนน กำแพง ท่อ
- EP.26.5 — Network Anatomy: 7 ชั้นของถนน (Primer)
- EP.27 — Network Basics + Firewall
- EP.28 — Segmentation + DMZ
- EP.29 — IDS / IPS / WAF / RASP
- EP.30 — VPN + Proxy + DNS Security
- EP.31 — DDoS + DLP
- EP.32 — Cloud + Shared Responsibility
- EP.32.5 — Cloud Stack Anatomy: 9 ชั้นของระบบ (Primer)
- EP.33 — Container + Kubernetes
- EP.33.5 — Beyond Container: MicroVM, Wasm, Unikernel ← คุณอยู่ตรงนี้
- EP.34 — DevSecOps
Part 4 (EP.35-38) + Part 5-6 — กำลังเขียนต่อ
ครับ ใน EP.33 เราเล่าจบที่ภาพของ enterprise ที่รัน production อยู่บน Docker + Kubernetes Netflix, Spotify, Uber, Airbnb — ทุกบริษัทที่คุณคุ้นชื่อ อยู่บน K8s กันหมด
ภาพนั้นจริงครับ — สำหรับยุค 2018-2024
แต่มีเรื่องเล็กๆ ที่ไม่ค่อยมีคนพูดดังๆ — AWS Lambda รันโค้ดของคุณบน “ไม่ใช่ container” มาตั้งแต่ปี 2018 แล้ว ทุกครั้งที่คุณกด deploy function บน Lambda — มันไปรันอยู่บน MicroVM ที่ชื่อ Firecracker ไม่ใช่ Docker
Cloudflare Workers ที่เป็นคู่แข่งของ Lambda — ไม่ใช้ container เลยตั้งแต่ day 1 ใช้ V8 isolate + WebAssembly แทน เลยทำให้ cold start เร็วกว่า Lambda ราว 100 เท่า
Cloudflare D1 (SQLite distributed) ที่ผมเล่าไว้ใน Database 101 EP.10 — รันอยู่บน WebAssembly ทั้งหมด ไม่มี Linux container อยู่ในวงจรเลย
นี่คือสิ่งที่ EP.33.5 จะพาดูครับ — 3 runtime ที่กำลังเดิมพันสำหรับยุคหลัง container Container ยังครองตลาด enterprise web app ใหญ่ๆ อยู่จริง แต่ที่ edge + serverless + AI inference — ภาพรวมเคลื่อนไปแล้ว
EP นี้สั้นแต่สำคัญ เพราะถ้าคุณต้องตัดสินใจเรื่อง infrastructure ใน 3 ปีข้างหน้า — runtime พวกนี้จะโผล่มาในวงตัดสินใจของคุณแน่นอน
ภาพในใจ — ที่อยู่อาศัยของ workload เปลี่ยนยุค
ลองนึกภาพที่อยู่อาศัยของคนเรานะครับ
ยุค 1990s — ตึก — ก่อนยุค virtualization แต่ละ workload (เช่น email server, web server, database) ได้ server ของตัวเอง ทั้งเครื่อง physical เลย เหมือนคนหนึ่งคนได้ตึกทั้งหลัง ใหญ่เกินตัว เปลืองมาก
ยุค 2000s — คอนโด (Virtual Machine) — VMware/Hyper-V/KVM แบ่ง physical server ออกเป็นหลาย VM แต่ละ VM คือคอนโดที่มี OS เต็มตัวอยู่ข้างใน workload หนึ่งตัวต่อหนึ่งคอนโด เพื่อนบ้านอยู่กำแพงเดียวกันแต่มองไม่เห็นกัน — ใช้ทรัพยากรดีขึ้นเยอะ แต่ยังหนัก (บูตเป็นนาที กิน RAM หลาย GB)
ยุค 2013 — ตู้คอนเทนเนอร์ (Docker) — แทนที่จะแบ่งทั้ง OS — แบ่งแค่ “ของในห้องของแต่ละคน” OS, ห้องครัว, ห้องน้ำใช้ร่วมกัน (shared kernel) แต่ของส่วนตัวของแต่ละ container แยกขาด ตู้คอนเทนเนอร์ — เบา (50-500 MB) บูตเร็ว (วินาที) ขนย้ายง่าย
ยุค 2018+ — กระเป๋าใบเล็ก (Wasm) + บ้านน็อคดาวน์ (MicroVM) — ที่ EP.33.5 จะพาดูนี่แหละครับ — runtime ที่บางลงอีก เร็วขึ้นอีก ปลอดภัยขึ้นอีก
ทีนี้มาดู 3 runtime หลักหลัง container ทีละตัว
1. MicroVM (Firecracker) — VM ที่บูตใน 125ms
MicroVM = virtual machine ที่ ตัดทุกอย่างที่ไม่จำเป็นออก เหลือแค่ส่วนที่ต้องมีจริงๆ เพื่อให้บูตเร็วและกินทรัพยากรน้อย — แต่ยังคงเป็น VM ที่มี hardware isolation เต็มตัว
ตัวที่ดังที่สุดในวงการชื่อ Firecracker — AWS open-source ออกมาในปี 2018
ทำไมเกิด
ปัญหาของ AWS ในปี 2017 คือ — Lambda รันบน container (Docker) แต่ container แบ่ง kernel ใช้กับเพื่อนบ้าน ถ้าใครเจอช่องโหว่ของ kernel = หลุดออกจาก container ตัวเองไปอ่าน memory ของคนอื่นได้
ใน AWS Lambda — workload ของลูกค้าหลายเจ้าวิ่งอยู่บน physical server เครื่องเดียวกัน ถ้า isolation พังครั้งเดียว = ข้อมูลลูกค้าทุกเจ้าหลุดหมด นี่เป็น risk ที่ AWS รับไม่ได้
ทางเลือกตอนนั้นมี 2 ทาง — (1) ใช้ VM ปกติ (boot เป็นนาที + กิน RAM 1 GB+) = ช้าเกินสำหรับ serverless (2) อยู่กับ container ต่อ = security risk
AWS เลยสร้างทางที่ 3 ขึ้นมาเอง — MicroVM — เอา KVM (hypervisor ของ Linux) มาตัด feature ที่ไม่จำเป็นออกหมด เหลือแค่ที่ Lambda ต้องการจริงๆ ผลที่ได้คือ — VM ที่บูตใน 125 มิลลิวินาที กิน RAM overhead แค่ ~5 MB
Firecracker ทำงานยังไง
Firecracker เป็น Virtual Machine Monitor (VMM) เขียนด้วย Rust รันบน Linux ใช้ KVM อยู่ใต้ฝา ทุก Lambda function ของคุณ = 1 MicroVM ที่บูตเฉพาะตอนที่มี request เข้ามา
- เริ่มจาก minimal Linux kernel (~5 MB)
- ไม่มี driver ที่ไม่จำเป็น (เช่น USB, GPU, audio — ไม่ใช้ใน serverless)
- ไม่มี shell, ไม่มี package manager
- มี API endpoint เดียวที่ Firecracker control ได้
ใครใช้
- AWS Lambda — ตั้งแต่ปี 2018 ทุก function รันอยู่บน Firecracker
- AWS Fargate — container แบบ “managed” — รันอยู่บน Firecracker ใต้ฝา
- Fly.io — startup ที่สร้าง platform ทั้งหมดอยู่บน Firecracker (deploy app ไปทุก region ของโลกได้ด้วย 1 คำสั่ง)
- Kata Containers — project ของ OpenInfra Foundation ที่ใช้ MicroVM (รวมถึง Firecracker) มาห่อ container ให้ปลอดภัยขึ้น
Trade-off
ข้อดี:
- มี hardware isolation ของ VM (kernel แยกขาดเต็มตัว — ปลอดภัยกว่า container เยอะ)
- บูตเร็วใกล้เคียง container (~125 ms)
- กิน RAM น้อยกว่า VM แบบเดิม 100 เท่า
ข้อเสีย:
- ยังหนักกว่า container อยู่ดี (cold start ระดับ 1 ms ทำไม่ได้)
- Ecosystem แคบกว่า Docker (tool ที่มีให้ใช้น้อยกว่า)
- ตั้ง setup ซับซ้อนกว่า — ไม่เหมาะให้ dev เอามารันบน laptop ของตัวเอง
ที่ผู้บริหารควรจำ: Firecracker คือเหตุผลที่ AWS Lambda ปลอดภัยกว่า self-hosted FaaS เจ้าอื่นที่ยังรันบน Docker เพราะ AWS แก้ปัญหา multi-tenant isolation ที่ระดับ hardware-level VM ไม่ใช่แค่ kernel-level container
2. WebAssembly (Wasm) — runtime ที่เบาที่สุดในโลก
WebAssembly (Wasm) = bytecode format สำหรับ run code ใน sandbox — เริ่มต้นออกแบบมาเพื่อ browser แต่ตอนนี้กลายเป็น server runtime + edge runtime + plugin runtime ที่ดังที่สุด
ทำไมเกิด
ปี 2015 — Mozilla, Google, Microsoft, Apple จับมือกันสร้าง standard ใหม่ที่ทำให้ browser รันโค้ดของภาษาอื่น (ไม่ใช่แค่ JavaScript) ได้เร็วใกล้เคียง native
ปี 2017 — Wasm 1.0 ออก browser ทุกตัวรองรับ
ปี 2019 — Mozilla ออก WASI (WebAssembly System Interface) — มาตรฐานที่ทำให้ Wasm รันนอก browser ได้ — ทั้งบน server, บน edge, บน IoT device
ตั้งแต่นั้นมา Wasm ก็กลายเป็น portable runtime ที่เร็วที่สุด ของยุคนี้ — เขียน Rust/Go/C++/AssemblyScript ครั้งเดียว compile เป็น .wasm รันได้ทุกที่ที่มี Wasm runtime
Wasm ทำงานยังไง
Wasm = stack-based virtual machine ที่มี bytecode ของตัวเอง คอมไพล์ภาษาระดับสูง (Rust, Go, C++) ออกมาเป็น .wasm file → Wasm runtime อ่าน bytecode → execute ใน sandbox ที่แยกขาดจาก host
ที่ต่างจาก container/VM:
- ไม่มี OS — ไม่ต้องบูต Linux, ไม่มี kernel, ไม่มี file system (เว้นแต่ host จะ inject เข้ามาให้)
- ไม่มี process — มีแค่ function ที่ execute
- Cold start อยู่ที่ ~5 ms (เทียบกับ Lambda 200-2000 ms)
- กิน RAM ~1 MB (เทียบกับ container 50-500 MB)
ใครใช้
ที่ edge (พระเอกหลัก):
- Cloudflare Workers — V8 isolate + Wasm รันอยู่ใน 200+ city ทั่วโลก
- Fastly Compute@Edge — Wasm runtime ของ Fastly เอง
- Vercel Edge Functions — V8 isolate, ใช้งานกับ Wasm ได้
- Deno Deploy — แพทเทิร์นเดียวกับ Cloudflare Workers
ที่เป็น plugin system:
- Figma plugins — เขียน plugin เป็น Wasm = ปลอดภัยกว่า native JS plugin
- Shopify Functions — ให้ merchant ปรับแต่ง checkout logic ผ่าน Wasm
- Envoy proxy filters — extension ของ service mesh
ที่ database:
- Cloudflare D1 — SQLite รันอยู่ใน Wasm
- TursoDB — libSQL อยู่บน Wasm
- DuckDB-WASM — analytics database ที่รันใน browser
ที่ AI:
- WasmEdge — runtime สำหรับ AI inference ที่ edge
- ONNX Runtime Web — รัน ML model ใน browser ผ่าน Wasm
Trade-off
ข้อดี:
- เบามาก เร็วมาก (cold start ~5 ms = “ใกล้ 0” ในแง่ user experience)
- Portable — เขียนครั้งเดียวรันได้ทุก runtime
- Secure by default — sandbox ที่ปฏิเสธทุก system call (host ต้องอนุญาตอะไรต้อง explicit)
- ไม่มี cold start แบบ Lambda — เพราะไม่ต้องบูตอะไรเลย
ข้อเสีย:
- WASI ยังเด็ก — feature ที่ Linux มี Wasm อาจยังไม่มี (เช่น native threading)
- Filesystem access จำกัด (ขึ้นอยู่กับ host implementation)
- Ecosystem ของ library ยังเล็กกว่าฝั่ง Node.js/Python อยู่มาก
- Tool สำหรับ debug ยังไม่ค่อยพร้อม
ที่ผู้บริหารควรจำ: ถ้าคุณใช้ Cloudflare หรือ Vercel อยู่ — workload ของคุณก็รันอยู่บน Wasm อยู่แล้ว แม้คุณจะเขียน JavaScript ก็ตาม (V8 isolate คอมไพล์ JS เป็น bytecode คล้าย Wasm) Cold start ที่เกือบ 0 ms = ปลดล็อก UX ที่ทำไม่ได้บน Lambda
3. Unikernel — OS + app รวมเป็น binary เดียว
Unikernel = แทนที่จะมี OS แยกจาก application — คอมไพล์ OS + app รวมเป็นไฟล์เดียว ที่บูตตรงบน hypervisor ไม่มี shell, ไม่มี debugger, ไม่มี multi-user — มีแค่ app ที่รันได้
ทำไมเกิด
ปัญหาของ OS แบบเดิม (Linux) — มี driver + service + tool เป็นพันตัว ส่วนใหญ่ app ไม่ได้ใช้ แต่ติดมาด้วย attack surface = ใหญ่กว่าที่ควรเป็นเยอะ
Unikernel ตั้งคำถามว่า — ทำไมต้องมีของที่ไม่ได้ใช้ ถ้า app ของคุณคือ web server — จะมี driver ของ USB ทำไม print ทำไม sound ทำไม package manager ทำไม shell ทำไม
ตัด ตัด ตัด — เหลือแค่ kernel ที่ใช้จริง + app = single binary ที่บูตในระดับมิลลิวินาทีบน hypervisor
ตัวอย่างที่จริงมี
- MirageOS — เขียนด้วย OCaml (จาก University of Cambridge + Docker)
- IncludeOS — เขียนด้วย C++
- Nanos — unikernel ยุคใหม่ ทำงานเข้ากับ AWS/GCP ได้ดี
- OSv — unikernel ที่เข้ากันได้กับ Linux ของ Cloudius Systems
ใครใช้จริง
ความจริงที่ต้องบอกตรงๆ คือ — ยังไม่มี mainstream adoption Unikernel เป็น “concept ที่ดูดีในตำรา” แต่ในทางปฏิบัติเจอปัญหา 3 อย่าง:
- Debug ยาก — เกิด bug ใน production แล้ว ssh เข้าไปดูไม่ได้ (ไม่มี shell)
- Update ยาก — เปลี่ยน config = ต้องคอมไพล์ใหม่ทั้งระบบ
- Tool ecosystem เล็กมาก — ไม่มี Datadog agent, ไม่มี Splunk forwarder ที่พอร์ตมาให้
มี niche ที่ unikernel เหมาะอยู่บ้าง:
- Embedded / IoT — ที่ทรัพยากรจำกัดสุดๆ และไม่ค่อย update
- Security-critical workload — ที่ต้องการ attack surface เล็กที่สุด
- High-frequency trading — ที่ต้องการ boot < 1 ms
แต่สำหรับ enterprise web app ทั่วไป — unikernel ไม่ใช่คำตอบ ความซับซ้อนของการดูแลแพงกว่าประโยชน์ที่ได้
Trade-off
ข้อดี:
- Attack surface เล็กที่สุดในวงการ
- บูตเร็วที่สุด (microsecond)
- Memory footprint เล็กที่สุด
ข้อเสีย:
- Debug = ฝันร้าย
- Update = ต้องคอมไพล์ใหม่ทั้งระบบ
- Tool ecosystem แทบไม่มี
- ต้องการ expertise ที่หาคนทำได้ยาก
ที่ผู้บริหารควรจำ: Unikernel = ของสำหรับเคสพิเศษมากๆ ถ้าคุณไม่ใช่ defense contractor ไม่ใช่ HFT firm ไม่ใช่ IoT manufacturer — ไม่ต้องสนใจ เอาเวลาที่จะอ่านเรื่อง unikernel ไปอ่าน Wasm ดีกว่า
Decision Tree — เมื่อไหร่ใช้อะไร
ทั้ง 4 runtime (Container + MicroVM + Wasm + Unikernel) ไม่ได้ “มาแทนกัน” — แต่ละตัวเหมาะกับคนละเคส
Container (Docker + Kubernetes) — เป็น default สำหรับ:
- Enterprise web application ที่ traffic เดาทางได้
- Microservices ใน production
- ทีมที่มี K8s expertise + tool ecosystem พร้อมอยู่แล้ว
- Workload ที่ต้องพึ่ง ecosystem แน่นๆ (Helm, Istio, Datadog, Prometheus)
MicroVM (Firecracker) — เลือกเมื่อ:
- คุณกำลังจะ build serverless platform ของตัวเอง (เช่น Fly.io)
- ต้องการ multi-tenant security ที่แข็งกว่า container แต่ scale แบบ container ได้
- ใช้ AWS Lambda/Fargate อยู่ = คุณอยู่บน Firecracker อยู่แล้วโดยไม่รู้ตัว
Wasm — เลือกเมื่อ:
- ต้องการ edge function ที่ cold start ใกล้ 0 ms
- ทำ plugin system ใน SaaS product (เช่น Figma, Shopify, Envoy)
- AI/ML inference ที่ edge — model เล็กพอที่จะโหลดใน browser หรือ edge runtime ได้
- Portable workload ที่ต้องรันได้ทุก platform
Unikernel — เลือกเมื่อ:
- Embedded/IoT ที่ทรัพยากรจำกัดสุดๆ
- Security-critical workload ที่ต้องการ attack surface เล็กที่สุด
- HFT ที่ต้องการ boot < 1 ms
- (เกือบไม่มีเคสอื่นที่คุ้มจริงๆ)
มุมผู้บริหาร — ทำไมเรื่องนี้สำคัญในปี 2026-2028
ผู้บริหารส่วนใหญ่ในไทยตอนนี้ใช้ AWS/Azure/GCP เป็นหลัก stack คือ EC2/RDS/S3 หรือ Lambda + DynamoDB
ใน 3 ปีข้างหน้า — มี 3 trend ที่จะกระทบ stack ของคุณ:
Trend 1 — Vendor ขยับไปทาง Wasm
- Cloudflare ผลักหนักให้มอง workload ทั้งหมดเป็น Wasm — D1 (database), Workers (compute), R2 (storage with Workers triggers)
- AWS เริ่มทดลอง Wasm ใน CloudFront Functions
- Fastly ทำ Compute@Edge ที่เป็น Wasm-first
- Vercel ขยับจาก Lambda ไป Edge Functions (V8 isolate)
ถ้า workload ของบริษัทคุณอยู่บน Cloudflare หรือ Vercel — คุณก็ใช้ Wasm อยู่แล้ว แค่ไม่รู้ตัว
Trend 2 — Edge computing โต = Wasm โตตาม
Edge computing โตขึ้นเรื่อยๆ เพราะ:
- ลูกค้าไทยเข้าเว็บที่ host อยู่ใน US = latency 200+ ms
- Edge function ที่รันใน Singapore/Bangkok = 5-20 ms
- AI inference ที่ edge = ตอบเร็วกว่า + ไม่ต้องส่งข้อมูลขึ้น central cloud (PDPA-friendly)
Edge ใช้ Wasm เกือบ 100% เพราะ container/VM ไม่สามารถ scale ระดับ 200+ city ได้
Trend 3 — Cost model เปลี่ยน
- Lambda — cold start 200-2000 ms = ลูกค้ารอ = UX แย่
- Lambda — billing = ปัดขึ้นไปที่ 1 ms ใกล้สุด = ต้องจ่ายค่า cold start ด้วย
- Workers — cold start ~5 ms = “ใกล้ 0” จริงๆ
- Workers — billing = คิดตาม compute time จริง = ถูกกว่า Lambda 5-10 เท่าสำหรับ workload เดียวกัน
ถ้า workload ของคุณ traffic ไม่สม่ำเสมอ (เช่น API ที่ peak ตอน 9 โมงเช้า) — Workers/Edge Functions จะถูกกว่า Lambda เยอะมาก
ปิดบท + tease EP.34
EP.33.5 จบที่นี่ครับ
ก่อนจะไปอ่าน EP.34 (DevSecOps) ต่อ ขอย้ำ 3 เรื่องที่ผู้บริหารควรเก็บกลับไป:
- Container ยังไม่จบ แต่ภาพรวมหลัง container กำลังเคลื่อน — MicroVM (AWS), Wasm (Cloudflare/Vercel/Fastly), Unikernel (niche)
- Cloud vendor แต่ละเจ้าเล่นเกมคนละแบบ — AWS เดิมพันที่ MicroVM, Cloudflare/Vercel/Fastly เดิมพันที่ Wasm พอเลือกแพลตฟอร์ม = เลือก runtime ที่ไหลตามมาด้วย
- Tool ด้าน security ที่ใช้กับ container ตอนนี้ ไม่ครอบคลุม Wasm — Trivy, Falco, Snyk Container พวกนี้ออกแบบมาสำหรับ Docker image ถ้าย้ายไป Wasm ต้องประเมิน security tool ใหม่หมด
ข้อ 3 นี่แหละครับ — คือสะพานข้ามไป EP.34 — DevSecOps เพราะ security ใน pipeline ของ container, Wasm, MicroVM ใช้ tool คนละชุด DevSecOps pipeline ที่ดี = ต้องปรับตาม runtime ที่ workload ใช้