Microservices Design - up1/training-courses GitHub Wiki

Microservices Workshop (Design Workshop)

เป้าหมาย

Microservices architecture เป็นอีกแนวคิดหนึ่งสำหรับการออกแบบและพัฒนา software ซึ่งทำการแบ่งส่วนการทำงานของ software ออกเป็นส่วนการทำงานเล็ก ๆ เพื่อช่วยทำให้แต่ละส่วนการทำงานเป็นอิสระต่อกัน สามารถ deploy และรองรับการขยายตัวได้อย่างอิสระ

ใน course นี้จะอธิบายให้เข้าใจว่า Microservices คืออะไร ทำไม Microservices จึงได้รับความนิยม Microservices ช่วยแก้ไขปัญหาและมีประโยชน์อย่างไร ตลอดจนข้อเสียต่าง ๆ ที่ต้องรับมือจากการนำ Microservices มาปรับใช้งาน

กลุ่มเป้าหมาย

  • Software Developer/Programmer
  • Software Analyst
  • Software Architect
  • Operation/Infrastructure

Duration

  • 2 Days

Course Outlines

  • การออกแบบ

    • วิวัฒนาการของสถาปัตยกรรมของ software
      • Monolith
      • Tier/Layer
      • Service-Oriented Architecture (SOA)
      • Microservices
      • Function-as-a-Service (FaaS)
    • เหตุผลว่าทำไมจึงต้องการ Microservice
    • ความรู้พื้นฐานของ Microservice
      • ประโยชน์ของการออกแบบด้วยแนวคิด Microservice
      • คุณสมบัติหลักของการออกแบบระบบงานด้วยแนวคิด Microservice
      • ข้อดีและข้อเสียของการออกแบบด้วยแนวคิด Microservice
    • ปัญหาและความท้าทายของการนำ Microservice มาใช้งาน
    • การแบ่งหรือแยกส่วนการทำงานต่าง ๆ ออกจากกัน เพื่อให้ทำงานได้อย่างมีอิสระต่อกัน
    • การจัดการการติดต่อสื่อสารระหว่าง service หรือระบบงานย่อย ๆ
      • Synchronous (Request-Response Model)
      • Asynchronous (Observer/Event)
    • Microservices patterns
  • Domain-Driven Design(DDD) for Microservices

    • Boundary context
    • Context map
    • Strategic phase
      • Workshop with Event storming
      • Types of relationships
        • Open Host
        • Published language
        • Anti-Corruption Layer (ACL)
        • Separate way
    • Tactical phase
      • Entity and Value Object
      • Aggregation
      • Domain service
      • Domain event
  • การพัฒนาและทดสอบระบบ

    • แนวทางในการพัฒนาด้วยแนวคิด Microservices
    • แนวทางการทดสอบระบบงาน
      • Unit testing
      • Integration testing
      • Component testing
      • Contract testing
      • End-to-End testing