ออกแบบ Microservices ด้วย Domain Driven Design #3 - Architecture Overview
ฝัง
- เผยแพร่เมื่อ 1 ก.ค. 2024
- ในคลิปนี้เรากระโดดมาดูเรื่องของ Architecture กันบ้างนะครับ จะได้เห็นภาพการสร้าง microservices มากขึ้น จะได้ดูว่ามีปัญหาอะไรที่อาจจะเกิดขึ้นได้บ้าง แล้วเราจะมี technique อะไรที่จะนำไปใช้ได้บ้าง เป็น Overview โดยพยายามจะไม่ลงลึกเกินไป (นี่พยายามแล้วนะครับ 😂) แล้วปิดท้ายด้วย demo มีโค้ดจริงให้ดู
ส่วนเนื้อหาเนี่ย ไม่ว่าคุณใช้ภาษาอะไรก็ดูได้นะครับ ส่วนตัว Demo ผมจะใช้ Python เป็นหลัก ทำ REST API ด้วย FastAPI ใช้ MongoDB เป็น database และใช้ Kafka เป็น message broker ครับ
โค้ด: github.com/CopyPasteEngineer/...
วิธีการรัน และการปิด อยู่ใน README.md นะครับ รันเสร็จอย่าลืมปิดด้วยนะครับ
หัวข้อต่าง ๆ ที่จะพูดถึงก็มีตามนี้เลยนะครับ
การสื่อสารระหว่าง Frontend กับ Microservices
- API Gateway
- Authentication
การสื่อสารระหว่าง Microservices
- Synchronous
- Asynchronous: Message Broker
การทำ Logging และ Monitor ระบบ Microservices
การทำงานกับข้อมูล
- Repository Pattern
- Aggregate Pattern
- CQRS Pattern
การสื่อสารด้วย Event
- Event Sourcing
- Outbox Pattern
- Inbox Pattern
Hexagonal Architecture
Demo
- Message Broker
- Outbox Pattern
- Repository Pattern
- Aggregate Pattern
- Hexagonal Architecture
00:00 Intro
03:27 API Gateway
07:42 การสื่อสารระหว่าง services
08:50 การสื่อสารแบบ synchronous
09:50 การสื่อสารแบบ asynchronous
14:25 การทำ Logging และ Monitor ระบบ
18:20 การทำงานกับข้อมูล
20:05 Repository Pattern
24:25 Aggregate Pattern
29:59 CQRS Pattern
31:12 การสื่อสารด้วย Event
34:03 Event Sourcing
38:51 Outbox Pattern
40:31 Inbox Pattern
43:10 Hexagonal Architecture
48:45 Demo: Overview
51:03 Demo: Hexagonal Arch. 1
52:21 แนะนำวิธีอ่านโค้ด
53:53 Demo: Hexagonal Arch. 2
57:53 วิธีรันระบบ Demo
58:13 Demo: Repository Pattern
1:00:01 Demo: Aggregate + Outbox Pattern
1:05:43 Demo: Outbox Relay Pattern
1:09:27 Demo: Message Handler
1:14:19 ปิดคลิป - วิทยาศาสตร์และเทคโนโลยี
ขอบคุณมากครับ และทำให้เข้าใจถึงภาพรวมมากขึ้น
ชอบมากครับ มีประโยชน์สุดๆ ขอบคุณครับ
ขอบคุณมากครับ มีประโยช์มากๆ
ขอบคุณมากครับ เป็นประโยชน์มากๆเลยครับ มีหลายอย่างที่ต้องศึกษาเพิ่มเยอะเลย
มีประโยชน์มากเลยครับ
"ความยาก คือการทำความเข้าใจโจทย์" ขอบคุณมากครับที่แบ่งปันความรู้
ขอบคุณมากครับ มีประโยช์มากครับ
ขอบคุณครับ
เนื้อหาดีมากครับ
ชอบมากครับ :)
ขอบคุณมากๆครับ
ลึกซึ้ง
ขอบคุณมากครับ หลังจากได้ดู กลับมาคิดว่าตัวเองยังต้องศึกษาอีกมาก ขอให้กำลังใจและวิดีโอดีๆแบบนี้ต่อไปนะครับ
ติดตามครับผม
ชอบครับ
มี Slides show ในคลิปไหมครับ อยากได้จัง😅😆
เชิญครับ
docs.google.com/presentation/d/1eCC71ETQFXL-u0kcPQOw2_-v1tFhHJY4GE2xhY2ucs0/edit?usp=sharing
ถ้าเป็นออกแบบ report ที่มีทั้ง sum count avg group จะต้อง design ยังไงครับ
โดยทั่วไปเวลาเราจะเอาข้อมูลจาก microservices หลาย ๆ ตัวมารวมกัน แล้วทำเป็น report ส่วนใหญ่จะทำเป็น microservice ใหม่ขึ้นมา เป็น Report Service แล้วให้ Report Service subscribe event จาก microservices ตัวอื่น ๆ มาเก็บเอาไว้ที่ Report Service
ส่วนวิธีการเก็บข้อมูลใน Report Service ก็ให้เลือกใช้ database ที่สามารถ query ไปแสดงได้ง่ายและเร็วครับ (เน้น query speed) อาจจะเป็น SQL หรือ NoSQL ก็ได้ เลือกใช้ตามความเหมาะสมได้เลยครับ
แล้วถ้าต้องการความเร็วมากสักหน่อย เราก็อาจจะ precalculate ข้อมูลที่จะแสดงเอาไว้ได้ด้วยครับ เช่นถ้าเราอยากจะเอา sum ของยอดขายในแต่ละวันไปแสดง แทนที่เราจะ sum ยอดขายทุก ๆ ครั้งที่มี request มาเราก็ sum เอาไว้ก่อนได้ คือมี Order Event จาก Order Service เข้ามา ก็เอายอดขายมาบวกเข้าไปเลย ก็ทำได้ครับ (ต้องออกแบบวิธีการเก็บข้อมูลใน db ให้เหมาะกับรูปแบบการใช้งาน)
หรือถ้า scope มันไม่ได้ใหญ่มาก หรือ requirement ของ report มันยังไม่แน่นอนเท่าไหร่ อาจจะเริ่มจะจากทำบน service เดียวกันไปก่อนก็ได้ครับ เช่นอยากได้ report ของ order ก็ทำบน Order Service ไปเลย แล้วพอ requirement เริ่มนิ่ง หรือเริ่มมีผู้ใช้งานเยอะแล้ว เราค่อยแยกออกมาเป็น microservice ทีหลังก็ได้ครับ
@@CopyPasteEngineer ขอบคุณครับ