
Microservices
สถาปัตยกรรมของ service, discovery, การสื่อสาร, API gateway, circuit breaker, observability, structured logging, metrics, distributed tracing
1ความแตกต่างหลักระหว่างสถาปัตยกรรมแบบ monolithic และสถาปัตยกรรม microservices คืออะไร?
ความแตกต่างหลักระหว่างสถาปัตยกรรมแบบ monolithic และสถาปัตยกรรม microservices คืออะไร?
คำตอบ
ในสถาปัตยกรรม microservices แอปพลิเคชันจะถูกแยกออกเป็น service อิสระที่สามารถพัฒนา deploy และ scale แยกกันได้ ต่างจาก monolith ที่โค้ดทั้งหมดอยู่ในกระบวนการเดียว แต่ละ microservice มีฐานข้อมูลของตัวเองและสื่อสารผ่าน API สิ่งนี้ช่วยให้มี scalability ความยืดหยุ่น และความยืดหยุ่นทางเทคโนโลยีที่ดีขึ้น แต่เพิ่มความซับซ้อนในการดำเนินงาน
2บทบาทหลักของ service discovery ในสถาปัตยกรรม microservices คืออะไร?
บทบาทหลักของ service discovery ในสถาปัตยกรรม microservices คืออะไร?
คำตอบ
service discovery ช่วยให้ service ค้นหากันได้แบบไดนามิกโดยไม่ต้องตั้งค่าแบบ hardcoded service จะลงทะเบียนกับ registry (Consul, etcd, Eureka) พร้อมที่อยู่ IP และพอร์ต ไคลเอนต์จะ query registry เพื่อรับ instance ที่พร้อมใช้งาน สิ่งนี้ช่วยให้ horizontal scaling การ deploy อย่างต่อเนื่อง และความยืดหยุ่นเมื่อ instance ล้มเหลวทำได้ง่ายขึ้น
3ในสถาปัตยกรรม microservices pattern ใดที่จัดการความสอดคล้องของข้อมูลแบบกระจายโดยไม่ต้องใช้ ACID transaction?
ในสถาปัตยกรรม microservices pattern ใดที่จัดการความสอดคล้องของข้อมูลแบบกระจายโดยไม่ต้องใช้ ACID transaction?
คำตอบ
Saga pattern จัดการความสอดคล้องของข้อมูลแบบกระจายผ่านลำดับของ local transaction แต่ละ service จะรัน transaction ของตัวเองและ publish event หากขั้นตอนใดล้มเหลว compensating transaction จะย้อนกลับการเปลี่ยนแปลงก่อนหน้า การ implement สามารถเป็นแบบ orchestrate (ตัวประสานงานส่วนกลาง) หรือ choreograph (event pub/sub) สิ่งนี้รับประกัน eventual consistency โดยไม่ต้องใช้ distributed lock
ไลบรารี Go ใดที่ใช้กันทั่วไปในการ implement service discovery กับ Consul?
ความแตกต่างหลักระหว่างการสื่อสารแบบ synchronous (REST/gRPC) และ asynchronous (messaging) ระหว่าง microservices คืออะไร?
+21 คำถามสัมภาษณ์
หัวข้อสัมภาษณ์ Go อื่นๆ
พื้นฐาน Go
โครงสร้างข้อมูล Go
อินเทอร์เฟซใน Go
การจัดการข้อผิดพลาด
พื้นฐาน Goroutine
Channels
Go Modules
เซิร์ฟเวอร์ HTTP
ไคลเอนต์ HTTP
การเข้ารหัส JSON
Database/SQL
แพ็กเกจ context
Testing
รูปแบบ Concurrency
ไพรมิทีฟการซิงโครไนซ์
เฟรมเวิร์กเว็บ Go
การออกแบบ REST API
gRPC
Reflection
การจัดการหน่วยความจำ
การเพิ่มประสิทธิภาพการทำงาน
Generics
Go Design Patterns
ความปลอดภัยและการยืนยันตัวตน
Docker & Containerization
Kubernetes Basics
Go ขั้นสูง
การพัฒนา CLI
เชี่ยวชาญ Go สำหรับการสัมภาษณ์ครั้งถัดไป
เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์
เริ่มใช้ฟรี