Skip to main content

AWS App Mesh

AWS App Mesh คือบริการ service mesh ที่ช่วยให้คุณสามารถควบคุมการสื่อสารระหว่าง microservices ภายใน Amazon ECS, EKS หรือ EC2 ได้อย่างมีประสิทธิภาพ โดยไม่ต้องแก้ไขโค้ดของ service เหล่านั้นโดยตรง

App Mesh ช่วยให้คุณสามารถทำสิ่งเหล่านี้ได้:

  • ตรวจสอบ (monitoring)
  • การควบคุมทราฟฟิก (traffic control)
  • การจัดการ version และ deployment
  • การตรวจสอบ (observability)
  • การกำหนดนโยบายการสื่อสาร (routing policies)
  • การ recover หรือ retry อัตโนมัติ

องค์ประกอบหลักของ AWS App Mesh​

Mesh​

  • คือขอบเขตของการสื่อสารที่ App Mesh จัดการ
  • Microservices ที่อยู่ภายใต้ mesh เดียวกันจะสามารถสื่อสารกันตามกฎของ mesh ได้

Virtual Service​

  • เป็นการแทน service จริง ๆ ในระบบ เช่น orders.svc.cluster.local
  • ใช้เพื่อระบุปลายทางของ traffic ที่จะส่งไป

Virtual Node​

  • แทนตัว service instance เช่น ECS task, EKS pod หรือ EC2 instance
  • ต้องกำหนด service discovery (เช่น DNS) เพื่อให้ App Mesh หาเจอ

Virtual Router​

  • ทำหน้าที่เป็น load balancer ภายใน mesh
  • รองรับการกำหนดเส้นทาง (routing) ของ traffic ไปยัง Virtual Node ต่าง ๆ

Route​

  • กำหนดวิธีการ match request แล้วส่งไปยัง Virtual Node ที่เหมาะสม
  • รองรับการทำ traffic splitting, blue/green deployment, canary deployment

Virtual Gateway​

  • ช่วยรับทราฟฟิกจากภายนอกเข้า mesh
  • ใช้ร่วมกับ API Gateway, NLB, หรือ Ingress Controller

Envoy Proxy​

  • ทุก microservice จะต้องติดตั้ง sidecar ที่เป็น Envoy proxy
  • Envoy ทำหน้าที่ intercept และควบคุม traffic ตาม policy ที่ App Mesh กำหนด

การใช้งานเบื้องต้น​

ติดตั้ง Envoy Sidecar​

  • ทุก service ที่ต้องการให้ App Mesh ควบคุมจะต้องใช้ Envoy container ควบคู่กัน

สร้าง Mesh​

aws appmesh create-mesh --mesh-name my-mesh

กำหนด Virtual Node​

{
"virtualNodeName": "orders-node",
"serviceDiscovery": {
"dns": {
"hostname": "orders.svc.cluster.local"
}
}
}

กำหนด Virtual Service และ Router​

  • กำหนดว่า service ไหนจะรับ traffic และส่งไปยัง node ไหน
  • สามารถตั้งค่าให้รองรับ version ใหม่แบบ Canary ได้

แนวทางการใช้งาน​

Use Caseการตั้งค่าใน App Mesh
Canary Deploymentสร้าง Route ที่แบ่ง traffic เช่น 80% ไป version A, 20% ไป version B
Service Discoveryใช้ DNS หรือ Cloud Map
Observabilityผสานกับ CloudWatch, X-Ray, Prometheus
Retryตั้งค่า policy บน Virtual Node หรือ Route
Circuit Breakerทำร่วมกับ Envoy configuration

ความปลอดภัย​

  • รองรับ mTLS (Mutual TLS) สำหรับการเข้ารหัส traffic
  • สามารถใช้ IAM policy เพื่อควบคุมการเข้าถึง Mesh และ resource ต่าง ๆ

Monitoring & Logging​

  • ใช้งานร่วมกับ:

    • AWS CloudWatch
    • AWS X-Ray
    • Prometheus + Grafana (โดยการเปิด Envoy stats endpoint)

ประโยชน์ของ App Mesh​

ข้อดีรายละเอียด
Visibilityเห็นการสื่อสารระหว่าง services ทั้งหมด
Reliabilityรองรับ retry, timeout, failover
Controlจัดการ routing ได้ละเอียดระดับ request
Securityรองรับ mTLS และ IAM integration
Flexibilityรองรับ ECS, EKS, EC2 และ hybrid environments

กรณีการใช้งานที่เหมาะสม​

  • ระบบ microservices ที่ต้องการ zero-downtime deployment
  • แอปที่มีการสื่อสารข้ามหลาย service และต้องการ monitoring / tracing
  • แพลตฟอร์มที่ต้องการ observability และการ ควบคุม traffic อย่างละเอียด