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 อยู่แล้ว, ต้องการ AMQPAmazon MQ
Event streaming, replay, analyticsMSK (Kafka)
1 event → หลาย consumersSNS + SQS

ภาพรวมความสัมพันธ์

User → CloudFront (CDN) → VPC
                            ├── EKS/ECS (containers) → SQS/SNS/MQ
                            ├── RDS (database)
                            └── NAT (outbound internet)
       S3 (file storage)
       IAM (permissions ทุก service)
  • Redis — ใช้เป็น cache layer (AWS ElastiCache)
  • Spring Boot — backend app ที่ deploy บน ECS/EKS
  • TPS vs RPS — metrics สำหรับวัดประสิทธิภาพ