Step 13 of 18
Building blocks ที่ต้องรู้สำหรับ System Design Interview ได้แก่ Load Balancers, Cache, Message Queue, CDN และ Database Replication
Know your load balancers, caches, and queues — these are the building blocks of every system design answer.
Load balancer คืออุปกรณ์ที่ทำหน้าที่เป็น reverse proxy และกระจายทราฟฟิกของเครือข่ายหรือแอปพลิเคชันไปยังเซิร์ฟเวอร์หลายตัว Load balancers ใช้เพื่อเพิ่มความจุ (รองรับผู้ใช้พร้อมกัน) และความน่าเชื่อถือของแอปพลิเคชัน
Client 1 ─┐
Client 2 ─┼──► [ Load Balancer ] ──► Server 1
Client 3 ─┘ │ Server 2
└─────────────► Server 3
Types of Load Balancers:
Common Load Balancing Algorithms:
Web server คือระบบคอมพิวเตอร์ที่ประมวลผลคำขอผ่าน HTTP ซึ่งเป็นโปรโตคอลเครือข่ายพื้นฐานที่ใช้ในการเผยแพร่ข้อมูลบน World Wide Web
Common Web Servers:
Cache คือส่วนประกอบฮาร์ดแวร์หรือซอฟต์แวร์ที่จัดเก็บข้อมูลเพื่อให้สามารถตอบสนองคำขอข้อมูลนั้นในอนาคตได้เร็วขึ้น
┌─────────┐
│ Cache │
└────┬────┘
│
Cache Hit ◄────┤────► Cache Miss
│ │ │
▼ │ ▼
[ App ] ◄───── ┘ [ Database ]
│
store in cache
│
▼
[ Cache ]
Caching Strategies:
Common Caching Technologies:
Application server คือเซิร์ฟเวอร์ที่โฮสต์แอปพลิเคชัน ทำหน้าที่จัดเตรียม framework สำหรับนักพัฒนาในการสร้างและรันแอปพลิเคชัน
Database server คือเซิร์ฟเวอร์ที่ใช้แอปพลิเคชันฐานข้อมูลในการให้บริการข้อมูลแก่โปรแกรมคอมพิวเตอร์หรือคอมพิวเตอร์เครื่องอื่น ตามโมเดล client–server
Types of Databases:
Distributed messaging systems ใช้เพื่ออำนวยความสะดวกในการสื่อสารระหว่างส่วนประกอบต่าง ๆ ของระบบแบบกระจาย (distributed system)
Distributed file system คือระบบไฟล์ที่กระจายอยู่บนไฟล์เซิร์ฟเวอร์หรืออุปกรณ์จัดเก็บข้อมูลหลายตัว
Common Distributed File Systems:
API คือชุดของกฎและโปรโตคอลสำหรับการสร้างและโต้ตอบกับแอปพลิเคชันซอฟต์แวร์
Common API Styles:
CDN คือเครือข่ายของ proxy servers และศูนย์ข้อมูลที่กระจายอยู่ตามภูมิศาสตร์ เป้าหมายคือเพื่อให้มีความพร้อมใช้งานและประสิทธิภาพสูงโดยการกระจายบริการไปตามพื้นที่ที่ใกล้กับผู้ใช้ปลายทาง
[ Origin Server ]
│ (sync content)
┌──────┼──────────────┐
│ │ │
▼ ▼ ▼
Edge(US) Edge(EU) Edge(Asia)
▲ ▲
│ │
User(US) User(Thailand)
(nearest edge) (nearest edge)
Cloud computing คือความพร้อมใช้งานตามความต้องการของทรัพยากรระบบคอมพิวเตอร์ โดยเฉพาะที่เก็บข้อมูลและพลังประมวลผล โดยที่ผู้ใช้ไม่ต้องจัดการเองโดยตรง
Cloud Service Models:
Notifications และ alerts ใช้เพื่อแจ้งเตือนผู้ใช้หรือผู้ดูแลระบบเกี่ยวกับเหตุการณ์สำคัญในระบบ
Common Notification Channels:
Observability คือความสามารถในการวัดสถานะภายในของระบบโดยการตรวจสอบผลลัพธ์ภายนอก
The Three Pillars of Observability:
Full-text search คือเทคนิคในการค้นหาเอกสารที่เก็บไว้ในคอมพิวเตอร์หรือคอลเลกชันในฐานข้อมูลแบบ full-text
Common Full-Text Search Engines:
API Gateway คือเซิร์ฟเวอร์พร็อกซีที่ทำหน้าที่เป็นจุดเข้าใช้งานเดียวสำหรับ API ทั้งหมดของระบบ
Common API Gateway Features: