Cloud Concepts
ก่อนสร้าง Infrastructure บน AWS ต้องเข้าใจว่าทำไม Cloud ต่างจาก Data Center แบบเดิม และคำอย่าง IaaS, PaaS, SaaS, Scalability หรือ Shared Responsibility Model ส่งผลต่อการออกแบบระบบอย่างไร
Cloud คืออะไร
Cloud คือการใช้ Compute, Storage, Network, Database และ Service อื่นผ่านผู้ให้บริการแทนการซื้อและดูแล Hardware เอง ผู้ใช้สร้าง Resource เมื่อต้องการ ใช้งานเท่าที่จำเป็น และลบทิ้งเมื่อไม่ใช้แล้ว
แนวคิดสำคัญคือ Infrastructure กลายเป็นสิ่งที่จัดการผ่าน API ได้ เช่น สร้าง EC2, VPC, S3 Bucket หรือ Budget ด้วย Console, AWS CLI, SDK หรือ Infrastructure as Code
IaaS, PaaS และ SaaS
| Model | คุณดูแลมากแค่ไหน | ตัวอย่าง |
|---|---|---|
| IaaS | ดูแล OS, runtime, application และ config ส่วนใหญ่เอง | Amazon EC2, EBS, VPC |
| PaaS | เน้น deploy application ผู้ให้บริการดูแล platform หลายส่วน | Elastic Beanstalk, managed database patterns |
| SaaS | ใช้ application สำเร็จรูป ไม่ต้องดูแล Infrastructure | Email, CRM, collaboration tools |
Shared Responsibility Model
AWS รับผิดชอบ security of the cloud เช่น Data center, Hardware, physical network และ foundational infrastructure ส่วนลูกค้ารับผิดชอบ security in the cloud เช่น IAM permission, data classification, OS patching บางกรณี, Security Group, encryption setting และ application security
Availability, Scalability และ Elasticity
- High Availability: ระบบยังให้บริการได้เมื่อบางส่วนเสีย เช่น กระจาย Resource หลาย Availability Zones
- Scalability: ระบบรองรับ Load ที่มากขึ้นได้ เช่น เพิ่ม EC2 หรือเพิ่ม Capacity ของ Database
- Elasticity: ระบบเพิ่มหรือลด Resource ตาม Load ได้อัตโนมัติ เพื่อลดค่าใช้จ่าย
- Fault Tolerance: ระบบทนต่อความเสียหายและทำงานต่อได้โดยผู้ใช้อาจไม่รู้สึกถึงปัญหา
- Disaster Recovery: แผนกู้คืนระบบหลังเหตุการณ์ใหญ่ โดยใช้แนวคิด RTO และ RPO
Best practices
- ออกแบบให้ล้มเหลวได้บางส่วน อย่าฝากทุกอย่างไว้กับ Instance หรือ AZ เดียว
- ใช้ managed service เมื่อลดภาระ operation ได้จริง
- คิดเรื่อง Cost ตั้งแต่ Design ไม่ใช่หลัง Deploy
- ใช้ Tag, Budget และ Alert เป็น guardrail พื้นฐานตั้งแต่เริ่มเรียน
Common mistakes
- คิดว่า AWS ดูแล Security ทั้งหมดให้แล้ว จึงไม่ตั้ง IAM, MFA หรือ Network control ให้ดี
- เปิด Resource ทิ้งไว้หลัง Lab เพราะคิดว่า Free Tier ครอบคลุมทุกอย่าง
- ออกแบบระบบใน Region เดียวและ AZ เดียวโดยไม่เข้าใจผลต่อ Availability
Review questions
- อธิบายได้ว่า Cloud resource ถูกจัดการผ่าน API อย่างไร
- เลือก IaaS, PaaS หรือ SaaS ให้เหมาะกับ use case ง่าย ๆ ได้
- แยกได้ว่าส่วนไหน AWS รับผิดชอบ และส่วนไหนลูกค้าต้องรับผิดชอบ
- IaaS ต่างจาก PaaS อย่างไรในมุม Operation?
- ยกตัวอย่างสิ่งที่ลูกค้าต้องรับผิดชอบใน Shared Responsibility Model 3 อย่าง
- Elasticity ช่วยเรื่อง Cost อย่างไร?