AWS Services Overview
แผนผังบริการหลักของ AWS จัดเรียงตามหมวดหมู่
Compute — เครื่องที่รัน code
EC2 (Elastic Compute Cloud)
- เช่าคอมพิวเตอร์ 1 เครื่องบน cloud — เลือก CPU, RAM, OS เอง
- ควบคุมได้เต็มที่ ลง software อะไรก็ได้
- จ่ายรายชั่วโมง/วินาที
ECS (Elastic Container Service)
- รัน Docker container บน AWS — บอกแค่ “รัน container นี้ 3 ตัว” แล้ว AWS จัดการที่เหลือ
- รันบน EC2 หรือ Fargate (serverless)
- “Worker” คือ Task/Container ที่รัน background job เช่น consumer code
EKS (Elastic Kubernetes Service)
- AWS ดูแล Kubernetes control plane ให้
- เหมือน ECS แต่ใช้ Kubernetes — มาตรฐาน industry ย้าย cloud ได้ง่ายกว่า
- Worker node รันบน EC2
Kubernetes (K8s)
ไม่ใช่ AWS service — เป็น open-source ของ Google
- ระบบจัดการ container อัตโนมัติ — container ล่มก็สร้างใหม่, traffic เยอะก็เพิ่ม, น้อยก็ลด
- Pod = หน่วยเล็กสุด (≥1 container), Node = เครื่องที่รัน pods
- Deployment = desired state, Service = load-balanced endpoint
- บน AWS ใช้ผ่าน EKS
Networking — ระบบเครือข่าย
VPC (Virtual Private Cloud)
- เครือข่ายส่วนตัวของเราบน AWS — ทุก resource ต้องอยู่ใน VPC
- เหมือนสร้างออฟฟิศที่มีกำแพงล้อมรอบ กำหนดเองว่าใครเข้าได้
NAT Gateway
- ให้ resource ใน private subnet ออกอินเทอร์เน็ตได้ (ขาออกเท่านั้น)
- เหมือน proxy — คนในออฟฟิศออกเน็ตได้ แต่คนนอกเข้ามาไม่ได้
- ระวังค่า data transfer ถ้า traffic เยอะอาจแพง
CloudFront
- CDN กระจาย content ไปทั่วโลกผ่าน edge server
- มักใช้คู่กับ S3 เป็น origin
Storage — เก็บข้อมูล
S3 (Simple Storage Service)
- Object storage — เก็บไฟล์ไม่จำกัด จ่ายตามที่ใช้ (~$0.023/GB/เดือน)
- เก็บรูป, วิดีโอ, backup, static website, log
RDS (Relational Database Service)
- AWS ดูแล database server ให้ (PostgreSQL, MySQL, MariaDB, Oracle, SQL Server, Aurora)
- Backup อัตโนมัติ, patch อัตโนมัติ, failover อัตโนมัติ
Security — ความปลอดภัย
IAM (Identity and Access Management)
- ระบบจัดการสิทธิ์ — ใครทำอะไรได้บ้าง
- User = คน, Role = assign ให้ service, Policy = กฎ (JSON)
- บังคับใช้ทุกที่
Message Queue — ระบบคิว
SQS (Simple Queue Service)
- คิวแบบ serverless — ส่ง message เข้า รอ consumer มาดึง
- DLQ built-in, ~$0.40/ล้าน request
- Batch สูงสุด 10 msg, ไม่ guarantee ordering (ยกเว้น FIFO queue)
SNS (Simple Notification Service)
- Pub/sub — ส่ง message ไปหาหลาย subscriber พร้อมกัน
- Fan-out: SNS → หลาย SQS queues
Amazon MQ
- Managed RabbitMQ / ActiveMQ
- ใช้เมื่อย้ายจาก on-premise RabbitMQ หรือต้องการ AMQP/MQTT
MSK (Managed Streaming for Apache Kafka)
- Managed Kafka cluster สำหรับ event streaming
- ใช้สำหรับ event replay, real-time analytics
- แพง ($500+/เดือน), overkill สำหรับ simple queue
เลือก Queue ไหนดี?
| สถานการณ์ | เลือก |
|---|---|
| Simple async job, ไม่มี broker อยู่ | SQS |
| มี RabbitMQ อยู่แล้ว, ต้องการ AMQP | Amazon MQ |
| Event streaming, replay, analytics | MSK (Kafka) |
| 1 event → หลาย consumers | SNS + SQS |
ภาพรวมความสัมพันธ์
User → CloudFront (CDN) → VPC
├── EKS/ECS (containers) → SQS/SNS/MQ
├── RDS (database)
└── NAT (outbound internet)
S3 (file storage)
IAM (permissions ทุก service)
Related
- Redis — ใช้เป็น cache layer (AWS ElastiCache)
- Spring Boot — backend app ที่ deploy บน ECS/EKS
- TPS vs RPS — metrics สำหรับวัดประสิทธิภาพ