ออกแบบ 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 ปิดคลิป
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 20

  • @Imaginaz
    @Imaginaz 2 ปีที่แล้ว +1

    ขอบคุณมากครับ และทำให้เข้าใจถึงภาพรวมมากขึ้น

  • @amornthepsapkalyod8791
    @amornthepsapkalyod8791 ปีที่แล้ว

    ชอบมากครับ มีประโยชน์สุดๆ ขอบคุณครับ

  • @nateelive
    @nateelive 2 ปีที่แล้ว

    ขอบคุณมากครับ มีประโยช์มากๆ

  • @YTvongoladecimo
    @YTvongoladecimo 2 ปีที่แล้ว

    ขอบคุณมากครับ เป็นประโยชน์มากๆเลยครับ มีหลายอย่างที่ต้องศึกษาเพิ่มเยอะเลย

  • @datahungry
    @datahungry ปีที่แล้ว +1

    มีประโยชน์มากเลยครับ

  • @khanomkrok
    @khanomkrok 2 ปีที่แล้ว +1

    "ความยาก คือการทำความเข้าใจโจทย์" ขอบคุณมากครับที่แบ่งปันความรู้

  • @godebug1794
    @godebug1794 2 ปีที่แล้ว

    ขอบคุณมากครับ มีประโยช์มากครับ

  • @suksawattawana
    @suksawattawana หลายเดือนก่อน

    ขอบคุณครับ

  • @yosteddy5894
    @yosteddy5894 2 ปีที่แล้ว

    เนื้อหาดีมากครับ

  • @seefaros
    @seefaros 2 ปีที่แล้ว

    ชอบมากครับ :)

  • @karoonsillapapan9814
    @karoonsillapapan9814 2 ปีที่แล้ว

    ขอบคุณมากๆครับ

  • @user-jm3nh9lo1j
    @user-jm3nh9lo1j 8 หลายเดือนก่อน

    ลึกซึ้ง

  • @user-on4lf9ql5n
    @user-on4lf9ql5n 9 หลายเดือนก่อน

    ขอบคุณมากครับ หลังจากได้ดู กลับมาคิดว่าตัวเองยังต้องศึกษาอีกมาก ขอให้กำลังใจและวิดีโอดีๆแบบนี้ต่อไปนะครับ

  • @mhongkub
    @mhongkub 2 ปีที่แล้ว

    ติดตามครับผม

  • @TaywanKamolwilad
    @TaywanKamolwilad 2 ปีที่แล้ว

    ชอบครับ

  • @bYBangboom
    @bYBangboom 2 ปีที่แล้ว +1

    มี Slides show ในคลิปไหมครับ อยากได้จัง😅😆

    • @CopyPasteEngineer
      @CopyPasteEngineer  2 ปีที่แล้ว +6

      เชิญครับ
      docs.google.com/presentation/d/1eCC71ETQFXL-u0kcPQOw2_-v1tFhHJY4GE2xhY2ucs0/edit?usp=sharing

  • @poweronline007
    @poweronline007 2 ปีที่แล้ว

    ถ้าเป็นออกแบบ report ที่มีทั้ง sum count avg group จะต้อง design ยังไงครับ

    • @CopyPasteEngineer
      @CopyPasteEngineer  2 ปีที่แล้ว +1

      โดยทั่วไปเวลาเราจะเอาข้อมูลจาก 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 ทีหลังก็ได้ครับ

    • @poweronline007
      @poweronline007 2 ปีที่แล้ว

      @@CopyPasteEngineer ขอบคุณครับ