ข้ามไปเนื้อหาหลัก
จัดการ & มอนิเตอร์· ~14 นาที· อัปเดตล่าสุด

3-Tier และ microservices

แยกชั้น web/app/data และแตกเป็นบริการย่อย

เปรียบเทียบ: สถาปัตยกรรม 3-Tier เหมือนการบริหารร้านอาหาร

มี หน้าร้าน (รับลูกค้า/Web), ครัว (ปรุงอาหาร/App Logic), และ คลังวัตถุดิบ (เก็บของ/Database) — ทุกส่วนแยกหน้าที่กันชัดเจน ถ้าลูกค้าล้นก็แค่ขยายหน้าร้าน ไม่ต้องสร้างคลังวัตถุดิบเพิ่ม

พื้นฐานที่ควรรู้: ในอดีต แอปพลิเคชันมักถูกเขียนรวมทุกอย่างไว้ในก้อนเดียว (Monolith) ตั้งแต่หน้าเว็บ โค้ดคำนวณ ไปจนถึงฐานข้อมูล เวลาพังก็พังทั้งหมด เวลาจะอัปเกรดเครื่องก็ต้องอัปเกรดทั้งก้อน

สถาปัตยกรรม 3-Tier (3-Tier Architecture) คือรูปแบบการแยกระบบออกเป็น 3 ชั้น: 1. Web Tier (ชั้นนำเสนอ): รับ Request จากผู้ใช้ (มักอยู่ใน Public Subnet) 2. App Tier (ชั้นประมวลผลตรรกะ): คิดคำนวณและประมวลผล (อยู่ใน Private Subnet) 3. Data Tier (ชั้นข้อมูล): ฐานข้อมูลสำหรับเก็บข้อมูล (อยู่ใน Private Subnet) ส่วน Microservices (ไมโครเซอร์วิส) เป็นการซอยย่อย App Tier ลงไปอีกเป็นบริการเล็กๆ หลายๆ ตัวที่ทำงานอิสระต่อกัน

3-Tier: แยกชั้นเว็บ / แอป / ข้อมูล

Web Tier (public)
ALB
CloudFront
App Tier (private)
EC2 / ECS
Auto Scaling
Data Tier (private)
RDS
ElastiCache

Architecture Builder (ลากวาง)

ลากบริการไปวางในแต่ละ subnet แล้วระบบช่วยตรวจว่าออกแบบถูกหลักไหม (เช่น ห้ามวาง database ใน public)

ลากบริการจากแถบนี้

ALB
Web Server
NAT Gateway
App Server
RDS Database
ElastiCache

Public Subnet

ลากบริการมาวางที่นี่

Private Subnet

ลากบริการมาวางที่นี่

เริ่มลากบริการมาวางเพื่อให้ระบบช่วยตรวจสอบ

ลองลากวางบริการให้เข้าหลัก 3-tier — ระบบจะตรวจให้
  • 3-Tier — แยกชั้นชัดเจน ทำให้เราสามารถดูแล, อัปเดต, และสเกล (Scale) แต่ละชั้นแยกกันได้
  • Microservices — แตกแอปใหญ่ๆ เป็นบริการย่อยอิสระ จัดการ Deploy และ Scale แยกกัน (มักใช้เทคโนโลยี Container + API + คิวส่งข้อความ)
  • ทั้งสองรูปแบบช่วยให้ระบบมีความยืดหยุ่น (Loosely coupled) และทนทาน (Resilient) มากขึ้น

สรุป Key Takeaways

  • 3-Tier แยก web(public)/app(private)/data(private) สเกลแยกชั้นได้
  • Microservices แตกเป็นบริการย่อยอิสระ
  • ทั้งคู่เน้น loosely coupled และทนทาน

คำถามที่พบบ่อย

Three-tier architecture บน AWS หน้าตามาตรฐานคือยังไง

Web tier: CloudFront + ALB ใน public subnet · App tier: EC2/ECS ใน private subnet หลัง ALB ภายใน · Data tier: RDS Multi-AZ ใน private subnet แยกชั้น — แต่ละชั้นคุยกันผ่าน SG ที่อ้างอิงกันเป็นชั้นๆ โครงนี้คือฐานของโจทย์ scenario ครึ่งข้อสอบ

ทำไมต้องแยก tier ใส่ subnet คนละชั้น

จำกัดรัศมีความเสียหาย — web tier โดนเจาะก็ยังเข้าถึง database ตรงๆ ไม่ได้เพราะ SG/subnet กั้นเป็นชั้น และแต่ละชั้น scale อิสระ — ฐานข้อมูลไม่ควรมีเส้นทางจาก internet เลยแม้แต่เส้นเดียว

ลองทำ Quiz ท้ายบท

คำถามแนวข้อสอบของโมดูลนี้ 5 ข้อ · เฉลยทันที

อ่านจบแล้วอย่าลืมทำเครื่องหมาย